System Verilog 嵌套关联数组
System Verilog Nested Associative Array
如何在 System Verilog 中声明和初始化嵌套关联数组?
/*
Creating an associative array(AA) called timings such that
each key contains an AA with a list of relevant key value pairs
*/
typedef string timingObj [string];
timingObj timings [string] = {"A": {"B" : "C"}, "X": {"Y" : "Z"} };
//string timings [timingObj] = {"A": {"B" : "C"}, "X": {"Y" : "Z"} }; //Same error
timingObj t;
$cast(t, timings["A"]); // t = {"B" : "C"}
$display("%s", timings["A"]);
$display("%s", t["B"]);
以上代码导致编译错误
"Syntax error. Unexpected token: }. Expected tokens: ':'." "testbench.sv" 2
"Syntax error. Unexpected token: $cast[_SYSTEM_CAST]. Expected tokens: ';' , 'checker' , 'function' , 'task' , 'timeprecision' ... ." "testbench.sv" 6 6
关联数组的赋值模式前面需要一个'{}
标记,以区别于串联{}
。在某些情况下它是模棱两可的(但这里不是)。所以写
timingObj timings [string] = '{"A": '{"B" : "C"}, "X": '{"Y" : "Z"} };
如何在 System Verilog 中声明和初始化嵌套关联数组?
/*
Creating an associative array(AA) called timings such that
each key contains an AA with a list of relevant key value pairs
*/
typedef string timingObj [string];
timingObj timings [string] = {"A": {"B" : "C"}, "X": {"Y" : "Z"} };
//string timings [timingObj] = {"A": {"B" : "C"}, "X": {"Y" : "Z"} }; //Same error
timingObj t;
$cast(t, timings["A"]); // t = {"B" : "C"}
$display("%s", timings["A"]);
$display("%s", t["B"]);
以上代码导致编译错误
"Syntax error. Unexpected token: }. Expected tokens: ':'." "testbench.sv" 2
"Syntax error. Unexpected token: $cast[_SYSTEM_CAST]. Expected tokens: ';' , 'checker' , 'function' , 'task' , 'timeprecision' ... ." "testbench.sv" 6 6
关联数组的赋值模式前面需要一个'{}
标记,以区别于串联{}
。在某些情况下它是模棱两可的(但这里不是)。所以写
timingObj timings [string] = '{"A": '{"B" : "C"}, "X": '{"Y" : "Z"} };