@@ -608,31 +608,6 @@ expr2verilogt::resultt expr2verilogt::convert_sva_binary(
608
608
609
609
/* ******************************************************************\
610
610
611
- Function: expr2verilogt::convert_sva_binary_repetition
612
-
613
- Inputs:
614
-
615
- Outputs:
616
-
617
- Purpose:
618
-
619
- \*******************************************************************/
620
-
621
- expr2verilogt::resultt expr2verilogt::convert_sva_binary_repetition (
622
- const std::string &name,
623
- const binary_exprt &expr)
624
- {
625
- auto op0 = convert_rec (expr.lhs ());
626
- if (op0.p == verilog_precedencet::MIN)
627
- op0.s = " (" + op0.s + " )" ;
628
-
629
- auto op1 = convert_rec (expr.rhs ());
630
-
631
- return {verilog_precedencet::MIN, op0.s + " " + name + op1.s + " ]" };
632
- }
633
-
634
- /* ******************************************************************\
635
-
636
611
Function: expr2verilogt::convert_sva_sequence_consecutive_repetition
637
612
638
613
Inputs:
@@ -643,20 +618,27 @@ Function: expr2verilogt::convert_sva_sequence_consecutive_repetition
643
618
644
619
\*******************************************************************/
645
620
646
- expr2verilogt::resultt
647
- expr2verilogt::convert_sva_sequence_consecutive_repetition (
648
- const sva_sequence_consecutive_repetition_exprt &expr)
621
+ expr2verilogt::resultt expr2verilogt::convert_sva_sequence_repetition (
622
+ const std::string &name,
623
+ const sva_sequence_repetition_exprt &expr)
649
624
{
650
625
auto op = convert_rec (expr.op ());
651
626
if (op.p == verilog_precedencet::MIN)
652
627
op.s = " (" + op.s + " )" ;
653
628
654
- std::string dest = op.s + " [*" + convert_rec (expr.from ()).s ;
629
+ std::string dest = op.s + " [" + name;
630
+
631
+ if (expr.is_range ())
632
+ {
633
+ dest += convert_rec (expr.from ()).s ;
655
634
656
- if (expr.is_unbounded ())
657
- dest += " :$" ;
658
- else if (expr.to ().is_not_nil ())
659
- dest += " :" + convert_rec (expr.to ()).s ;
635
+ if (expr.is_unbounded ())
636
+ dest += " :$" ;
637
+ else
638
+ dest += " :" + convert_rec (expr.to ()).s ;
639
+ }
640
+ else
641
+ dest += convert_rec (expr.repetitions ()).s ;
660
642
661
643
dest += ' ]' ;
662
644
@@ -1877,20 +1859,16 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
1877
1859
// not sure about precedence
1878
1860
1879
1861
else if (src.id () == ID_sva_sequence_non_consecutive_repetition)
1880
- return precedence = verilog_precedencet::MIN,
1881
- convert_sva_binary_repetition (
1882
- " [=" , to_sva_sequence_non_consecutive_repetition_expr (src));
1883
- // not sure about precedence
1862
+ return convert_sva_sequence_repetition (
1863
+ " =" , to_sva_sequence_non_consecutive_repetition_expr (src));
1884
1864
1885
1865
else if (src.id () == ID_sva_sequence_consecutive_repetition)
1886
- return convert_sva_sequence_consecutive_repetition (
1887
- to_sva_sequence_consecutive_repetition_expr (src));
1866
+ return convert_sva_sequence_repetition (
1867
+ " * " , to_sva_sequence_consecutive_repetition_expr (src));
1888
1868
1889
1869
else if (src.id () == ID_sva_sequence_goto_repetition)
1890
- return precedence = verilog_precedencet::MIN,
1891
- convert_sva_binary_repetition (
1892
- " [->" , to_sva_sequence_goto_repetition_expr (src));
1893
- // not sure about precedence
1870
+ return convert_sva_sequence_repetition (
1871
+ " ->" , to_sva_sequence_goto_repetition_expr (src));
1894
1872
1895
1873
else if (src.id () == ID_sva_ranged_always)
1896
1874
{
0 commit comments