Drop redundant width sets and cover weak always low-bound rejection
This commit is contained in:
parent
2a7bf64487
commit
1bdf145f6f
|
|
@ -1786,19 +1786,16 @@ public:
|
||||||
pendingp = svp;
|
pendingp = svp;
|
||||||
} else {
|
} else {
|
||||||
pendingp = new AstLogOr{flp, pendingp, svp};
|
pendingp = new AstLogOr{flp, pendingp, svp};
|
||||||
pendingp->dtypeSetBit();
|
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
if (pendingp) {
|
if (pendingp) {
|
||||||
AstCExpr* const assertOnp
|
AstCExpr* const assertOnp
|
||||||
= new AstCExpr{flp, AstCExpr::Pure{}, "vlSymsp->_vm_contextp__->assertOn()", 1};
|
= new AstCExpr{flp, AstCExpr::Pure{}, "vlSymsp->_vm_contextp__->assertOn()", 1};
|
||||||
assertOnp->dtypeSetBit();
|
|
||||||
AstNodeExpr* const condp = new AstLogAnd{flp, assertOnp, pendingp};
|
AstNodeExpr* const condp = new AstLogAnd{flp, assertOnp, pendingp};
|
||||||
condp->dtypeSetBit();
|
|
||||||
AstDisplay* const dispp
|
AstDisplay* const dispp
|
||||||
= new AstDisplay{flp, VDisplayType::DT_ERROR, "", nullptr, nullptr};
|
= new AstDisplay{flp, VDisplayType::DT_ERROR, "", nullptr, nullptr};
|
||||||
dispp->fmtp()->timeunit(m_modp->timeunit());
|
dispp->fmtp()->timeunit(m_modp->timeunit());
|
||||||
AstNodeStmt* firep = dispp;
|
AstNodeStmt* const firep = dispp;
|
||||||
if (v3Global.opt.stopFail()) firep->addNext(new AstStop{flp, false});
|
if (v3Global.opt.stopFail()) firep->addNext(new AstStop{flp, false});
|
||||||
m_modp->addStmtsp(new AstFinal{flp, new AstIf{flp, condp, firep}});
|
m_modp->addStmtsp(new AstFinal{flp, new AstIf{flp, condp, firep}});
|
||||||
}
|
}
|
||||||
|
|
|
||||||
|
|
@ -7,4 +7,8 @@
|
||||||
: ... note: In instance 't'
|
: ... note: In instance 't'
|
||||||
14 | assert property (@(posedge clk) s_always [2:$] a);
|
14 | assert property (@(posedge clk) s_always [2:$] a);
|
||||||
| ^~~~~~~~
|
| ^~~~~~~~
|
||||||
|
%Error: t/t_assert_always_unbounded_bad.v:18:35: always range low bound must be a constant expression (IEEE 1800-2023 16.12.11)
|
||||||
|
: ... note: In instance 't'
|
||||||
|
18 | assert property (@(posedge clk) always [$:5] a);
|
||||||
|
| ^~~~~~
|
||||||
%Error: Exiting due to
|
%Error: Exiting due to
|
||||||
|
|
|
||||||
|
|
@ -13,4 +13,8 @@ module t (input clk);
|
||||||
assert property (@(posedge clk) s_always a);
|
assert property (@(posedge clk) s_always a);
|
||||||
assert property (@(posedge clk) s_always [2:$] a);
|
assert property (@(posedge clk) s_always [2:$] a);
|
||||||
|
|
||||||
|
// A weak always range may only place $ on the high bound; an unbounded low
|
||||||
|
// bound is not a legal cycle_delay_const_range_expression.
|
||||||
|
assert property (@(posedge clk) always [$:5] a);
|
||||||
|
|
||||||
endmodule
|
endmodule
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue