diff --git a/rtl/cve2_core.sv b/rtl/cve2_core.sv index 419fd2688f..253eca38ad 100644 --- a/rtl/cve2_core.sv +++ b/rtl/cve2_core.sv @@ -462,6 +462,7 @@ module cve2_core import cve2_pkg::*; #( .lsu_store_err_i(lsu_store_err), // Core-V Extension Interface (CV-X-IF) + .hart_id_i (hart_id_i), // Issue Interface .x_issue_valid_o(x_issue_valid_o), .x_issue_ready_i(x_issue_ready_i), diff --git a/rtl/cve2_id_stage.sv b/rtl/cve2_id_stage.sv index 83efe6b564..997bbaeb8a 100644 --- a/rtl/cve2_id_stage.sv +++ b/rtl/cve2_id_stage.sv @@ -105,6 +105,7 @@ module cve2_id_stage #( input logic [31:0] lsu_addr_last_i, // Core-V eXtension Interface (CV-X-IF) + input logic [31:0] hart_id_i, // Issue Interface output logic x_issue_valid_o, input logic x_issue_ready_i, @@ -291,17 +292,23 @@ module cve2_id_stage #( assign coproc_done = (x_issue_valid_o & x_issue_ready_i & ~x_issue_resp_i.writeback) | (x_result_valid_i & x_result_i.we); // Issue Interface - assign x_issue_valid_o = instr_executing & illegal_insn_dec & (id_fsm_q == FIRST_CYCLE); - assign x_issue_req_o.instr = instr_rdata_i; + assign x_issue_valid_o = instr_executing & illegal_insn_dec & (id_fsm_q == FIRST_CYCLE); + assign x_issue_req_o.instr = instr_rdata_i; + assign x_issue_req_o.id = '0; + assign x_issue_req_o.hartid = hart_id_i; // Register Interface assign x_register_o.rs[0] = rf_rdata_a_fwd; assign x_register_o.rs[1] = rf_rdata_b_fwd; assign x_register_o.rs_valid = '1; + assign x_register_o.id = '0; + assign x_register_o.hartid = hart_id_i; // Commit Interface assign x_commit_valid_o = 1'b1; assign x_commit_o.commit_kill = 1'b0; + assign x_commit_o.id = '0; + assign x_commit_o.hartid = hart_id_i; // Result Interface assign x_result_ready_o = 1'b1; diff --git a/rtl/cve2_pkg.sv b/rtl/cve2_pkg.sv index a78383fba7..88d99e3346 100644 --- a/rtl/cve2_pkg.sv +++ b/rtl/cve2_pkg.sv @@ -661,7 +661,7 @@ package cve2_pkg; parameter int unsigned X_ID_WIDTH = 4; parameter int unsigned X_RFR_WIDTH = 32; parameter int unsigned X_RFW_WIDTH = 32; - parameter int unsigned X_HARTID_WIDTH = 1; + parameter int unsigned X_HARTID_WIDTH = 32; parameter int unsigned X_DUAL_READ = 0; parameter int unsigned X_DUAL_WRITE = 0;