mirror of
https://github.com/openhwgroup/cva5.git
synced 2025-04-20 12:07:53 -04:00
unit wb renaming
This commit is contained in:
parent
184aad14c8
commit
5f2dfd21db
7 changed files with 64 additions and 68 deletions
|
@ -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;
|
||||
|
||||
////////////////////////////////////////////////////
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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;
|
||||
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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>
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue