有没有办法使用字符串来获取包含文件中定义的寄存器的地址值?
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;
其中 regname
和 addrval
已设置为您从文件中读取的字符串和值。
address = registers["SPECIFIC_REGISTER"];
有没有办法使用字符串来获取包含文件中定义的寄存器的地址值?
在我的测试用例中,我包含了一个定义了寄存器名称的文件,例如:
`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;
其中 regname
和 addrval
已设置为您从文件中读取的字符串和值。
address = registers["SPECIFIC_REGISTER"];