系统与设计
的意见

UVM:阻止你吗?

容易UVM和fpga加速度共同努力提高UVM生产率。

受欢迎程度

这些天,验证执行的最复杂的设计是使用一个标准的验证方法,可能SystemVerilog-basedUVM。许多验证团队对UVM加大,但其他人还没有采取行动。这是为什么呢?,多大的“跳水”呢?

如果UVM是那么伟大,那么为什么不是每个人都采用了?它不像我们的第一个念头,“通用”还是有它的采用障碍?如果是这样,这些障碍可能是什么,他们怎么能被克服?

真实的和想象的障碍
回答我的问题(我做很多,抱歉)这些障碍可能是技术,程序,或经济。其他障碍可能是基于感知,害怕一个陡峭的学习曲线,或采用UVM的潜在投资回报的不确定性。

组织他们的另一种方法;这些障碍是真实的但其他人可能是虚构的。

本文将探索两个障碍;学习曲线,模拟吞吐量,但它们是真实的还是虚构的?

学习曲线:一个虚构的障碍呢?
验证期货会议上2012年,Janick Bergeron,约束随机验证方法的父亲之一,被问到如何学习UVM一些建议。答案是,“不要试图学习。“这种情绪已经反映在别人在不同时期,在至少一个情况下,作为应用的基础。例如Doulos、受人尊敬的培训公司,已经教学UVM类和帮助定义标准UVM开始以来,他们创造了所谓的“容易UVM”作为一种加速采用和重用。

容易UVM包括指南和代码生成工具,并采用真实的项目和tape-outs。运用UVM容易,新用户可能获得理解和早期的成功为了促进UVM广泛使用的其他项目。首席技术官约翰•Aynsley Doulos,断言,学习曲线不是一个虚构的屏障,但非常真实。验证工程师需要知道他们在做什么UVM但容易UVM开始是一个有用的方法。

Aldec,容易UVM指南一直遵循以裁缝验证工具和贵宾,便携和可重用的仿真,仿真甚至混合环境包括SystemC虚拟模型。这种可移植性变得重要,因为模拟的使用,特别是越来越广泛的部分由于需要更多和更大的吞吐量在UVM-based验证。

吞吐量:一个真正的UVM障碍呢?
有建议UVM鼓励替代“哑巴”模拟周期领域知识;它更容易投入更多模拟周期验证问题为了实现覆盖的目标,而不是创造更多的相关测试,或更聪明的约束。读者可能会有自己的意见,但广泛采用最佳实践是计划是使用直接测试和约束的随机测试。直接测试创建以达到抢占功能覆盖分数;测试所有的明显的主要和次要特征设计测试(DUT)。只有这样一个依赖约束随机方法测试不明显的角落用例并将覆盖所需的100%的分数。

这对运用UVM意味着什么呢?UVM可用于指导测试以及约束随机的,当然,但后者可能需要更多的循环模拟运行时,导致模拟吞吐量成为瓶颈。时,这一点尤其问题上面的最佳实践是不跟着,这样团队提前切换到约束随机而不是使用设计知识创造进一步指导测试。Coverage-driven metric-driven技术帮助,但模拟越来越多的被用来加速UVM为了克服约束随机吞吐量瓶颈。它也有利于长期指导测试。

增加吞吐量与仿真
模拟器有多种使用模式包括仿真加速度,我们需要地方DUT的部分或全部,可能部分或全部testbench硬件。的Aldec他平台上,基于fpga的硬件,但其他类型的模拟器存在使用定制的处理器的数组。

让我们考虑的共同方法分区DUT的模拟器,模拟器和testbench。我们就面临着需要通过双向链接DUT的testbench模拟器和硬件之间的接口。为每个端口testbench和DUT,我们需要确保每个模拟器事件产生的信号变化,港口生产同等电压代表逻辑1或0在硬件的物理销(反之亦然)。我们可以看到如图1所示,显示了一个简化的例子的一个单独的端口UVM测试环境。假设是一个顶级总线端口。

Amos1
图1:分区的信号电平。

可能是显而易见的,甚至一个简单的事务上,总线端口将涉及多个模拟事件和变化。硬件不能运行任何速度比模拟器的能力作出这些改变和signal-by-signal event-by-event testbench之间的通信和DUT整个硬件软件分区。通常的整体速度仿真加速度将由时钟频率和复杂性和交通等接口,硬件的速度。即便如此,加速实现仍然有用大型dut和长时间测试。

更大的加速度,我们需要不仅加快沟通的一种方式,但是允许硬件运行在其自己的(高)速度的大部分时间。这就是交易人进来。

