首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >SystemVerilog属性引用传递

SystemVerilog属性引用传递
EN

Stack Overflow用户
提问于 2021-10-18 15:23:31
回答 1查看 327关注 0票数 0

是否可以通过引用将信号传递给属性?例如,我希望创建一个cover属性来捕获正在更改的寄存器,并对数十个不同的寄存器重复使用该属性。我想做这样的事情:

代码语言:javascript
复制
property reg_change(int num_cycles, ref bit some_reg);
    @(posedge CLK)
    $changed(some_reg) |-> ##num_cycles $changed(some_reg);
endproperty

Reg1Change10Cycles_cp : cover property (reg_change(10, reg1);
Reg2Change10Cycles_cp : cover property (reg_change(10, reg2);
//...

但是,如果试图在属性中使用'ref‘,则会出现编译错误。我认为我不能仅仅使用bit some_reg,因为这是按值传递的,而且永远不会看到some_reg的变化。不管怎么说,我是否可以实现这种行为,而不需要在每个cover属性中定义整个属性?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2021-10-18 18:12:01

没有方法,也没有必要通过引用属性和序列来传递形式的论点。断言结构的形式参数被实际参数替换为内联参数。所以从某种意义上说,它们总是被参考的。请参阅在IEEE1801-2017 SystemVerilog LRM中声明序列的第16.8节。同样的参数行为也适用于属性。

顺便说一句,除非您需要强大的类型规则来保证断言表达式的计算正确,否则您应该将断言参数保持为无类型。

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

https://stackoverflow.com/questions/69618630

复制
相关文章

相似问题

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