马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
UVM phase仿真是怎么开始启动的? UVM(Universal Verification Methodology)的仿真启动过程是通过一系列精心设计的phase来控制的。以下是UVM仿真启动的主要步骤: 仿真启动:仿真的启动通常是通过在测试平台的顶层模块中调用run_test()函数来开始的。这个函数可以带有一个参数,指定要运行的测试用例的名称,或者不带参数,此时可以通过仿真命令行加上+UVM_TESTNAME=<test_name>来指定测试用例。 UVM Test Top实例化:run_test()函数会创建一个uvm_test_top的实例,这个实例是UVM测试环境的根组件。 Phase执行:UVM中的phase分为两大类:function phase和task phase。function phase不消耗仿真时间,而task phase会消耗仿真时间。仿真的启动和执行主要通过这些phase来控制。 Build Phase:在仿真开始时,首先执行的是build phase,它负责实例化和配置UVM组件。这是自上而下执行的,即从顶层组件开始,一直到最底层的组件。 Connect Phase:在build phase之后,执行connect phase,它负责组件间的连接,包括TLM端口的连接和配置数据库的设置。 End of Elaboration Phase:这个阶段用于在仿真开始之前对测试台的结构、配置或连接进行最终的调整或检查。 Start of Simulation Phase:这是在耗时的仿真部分开始之前执行的一个function phase,通常用于显示信息,如测试台拓扑结构、组件配置信息等。 Run Phase:这是UVM中最关键的task phase,它负责实际的仿真运行,包括激励的产生、监测和检查。在这个阶段,所有的组件如驱动器(drivers)、监视器(monitors)和记分板(scoreboards)都会并行执行。 Objection机制:在run phase中,UVM使用objection机制来控制仿真的结束。当所有的组件都放下了objection(通过drop_objection()调用),并且没有其他组件或序列持有objection时,run phase结束,仿真继续进行到下一个phase。 Clean Up Phases:在run phase之后,执行的是清理阶段的phase,包括extract_phase、check_phase、report_phase和final_phase,这些phase用于收集仿真结果、进行最后的检查和报告。 整个过程是由UVM框架自动管理的,验证工程师只需要在相应的phase中填充自己的验证逻辑即可。这样的设计使得UVM能够以一种结构化和可预测的方式执行仿真,同时也便于验证环境的维护和扩展。
|