@@ -141,9 +141,8 @@ Function: expr2verilogt::convert_sva_cycle_delay
141
141
142
142
\*******************************************************************/
143
143
144
- expr2verilogt::resultt expr2verilogt::convert_sva_cycle_delay (
145
- const sva_cycle_delay_exprt &src,
146
- verilog_precedencet precedence)
144
+ expr2verilogt::resultt
145
+ expr2verilogt::convert_sva_cycle_delay (const sva_cycle_delay_exprt &src)
147
146
{
148
147
std::string dest=" ##" ;
149
148
@@ -163,13 +162,13 @@ expr2verilogt::resultt expr2verilogt::convert_sva_cycle_delay(
163
162
164
163
auto rhs = convert_rec (src.rhs ());
165
164
166
- if (precedence > rhs.p )
165
+ if (rhs.p == verilog_precedencet::MIN )
167
166
dest += ' (' ;
168
167
dest += rhs.s ;
169
- if (precedence > rhs.p )
168
+ if (rhs.p == verilog_precedencet::MIN )
170
169
dest += ' )' ;
171
170
172
- return {precedence , dest};
171
+ return {verilog_precedencet::MIN , dest};
173
172
}
174
173
175
174
/* ******************************************************************\
@@ -224,33 +223,41 @@ Function: expr2verilogt::convert_sva_sequence_concatenation
224
223
225
224
\*******************************************************************/
226
225
227
- expr2verilogt::resultt expr2verilogt::convert_sva_sequence_concatenation (
228
- const binary_exprt &src,
229
- verilog_precedencet precedence)
226
+ expr2verilogt::resultt
227
+ expr2verilogt::convert_sva_sequence_concatenation (const binary_exprt &src)
230
228
{
231
- if (src.operands ().size ()!=2 )
232
- return convert_norep (src);
233
-
234
229
std::string dest;
235
230
236
231
auto op0 = convert_rec (src.op0 ());
237
232
auto op1 = convert_rec (src.op1 ());
238
233
239
- if (precedence > op0.p )
234
+ bool lhs_paren = op0.p == verilog_precedencet::MIN &&
235
+ src.op0 ().id () != ID_sva_sequence_concatenation &&
236
+ src.op0 ().id () != ID_sva_cycle_delay &&
237
+ src.op0 ().id () != ID_sva_cycle_delay_plus &&
238
+ src.op0 ().id () != ID_sva_cycle_delay_star;
239
+
240
+ if (lhs_paren)
240
241
dest += ' (' ;
241
242
dest += op0.s ;
242
- if (precedence > op0. p )
243
+ if (lhs_paren )
243
244
dest += ' )' ;
244
245
245
246
dest+=' ' ;
246
247
247
- if (precedence > op0.p )
248
+ bool rhs_paren = op1.p == verilog_precedencet::MIN &&
249
+ src.op1 ().id () != ID_sva_sequence_concatenation &&
250
+ src.op1 ().id () != ID_sva_cycle_delay &&
251
+ src.op1 ().id () != ID_sva_cycle_delay_plus &&
252
+ src.op1 ().id () != ID_sva_cycle_delay_star;
253
+
254
+ if (rhs_paren)
248
255
dest += ' (' ;
249
256
dest += op1.s ;
250
- if (precedence > op0. p )
257
+ if (rhs_paren )
251
258
dest += ' )' ;
252
259
253
- return {precedence , dest};
260
+ return {verilog_precedencet::MIN , dest};
254
261
}
255
262
256
263
/* ******************************************************************\
@@ -1838,9 +1845,7 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
1838
1845
convert_sva_binary (" #=#" , to_binary_expr (src));
1839
1846
1840
1847
else if (src.id ()==ID_sva_cycle_delay)
1841
- return convert_sva_cycle_delay (
1842
- to_sva_cycle_delay_expr (src), precedence = verilog_precedencet::MIN);
1843
- // not sure about precedence
1848
+ return convert_sva_cycle_delay (to_sva_cycle_delay_expr (src));
1844
1849
1845
1850
else if (src.id () == ID_sva_strong)
1846
1851
return convert_function (" strong" , src);
@@ -1862,9 +1867,7 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
1862
1867
}
1863
1868
1864
1869
else if (src.id ()==ID_sva_sequence_concatenation)
1865
- return convert_sva_sequence_concatenation (
1866
- to_binary_expr (src), precedence = verilog_precedencet::MIN);
1867
- // not sure about precedence
1870
+ return convert_sva_sequence_concatenation (to_binary_expr (src));
1868
1871
1869
1872
else if (src.id () == ID_sva_sequence_first_match)
1870
1873
return convert_sva_sequence_first_match (
@@ -1885,16 +1888,6 @@ expr2verilogt::resultt expr2verilogt::convert_rec(const exprt &src)
1885
1888
convert_sva_binary (" within" , to_binary_expr (src));
1886
1889
// not sure about precedence
1887
1890
1888
- else if (src.id () == ID_sva_sequence_within)
1889
- return convert_sva_sequence_concatenation (
1890
- to_binary_expr (src), precedence = verilog_precedencet::MIN);
1891
- // not sure about precedence
1892
-
1893
- else if (src.id () == ID_sva_sequence_throughout)
1894
- return convert_sva_sequence_concatenation (
1895
- to_binary_expr (src), precedence = verilog_precedencet::MIN);
1896
- // not sure about precedence
1897
-
1898
1891
else if (src.id ()==ID_sva_always)
1899
1892
return precedence = verilog_precedencet::MIN,
1900
1893
convert_sva_unary (" always" , to_sva_always_expr (src));
0 commit comments