UVM从入门到崩溃boom!之第三章:UVM库、UVM结构树、UVM phase、UVM objection

小弟刚开始学UVM欢迎大家批评!部分图片来自网络,侵权请联系qq:1530547890删除谢谢!

第三章:UVM库、UVM结构树、UVM phase、UVM objection

1、UVM库
UVM从入门到崩溃boom!之第三章:UVM库、UVM结构树、UVM phase、UVM objection
UVM从入门到崩溃boom!之第三章:UVM库、UVM结构树、UVM phase、UVM objection
UVM从入门到崩溃boom!之第三章:UVM库、UVM结构树、UVM phase、UVM objection
UVM从入门到崩溃boom!之第三章:UVM库、UVM结构树、UVM phase、UVM objection
2、UVM树在各个组件的构造函数与build_phase中的构建
以master_agent中构造driver为例
UVM从入门到崩溃boom!之第三章:UVM库、UVM结构树、UVM phase、UVM objection
整个UVM结构树
UVM从入门到崩溃boom!之第三章:UVM库、UVM结构树、UVM phase、UVM objection
log文件中查看测试平台拓扑结构
UVM从入门到崩溃boom!之第三章:UVM库、UVM结构树、UVM phase、UVM objection
3、为什么需要UVM结构树?
i、为config机制和override机制提供搜索路径
ii、uvm phase属性的需要?为什么?
4、UVM phase
UVM从入门到崩溃boom!之第三章:UVM库、UVM结构树、UVM phase、UVM objection
注意:
i、phase只是uvm_component的属性,即仅在uvm_component类中可以重载使用phase;
图中橙色的为function phase,不消耗仿真时间;中间黄色部分为task phase,需要消耗仿真时间,且需要消耗仿真时间的代码段必须包含在phase的objection属性(raise_objection()和drop_objection())之中
ii、不同component中的同名phase并行执行,且所有component的同名phase全部执行完毕时才会执行下一个phase
iii、所以objection对于task phase才有意义,必须所有task(无论同名还是不同名)在消耗仿真时间的代码之前添加raise_objection(),在task结束之后添加drop_objection()