当我试图在函数定义中使用$display时,Bluespec报错。
它只允许在规则定义中使用。
有没有办法在函数中显示变量名?
我认为它可能使用了ActionValue#,但我无法获得正确的语法。我在网上也找不到例子。
谢谢
发布于 2013-07-08 06:10:38
一个正确的语法是-
function ActionValue#(rtype) func(...)
= actionvalue
do something;
$display(...);
return val;
endactionvalue;发布于 2013-06-28 05:33:53
默认情况下,Bluespec函数是纯函数。如果你想调试它,将它分成几个部分,将函数结果保存在一个字段中,并使用一个方法将其提取到您的测试台中。
看看Bluespec by Example这本书。
$display是一个有副作用的函数,因此必须在“操作”块中调用它。
发布于 2013-08-21 21:32:44
Bluespec函数是在编译时静态阐述的,因此在它们内部使用$display语句通常是没有意义的。但是,如果函数返回Action或ActionValue,则它返回的操作可以包含$display语句,然后将在调用它的任何规则或方法中详细说明该语句。
创建ActionValue的语法为:
actionvalue
//Anything that can go in a rule body can go here.
$display(...);
return value;
endactionvalue普通Action的语法类似,但使用action/endaction,不使用return语句。
然后可以在函数定义中使用它,如下所示:
function ActionValue#(Type) funcName(Type arg);
...
return actionvalue
...
endactionvalue;
endfunction如果只需要return语句,也可以使用替代语法:
function ActionValue#(Type1) funcName(Type2 arg) =
actionvalue
...
endactionvalue;最后一点,如果您实际上希望在编译时从函数生成输出,则可以使用message函数。但是,请注意,这只需要一个简单的String参数,而不是像$display那样处理格式化。
https://stackoverflow.com/questions/15102820
复制相似问题