System verilog 如何将整数变量放入任务字符串中?
实际上,我的任务是读取寄存器:System verilog 如何将整数变量放入任务字符串中?,system-verilog,System Verilog,实际上,我的任务是读取寄存器: task read_reg(bit[31:0] reg_addr,bit [0:31] rd_beat...); 如您所见,第一个输入参数是32位寄存器的地址。寄存器地址通过以下参数定义: parameter int REG_0 = 32'h80440050; //R 因此,当调用任务读取寄存器时,可以将参数传递给任务: read_reg(REG_0,….); 阅读例如REG_0 现在,这是我想进一步参数化的任务调用,因此我不想硬编码参数名REG_0,但我想
task read_reg(bit[31:0] reg_addr,bit [0:31] rd_beat...);
如您所见,第一个输入参数是32位寄存器的地址。寄存器地址通过以下参数定义:
parameter int REG_0 = 32'h80440050; //R
因此,当调用任务读取寄存器时,可以将参数传递给任务:
read_reg(REG_0,….);
阅读例如REG_0
现在,这是我想进一步参数化的任务调用,因此我不想硬编码参数名REG_0,但我想通过另一个变量部分处理它:
bit [1:0] num=0;
然后,在调用任务时,我想使用变量num,而不是硬编码REG_0,例如:
read_reg(REG_$num$,...)
只是我不知道如何将上面示例中的num值0转换为任务的调用
我希望我现在能够给出一个更清晰的描述,并且有人知道如何做到这一点。无法从变量中形成标识符名称。你需要一个数组。你能行
parameter int REG[4] = {32'h80440050, //R
32'h80450050,
...};
read_reg(REG[num],...)
也可以创建关联数组
int REG[string] = '{"REG_0":REG_0,"REG_1":REG_1,...};
read_reg(REG[$sformatf("REG_%0d",num)],...);
嗨,欢迎来到StackOverflow!很难理解你的问题。你能不能试着把问题写得更清楚,突出你的代码,这样人们就能更好地帮助你。好的,很抱歉,我的解释不够清楚。