有没有办法使用字符串来获取包含文件中定义的寄存器的地址值?

Is there a way to use a string to get the adress values of registers defined in a include file?

有没有办法使用字符串来获取包含文件中定义的寄存器的地址值?

在我的测试用例中,我包含了一个定义了寄存器名称的文件,例如:

`define SPECIFIC_REGISTER  24'h001234. 

在我的测试任务中,我得到了我必须从测试文件中设置的寄存器的名称,所以在某些时候我有一个字符串,其值为
注册="SPECIFIC_REGISTER"

现在我要到达SPECIFIC_REGISTER的对应地址...

我想做的是这样的:

        int adress = `register; 

其中寄存器的名称为 SPECIFIC_REGISTER 或 SPECIFIC_REGISTER2 等等。

但是当我这样尝试时,他总是出错:未声明的标识符,因为当我包含寄存器定义时,字符串寄存器是空的...

您不能使用字符串访问变量名。您可以做的是定义一个关联数组,其元素以字符串

键控
bit [23:0] registers[string];

registers["SPECIFIC_REGISTER"] = 24'h0001234;
registers["SPECIFIC_REGISTER2"] = 24'h0005678;

registers[regname] = addrval;

其中 regnameaddrval 已设置为您从文件中读取的字符串和值。

address = registers["SPECIFIC_REGISTER"];