Skip to content

Commit d525bc0

Browse files
committed
Verilog: use verilog_integer instead of integer
1 parent 0a2b27c commit d525bc0

File tree

6 files changed

+44
-26
lines changed

6 files changed

+44
-26
lines changed

src/verilog/parser.y

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1049,7 +1049,7 @@ integer_atom_type:
10491049
| TOK_SHORTINT { init($$, ID_verilog_shortint); }
10501050
| TOK_INT { init($$, ID_verilog_int); }
10511051
| TOK_LONGINT { init($$, ID_verilog_longint); }
1052-
| TOK_INTEGER { init($$, ID_integer); }
1052+
| TOK_INTEGER { init($$, ID_verilog_integer); }
10531053
| TOK_TIME { init($$, ID_verilog_time); }
10541054
;
10551055

@@ -1388,7 +1388,7 @@ range: part_select;
13881388

13891389
integer_real_type:
13901390
TOK_INTEGER
1391-
{ init($$, ID_integer); }
1391+
{ init($$, ID_verilog_integer); }
13921392
| TOK_REAL
13931393
{ init($$, ID_verilog_real); }
13941394
| TOK_REALTIME
@@ -1518,7 +1518,7 @@ range_or_type_opt:
15181518
range_or_type:
15191519
packed_dimension
15201520
| TOK_INTEGER
1521-
{ init($$, ID_integer); }
1521+
{ init($$, ID_verilog_integer); }
15221522
| TOK_REAL
15231523
{ init($$, ID_verilog_real); }
15241524
| TOK_REALTIME

