Skip to content

Commit 04cff96

Browse files
committed
Verilog: fix integral vs. bit vector terminology
This changes the naming of methods and error messages. The term 'integral' includes non-integer types, e.g., time variables. Many operators require operands that are integral but exclude time variables. The standard calls these "bit vector types".
1 parent 493be12 commit 04cff96

File tree

9 files changed

+30
-29
lines changed

9 files changed

+30
-29
lines changed

regression/verilog/expressions/concatenation5.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
concatenation5.v
33

4-
^file .* line 4: operand 1.1 must be integral$
4+
^file .* line 4: operand 1.1 must have a bit vector type$
55
^EXIT=2$
66
^SIGNAL=0$
77
--

regression/verilog/expressions/mod2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
mod2.v
33

4-
^file .* line 4: operand 1\.1 must be integral$
4+
^file .* line 4: operand 1\.1 must have a bit vector type$
55
^EXIT=2$
66
^SIGNAL=0$
77
--

regression/verilog/expressions/reduction2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
reduction2.v
33

4-
^file .* line 4: operand 1\.1 must be integral$
4+
^file .* line 4: operand 1\.1 must have a bit vector type$
55
^EXIT=2$
66
^SIGNAL=0$
77
--

regression/verilog/expressions/replication3.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
replication3.v
33

4-
^file .* line 3: operand 1\.1 must be integral$
4+
^file .* line 3: operand 1\.1 must have a bit vector type$
55
^EXIT=2$
66
^SIGNAL=0$
77
--

regression/verilog/expressions/shr2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
shr2.v
33

4-
^file .* line 4: operand 1\.1 must be integral$
4+
^file .* line 4: operand 1\.1 must have a bit vector type$
55
^EXIT=2$
66
^SIGNAL=0$
77
--

regression/verilog/expressions/streaming_concatenation2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
streaming_concatenation2.sv
33

4-
^file .* line 4: operand 1\.1 must be integral$
4+
^file .* line 4: operand 1\.1 must have a bit vector type$
55
^EXIT=2$
66
^SIGNAL=0$
77
--

regression/verilog/expressions/wildcard_equality2.desc

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
CORE
22
wildcard_equality2.v
33

4-
^file .* line 4: operand 1\.1 must be integral$
4+
^file .* line 4: operand 1\.1 must have a bit vector type$
55
^EXIT=2$
66
^SIGNAL=0$
77
--

src/verilog/verilog_typecheck_expr.cpp

Lines changed: 22 additions & 21 deletions
Original file line numberDiff line numberDiff line change
@@ -426,7 +426,7 @@ void verilog_typecheck_exprt::no_bool_ops(exprt &expr)
426426

427427
/*******************************************************************\
428428
429-
Function: verilog_typecheck_exprt::must_be_integral
429+
Function: verilog_typecheck_exprt::must_be_bit_vector
430430
431431
Inputs:
432432
@@ -436,9 +436,9 @@ Function: verilog_typecheck_exprt::must_be_integral
436436
437437
\*******************************************************************/
438438

439-
void verilog_typecheck_exprt::must_be_integral(const exprt &expr)
439+
void verilog_typecheck_exprt::must_be_bit_vector(exprt &expr)
440440
{
441-
// Throw an error if the given expression doesn't have an integral type.
441+
// Throw an error if the given expression doesn't have a bitvector type.
442442
const auto &type = expr.type();
443443
if(type.id() == ID_bool)
444444
{
@@ -452,7 +452,7 @@ void verilog_typecheck_exprt::must_be_integral(const exprt &expr)
452452
}
453453
else
454454
throw errort().with_location(expr.source_location())
455-
<< "operand " << to_string(expr) << " must be integral";
455+
<< "operand " << to_string(expr) << " must have a bit vector type";
456456
}
457457