合理化的接口使用交易人
看一个典型的DUT的顶级港口,在许多情况下,这将是标准外围或总线接口(如USB、SATA APB等等),每一种都很好理解的行为。我们可以用这个已知行为同意捷径在模拟器和硬件之间的通信。例如,而不是依赖驾驶模拟器数据值的每一个信号改变写作标准端口,我们把一些额外的硬件和DUT FPGA (s),这使得这些改变对于我们本地。这是图2所示BFM,或总线功能模型。

一个命令或函数调用模拟器一侧就可以启动所有必要的硬件方面的变化。这所有发生的机制被称为办理人,在图2中,这是由BFM接口模拟器,事务层和BFM的FPGA硬件。

amosfig2
图2:使用一个办理人分区。

办理人不仅简化通信,它还允许硬件运行得更快,因为它不依赖盲目signal-by-signal事件模拟器。如果所有的模拟器之间的接口和DUT雇佣相关的办理人,那么我们就可以实现更大的加速度。

UVM已经雇佣了事务级的通信,但是我们如何转换simulator-only UVM使用交易人和fpga硬件测试环境吗?

连接UVM和FPGA
最好,我们应该写UVM / SystemVerilog testbench UVM的风格,允许简单的交易人。碰巧,推荐的风格更容易UVM正是这样一个风格,和一些简单的替换,验证团队可以使用FPPGA-based加速度重新编译并运行设计。在Aldec的案例中,这种适应的UVM大多自动执行设计验证管理器(数字式电压表)工具。

的核心transactor-based加速度作为函数调用接口事务的代表。UVM代理的司机让一个函数调用,导致有时数以百计的信号变化的硬件,在时钟频率远高于模拟事件率。同样的效果是发生在从DUT输出到模拟器通过UVM代理的监视器。这个calls-to-signal变化的比率增加吞吐量。

我们看到这种简化在图3中,也区分语言用来描述的两个领域,即硬件验证语言(液力)——在这种情况下,SystemVerilog一方面和交易人用硬件描述语言(HDL)如Verilog或硬件描述语言(VHDL)。这意味着任何SystemVerilog物品必须synthesizable出现在右边,或工具必须能够解释它们。

amos3
图3:液力和HDL沟通通过函数调用。

我们也认为边界划分时间和不计时的领域,事件和时钟,和时钟之间跨边界从未使用同步通信。

SCE-MI DPI-C: UVM加速度的重要推动者
HVL-HDL分区的方法已经被捕获在Accellera标准Co-Emulation建模接口(SCE-MI)描述为“允许仿真的模型在模拟环境中运行,反之亦然。“Aldec和其他模拟供应商遵循SCE-MI标准建议跨境函数调用是通过SystemVerilog直接编程接口(DPI),这使得它与其他编程语言交流。在C语言中,我们这DPI-C短。

DPI-C允许我们打电话(进口)定义外部C函数从SystemVerilog testbench,和出口SystemVerilog物品允许他们访问从C。这是非常有利于加速UVM一样我们可以使用DPI-C testbench调用和交易人之间的包装器,将合成的DUT FPGA。图4中我们可以看到这(注意Aldec所使用的命名约定)。

amosfig4
图4:DPI-C充当模拟器和硬件之间的边界。

话虽如此,synthesizable HDL的一面。的定义是什么,不是synthesizable不同工具工具基于多少努力每个工具供应商已经投入实现液力和HDL的标准。Aldec已经认为,允许更容易转换UVM使用交易人,一些传统non-synthesizable等需要处理。例如,图5显示驱动程序的代码的一部分BFM的小例子,如图3所示。

amos5
图5:分区,使synthesizable BFM代码。

这段代码以前UVM代理,但必须搬到高密度脂蛋白的边界在使用硬件加速。注意使用”,而“语句和一个隐式状态机,通常都non-synthesizable SystemVerilog代码。其他non-synthesizable代码构造出现在UVM代码,这可能被视为由多个源寄存器。

Aldec数字式电压表处理这个采用特定SCE-MI2编译器,解释的代码,non-synthesizable物品转换成等价的高密度脂蛋白,提取DPI-C成所谓的模拟桥代码元素。这是自动完成的数字式电压表流,也会执行所有参与其他工作让FPGA-hostile SoC HDL准备实现fpga仿真器,包括控时钟转换,记忆造型,分区和一个时钟同步为了让时钟停在模拟器和单步运行时。

了加速器
这篇文章表明,UVM不需要努力学习和不需要花很长时间运行。使用容易UVM和FPGA硬件加速,可以把UVM带给更广泛的用户基础,包括团队创建当今最复杂的FPGA和SoC设计。

进一步的细节,请参阅Aldec研讨会:FPGA验证,UVM仿真加速度与可伸缩的FPGA平台



留下一个回复


(注意:这个名字会显示公开)

Baidu