src/verilog/verilog_interfaces.cpp

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -346,7 +346,7 @@ void verilog_typecheckt::interface_function_or_task_decl(const verilog_declt &de
346346
else
347347
{
348348
if(
349-
type.id() == ID_integer || type.id() == ID_verilog_realtime ||
349+
type.id() == ID_verilog_integer || type.id() == ID_verilog_realtime ||
350350
type.id() == ID_verilog_shortreal || type.id() == ID_verilog_real)
351351
{
352352
symbol.is_lvalue = true;
@@ -515,7 +515,7 @@ void verilog_typecheckt::interface_module_decl(
515515
else
516516
{
517517
if(
518-
type.id() == ID_integer || type.id() == ID_verilog_realtime ||
518+
type.id() == ID_verilog_integer || type.id() == ID_verilog_realtime ||
519519
type.id() == ID_verilog_shortreal || type.id() == ID_verilog_real)
520520
{
521521
symbol.is_lvalue = true;

src/verilog/verilog_language.cpp

Lines changed: 20 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -156,13 +156,28 @@ bool verilog_languaget::typecheck(
156156
{
157157
if(module=="") return false;
158158

159-
if(verilog_typecheck(parse_tree, symbol_table, module, get_message_handler()))
160-
return true;
161-
162-
debug() << "Synthesis " << module << eom;
159+
try
160+
{
161+
if(verilog_typecheck(
162+
parse_tree, symbol_table, module, get_message_handler()))
163+
return true;
164+
165+
debug() << "Synthesis " << module << eom;
163166

164-
if(verilog_synthesis(symbol_table, module, get_message_handler(), options))
167+
if(verilog_synthesis(symbol_table, module, get_message_handler(), options))
168+
return true;
169+
}
170+
catch(const verilog_typecheck_baset::errort &e)
171+
{
172+
if(e.what().empty())
173+
error();
174+
else
175+
{
176+
error().source_location = e.source_location();
177+
error() << e.what() << messaget::eom;
178+
}
165179
return true;
180+
}
166181

167182
return false;
168183
}

src/verilog/verilog_synthesis.cpp

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1749,7 +1749,7 @@ void verilog_synthesist::synth_assign(
17491749
rhs = synth_expr(rhs, symbol_statet::CURRENT);
17501750

17511751
// elaborate now?
1752-
if(lhs.type().id() == ID_integer)
1752+
if(lhs.type().id() == ID_verilog_integer)
17531753
{
17541754
mp_integer i;
17551755
simplify(rhs, ns);
@@ -2784,7 +2784,8 @@ void verilog_synthesist::synth_assignments(transt &trans)
27842784
symbolt &symbol=symbol_table_lookup(it);
27852785

27862786
if(
2787-
symbol.is_state_var && !symbol.is_macro && symbol.type.id() != ID_integer)
2787+
symbol.is_state_var && !symbol.is_macro &&
2788+
symbol.type.id() != ID_verilog_integer)
27882789
{
27892790
assignmentt &assignment=assignments[symbol.name];
27902791

src/verilog/verilog_typecheck_expr.cpp

Lines changed: 15 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -261,7 +261,7 @@ void verilog_typecheck_exprt::convert_expr(exprt &expr)
261261
throw errort().with_location(it->source_location())
262262
<< "array type not allowed in concatenation";
263263
}
264-
else if(type.id() == ID_integer)
264+
else if(type.id() == ID_verilog_integer)
265265
{
266266
throw errort().with_location(it->source_location())
267267
<< "integer type not allowed in concatenation";
@@ -446,7 +446,7 @@ exprt verilog_typecheck_exprt::bits(const exprt &expr)
446446
}
447447
}(expr);
448448

449-
return from_integer(width, integer_typet());
449+
return from_integer(width, verilog_integer_typet());
450450
}
451451

452452
/*******************************************************************\
@@ -573,7 +573,7 @@ exprt verilog_typecheck_exprt::convert_system_function(
573573
}
574574

575575
// The return type is integer.
576-
expr.type() = integer_typet();
576+
expr.type() = verilog_integer_typet();
577577

578578
return std::move(expr);
579579
}
@@ -613,7 +613,7 @@ exprt verilog_typecheck_exprt::convert_system_function(
613613
<< "$clog2 takes one argument";
614614
}
615615

616-
expr.type() = integer_typet();
616+
expr.type() = verilog_integer_typet();
617617

618618
return std::move(expr);
619619
}
@@ -1133,7 +1133,7 @@ verilog_typecheck_exprt::convert_integer_constant_expression(exprt expr)
11331133
convert_expr(expr);
11341134

11351135
// this could be large
1136-
propagate_type(expr, integer_typet());
1136+
propagate_type(expr, verilog_integer_typet());
11371137

11381138
exprt tmp = elaborate_constant_expression(expr);
11391139

@@ -1303,14 +1303,14 @@ exprt verilog_typecheck_exprt::elaborate_constant_system_function_call(
13031303

13041304
// SystemVerilog (20.8.1, page 567)
13051305
if(*value_opt == 0 || *value_opt == 1)
1306-
return from_integer(0, integer_typet());
1306+
return from_integer(0, verilog_integer_typet());
13071307
else
13081308
{
13091309
mp_integer result = 1;
13101310
for(mp_integer x = 2; x < *value_opt; ++result, x *= 2)
13111311
;
13121312

1313-
return from_integer(result, integer_typet());
1313+
return from_integer(result, verilog_integer_typet());
13141314
}
13151315
}
13161316
else
@@ -1380,7 +1380,7 @@ void verilog_typecheck_exprt::typecast(
13801380
if(expr.type()==dest_type)
13811381
return;
13821382

1383-
if(dest_type.id() == ID_integer)
1383+
if(dest_type.id() == ID_verilog_integer)
13841384
{
13851385
if(expr.is_constant())
13861386
{
@@ -1399,14 +1399,14 @@ void verilog_typecheck_exprt::typecast(
13991399

14001400
if(
14011401
expr.type().id() == ID_bool || expr.type().id() == ID_unsignedbv ||
1402-
expr.type().id() == ID_signedbv || expr.type().id() == ID_integer)
1402+
expr.type().id() == ID_signedbv || expr.type().id() == ID_verilog_integer)
14031403
{
14041404
expr = typecast_exprt{expr, dest_type};
14051405
return;
14061406
}
14071407
}
14081408

1409-
if(expr.type().id() == ID_integer)
1409+
if(expr.type().id() == ID_verilog_integer)
14101410
{
14111411
// from integer to s.th. else
14121412
if(dest_type.id()==ID_bool)
@@ -1415,7 +1415,7 @@ void verilog_typecheck_exprt::typecast(
14151415
// we actually only want the lowest bit
14161416
unsignedbv_typet tmp_type(1);
14171417
exprt tmp(ID_extractbit, bool_typet());
1418-
exprt no_expr = from_integer(0, integer_typet());
1418+
exprt no_expr = from_integer(0, verilog_integer_typet());
14191419
tmp.add_to_operands(typecast_exprt(expr, tmp_type), std::move(no_expr));
14201420
expr.swap(tmp);
14211421
return;
@@ -1451,7 +1451,7 @@ void verilog_typecheck_exprt::typecast(
14511451
}
14521452

14531453
exprt tmp(ID_extractbit, bool_typet());
1454-
exprt no_expr = from_integer(0, integer_typet());
1454+
exprt no_expr = from_integer(0, verilog_integer_typet());
14551455
tmp.add_to_operands(std::move(expr), std::move(no_expr));
14561456
expr.swap(tmp);
14571457
return;
@@ -1961,8 +1961,10 @@ void verilog_typecheck_exprt::convert_binary_expr(binary_exprt &expr)
19611961

19621962
if(
19631963
op0_type.id() == ID_signedbv || op0_type.id() == ID_verilog_signedbv ||
1964-
op0_type.id() == ID_integer)
1964+
op0_type.id() == ID_verilog_integer)
1965+
{
19651966
expr.id(ID_ashr);
1967+
}
19661968
else
19671969
expr.id(ID_lshr);
19681970

src/verilog/verilog_typecheck_type.cpp

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,7 +35,7 @@ typet verilog_typecheck_exprt::convert_type(const typet &src)
3535
// it's just a bit
3636
return bool_typet();
3737
}
38-
else if(src.id() == ID_integer)
38+
else if(src.id() == ID_verilog_integer)
3939
{
4040
typet result = integer_typet();
4141
result.add_source_location() = std::move(source_location);

0 commit comments

Comments
 (0)