Skip to content

Commit dc88f54

Browse files
authored
Merge pull request #1120 from diffblue/conversions1
KNOWNBUG test for Verilog conversions
2 parents f1c86af + 4a992d6 commit dc88f54

File tree

2 files changed

+66
-0
lines changed

2 files changed

+66
-0
lines changed
Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
KNOWNBUG
2+
conversions1.sv
3+
4+
^EXIT=0$
5+
^SIGNAL=0$
6+
--
7+
^warning: ignoring
8+
--
9+
The nibble conversions yield a wrong result.
Lines changed: 57 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,57 @@
1+
module converter(input signed [7:0] si, input unsigned [7:0] ui);
2+
3+
// enlarge
4+
wire signed [31:0] sw1 = ui; // unsigned 8 to signed 32
5+
wire signed [31:0] sw2 = si; // signed 8 to signed 32
6+
wire unsigned [31:0] uw1 = ui; // unsigned 8 to unsigned 32
7+
wire unsigned [31:0] uw2 = si; // signed 8 to unsigned 32
8+
9+
// shrink
10+
wire signed [3:0] sn1 = ui; // unsigned 8 to signed 4
11+
wire signed [3:0] sn2 = si; // signed 8 to signed 4
12+
wire unsigned [3:0] un1 = ui; // unsigned 8 to unsigned 4
13+
wire unsigned [3:0] un2 = si; // signed 8 to unsigned 4
14+
15+
// same size
16+
wire signed [7:0] sb1 = ui; // unsigned 8 to signed 8
17+
wire signed [7:0] sb2 = si; // signed 8 to signed 8
18+
wire unsigned [7:0] ub1 = ui; // unsigned 8 to unsigned 8
19+
wire unsigned [7:0] ub2 = si; // signed 8 to unsigned 8
20+
21+
endmodule
22+
23+
module main;
24+
25+
converter c(8'sb1000_0000, 8'b1000_0000);
26+
27+
assert final(c.sw1 == 128);
28+
assert final(c.sw2 == -128);
29+
assert final(c.uw1 == 128);
30+
assert final(c.uw2 == 4294967168);
31+
assert final(c.sn1 == 'z);
32+
assert final(c.sn2 == 'z);
33+
assert final(c.un1 == 'z);
34+
assert final(c.un2 == 'z);
35+
assert final(c.sb1 == -128);
36+
assert final(c.sb2 == -128);
37+
assert final(c.ub1 == 128);
38+
assert final(c.ub2 == 128);
39+
40+
initial begin
41+
$display("c.sw1 == ", c.sw1);
42+
$display("c.sw2 == ", c.sw2);
43+
$display("c.uw1 == ", c.uw1);
44+
$display("c.uw2 == ", c.uw2);
45+
46+
$display("c.sn1 == ", c.sn1);
47+
$display("c.sn2 == ", c.sn2);
48+
$display("c.un1 == ", c.un1);
49+
$display("c.un2 == ", c.un2);
50+
51+
$display("c.sb1 == ", c.sb1);
52+
$display("c.sb2 == ", c.sb2);
53+
$display("c.ub1 == ", c.ub1);
54+
$display("c.ub2 == ", c.ub2);
55+
end
56+
57+
endmodule

0 commit comments

Comments
 (0)