@@ -407,6 +407,42 @@ std::string expr2verilogt::convert_sva_ranged_predicate(
407407
408408/* ******************************************************************\
409409
410+ Function: expr2verilogt::convert_sva_case
411+
412+ Inputs:
413+
414+ Outputs:
415+
416+ Purpose:
417+
418+ \*******************************************************************/
419+
420+ std::string expr2verilogt::convert_sva_case (const sva_case_exprt &src)
421+ {
422+ std::string cases;
423+
424+ for (auto &case_item : src.case_items ())
425+ {
426+ bool first = true ;
427+ for (auto &pattern : case_item.patterns ())
428+ {
429+ if (first)
430+ first = false ;
431+ else
432+ cases += " , " ;
433+ cases += convert (pattern);
434+ }
435+
436+ cases += " : " ;
437+ cases += convert (case_item.result ());
438+ cases += " ; " ;
439+ }
440+
441+ return " case(" + convert (src.case_op ()) + " ) " + cases + " endcase" ;
442+ }
443+
444+ /* ******************************************************************\
445+
410446Function: expr2verilogt::convert_sva_unary
411447
412448 Inputs:
@@ -1171,7 +1207,13 @@ std::string expr2verilogt::convert(
11711207 else if (src.id ()==ID_sva_cycle_delay)
11721208 return convert_sva_cycle_delay (to_ternary_expr (src), precedence = 0 );
11731209 // not sure about precedence
1174-
1210+
1211+ else if (src.id () == ID_sva_strong)
1212+ return convert_function (" strong" , src);
1213+
1214+ else if (src.id () == ID_sva_weak)
1215+ return convert_function (" weak" , src);
1216+
11751217 else if (src.id ()==ID_sva_sequence_concatenation)
11761218 return convert_sva_sequence_concatenation (
11771219 to_binary_expr (src), precedence = 0 );
@@ -1251,6 +1293,9 @@ std::string expr2verilogt::convert(
12511293 else if (src.id () == ID_sva_if)
12521294 return precedence = 0 , convert_sva_if (to_sva_if_expr (src));
12531295
1296+ else if (src.id () == ID_sva_case)
1297+ return precedence = 0 , convert_sva_case (to_sva_case_expr (src));
1298+
12541299 else if (src.id ()==ID_function_call)
12551300 return convert_function_call (to_function_call_expr (src));
12561301
0 commit comments