Skip to content

Commit 75f52a8

Browse files
authored
Merge pull request #1286 from diffblue/assignment-context1
Verilog: KNOWNBUG test for assignment context
2 parents 6ca9415 + faedcba commit 75f52a8

File tree

2 files changed

+79
-0
lines changed

2 files changed

+79
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
KNOWNBUG
2+
assignment-context1.sv
3+
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
9+
The variants that enlarge give a wrong answer.
Lines changed: 70 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,70 @@
1+
module main;
2+
3+
`define ui (8'd255+8'd2)
4+
`define si (8'sd127+8'sd1)
5+
6+
// enlarge
7+
// The RHS is padded or sign extended.
8+
wire signed [31:0] sw1 = `ui; // unsigned 8 to signed 32
9+
wire signed [31:0] sw2 = `si; // signed 8 to signed 32
10+
wire unsigned [31:0] uw1 = `ui; // unsigned 8 to unsigned 32
11+
wire unsigned [31:0] uw2 = `si; // signed 8 to unsigned 32
12+
13+
// shrink
14+
wire signed [3:0] sn1 = `ui; // unsigned 8 to signed 4
15+
wire signed [3:0] sn2 = `si; // signed 8 to signed 4
16+
wire unsigned [3:0] un1 = `ui; // unsigned 8 to unsigned 4
17+
wire unsigned [3:0] un2 = `si; // signed 8 to unsigned 4
18+
19+
// same size
20+
wire signed [7:0] sb1 = `ui; // unsigned 8 to signed 8
21+
wire signed [7:0] sb2 = `si; // signed 8 to signed 8
22+
wire unsigned [7:0] ub1 = `ui; // unsigned 8 to unsigned 8
23+
wire unsigned [7:0] ub2 = `si; // signed 8 to unsigned 8
24+
25+
// just one bit
26+
wire signed sbit1 = `ui; // unsigned 8 to signed 1
27+
wire signed sbit2 = `si; // signed 8 to signed 1
28+
wire unsigned ubit1 = `ui; // unsigned 8 to unsigned 1
29+
wire unsigned ubit2 = `si; // signed 8 to unsigned 1
30+
31+
assert final(sw1 == 257);
32+
assert final(sw2 == 128);
33+
assert final(uw1 == 257);
34+
assert final(uw2 == 128);
35+
assert final(sn1 == 1);
36+
assert final(sn2 == 0);
37+
assert final(un1 == 1);
38+
assert final(un2 == 0);
39+
assert final(sb1 == 1);
40+
assert final(sb2 == -128);
41+
assert final(ub1 == 1);
42+
assert final(ub2 == 128);
43+
assert final(sbit1 == -1);
44+
assert final(sbit2 == 0);
45+
assert final(ubit1 == 1);
46+
assert final(ubit2 == 0);
47+
48+
initial begin
49+
$display("sw1 == ", sw1);
50+
$display("sw2 == ", sw2);
51+
$display("uw1 == ", uw1);
52+
$display("uw2 == ", uw2);
53+
54+
$display("sn1 == ", sn1);
55+
$display("sn2 == ", sn2);
56+
$display("un1 == ", un1);
57+
$display("un2 == ", un2);
58+
59+
$display("sb1 == ", sb1);
60+
$display("sb2 == ", sb2);
61+
$display("ub1 == ", ub1);
62+
$display("ub2 == ", ub2);
63+
64+
$display("sbit1 == ", sbit1);
65+
$display("sbit2 == ", sbit2);
66+
$display("ubit1 == ", ubit1);
67+
$display("ubit2 == ", ubit2);
68+
end
69+
70+
endmodule

0 commit comments

Comments
 (0)