458458
/*******************************************************************\
@@ -490,7 +490,7 @@ exprt verilog_typecheck_exprt::convert_expr_concatenation(
490490
<< "unsized literals are not allowed in concatenations";
491491
}
492492

493-
must_be_integral(*it);
493+
must_be_bit_vector(*it);
494494

495495
const typet &type = it->type();
496496

@@ -1563,7 +1563,7 @@ exprt verilog_typecheck_exprt::convert_constant(constant_exprt expr)
15631563

15641564
const std::string &value = id2string(expr.get_value());
15651565

1566-
// real or integral?
1566+
// real or integer?
15671567
if(
15681568
value.find('.') != std::string::npos ||
15691569
(value.find('h') == std::string::npos &&
@@ -2558,10 +2558,11 @@ exprt verilog_typecheck_exprt::convert_unary_expr(unary_exprt expr)
25582558
{
25592559
// these may produce an 'x' if the operand is a verilog_bv
25602560
convert_expr(expr.op());
2561-
must_be_integral(expr.op());
2561+
must_be_bit_vector(expr.op());
25622562

2563-
if (expr.op().type().id() == ID_verilog_signedbv ||
2564-
expr.op().type().id() == ID_verilog_unsignedbv)
2563+
if(
2564+
expr.op().type().id() == ID_verilog_signedbv ||
2565+
expr.op().type().id() == ID_verilog_unsignedbv)
25652566
{
25662567
expr.type()=verilog_unsignedbv_typet(1);
25672568
}
@@ -2668,7 +2669,7 @@ exprt verilog_typecheck_exprt::convert_unary_expr(unary_exprt expr)
26682669
// slice_size is defaulted to 1
26692670
PRECONDITION(expr.op().operands().size() == 1);
26702671
convert_expr(expr.op().operands()[0]);
2671-
must_be_integral(expr.op().operands()[0]);
2672+
must_be_bit_vector(expr.op().operands()[0]);
26722673
expr.type() = expr.op().operands()[0].type();
26732674
return std::move(expr);
26742675
}
@@ -2839,7 +2840,7 @@ exprt verilog_typecheck_exprt::convert_replication_expr(replication_exprt expr)
28392840
exprt &op1=expr.op1();
28402841

28412842
convert_expr(op1);
2842-
must_be_integral(op1);
2843+
must_be_bit_vector(op1);
28432844

28442845
if(op1.type().id()==ID_bool)
28452846
op1 = typecast_exprt{op1, unsignedbv_typet{1}};
@@ -3085,9 +3086,9 @@ exprt verilog_typecheck_exprt::convert_binary_expr(binary_exprt expr)
30853086

30863087
convert_relation(expr);
30873088

3088-
// integral operands only
3089-
must_be_integral(expr.lhs());
3090-
must_be_integral(expr.rhs());
3089+
// bit vector operands only
3090+
must_be_bit_vector(expr.lhs());
3091+
must_be_bit_vector(expr.rhs());
30913092

30923093
return std::move(expr);
30933094
}
@@ -3120,8 +3121,8 @@ exprt verilog_typecheck_exprt::convert_binary_expr(binary_exprt expr)
31203121

31213122
convert_expr(expr.lhs());
31223123
convert_expr(expr.rhs());
3123-
must_be_integral(expr.lhs());
3124-
must_be_integral(expr.rhs());
3124+
must_be_bit_vector(expr.lhs());
3125+
must_be_bit_vector(expr.rhs());
31253126
no_bool_ops(expr);
31263127

31273128
const typet &lhs_type = expr.lhs().type();
@@ -3157,9 +3158,8 @@ exprt verilog_typecheck_exprt::convert_binary_expr(binary_exprt expr)
31573158
// logical right shift >>
31583159
convert_expr(expr.lhs());
31593160
convert_expr(expr.rhs());
3160-
must_be_integral(expr.lhs());
3161-
must_be_integral(expr.rhs());
3162-
no_bool_ops(expr);
3161+
must_be_bit_vector(expr.lhs());
3162+
must_be_bit_vector(expr.rhs());
31633163

31643164
const typet &lhs_type = expr.lhs().type();
31653165
const typet &rhs_type = expr.rhs().type();
@@ -3191,12 +3191,13 @@ exprt verilog_typecheck_exprt::convert_binary_expr(binary_exprt expr)
31913191
{
31923192
convert_expr(expr.lhs());
31933193
convert_expr(expr.rhs());
3194-
must_be_integral(expr.lhs());
3195-
must_be_integral(expr.rhs());
31963194

31973195
tc_binary_expr(expr);
31983196
no_bool_ops(expr);
31993197

3198+
must_be_bit_vector(expr.lhs());
3199+
must_be_bit_vector(expr.rhs());
3200+
32003201
expr.type() = expr.lhs().type();
32013202

32023203
return std::move(expr);

src/verilog/verilog_typecheck_expr.h

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -196,7 +196,7 @@ class verilog_typecheck_exprt:public verilog_typecheck_baset
196196
void tc_binary_expr(const exprt &expr, exprt &op0, exprt &op1);
197197
void convert_relation(binary_exprt &);
198198
void no_bool_ops(exprt &);
199-
void must_be_integral(const exprt &);
199+
void must_be_bit_vector(exprt &);
200200

201201
// SVA
202202
void convert_sva(exprt &expr)

0 commit comments

Comments
 (0)