你的UVM口味有糖屑吗?

简介

UVM是一种标准,所以这意味着每个公司都编写相同的、普遍可互换的测试工作台,对吗?不完全是。我刚从欧洲教书回来。不管这些工程师在哪里长大,他们都说英语,每个人都有不同的口音。我想我没有口音,因为我在阿拉斯加长大,但我在德克萨斯州和伦敦的同事不会同意这一点。让我们来看看UVM的一些不同特色和风格。

为什么有31种口味?

我将描述一些不同之处,并解释西门子为什么推荐一种特定的风格。开云体育平台登录我不是想改变任何人的想法,只是想让你明白为什么有些人更喜欢巧克力而不是香草。

这些不同风格的原因几乎和风格一样多。每个设计都是独一无二的,这影响了测试平台。有遗留代码吗?或者这是新一代的第一个?工程师是了解UVM、OVM、VMM和其他TLAs的SystemVerilog专家,还是一组VHDL设计人员正在学习足够的验证,以便将该芯片引入实验室?最后,每个EDA供应商和工具集都有自己的优势,因此一个可能会推动宏以实现快速采用,而另一个则建议采用重代码的方法以实现对行为和最佳性能的精细控制。VIP作者或验证顾问可能会创造一个创新的风格。

杯子还是蛋卷?

采用UVM的起点是选择版本。最后一个由Accellera标准化并被广泛采用的是1.1d,这是西门子通常推荐的。开云体育平台登录在1.2中有许多错误修复,我在客户测试台中看到了这一点。虽然IEEE在2017年对P1800.2进行了标准化,但很少有公司采用它,并且还在进行一些进一步的兼容性调整。

它们之间存在一些兼容性问题,但这些问题非常小,以至于我的课程中只有一张幻灯片显示了任何差异,即排序器仲裁枚举名称。验证学院描述了这些版本和升级的问题。

https://VerificationAcademy.com/cookbook/uvm1.2/summary
https://verificationacademy.com/cookbook/uvm1800.2/summary

巧克力、香草还是草莓?

你的UVM代码是什么?

下一个选择是如何定义序列项类的行为。例如,记分板调用compare()与预期和实际事务对象的句柄。这是一个UVM方法,它设置了深度比较,但对您的协议一无所知。制作特定于协议的代码的最快方法是使用UVM字段宏。它们还生成用于复制、打印等的代码。开云体育平台登录Siemens推荐使用do_*()方法来定义这些动作。结果非常精确,模拟速度比现场宏代码快,但需要更长的时间编写。这两种风格不兼容。如果您的协议基类是用一种风格定义的,那么在扩展它时不要切换它。

斯普林斯还是吉米?

接下来,你的序列如何与驾驶员对话?您可以学习创建、启动、填充和完成每一项的四个步骤,也可以只调用uvm_do宏。同样,使用宏可以更快地编写新序列,但是使用四步风格可以更好地控制生成的内容和时间。开云体育平台登录西门子推荐后者。

外卖还是在家吃?

你的组件什么时候执行?UVM有许多阶段来构建和连接您的测试平台,以及提取和报告结果。最初,UVM只有一个运行测试的阶段,即run_phase()任务。1.2版本添加了Domain阶段、用于重置、配置和关闭测试的细粒度任务,以及测试主体的主阶段。此外,每个任务都有前置和后置版本,为您的测试代码提供了12个不同的位置。哎呀,控制太多了!开云体育平台登录Siemens建议从run_phase()任务开始,因为这很容易理解。稍后,如果您需要同步高级活动,请尝试Domain阶段。

重复使用:圣代、奶昔还是冻糕?

UVM是关于重用的——定义一次组件和刺激类,并在这个项目和下一个项目中使用它们。这意味着对于这些不同的情况,类的行为应该是可配置的。添加变量(有时称为表盘或旋钮),以更改地址值、使代理为主动或被动或保持虚拟接口

最初,每个值都是通过uvm_config_db单独传递到更低的级别。这对于几千个值来说效果很好。但是,DB是基于正则表达式的运行时字符串匹配构建的,对于大型系统可能会导致严重的性能问题。大多数测试台现在将这些配置值分组到某个容器中。开云体育平台登录Siemens调用这些配置对象,扩展自uvm_object;其他供应商可能会推荐从uvm_sequencer派生的虚拟排序器。更干净的OOP风格是在每个组件中创建set_config()方法,以便其父组件可以直接传递配置对象句柄。

uvm_config_db条目包含一个基于组件实例名的作用域,例如“uvm_test_top.env.usb_agt”。序列不是组件,那么它如何获得配置信息呢?开云体育平台登录Siemens建议您为start()定义自己的包装器,例如init_start(),这样您就可以定义自己的参数,例如配置值并返回响应。或者,序列可以通过调用get_sequencer()或粗糙的m_sequencer属性来获取组件的句柄,并将其传递给set()和get()。另一种风格是通过start()方法传递一个虚拟排序器句柄。还有其他方法——验证工程师可能非常狡猾!

好到最后一勺

知道何时结束测试是很困难的。除非您提出异议,否则UVM将结束运行阶段。开云体育平台登录Siemens建议在测试级别调用raise_object()和drop_object(),以启动顶级序列。其他供应商热情地为每个序列甚至每个项目调用这些方法。如果您在测试台中添加了太多这样的调用,那么您很有可能会忘记drop_object(),并且测试永远不会结束。

结论

十多年来,工程师们一直在创建UVM测试台,并围绕问题创新了许多方法。为了最大限度地重用和提高生产率,请从您公司的风格开始,以便您的代码易于理解。进化而不是革命。

有关样式的更多想法,请参阅Verification Academy UVM Cookbookhttps://verificationacademy.com/cookbook/uvm

把你对你最喜欢的UVM“浇头”的评论发给我!

了解更多

您可以了解更多关于这些主题的内容,包括使用Siemens SystemVerilog进行验证的面向编程课程。开云体育平台登录在教练领导格式由我们的行业专家指导,或在一个自定节奏随需应变格式。还可以对其进行定制,以满足您的特定设计目标,并向您展示如何设置用于其他设计的重用环境。此外,您现在可以通过参加我们的数字徽章/ 1级证书高级科目徽章考试.这将使您能够通过在社交媒体和电子邮件签名中显示徽章来展示您对该主题的了解。

留下回复

本文最初发表于西门子数字工业软件博客https://blogs.sw.开云体育平台登录siemens.com/veri开云体育官方下载fic开云体育官网入口ationhorizons/2022/10/20/does-your-uvm-flavor-have-sprinkles/
Baidu
map