• 跳至主要导航
  • 跳到主要内容
  • 跳到主要侧边栏
  • 跳到页脚

单片机技巧

微控制器工程资源,微控制器新产品和电子工程新闻

  • 产品展示
    • 8-bit
    • 16-bit
    • 32-bit
    • 64-bit
  • 应用领域
    • 汽车行业
    • 连接性
    • 消费类电子产品
    • 产业
    • 医疗类
    • 安全
  • EE论坛
    • EDABoard.com
    • Electro-Tech-Online.com
  • 影片
    • TI单片机视频
  • EE资源
    • 快速设计
    • 电子书/技术提示
    • 常见问题
    • LEAP奖
    • 播客
    • 网络研讨会
    • 白皮书
  • EE学习中心

重新定位集成SoC验证流程中的现有测试

三月6,2019 通过 艾米·卡尔诺斯卡斯(Aimee Kalnoskas) 发表评论

西门子业务导师Matthew Ballance撰写

的 存在理由 对于便携式刺激是重复使用。 Accellera便携式激励器标准(PSS)可以在整个验证过程中以及执行验证的多个引擎之间促进测试意图的重用。捕获为便携式激励模型的测试意图可实现从IP到SoC级别的测试重用,并提高测试创建效率。

当用户考虑应用便携式刺激时,一个立即的认识就是其组织中当前可用的便携式刺激内容的数量有限。幸运的是,组织中有许多现有的描述和格式,可重复使用以创建便携式激励描述。

UVM寄存器模型以及SystemVerilog类和约束是现有描述的示例,可以与便携式激励有效地重用。

在这个由四部分组成的系列文章中,我们将向您展示如何使用您可能已经拥有的UVM和SystemVerilog描述,以便您可以快速开始创建便携式刺激模型。我们将从UVM寄存器模型开始。

UVM寄存器模型在模块和子系统级别上大量使用,以简化与设备寄存器的交互。在寄存器模型描述中捕获的信息-寄存器地址,可以写入的字段等-对创建SoC集成测试非常有帮助。另外,以机器可读的方式捕获该信息,这使得自动重用此关键便携式刺激信息变得容易。

UVM库提供了内置的,有针对性的序列测试,可循环访问UVM寄存器模型以检查寄存器的复位值并确认可访问寄存器。这些序列测试在IP级别上非常有用,但是在子系统和系统级别上重用它们仍然很困难。

这就是PSS的用处。在便携式激励模型中捕获寄存器测试意图可以使寄存器测试功能从IP移植到SoC级别,并提供更大的灵活性来控制在给定测试运行中检查哪些寄存器。

分裂原子:测试意图和实现

分离测试意图和测试实现,通常将它们合并在定向测试中,是便携式激励的核心要素,而这一划分是使测试意图能够轻松地在整个环境中重新定位的关键。测试意图是高级设计 什么 去测试。测试实现是 机制 通过该测试进行。

在测试寄存器模型的情况下,测试意图如下所示:从寄存器块中选择一个寄存器;从寄存器中选择一个读/写字段,然后在该字段中选择一个位进行测试。

上述测试意图与我们是否要验证模块,子系统或SoC级别设计无关。它也与是否以SystemVerilog环境或嵌入式软件环境为目标无关。下面的PSS代码捕获了用于测试单个寄存器的测试意图,其中: reg_id 捕获要测试的寄存器, flip_bit 捕获要测试的寄存器中的位,并且 reg_addr 捕获内存映射中字段的地址。


考虑到便携式激励因素来设计测试实现方案,使我们能够设计在所有环境中都可用的通用API。例如,我们可以指定一个名为 测试位 在所有环境中都可用,并且该方法将测试修改指定位的能力。此类功能的功能原型如下所示。

在SystemVerilog IP或子系统级别的环境中,我们可以将此方法作为UVM序列中的一项任务来实现。下面显示的SystemVerilog任务使用内存访问API读取和写入内存,并通过读取寄存器的当前值,取反寄存器的目标位并写入新的寄存器值并回读来实现寄存器位测试操作寄存器地址,并检查该位是否保留其值。


子系统寄存器模型的诞生

在这种情况下,如果遇到错误,测试将继续运行。这是UVM测试非常典型的。但是,嵌入式软件环境具有不同的约束。以下示例显示了 测试位 嵌入式处理器的功能。这种方法与SystemVerilog版本非常相似,尽管具体情况有所不同。最大的区别之一是,在这种情况下,我们假设如果寄存器位测试失败,我们将结束整个测试。

现在,我们将创建子系统UVM寄存器模型。图1中的示例子系统具有一个处理器,两个以太网控制器和两个DMA引擎。

