Skip to content

Commit a710f68

Browse files
committed
Verilog: Tests for explicit casts
This adds tests for size, signing and static casts.
1 parent 8fe2c5e commit a710f68

File tree

10 files changed

+95
-0
lines changed

10 files changed

+95
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
KNOWNBUG
2+
signing_cast2.sv
3+
--module main
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
9+
This is not yet implemented.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module main;
2+
3+
// four-valued signing cast
4+
initial assert (signed'(4'b11xx) === 8'sb1111_11xx);
5+
initial assert (signed'(4'bx000) === 8'sbxxxx_x000);
6+
7+
// four-valued signing cast
8+
initial assert (unsigned'(4'sb11xx) === 8'b0000_11xx);
9+
initial assert (unsigned'(4'sbx000) === 8'b0000_x000);
10+
11+
endmodule
Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,8 @@
1+
CORE
2+
signing_cast3.sv
3+
--module main
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module main;
2+
3+
// 1800-2017 6.24.1
4+
// "the cast shall return the value that a variable of the casting type
5+
// would hold after being assigned the expression."
6+
// Hence, this is an assignment context with $bits width.
7+
initial assert(signed'(1'b1 + 1'b1) == 0);
8+
9+
endmodule
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
KNOWNBUG
2+
size_cast2.sv
3+
--module main
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
9+
This is not yet implemented.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module main;
2+
3+
// four-valued zero extension
4+
initial assert (8'(4'b11xx) === 8'b0000_11xx);
5+
initial assert (8'(4'bx000) === 8'b0000_x000);
6+
7+
// four-valued sign extension
8+
initial assert (8'(4'sb11xx) === 8'sb1111_11xx);
9+
initial assert (8'(4'sbx000) === 8'sbxxxx_x000);
10+
11+
endmodule
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
KNOWNBUG
2+
size_cast3.sv
3+
--module main
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
9+
This is not yet implemented.
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
module main;
2+
3+
// 1800-2017 6.24.1
4+
// "the cast shall return the value that a variable of the casting type
5+
// would hold after being assigned the expression."
6+
// Hence, this is an assignment context.
7+
initial assert(8'(1'b1 + 1'b1) == 8'd2);
8+
9+
endmodule
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
KNOWNBUG
2+
static_cast3.sv
3+
--module main
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
9+
This is not yet implemented.
Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
module main;
2+
3+
typedef bit [7:0] eight_bits;
4+
5+
// 1800-2017 6.24.1
6+
// "the cast shall return the value that a variable of the casting type
7+
// would hold after being assigned the expression."
8+
// Hence, this is an assignment context.
9+
initial assert(eight_bits'(1'b1 + 1'b1) == 8'd2);
10+
11+
endmodule

0 commit comments

Comments
 (0)