Warning: file_get_contents(/data/phpspider/zhask/data//catemap/4/string/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
String 有没有一种方法可以使用字符串来获取包含文件中定义的寄存器的地址值?_String_System Verilog - Fatal编程技术网

String 有没有一种方法可以使用字符串来获取包含文件中定义的寄存器的地址值?

String 有没有一种方法可以使用字符串来获取包含文件中定义的寄存器的地址值?,string,system-verilog,String,System Verilog,有没有一种方法可以使用字符串来获取包含文件中定义的寄存器的地址值 在我的测试用例中,我包括一个定义了寄存器名的文件,例如: `define SPECIFIC_REGISTER 24'h001234. int adress = `register; 在我的测试任务中,我从一个测试文件中得到我必须设置的寄存器的名称,这样在某个时候我就有了一个值为 register=“特定寄存器” 现在我必须到达特定寄存器的相应地址 我想做的是这样的: `define SPECIFIC_RE

有没有一种方法可以使用字符串来获取包含文件中定义的寄存器的地址值

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

`define SPECIFIC_REGISTER  24'h001234. 
        int adress = `register; 
在我的测试任务中,我从一个测试文件中得到我必须设置的寄存器的名称,这样在某个时候我就有了一个值为
register=“特定寄存器”

现在我必须到达特定寄存器的相应地址

我想做的是这样的:

`define SPECIFIC_REGISTER  24'h001234. 
        int adress = `register; 
其中register的名称为SPECIFIC\u register或SPECIFIC\u 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"];

首先,谢谢你,戴夫。有没有办法将include文件的所有`定义都放在数组中,或者我必须手动添加它们?您可以编写一个脚本,将定义转换为数组分配。实际上,大多数人所做的是用寄存器定义创建一个电子表格,然后使用脚本生成定义和数组