verilog模块内部寄存器初始化
时间:10-02
整理:3721RD
点击:
在搭UVM环境过程中碰到一个问题:逻辑层次:顶层A包含B的两个实例化B1和B2,模块B包含C的实例化C1,C1有多个内部寄存器([63:0]reg0、reg1、reg2),在初始化完成后,想设置这个寄存器的值,除了用force+绝对路径的方式,采用interface方式,应该怎么用?
有搜索到相关的例子:
interface whitebox_if(input logic some_signal,input logic some_other_signal);endinterface// somewhere in your top levelbind dut whitebox_if wb_if;initialuvm_config_db #(whitebox_if)::set(null, "*", dut.wb_if);
通过看手册也没看太明白上述代码的工作方式。
哪位大咖熟悉这方面的,解解惑。
有搜索到相关的例子:
interface whitebox_if(input logic some_signal,input logic some_other_signal);endinterface// somewhere in your top levelbind dut whitebox_if wb_if;initialuvm_config_db #(whitebox_if)::set(null, "*", dut.wb_if);
通过看手册也没看太明白上述代码的工作方式。
哪位大咖熟悉这方面的,解解惑。
是不理解config_db机制还是不知道interface如何驱动dut内部信号?
若只是想給 register 固定的 initial value, 用 systemverilog 中 bind 的功能, 比較容易.