File tree Expand file tree Collapse file tree 3 files changed +16
-6
lines changed Expand file tree Collapse file tree 3 files changed +16
-6
lines changed Original file line number Diff line number Diff line change 3
3
* Verilog: `elsif preprocessor directive
4
4
* Verilog: fix for named generate blocks
5
5
* Verilog: $onehot and $onehot0 are now elaboration-time constant
6
+ * SystemVerilog: fix for #-# and #=# for empty matches
6
7
* LTL/SVA to Buechi with --buechi
7
8
8
9
# EBMC 5.6
Original file line number Diff line number Diff line change 1
- KNOWNBUG
1
+ CORE
2
2
followed-by5.sv
3
3
--bound 2
4
- ^\[main\.p0\] \(1 \[\*0\]\) #=# main\.x == 0: PROVED$
4
+ ^\[main\.p0\] \(1 \[\*0\]\) #=# main\.x == 0: PROVED up to bound 2 $
5
5
^\[main\.p1\] \(1 \[\*0\]\) #-# 1: REFUTED$
6
6
^EXIT=10$
7
7
^SIGNAL=0$
8
8
--
9
9
^warning: ignoring
10
10
--
11
- Empty LHS sequences are not implemented.
Original file line number Diff line number Diff line change @@ -644,7 +644,7 @@ static obligationst property_obligations_rec(
644
644
// the result is a property expression.
645
645
auto &followed_by = to_sva_followed_by_expr (property_expr);
646
646
647
- // get (proper) match points for LHS sequence
647
+ // get match points for LHS sequence
648
648
auto matches = instantiate_sequence (
649
649
followed_by.antecedent (),
650
650
sva_sequence_semanticst::STRONG,
@@ -656,10 +656,20 @@ static obligationst property_obligations_rec(
656
656
657
657
for (auto &match : matches)
658
658
{
659
+ bool overlapped = property_expr.id () == ID_sva_overlapped_followed_by;
660
+
661
+ // empty match?
662
+ if (match.empty_match () && overlapped)
663
+ {
664
+ // won't yield a disjunct
665
+ continue ;
666
+ }
667
+
659
668
mp_integer property_start = match.end_time ;
660
669
661
- // #=# advances the clock by one from the sequence match point
662
- if (property_expr.id () == ID_sva_nonoverlapped_followed_by)
670
+ // #=# advances the clock by one from the sequence match point,
671
+ // unless the LHS is an empty match.
672
+ if (!match.empty_match () && !overlapped)
663
673
property_start += 1 ;
664
674
665
675
// at the end?
You can’t perform that action at this time.
0 commit comments