在我的验证环境中,我有3个不同的寄存器,其中包含相同的字段:load_0
,load_1
和load_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?
};
我将非常感谢您提供的任何帮助。
答案 0 :(得分:1)
在timer_regs
内部我不会定义3个变量load_0
,load_1
和load_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;
};