@@ -502,6 +502,31 @@ expr2verilogt::resultt expr2verilogt::convert_sva_binary(
502502
503503/* ******************************************************************\
504504
505+ Function: expr2verilogt::convert_sva_binary_repetition
506+
507+ Inputs:
508+
509+ Outputs:
510+
511+ Purpose:
512+
513+ \*******************************************************************/
514+
515+ expr2verilogt::resultt expr2verilogt::convert_sva_binary_repetition (
516+ const std::string &name,
517+ const binary_exprt &expr)
518+ {
519+ auto op0 = convert_rec (expr.lhs ());
520+ if (op0.p == verilog_precedencet::MIN)
521+ op0.s = " (" + op0.s + " )" ;
522+
523+ auto op1 = convert_rec (expr.rhs ());
524+
525+ return {verilog_precedencet::MIN, op0.s + " " + name + op1.s + " ]" };
526+ }
527+
528+ /* ******************************************************************\
529+
505530Function: expr2verilogt::convert_sva_abort
506531
507532 Inputs:
@@ -1504,17 +1529,17 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
15041529
15051530 else if (src.id () == ID_sva_sequence_non_consecutive_repetition)
15061531 return precedence = verilog_precedencet::MIN,
1507- convert_sva_binary (" [=] " , to_binary_expr (src));
1532+ convert_sva_binary_repetition (" [=" , to_binary_expr (src));
15081533 // not sure about precedence
15091534
15101535 else if (src.id () == ID_sva_sequence_consecutive_repetition)
15111536 return precedence = verilog_precedencet::MIN,
1512- convert_sva_binary (" [*] " , to_binary_expr (src));
1537+ convert_sva_binary_repetition (" [*" , to_binary_expr (src));
15131538 // not sure about precedence
15141539
15151540 else if (src.id () == ID_sva_sequence_goto_repetition)
15161541 return precedence = verilog_precedencet::MIN,
1517- convert_sva_binary (" [->] " , to_binary_expr (src));
1542+ convert_sva_binary_repetition (" [->" , to_binary_expr (src));
15181543 // not sure about precedence
15191544
15201545 else if (src.id () == ID_sva_ranged_always)
0 commit comments