首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >函数内的Bluespec $display

函数内的Bluespec $display
EN

Stack Overflow用户
提问于 2013-02-27 09:51:38
回答 3查看 786关注 0票数 0

当我试图在函数定义中使用$display时,Bluespec报错。

它只允许在规则定义中使用。

有没有办法在函数中显示变量名?

我认为它可能使用了ActionValue#,但我无法获得正确的语法。我在网上也找不到例子。

谢谢

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2013-07-08 06:10:38

一个正确的语法是-

代码语言:javascript
复制
function ActionValue#(rtype) func(...)
= actionvalue
    do something;
    $display(...);
    return val;
endactionvalue;
票数 3
EN

Stack Overflow用户

发布于 2013-06-28 05:33:53

默认情况下,Bluespec函数是纯函数。如果你想调试它,将它分成几个部分,将函数结果保存在一个字段中,并使用一个方法将其提取到您的测试台中。

看看Bluespec by Example这本书。

$display是一个有副作用的函数,因此必须在“操作”块中调用它。

票数 1
EN

Stack Overflow用户

发布于 2013-08-21 21:32:44

Bluespec函数是在编译时静态阐述的,因此在它们内部使用$display语句通常是没有意义的。但是,如果函数返回ActionActionValue,则它返回的操作可以包含$display语句,然后将在调用它的任何规则或方法中详细说明该语句。

创建ActionValue的语法为:

代码语言:javascript
复制
actionvalue
    //Anything that can go in a rule body can go here.
    $display(...);
    return value;
endactionvalue

普通Action的语法类似,但使用action/endaction,不使用return语句。

然后可以在函数定义中使用它,如下所示:

代码语言:javascript
复制
function ActionValue#(Type) funcName(Type arg);
    ...
    return actionvalue
        ...
    endactionvalue;
endfunction

如果只需要return语句,也可以使用替代语法:

代码语言:javascript
复制
function ActionValue#(Type1) funcName(Type2 arg) =
actionvalue
    ...
endactionvalue;

最后一点,如果您实际上希望在编译时从函数生成输出,则可以使用message函数。但是,请注意,这只需要一个简单的String参数,而不是像$display那样处理格式化。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/15102820

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档