blob: 31bdefbeb24c3af1c020876aa7e8a61b32f3aaeb [file] [log] [blame]
/****************************************************************************
* fwrisc_decode_formal_tb.sv
****************************************************************************/
/**
* Module: fwrisc_decode_formal_tb
*
* TODO: Add module documentation
*/
module fwrisc_decode_formal_tb(input clock);
reg[3:0] reset_cnt = 0;
reg reset = 1;
always @(posedge clock) begin
if (reset_cnt == 1) begin
reset <= 0;
end else begin
reset_cnt <= reset_cnt + 1;
end
end
// TODO: instance checker, test, and DUT
wire fetch_valid;
wire decode_complete;
wire[31:0] instr;
wire instr_c;
wire[5:0] ra_raddr;
reg[31:0] ra_rdata;
wire[5:0] rb_raddr;
reg[31:0] rb_rdata;
wire decode_valid;
reg exec_complete;
wire[31:0] op_a;
wire[31:0] op_b;
wire[31:0] op_c;
wire[3:0] op;
wire[5:0] rd_raddr;
wire[4:0] op_type;
fwrisc_decode_formal_test u_test(
.clock (clock ),
.reset (reset ),
.fetch_valid (fetch_valid ),
.decode_ready (decode_complete ),
.instr (instr ),
.instr_c (instr_c )
);
always @(posedge clock) begin
ra_rdata <= ra_raddr;
rb_rdata <= rb_raddr;
exec_complete <= decode_valid;
end
fwrisc_decode #(
.ENABLE_COMPRESSED (0 )
) u_dut (
.clock (clock ),
.reset (reset ),
.fetch_valid (fetch_valid ),
.decode_complete (decode_complete ),
.instr_i (instr ),
.instr_c (instr_c ),
.ra_raddr (ra_raddr ),
.ra_rdata (ra_rdata ),
.rb_raddr (rb_raddr ),
.rb_rdata (rb_rdata ),
.decode_valid (decode_valid ),
.exec_complete (exec_complete ),
.op_a (op_a ),
.op_b (op_b ),
.op_c (op_c ),
.op (op ),
.rd_raddr (rd_raddr ),
.op_type (op_type ));
fwrisc_decode_formal_checker u_checker(
.clock (clock ),
.reset (reset ),
.instr (instr ),
.instr_c (instr_c ),
.decode_valid (decode_valid ),
.op_a (op_a ),
.op_b (op_b ),
.op_c (op_c ),
.op (op ),
.rd_raddr (rd_raddr ),
.op_type (op_type )
);
endmodule