module tb; logic [31:0] lhs, rhs; logic [2:0] funct3; logic taken, illegal; integer checks = 0; string trace_file; branch_compare dut (.*); task automatic check(input logic [2:0] function_code, input logic expected); funct3 = function_code; #1; if (taken !== expected || illegal) $fatal(1, "FAIL f=%b taken=%b illegal=%b", function_code, taken, illegal); checks += 1; endtask initial begin if ($value$plusargs("trace=%s", trace_file)) begin $dumpfile(trace_file); $dumpvars(0, tb); end lhs = 32'hffffffff; rhs = 1; check(0,0); check(1,1); check(4,1); check(5,0); check(6,0); check(7,1); funct3 = 2; #1; if (!illegal || taken) $fatal(1, "FAIL illegal"); $display("PASS task01 conditions=%0d signed_lt=1 unsigned_lt=0 illegal=1", checks); $finish; end endmodule