simplify_binop.sv 770 Bytes
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26
`define TEST(expr) initial begin : \blk``expr \
    localparam X = expr; \
    localparam [63:0] Y = X; \
    $display(`"expr %b %b %b`", expr, X, Y); \
end

`define TEST_LOGOP(op) \
    `TEST(0``op``0) \
    `TEST(0``op``1) \
    `TEST(0``op``1'bx) \
    `TEST(0``op``P) \
    `TEST(0``op``Q) \
    `TEST(0``op``R) \
    `TEST(1``op``0) \
    `TEST(1``op``1) \
    `TEST(1``op``1'bx) \
    `TEST(1``op``P) \
    `TEST(1``op``Q) \
    `TEST(1``op``R) \
    `TEST(1'bx``op``0) \
    `TEST(1'bx``op``1) \
    `TEST(1'bx``op``1'bx) \
    `TEST(1'bx``op``P) \
    `TEST(1'bx``op``Q) \
    `TEST(1'bx``op``R)

27
module top;
28 29 30 31 32 33
    `TEST((12'hb03-12'hb07)+12'hb10)
    parameter P = 0;
    parameter Q = 1;
    parameter R = 1'bx;
    `TEST_LOGOP(||)
    `TEST_LOGOP(&&)
34
endmodule