我有一个寄存器定义:
reg_def GCC_CTRL_12_T {
reg_fld SEL_CH_PRIORITY : uint(bits:10) : RW : 0;
};
我创建了两个相同类型的寄存器:
extend GCC_MAIN vr_ad_reg_file {
reg_list HDLC_CORE1_GCC_CTRL_12[1] of GCC_CTRL_12_T at 0x1000b;
};
extend GCC_MAIN vr_ad_reg_file {
reg_list HDLC_CORE2_GCC_CTRL_12[1] of GCC_CTRL_12_T at 0x1010b;
};
在一个序列中,我创建了与 write_reg 一起使用的指针:
extend CFG_CORE_REGS vr_ad_sequence {
!core1_gcc12_ctrl : HDLC_CORE1_GCC_CTRL_12 vr_ad_reg;
!core2_gcc12_ctrl : HDLC_CORE2_GCC_CTRL_12 vr_ad_reg;
};
但是后来我得到了一个错误:
错误:
'HDLC_CORE1_GCC_CTRL_12' is not a subtype of 'vr_ad_reg' at line 76 in /auto/ns_asics/VR_Projects/zgal/wa/alon/gcc/views/gcc_verif/gcc_verif/src/agents/mpif/mpif_master_sequence.e !core1_gcc12_ctrl : HDLC_CORE1_GCC_CTRL_12 vr_ad_reg;
我该如何解决?
寄存器类型为GCC_CTRL_12_T。 HDLC_CORE1_GCC_CTRL_12 是字段的名称。
因此序列字段应定义为
extend CFG_CORE_REGS vr_ad_sequence {
!core1_gcc12_ctrl : GCC_CTRL_12_T vr_ad_reg;
};
为了定义应写入哪个实例,您可以使用 static_item,如 vr_ad/examples/vr_ad_mult_regs.e 中的代码示例所示
另一个选择是使用路径。例如-
write_reg sys.env1.reg_file1.reg_0 ....