如何在specman中实例化多个相同类型的寄存器

问题描述 投票:0回答:1

我有一个寄存器定义:

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;

我该如何解决?

specman
1个回答
0
投票

寄存器类型为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 .... 
© www.soinside.com 2019 - 2024. All rights reserved.