我们如何将整数变量放入任务字符串中?

Posted

技术标签:

【中文标题】我们如何将整数变量放入任务字符串中?【英文标题】:How can we put an integer variable into a task string? 【发布时间】:2019-09-03 09:25:10 【问题描述】:

确实,我有一个读取寄存器的任务:

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)处理到任务调用中。

我希望我现在能够给出更清晰的描述,并且希望有人知道如何做到这一点。

【问题讨论】:

嗨,欢迎来到 ***!很难理解你的问题。您能否尝试更清楚地编写问题并突出显示您的代码,以便人们可以更好地帮助您。 好的,抱歉我的解释不够清楚。 【参考方案1】:

无法从变量中形成标识符名称。你想要一个数组。你可以这样做

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)],...);

【讨论】:

以上是关于我们如何将整数变量放入任务字符串中?的主要内容,如果未能解决你的问题,请参考以下文章

如何将变量放入字符串中?

如何将多行语句字符串放入变量中? [复制]

如何将函数的文档字符串放入变量中?

C语言如何将64位整数转字符串

如何将 JComboBox 事件处理程序的字符串放入变量中进行查询?

如何从一行中删除某些单词,但将其余部分放入带有批处理的字符串/变量中?