@@ -453,6 +453,28 @@ expr2verilogt::resultt expr2verilogt::convert_sva_unary(
453453
454454/* ******************************************************************\
455455
456+ Function: expr2verilogt::convert_sva_unary
457+
458+ Inputs:
459+
460+ Outputs:
461+
462+ Purpose:
463+
464+ \*******************************************************************/
465+
466+ expr2verilogt::resultt expr2verilogt::convert_sva_unary (
467+ const unary_exprt &src,
468+ const std::string &name)
469+ {
470+ auto op = convert_rec (src.op ());
471+ if (op.p == verilog_precedencet::MIN && src.op ().operands ().size () >= 2 )
472+ op.s = " (" + op.s + " )" ;
473+ return {verilog_precedencet::MIN, op.s + name};
474+ }
475+
476+ /* ******************************************************************\
477+
456478Function: expr2verilogt::convert_sva_binary
457479
458480 Inputs:
@@ -1446,6 +1468,16 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
14461468 convert_sva_binary (" intersect" , to_binary_expr (src));
14471469 // not sure about precedence
14481470
1471+ else if (src.id () == ID_sva_sequence_throughout)
1472+ return precedence = verilog_precedencet::MIN,
1473+ convert_sva_binary (" throughout" , to_binary_expr (src));
1474+ // not sure about precedence
1475+
1476+ else if (src.id () == ID_sva_sequence_within)
1477+ return precedence = verilog_precedencet::MIN,
1478+ convert_sva_binary (" within" , to_binary_expr (src));
1479+ // not sure about precedence
1480+
14491481 else if (src.id () == ID_sva_sequence_within)
14501482 return convert_sva_sequence_concatenation (
14511483 to_binary_expr (src), precedence = verilog_precedencet::MIN);
@@ -1460,6 +1492,31 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
14601492 return precedence = verilog_precedencet::MIN,
14611493 convert_sva_unary (" always" , to_sva_always_expr (src));
14621494
1495+ else if (src.id () == ID_sva_sequence_repetition_star)
1496+ return precedence = verilog_precedencet::MIN,
1497+ convert_sva_unary (to_unary_expr (src), " [*]" );
1498+ // not sure about precedence
1499+
1500+ else if (src.id () == ID_sva_sequence_repetition_plus)
1501+ return precedence = verilog_precedencet::MIN,
1502+ convert_sva_unary (to_unary_expr (src), " [+]" );
1503+ // not sure about precedence
1504+
1505+ else if (src.id () == ID_sva_sequence_non_consecutive_repetition)
1506+ return precedence = verilog_precedencet::MIN,
1507+ convert_sva_binary (" [=]" , to_binary_expr (src));
1508+ // not sure about precedence
1509+
1510+ else if (src.id () == ID_sva_sequence_consecutive_repetition)
1511+ return precedence = verilog_precedencet::MIN,
1512+ convert_sva_binary (" [*]" , to_binary_expr (src));
1513+ // not sure about precedence
1514+
1515+ else if (src.id () == ID_sva_sequence_goto_repetition)
1516+ return precedence = verilog_precedencet::MIN,
1517+ convert_sva_binary (" [->]" , to_binary_expr (src));
1518+ // not sure about precedence
1519+
14631520 else if (src.id () == ID_sva_ranged_always)
14641521 {
14651522 return precedence = verilog_precedencet::MIN,
0 commit comments