phase机制
实验3.1
控制台输出信息如下
程序执行顺序:
① phase_order_test的build phase (build phase执行顺序为自顶向下)
② comp1的build phase
③ comp2的build phase
④ comp3的build phase
⑤ comp2、comp3的connect phase
⑥ comp1的connect phase
⑦ phase_order_test的connect phase
⑧ phase_order_test的run phase 开始 (存在1us的延迟)
⑨ comp1、comp3、comp2 的run phase
⑩ phase_order_test的run phase 结束
最后是comp2、comp3、comp1、phase_order_test的report phase
总结:build为自顶向下的执行顺序,connect和report都是自底向上,run应该也是自底向上
实验3.2
运行时间为2us
reset和run是同时开始执行的
main是在reset之后的1us才执行,说明reset和main之间存在先后的执行顺序
区别实验3.1的地方:执行了reset和main phase
但是run phase和其余的task phase尽量不一起适用,此处只是为了展示执行顺序
config机制
实验4.1传递的是接口
实验4.2传递的是对象
实验4.3传递的是变量
传递接口区别于其余两者,需要做以及注意的事项:
① 需要先顶层例化接口,再config_db传递接口
② 顶层的config_db第一个参数为uvm_root::get() (写成null也可以,uvm会自动转换为uvm_root::get())
③ 第二个参数表示路径,uvm_test_top.*
④ 接口的get一般会加if作为判断,如果获取不到应该uvm_error报错
⑤ 传递接口应该发生在run_test之前
传递对象的注意事项:
① 在buildphase中实现
② 先声明以及例化对象,并赋值对象
③ 最后才是传递
传递变量的注意事项:
① 在build phase 中实现
② 在变量对应的component例化前传递
③ 传递后再例化component
(尝试过先例化component,再传递变量,一样可行)
消息管理
实验开始前,打印的信息如下
实验5.1
不允许有任何uvm_message_test及其以下组件的消息在仿真中打印
实验5.2打印内容与实验5.1一致
实验5.3
要去掉CREATE,应该是要在顶层加上才能消去。即想要消除打印消息,必须在打印语句前添加set_report_id_verbosity_hier之类的函数。