UVM继承不同模块验证环境的思路:
-
方案一:复用底层模块验证环境的组件,顶层环境需要新建一个scoreboard ;
-
方案二:直接复用底层模块的验证环境,要在顶层环境的build_phase阶段,对各个模块环境中不需要产生激励的agent配置为UVM_PASSIVE。这种方式不需要新建scoreboard,可以间接使用模块环境中的scoreboard 。
两种方式的对比:
-
方案一需要新建一个scoreboard,而方案二直接复用模块环境中的scoreboard
-
如果顶层设计没那么复杂,重新实现一个顶层的scoreboard其实复杂度是可以控制的;但如果顶层环境很复杂,那么直接复用模块环境scoreboard就比较省事
例如:uvm_config_db#(int) ::set( this,“chnl_e1.reg_cfg”,“is_active”,UVM_PASSIVE );
注意在build_phase中先配置,再例化
-
相同点是:都需要新建一个virtual sequencer 和virtual sequence用来生成顶层的测试序列
UVM带来的环境复用,相比于SV验证环境的优势:
-
各个模块的验证环境是独立封装的,对外不需要保留数据端口,因此便于环境的进一步集成复用。
而在SV中不行,例如例化driver就需要generator提供帮助,否则编译报错
-
由于UVM自身


414

被折叠的 条评论
为什么被折叠?