SoC验证流程
图1– Simple Subsystem

在验证过程中,很可能使用寄存器创建工具(参见图2)在模块级别创建了一个UVM寄存器模型,用于以太网和DMA控制器。

图2–注册创建工具

在子系统级别,寄存器创建工具可以帮助我们为整个子系统组装寄存器模型。或者,我们可以简单地采用各个块级寄存器模型,然后手动组装子系统级寄存器模型。下面的代码从以太网​​和DMA控制器寄存器模型中组装出子系统级别的寄存器模型。不需要太多代码:仅设计中的可用寄存器,它们的地址,这些寄存器中的字段以及任何访问限制。

可能令人惊讶的是寄存器的累积速度有多快。到我们为两个以太网控制器和两个DMA控制器创建寄存器模型时,我们已经拥有989个带有可测试字段的寄存器。想象一下,一个完整的SoC包含多少个寄存器!

现在,我们已经了解了如何捕获子系统或SoC级别的寄存器模型,我们如何继续创建寄存器访问测试?首先,我们需要创建一个寄存器访问测试意图的PSS模型。然后,我们需要通过测试实现将该测试意图连接到特定的验证环境。

的 下一篇 本系列将向您展示如何做到这一点。

 

其他资源:

//accellera.org/activities/working-groups/portable-stimulus

//verificationacademy.com/topics/portable-test-stimulus

//www.mentor.com/products/fv/infact/

 

Matthew Ballance是Mentor Graphics的产品工程师和便携式刺激技术人员,与Questa inFact便携式刺激产品一起工作。在EDA行业的过去20年中,他曾在硬件/软件协同验证,事务级别建模以及IP封装和重用领域从事产品开发,营销和管理职务。 Matthew毕业于俄勒冈州立大学。

 

 

你也许也喜欢:

  • SystemVerilog
    如何构造SystemVerilog以用作便携式激励器
  • 便携式刺激
    验证的关键:重铸SystemVerilog for Portable…
  • 可重用的注册测试模型
    如何创建和运行可重用的注册测试模型

提起下: 常问问题, 精选, PCB设计, 工具类 标签: 常问问题, 导师, 西门子

读者互动

发表评论 取消回复

您的电子邮件地址不会被公开。 必需的地方已做标记 *

主侧边栏

快速设计

组件选择变得简单。

今天尝试
设计快速的globle

EE培训中心教室

“ee

“ee

“ee

“ee

订阅我们的新闻

订阅每周行业新闻,新产品创新等等。

立即订阅

的RSS 当前的EDABoard.com讨论

  • "Sandwich"绕线变压器次级夹在不相等的绕组之间
  • 用于LED驱动器的谐振SEPIC转换器
  • 使用Virtex7时出现奇怪的错误
  • 关于HiperPFS Boost PFC控制器的问题
  • 全差分放大器的差分输出以共模电压或零为中心?

的RSS 当前Electro-Tech-Online.com讨论

  • Tacho反馈到555 pwm电动机速度控制
  • 蓝牙查询
  • 使用图片的遥控器
  • 需要说明(AB类音频放大器)
  • 什么'变压器耦合与直接耦合功率放大器的区别是什么?

在推特上关注我们

MicroContrlTips的推文

页脚

单片机技巧

EE World在线网络

  • 快速设计
  • EE World在线
  • EDA董事会论坛
  • 电子技术在线论坛
  • 连接器提示
  • 模拟IC技巧
  • 电力电子提示
  • 传感器提示
  • 测试和测量技巧
  • 电线电缆技巧
  • 5G技术世界

单片机技巧

  • 订阅我们的新闻
  • 与我们一起做广告
  • 联系我们
  • 关于我们
在推特上关注我们在Facebook上添加我们在YouTube上关注我们 在Instagram上关注我们

版权© 2020 ·WTWH Media LLC及其许可方。版权所有。
未经WTWH Media事先书面许可,不得复制,分发,传播,缓存或以其他方式使用本网站上的资料。

隐私政策
<keygen class="rvXFB8F"></keygen>
<mark id="IV6Iicm"></mark>

    <video id="PbDix8Z"><dl class="ILUUtGD"></dl></video>
  1. <dt class="upyUbq1"><meter id="S1JGydw"></meter></dt>
      <span id="jpFGnXv"></span>

      • <keygen class="uuxlzrA"><dir id="L1ETchA" class="LYd7Z9V"><details class="Xth7GgW"></details></dir></keygen>
        1. <rt class="mqj52HQ"><tfoot class="ucufygc"></tfoot></rt>
        2. <del class="u19pZkT"><caption id="h8xtMPq" class="hMFjOHF"></caption></del>