4129个浏览

在UVM层次序列

2017年4月6日,anysilicon

瑞星设计的复杂性导致了验证工作不久的指数增长。该行业已采用UVM,部署VIP和在子系统或SoC级堵塞块级别的env部件接受验证重用。根据验证研究威尔逊研究在2012年进行的(委托导师)的工程师花费在开发/运行测试和调试故障的时间〜60%。虽然报告没有进一步放大,验证博爱会同意这个带宽相当大块是花,因为测试开发人员没有灵活的API(序列)来创建测试和虐待计划验证环境导致额外的调试。UVM提供了一个框架建议,如果合并有效地克服这些挑战。“分层序列”在UVM是一个这样的概念表明序列发展以模块化的方式,以使代码的更容易的调试,维护和再利用。

如在LEGO,分层序列假定基础结构的发展和以有序的方式建立所需的结构组装它们。这个过程需要从一开始就相当的规划权在考虑附带一份最终目标。的碱基序列的定义确定用于有效地重新使用所提供的灵活性。的目的是开发原子序列,使得任何复杂的序列可以被分解成一系列碱基序列。有几个方面值得考虑的包括 -

提示1:限定,其产生取决于传递到序列中的约束的基本事务处理的序列。为了实现这一点,对应的序列项目成员局部变量序列中定义。这些字段可以直接调用时从高电平序列或测试序列被分配的值。由顺序接收的值而生成所述交易为内联的约束通过。这提供了完全控制用户生成期望的交易。

提示2:束的字段将被控制到配置对象,并使用此对象设置的值来导出要生成的事务的内联的约束。这是TIP 1的复杂的版本时或者存在大量的在交易类或多个碱基序列变量创建具有类似的变量进行配置特别有用。这个类可以直接链接到序列项目和其他变量来控制序列行为领域。最好是限定设置Config对象的方法。请注意,此配置对象无关与配置DB的UVM。

提示3:UVM提供的配置DB为给定的情景环境的组件编程。随着复杂性的增加,期望以读取一个给定的组件的配置或理解的部件的当前状态和在生成的事务使用此信息。具有UVM组件层次结构的手柄中的碱基序列有利于序列的发展是这样的情况。

一旦碱基序列正确定义,层次结构可以开发能够重用和减少误差的余量。让我们应用此总线协议例如AMBA AHB。无论在场景,一个AHB主最后会带动READ或在总线上写事务。因此,我们的碱基序列可以L0_AHB_READ和L0_AHB_WRITE。这些序列产生基于提供给它们作为TIP 1.下一级(L1)的约束的AHB交易将在一个循环中,其中没有调用这些序列。迭代是用户定义的。再者,我们可以开发一个READ_AFTER _write序列,其中序列L1_LOOP_WRITE和L1_LOOP_READ被称为另一个循环中,使得它可以产生单次写,然后读取或批量写其次是读。使用上述的序列组可产生的任何方案,诸如任何IP的结构中,从数组/文件中读取数据并将其转换成AHB交易或中断/ DMA序列等

部署UVM是朝重用的第一步。为了控制花费在开发测试和调试验证码的努力,UVM需要被有效地应用,这是超越了语法错误或建议的基础类库。分层序列需要适当的规划和规范的方法。所观察到的返回肯定多折。这使我想起爱因斯坦名言 - “一切都应该尽可能简单,简约而不简单!

_____________________________________________________________________

这是一个客户后通过拉夫惹在DVCON印度大会主席

最近的故事