| |
Introduction
phasing是UVM中新功能的主要部分。Accelera推出了许多新技术:
1.一组对标准耗时阶段分的更细的设置;
2.在phase之间前后跳跳转的能力;
3.对用户可以自定义phase并指定它们之间的关系的能力的添加;
4.为实现不同计划而定义不同domain的能力。
本节中有许多文章描述了我们使用该技术的建议。这些包括:
1.如何逐步将OVM代码迁移到UVM,以使其成为phase控制的
Accellera UVM委员会仍在开发用于新UVM phasing的使用模型和API,因为它涉及sequences 和 transactors。与此同时,我们的建议是等到委员会开发工作完成并且API稳定。本节中有许多未来的文章将在此处提供,并将描述我们使用此技术的建议。这些包括:
1.如何使您的测试平台变得由phase来控制运行阶段[尚不可用]
2.如何在不同phase的背景下管理好sequence[尚不可用]
3.如何设计在不同phase环境中工作的可重用事务传输器[尚未提供]
The Standard UVM Phases
为了获得一致的测试平台执行流程,UVM使用phase来排序仿真期间发生的主要步骤。有三组phase,按以下顺序执行:
1.Build phases - 在这个phase里配置和构建测试平台;
2.Run-time phases - 在测试平台上运行测试用例时消耗时间
3.Clean up phases - 在这儿收集和报告测试用例的结果
不同的phase组如下图所示。uvm_component基类包含由每个不同phase methods 调用的virtual methods,这些methods由testbench组件创建者根据组件参与的phase来进行填充。使用自定义的phase允许验证组件被单独开发,但仍然可以互操作,因为对每个phase应该发生的事情有共同的理解。
【此处需一幅图】
Starting UVM Phase Execution
要启动UVM测试平台,必须从测试平台的静态部分调用run_test()method。它通常在测试平台的顶层模块中的initial块内被调用。
调用run_test()构造UVM环境根组件,然后启动UVM phasing。run_test()method可以传递一个字符串参数来定义一个uvm_component派生类的默认类型名称,这默认类型名称是用作测试平台层次结构的根节点。但是,run_test()method检查名为UVM_TESTNAME的命令行plusarg并使用该plusarg字符串查找factory注册的uvm_component,重载任何默认类型名称。按照惯例,根节点将从uvm_test组件派生,但它可以从任何uvm_component派生。根节点通过指定测试平台组件的配置和要由它们执行的激励来定义要执行的测试用例。
例如,为了将测试组件“my_test”指定为UVM测试平台根类,Questa命令行将为:
vsim tb_top +UVM_TESTNAME=my_test