sv2v/test/core/ambiguous_tore.v

51 lines
1.9 KiB
Verilog

module MI;
parameter KIND = "";
parameter DELAY = 0;
parameter PREFIX = "";
parameter SUFFIX = "";
parameter E = 1;
parameter T = 1;
initial #DELAY $display("%s: %sE%s=%0d $bits(%sT%s)=%0d",
KIND, PREFIX, SUFFIX, E, PREFIX, SUFFIX, T);
endmodule
module top;
parameter FLAG = 1;
`define TEST(D, prefix, eval, tval, leftval) \
if (FLAG) begin \
localparam [eval:1] ez = 1'sbz; \
localparam [tval:1] tz = 1'sbz; \
initial begin \
#(D * 10); \
$display(`"prefix``E = %0d %0d`", eval, eval); \
$display(`"$bits(prefix``E) = %0d %0d`", 32, 32); \
$display(`"$bits(prefix``T) = %0d %0d`", tval, tval); \
$display(`"$left(prefix``E) = %0d`", 31); \
$display(`"$left(prefix``T) = %0d`", leftval); \
$display(`"prefix``E'('z) = %b`", ez); \
$display(`"prefix``T'('z) = %b`", tz); \
end \
MI #("I", D*10+1, `"prefix`", "", eval, tval) i1(); \
MI #("M", D*10+2, `"prefix`", "", eval, tval) m1(); \
MI #("I", D*10+3, `"prefix`", "[6]", (eval >> 6) & 1'b1, tval*6) i2(); \
MI #("M", D*10+4, `"prefix`", "[6]", (eval >> 6) & 1'b1, tval*6) m2(); \
MI #("I", D*10+5, `"prefix`", "[6:0]", eval & 7'h7f, tval * 7) i3(); \
MI #("M", D*10+6, `"prefix`", "[6:0]", eval & 7'h7f, tval * 7) m3(); \
end
`define TEST_C(D, prefix, efac, tfac) \
`TEST(D, prefix, (efac)*(tfac), (tfac)*(efac), (efac)-1)
`TEST(0, , 3, 6, 5)
`TEST(1, P::, 2, 2, 1)
`TEST_C(2, C#()::, 1, 1)
`TEST_C(3, C#(E, T)::, 3, 6)
`TEST_C(4, C#(P::E, P::T)::, 2, 2)
`TEST_C(5, C#(C#(E, T)::E, C#(E, T)::T)::, 18, 18)
`TEST_C(6, C#(E[1], T[2])::, 1, 12)
`TEST_C(7, C#(E[2:0], T[2:0])::, 3, 18)
endmodule