1

在我的验证环境中,我有 3 个具有相同字段的不同寄存器load_0load_1load_2. 现在,我为每个寄存器复制了 3 次相同的函数,并且仅在一行中有所不同:

duplicated_func_0() {
    value = timer_regs.load_0; //This is the only different line (in duplicated_func_1 - load_1 is substituted

    ...

};

有没有更好的方法来访问变量名(仅通过索引不同)而不是重复相同的函数 3 次?像这样的东西:

not_duplicated_func(index : uint) {
    value = timer_regs.load_%x; //Is there a way to put the input index in the variable name instead of %x?

};

我将不胜感激您能提供的任何帮助。

4

1 回答 1

1

在里面timer_regs我不会定义 3 个变量,load_0load_1load_2而是相应类型的列表:

extend TIMER_REGS vr_ad_reg_file {
  loads[3] : list of TIMER_LOAD vr_ad_reg;
};

这样您就可以按索引访问每个寄存器。

如果您无法更改已有的布局,只需将每个列表项限制为等于您现有的实例:

extend TIMER_REGS vr_ad_reg_file {
  loads[3] : list of TIMER_LOAD vr_ad_reg;
  keep loads[0] == load_0;
  keep loads[1] == load_1;
  keep loads[2] == load_2;
};
于 2014-09-17T11:30:10.207 回答