|
| 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