unit wb renaming

This commit is contained in:
Eric Matthews 2019-09-04 08:45:33 -07:00
parent 184aad14c8
commit 5f2dfd21db
7 changed files with 64 additions and 68 deletions

View file

@ -84,7 +84,7 @@ module alu_unit(
//Output
assign issue.ready = 1;
assign wb.rd = result;
assign wb.done_next_cycle = issue.new_request;
assign wb.done = issue.new_request;
assign wb.id = issue.instruction_id;
////////////////////////////////////////////////////

View file

@ -118,7 +118,7 @@ module div_unit
////////////////////////////////////////////////////
//Output
assign wb.rd = wb_div_result;
assign wb.done_next_cycle = div_done;
assign wb.done = div_done;
assign wb.id = stage1.instruction_id;
////////////////////////////////////////////////////
//Assertions

View file

@ -327,7 +327,7 @@ module load_store_unit (
end
assign ls_done = load_complete | exception_complete | store_complete;
assign wb.done_next_cycle = csr_done | ls_done;
assign wb.done = csr_done | ls_done;
assign wb.id = csr_done ? csr_id : stage2_attr.instruction_id;
////////////////////////////////////////////////////
//End of Implementation

View file

@ -34,7 +34,7 @@ module mul_unit(
logic signed [65:0] result;
logic [1:0] mulh;
logic [1:0] done_next_cycle;
logic [1:0] done;
instruction_id_t id [1:0];
logic rs1_signed, rs2_signed;
@ -63,15 +63,15 @@ module mul_unit(
id[0] <= issue.instruction_id;
id[1] <= id[0];
done_next_cycle[0] <= issue.new_request;
done_next_cycle[1] <= done_next_cycle[0];
done[0] <= issue.new_request;
done[1] <= done[0];
end
//Issue/write-back handshaking
////////////////////////////////////////////////////
assign issue.ready = 1;
assign wb.rd = mulh[1] ? result[63:32] : result[31:0];
assign wb.done_next_cycle = done_next_cycle[1];
assign wb.done = done[1];
assign wb.id = id[1];
////////////////////////////////////////////////////
//End of Implementation

View file

@ -28,7 +28,6 @@ package taiga_types;
parameter ECODE_W = 5;
typedef logic[$clog2(MAX_INFLIGHT_COUNT)-1:0] instruction_id_t;
typedef logic[MAX_INFLIGHT_COUNT-1:0] instruction_id_one_hot_t;
typedef logic[$clog2(NUM_WB_UNITS)-1:0] unit_id_t;
typedef logic[1:0] branch_predictor_metadata_t;
@ -297,7 +296,7 @@ package taiga_types;
typedef struct packed{
instruction_id_t id;
logic done_next_cycle;
logic done;
logic [XLEN-1:0] rd;
} unit_writeback_t;
@ -376,7 +375,6 @@ package taiga_types;
logic load;
logic store;
logic load_store_forward;
instruction_id_one_hot_t instruction_id_one_hot;
instruction_id_t instruction_id;
//exception support
logic [31:0] pc;
@ -395,7 +393,6 @@ package taiga_types;
logic [XLEN-1:0] rs2;
logic [1:0] op;
logic reuse_result;
instruction_id_one_hot_t instruction_id_one_hot;
instruction_id_t instruction_id;
} div_inputs_t;

View file

@ -46,7 +46,7 @@ module write_back(
//aliases for write-back-interface signals
instruction_id_t unit_instruction_id [NUM_WB_UNITS-1:0];
logic [NUM_WB_UNITS-1:0] unit_done_next_cycle;
logic [NUM_WB_UNITS-1:0] unit_done;
logic [XLEN-1:0] unit_rd [NUM_WB_UNITS-1:0];
/////
@ -70,7 +70,7 @@ module write_back(
generate
for (i=0; i< NUM_WB_UNITS; i++) begin : interface_to_array_g
assign unit_instruction_id[i] = unit_wb[i].id;
assign unit_done_next_cycle[i] = unit_wb[i].done_next_cycle;
assign unit_done[i] = unit_wb[i].done;
assign unit_rd[i] = unit_wb[i].rd;
end
endgenerate
@ -80,7 +80,7 @@ module write_back(
id_done_new[i] = 0;
id_unit_select[i] = 0;
for (int j=0; j< NUM_WB_UNITS; j++) begin
if (unit_done_next_cycle[j] && (unit_instruction_id[j] == i[$clog2(MAX_INFLIGHT_COUNT)-1:0])) begin
if (unit_done[j] && (unit_instruction_id[j] == i[$clog2(MAX_INFLIGHT_COUNT)-1:0])) begin
id_unit_select[i] = j[$clog2(NUM_WB_UNITS)-1:0];
id_done_new[i] |= 1;
end

View file

@ -17,14 +17,14 @@
</db_ref_list>
<zoom_setting>
<ZoomStartTime time="0fs"></ZoomStartTime>
<ZoomEndTime time="656000000001fs"></ZoomEndTime>
<Cursor1Time time="338000000000fs"></Cursor1Time>
<ZoomEndTime time="25150000000001fs"></ZoomEndTime>
<Cursor1Time time="6590859000000fs"></Cursor1Time>
</zoom_setting>
<column_width_setting>
<NameColumnWidth column_width="259"></NameColumnWidth>
<ValueColumnWidth column_width="93"></ValueColumnWidth>
<ValueColumnWidth column_width="252"></ValueColumnWidth>
</column_width_setting>
<WVObjectSize size="171" />
<WVObjectSize size="167" />
<wvobject type="logic" fp_name="/taiga_full_simulation/clk">
<obj_property name="ElementShortName">clk</obj_property>
<obj_property name="ObjectShortName">clk</obj_property>
@ -81,56 +81,6 @@
<obj_property name="ElementShortName">mem_valid</obj_property>
<obj_property name="ObjectShortName">mem_valid</obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/br_results">
<obj_property name="ElementShortName">br_results</obj_property>
<obj_property name="ObjectShortName">br_results</obj_property>
<obj_property name="isExpanded"></obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/if_entry">
<obj_property name="ElementShortName">if_entry[1:0]</obj_property>
<obj_property name="ObjectShortName">if_entry[1:0]</obj_property>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/if_entry[1]">
<obj_property name="ElementShortName">[1]</obj_property>
<obj_property name="ObjectShortName">[1]</obj_property>
<obj_property name="isExpanded"></obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/if_entry[0]">
<obj_property name="ElementShortName">[0]</obj_property>
<obj_property name="ObjectShortName">[0]</obj_property>
</wvobject>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/ex_entry">
<obj_property name="ElementShortName">ex_entry</obj_property>
<obj_property name="ObjectShortName">ex_entry</obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/new_jump_addr">
<obj_property name="ElementShortName">new_jump_addr[31:0]</obj_property>
<obj_property name="ObjectShortName">new_jump_addr[31:0]</obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/predicted_pc">
<obj_property name="ElementShortName">predicted_pc[1:0][31:0]</obj_property>
<obj_property name="ObjectShortName">predicted_pc[1:0][31:0]</obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/tag_matches">
<obj_property name="ElementShortName">tag_matches[1:0]</obj_property>
<obj_property name="ObjectShortName">tag_matches[1:0]</obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/replacement_way">
<obj_property name="ElementShortName">replacement_way[1:0]</obj_property>
<obj_property name="ObjectShortName">replacement_way[1:0]</obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/update_way">
<obj_property name="ElementShortName">update_way[1:0]</obj_property>
<obj_property name="ObjectShortName">update_way[1:0]</obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/bp_block/hit_way">
<obj_property name="ElementShortName">hit_way[0:0]</obj_property>
<obj_property name="ObjectShortName">hit_way[0:0]</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/bp_block/tag_match">
<obj_property name="ElementShortName">tag_match</obj_property>
<obj_property name="ObjectShortName">tag_match</obj_property>
</wvobject>
<wvobject fp_name="divider7368" type="divider">
<obj_property name="label">I Cache</obj_property>
<obj_property name="DisplayName">label</obj_property>
@ -354,6 +304,55 @@
<wvobject type="array" fp_name="/taiga_full_simulation/uut/write_back_mux/retired_instruction_packet">
<obj_property name="ElementShortName">retired_instruction_packet</obj_property>
<obj_property name="ObjectShortName">retired_instruction_packet</obj_property>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/write_back_mux/retired_instruction_packet.rd_addr">
<obj_property name="ElementShortName">.rd_addr[4:0]</obj_property>
<obj_property name="ObjectShortName">.rd_addr[4:0]</obj_property>
<obj_property name="isExpanded"></obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/write_back_mux/retired_instruction_packet.rd_addr_nzero">
<obj_property name="ElementShortName">.rd_addr_nzero</obj_property>
<obj_property name="ObjectShortName">.rd_addr_nzero</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/write_back_mux/retired_instruction_packet.is_store">
<obj_property name="ElementShortName">.is_store</obj_property>
<obj_property name="ObjectShortName">.is_store</obj_property>
</wvobject>
<wvobject type="array" fp_name="/taiga_full_simulation/uut/write_back_mux/retired_instruction_packet.rd_addr">
<obj_property name="ElementShortName">.rd_addr[4:0]</obj_property>
<obj_property name="ObjectShortName">.rd_addr[4:0]</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/write_back_mux/retired_instruction_packet.rd_addr_nzero">
<obj_property name="ElementShortName">.rd_addr_nzero</obj_property>
<obj_property name="ObjectShortName">.rd_addr_nzero</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/write_back_mux/retired_instruction_packet.is_store">
<obj_property name="ElementShortName">.is_store</obj_property>
<obj_property name="ObjectShortName">.is_store</obj_property>
</wvobject>
</wvobject>
<wvobject fp_name="divider4416" type="divider">
<obj_property name="label">Div Unit</obj_property>
<obj_property name="DisplayName">label</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/\genblk5.div_unit_block /computation_complete">
<obj_property name="ElementShortName">computation_complete</obj_property>
<obj_property name="ObjectShortName">computation_complete</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/\genblk5.div_unit_block /div_done">
<obj_property name="ElementShortName">div_done</obj_property>
<obj_property name="ObjectShortName">div_done</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/\genblk5.div_unit_block /start_algorithm">
<obj_property name="ElementShortName">start_algorithm</obj_property>
<obj_property name="ObjectShortName">start_algorithm</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/\genblk5.div_unit_block /in_progress">
<obj_property name="ElementShortName">in_progress</obj_property>
<obj_property name="ObjectShortName">in_progress</obj_property>
</wvobject>
<wvobject type="logic" fp_name="/taiga_full_simulation/uut/\genblk5.div_unit_block /stage1.reuse_result">
<obj_property name="ElementShortName">.reuse_result</obj_property>
<obj_property name="ObjectShortName">.reuse_result</obj_property>
</wvobject>
<wvobject fp_name="divider3000" type="divider">
<obj_property name="label">LS Unit</obj_property>