diff --git a/tb/agents/scoreboard_if/scoreboard_if.sv b/tb/agents/scoreboard_if/scoreboard_if.sv index bfe9ee073..40fe73722 100644 --- a/tb/agents/scoreboard_if/scoreboard_if.sv +++ b/tb/agents/scoreboard_if/scoreboard_if.sv @@ -13,7 +13,6 @@ import ariane_pkg::*; interface scoreboard_if #(parameter int NR_WB_PORTS = 1)(input clk); - wire full; wire flush; wire [31:0][$bits(fu_t)-1:0] rd_clobber; wire [4:0] rs1_address; @@ -26,6 +25,7 @@ interface scoreboard_if #(parameter int NR_WB_PORTS = 1)(input clk); wire commit_ack; scoreboard_entry decoded_instr; wire decoded_instr_valid; + wire decoded_instr_ack; scoreboard_entry issue_instr; wire issue_instr_valid; wire issue_ack; @@ -38,12 +38,12 @@ interface scoreboard_if #(parameter int NR_WB_PORTS = 1)(input clk); clocking mck @(posedge clk); default input #1 output #5; // save timing output flush, rs1_address, rs2_address, commit_ack, decoded_instr, decoded_instr_valid, issue_ack, trans_id, wdata, ex, wb_valid; - input full, rd_clobber, rs1, rs1_valid, rs2, rs2_valid, commit_instr, issue_instr, issue_instr_valid; + input rd_clobber, rs1, rs1_valid, rs2, rs2_valid, commit_instr, issue_instr, issue_instr_valid, decoded_instr_ack; endclocking // Scoreboard interface configured in passive mode (-> monitor) clocking pck @(posedge clk); input flush, rs1_address, rs2_address, commit_ack, decoded_instr, decoded_instr_valid, issue_ack, trans_id, wdata, ex, wb_valid, - full, rd_clobber, rs1, rs1_valid, rs2, rs2_valid, commit_instr, issue_instr, issue_instr_valid; + rd_clobber, rs1, rs1_valid, rs2, rs2_valid, commit_instr, issue_instr, issue_instr_valid, decoded_instr_ack; endclocking modport master (clocking mck); diff --git a/tb/scoreboard_tb.sv b/tb/scoreboard_tb.sv index fff661d9f..fb6309865 100644 --- a/tb/scoreboard_tb.sv +++ b/tb/scoreboard_tb.sv @@ -19,33 +19,37 @@ module scoreboard_tb; scoreboard_if #(.NR_WB_PORTS(1) ) scoreboard_if (clk); scoreboard #( - .NR_WB_PORTS ( 1 ), - .NR_ENTRIES ( NR_SB_ENTRIES ) + .NR_WB_PORTS ( 1 ), + .NR_ENTRIES ( NR_SB_ENTRIES ) ) dut ( - .clk_i ( clk ), - .rst_ni ( rst_ni ), - .full_o ( scoreboard_if.full ), - .flush_i ( scoreboard_if.flush ), - .rd_clobber_o ( scoreboard_if.rd_clobber ), - .rs1_i ( scoreboard_if.rs1_address ), - .rs1_o ( scoreboard_if.rs1 ), - .rs1_valid_o ( scoreboard_if.rs1_valid ), - .rs2_i ( scoreboard_if.rs2_address ), - .rs2_o ( scoreboard_if.rs2 ), - .rs2_valid_o ( scoreboard_if.rs2_valid ), - .commit_instr_o ( scoreboard_if.commit_instr ), - .commit_ack_i ( scoreboard_if.commit_ack ), - .decoded_instr_i ( scoreboard_if.decoded_instr ), - .decoded_instr_valid_i( scoreboard_if.decoded_instr_valid ), - .issue_instr_o ( scoreboard_if.issue_instr ), - .issue_instr_valid_o ( scoreboard_if.issue_instr_valid ), - .issue_ack_i ( scoreboard_if.issue_ack ), - .trans_id_i ( scoreboard_if.trans_id ), - .wdata_i ( scoreboard_if.wdata ), - .ex_i ( scoreboard_if.ex ), - .wb_valid_i ( scoreboard_if.wb_valid ) + .clk_i ( clk ), + .rst_ni ( rst_ni ), + .flush_i ( scoreboard_if.flush ), + .rd_clobber_o ( scoreboard_if.rd_clobber ), + .rs1_i ( scoreboard_if.rs1_address ), + .rs1_o ( scoreboard_if.rs1 ), + .rs1_valid_o ( scoreboard_if.rs1_valid ), + .rs2_i ( scoreboard_if.rs2_address ), + .rs2_o ( scoreboard_if.rs2 ), + .rs2_valid_o ( scoreboard_if.rs2_valid ), + + .commit_instr_o ( scoreboard_if.commit_instr ), + .commit_ack_i ( scoreboard_if.commit_ack ), + + .decoded_instr_i ( scoreboard_if.decoded_instr ), + .decoded_instr_valid_i ( scoreboard_if.decoded_instr_valid ), + .decoded_instr_ack_o ( scoreboard_if.decoded_instr_ack ), + + .issue_instr_o ( scoreboard_if.issue_instr ), + .issue_instr_valid_o ( scoreboard_if.issue_instr_valid ), + .issue_ack_i ( scoreboard_if.issue_ack ), + + .trans_id_i ( scoreboard_if.trans_id ), + .wdata_i ( scoreboard_if.wdata ), + .ex_i ( scoreboard_if.ex ), + .wb_valid_i ( scoreboard_if.wb_valid ) ); initial begin @@ -86,13 +90,10 @@ module scoreboard_tb; @(scoreboard_if.mck); // if we are not full load another instruction - if (scoreboard_if.full == 1'b0) begin scoreboard_if.mck.decoded_instr <= Scoreboard::randomize_scoreboard(); scoreboard_if.mck.decoded_instr_valid <= 1'b1; - end else begin + @(scoreboard_if.mck iff scoreboard_if.mck.decoded_instr_ack == 1'b1) scoreboard_if.mck.decoded_instr_valid <= 1'b0; - end - end end