书接上回:
从零开始搭建UVM平台(一)-只有uvm_driver的验证平台
从零开始搭建UVM平台(二)-加入factory机制
从零开始搭建UVM平台(三)-加入objection机制
加入interface
上述代码还有一个问题就是,在my_driver里打出激励赋值需要引用信号的绝对路径,这样操作的麻烦就是一旦路径改了,环境需要修改的地方也很多。要想避免绝对路径的麻烦,首先可以想到改成宏来定义信号路径,宏是一个较好的方法,但是只能用于像dut这种在uvm平台之外的路径,如果路径换成了uvm平台内部的路径,宏的方式还是不能解决问题,此时,一种更好的方式:interface就可以上场了。
第一步:首先新建一个interface文件,作为中间桥梁,连接环境和dut。
第二步:将interface文件加入到环境中:
第二步:连接dut和interface:
第四步:连接my_driver和interface
需要注意的是,my_driver是一个class,class里面不能使用interface,只能使用virtual interface。
注意这里build_phase是function,且返回值一定要写void,且一定写super.build_phase来完成搭建整个UVM树。