是否可以通过引用将信号传递给属性?例如,我希望创建一个cover属性来捕获正在更改的寄存器,并对数十个不同的寄存器重复使用该属性。我想做这样的事情:
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属性中定义整个属性?
发布于 2021-10-18 18:12:01
没有方法,也没有必要通过引用属性和序列来传递形式的论点。断言结构的形式参数被实际参数替换为内联参数。所以从某种意义上说,它们总是被参考的。请参阅在IEEE1801-2017 SystemVerilog LRM中声明序列的第16.8节。同样的参数行为也适用于属性。
顺便说一句,除非您需要强大的类型规则来保证断言表达式的计算正确,否则您应该将断言参数保持为无类型。
https://stackoverflow.com/questions/69618630
复制相似问题