1. 概述
- UVM中配置必须在底层组件创建之前就完毕
- set在顶层环境,get在底层环境
- T是参数类型
- 参数分别为:component句柄,实例名称,变量名称,拿出值
2. 接口传递
- sv中组件
- 首先定义interface
- 之后在comp1中添加virtual,类中interface指针必须用virtual
- build_phase通过get interface指针传递拿到interface,四个参数分别代表当前组件comp1,this做代表的路径为root.test.c1.vif;第二个参数为空代表当前想要拿到的变量就是vif指针,传递给virtual interface
- set在顶层,先出现,配置好uvm_config_db的查找表,依据路径查找;之后底层再get出来interface。
- 组件还没创建,就可以先对变量做配置。这是因为uvm_config_db做了中间存放,底层组件例化时,就可以通过get看对应的路径是否有配置信息,有就返回1,没有返回0.
- set的参数分别表示:1传递root句柄,2传递实例(root.test.c1),3变量名称(root.test.c1.vif),4set进来的变量是interface指针。
- run_test帮助我们实现组件结构。
3. 变量设置
- #(参数类型),get前三个参数构成传递内容的层次关系,最后一个参数是作用到哪个变量
4. object传递
- 本例子中,传递是父类句柄,set、get类型应该严格一致。
- 先set后create
- 当前的例子中,顶层是将子类句柄按照父类句柄去set,那么底层拿到的也是父类句柄,因此必须进行句柄类型转换转为子类句柄,这样才能访问子类中的val1/str1。
- 若传递的是句柄,set、get句柄类型必须严格一致,是父类都是父类,是子类都是子类。本例中也可都是子类,那就不用$cast()了
- set、get成对出现,先set后get
- set、get的类型必须严格一致
- set、get的作用路径,统一通过参数构建起来路径关系