问题描述
我有一个 SystemVerilog 测试平台,我想在其中使用我程序中其他 case
语句中的 case
语句。
例如,我有:
task a(string b,string c)
case(b)
"a1": x(x1,case(c) "b1":y=1; "b2":y=2;);
"a2": x(x2,case(c) "b3":y=4; "b4":y=5;);
这是我想要实现的结构,在多个不同的 case 项中使用带有字符串 c 的 case。
解决方法
如果我猜对了,x
表示一个任务或一个函数,而您正试图将 case 语句作为参数传递。对?不可能。
但这应该有效:
task a(string b,string c)
case(c)
"b1": y = 1;
"b2": y = 2;
...
endcase
case(b)
"a1": x(x1,y);
"a2": x(x2,y);
或者对于 case 中的 case 通常使用 begin/end:
"a1": begin
x=x1;
case(c)
"b1":y=1;
"b2":y=2;
endcase
end
"a2": begin
x = x2;
case(c)
"b3": y=3;
"b4": y= 4;
endcase
end
endcase