@@ -215,6 +215,36 @@ expr2verilogt::resultt expr2verilogt::convert_sva_sequence_concatenation(
215215
216216/* ******************************************************************\
217217
218+ Function: expr2verilogt::convert_sva_sequence_first_match
219+
220+ Inputs:
221+
222+ Outputs:
223+
224+ Purpose:
225+
226+ \*******************************************************************/
227+
228+ expr2verilogt::resultt expr2verilogt::convert_sva_sequence_first_match (
229+ const sva_sequence_first_match_exprt &src)
230+ {
231+ std::string dest = " first_match(" ;
232+
233+ dest += convert_rec (src.lhs ()).s ;
234+
235+ if (src.rhs ().is_not_nil ())
236+ {
237+ dest += " , " ;
238+ dest += convert_rec (src.rhs ()).s ;
239+ }
240+
241+ dest += ' )' ;
242+
243+ return {verilog_precedencet::MAX, dest};
244+ }
245+
246+ /* ******************************************************************\
247+
218248Function: expr2verilogt::convert_binary
219249
220250 Inputs:
@@ -1782,7 +1812,8 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
17821812 // not sure about precedence
17831813
17841814 else if (src.id () == ID_sva_sequence_first_match)
1785- return convert_function (" first_match" , src);
1815+ return convert_sva_sequence_first_match (
1816+ to_sva_sequence_first_match_expr (src));
17861817
17871818 else if (src.id () == ID_sva_sequence_intersect)
17881819 return precedence = verilog_precedencet::MIN,
@@ -1956,6 +1987,9 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
19561987 else if (src.id () == ID_verilog_value_range)
19571988 return convert_value_range (to_verilog_value_range_expr (src));
19581989
1990+ else if (src.id () == ID_postincrement)
1991+ return convert_sva_unary (to_unary_expr (src), " ++" );
1992+
19591993 else if (
19601994 src.id () == ID_nand || src.id () == ID_nor || src.id () == ID_xnor ||
19611995 src.id () == ID_xor)
0 commit comments