SystemVerilog 在命中后禁用覆盖 属性
SystemVerilog disable cover property after hit
我有几个掩体 属性 预计会经常发射,我看到它们开始影响我的模拟性能,因为它们发射得太频繁了。我不想删除它们,因为我想确保我仍然在点击这些属性,但我不在乎我点击了多少次。有没有办法在它被击中后禁用属性,这样它就不会影响模拟性能?
B2BReq : cover property (
@(posedge CLK iff !RESET)
Intf.ReqValid ##1 Intf.ReqValid
);
我在想这样的事情:
bit cov_disable;
B2BReq : cover property (
@(posedge CLK iff !RESET) disable iff(cov_disable)
Intf.ReqValid ##1 Intf.ReqValid |=> cov_disable = 1
);
但这是不正确的语法。有没有办法实现这样的目标?
有些工具会在达到特定限制时自动禁用覆盖指令。我知道在 Questa 中,默认设置是在点击 1 次后禁用。
此外,您可以通过简单的暗示获得更好的性能建模您想要的东西
B2BReq : cover property (
@(posedge CLK iff !RESET)
Intf.ReqValid |-> ##1 Intf.ReqValid;
);
顺便说一句,您正在寻找的语法是
bit cov_disable;
B2BReq : cover property (
@(posedge CLK iff !RESET) disable iff(cov_disable)
Intf.ReqValid ##1 Intf.ReqValid |=> (1,cov_disable = 1);
);
我有几个掩体 属性 预计会经常发射,我看到它们开始影响我的模拟性能,因为它们发射得太频繁了。我不想删除它们,因为我想确保我仍然在点击这些属性,但我不在乎我点击了多少次。有没有办法在它被击中后禁用属性,这样它就不会影响模拟性能?
B2BReq : cover property (
@(posedge CLK iff !RESET)
Intf.ReqValid ##1 Intf.ReqValid
);
我在想这样的事情:
bit cov_disable;
B2BReq : cover property (
@(posedge CLK iff !RESET) disable iff(cov_disable)
Intf.ReqValid ##1 Intf.ReqValid |=> cov_disable = 1
);
但这是不正确的语法。有没有办法实现这样的目标?
有些工具会在达到特定限制时自动禁用覆盖指令。我知道在 Questa 中,默认设置是在点击 1 次后禁用。
此外,您可以通过简单的暗示获得更好的性能建模您想要的东西
B2BReq : cover property (
@(posedge CLK iff !RESET)
Intf.ReqValid |-> ##1 Intf.ReqValid;
);
顺便说一句,您正在寻找的语法是
bit cov_disable;
B2BReq : cover property (
@(posedge CLK iff !RESET) disable iff(cov_disable)
Intf.ReqValid ##1 Intf.ReqValid |=> (1,cov_disable = 1);
);