mirror of
https://github.com/openhwgroup/cve2.git
synced 2025-04-20 12:08:05 -04:00
Merge 6eb09e79a1
into ca6bc061a2
This commit is contained in:
commit
636ccafdb7
2 changed files with 47 additions and 90 deletions
|
@ -157,6 +157,22 @@ import cve2_pkg::*;
|
|||
priv_lvl_e prv;
|
||||
} dcsr_t;
|
||||
|
||||
typedef struct packed {
|
||||
logic hpm12;
|
||||
logic hpm11;
|
||||
logic hpm10;
|
||||
logic hpm9;
|
||||
logic hpm8;
|
||||
logic hpm7;
|
||||
logic hpm6;
|
||||
logic hpm5;
|
||||
logic hpm4;
|
||||
logic hpm3;
|
||||
logic ir;
|
||||
logic zero0;
|
||||
logic cy;
|
||||
} mcountinhibit_t;
|
||||
|
||||
// Interrupt and exception control signals
|
||||
logic [31:0] exception_pc;
|
||||
|
||||
|
@ -400,37 +416,29 @@ import cve2_pkg::*;
|
|||
CSR_MHPMEVENT3,
|
||||
CSR_MHPMEVENT4, CSR_MHPMEVENT5, CSR_MHPMEVENT6, CSR_MHPMEVENT7,
|
||||
CSR_MHPMEVENT8, CSR_MHPMEVENT9, CSR_MHPMEVENT10, CSR_MHPMEVENT11,
|
||||
CSR_MHPMEVENT12, CSR_MHPMEVENT13, CSR_MHPMEVENT14, CSR_MHPMEVENT15,
|
||||
CSR_MHPMEVENT16, CSR_MHPMEVENT17, CSR_MHPMEVENT18, CSR_MHPMEVENT19,
|
||||
CSR_MHPMEVENT20, CSR_MHPMEVENT21, CSR_MHPMEVENT22, CSR_MHPMEVENT23,
|
||||
CSR_MHPMEVENT24, CSR_MHPMEVENT25, CSR_MHPMEVENT26, CSR_MHPMEVENT27,
|
||||
CSR_MHPMEVENT28, CSR_MHPMEVENT29, CSR_MHPMEVENT30, CSR_MHPMEVENT31: begin
|
||||
CSR_MHPMEVENT12: begin
|
||||
csr_rdata_int = mhpmevent[mhpmcounter_idx];
|
||||
end
|
||||
|
||||
CSR_CYCLE,
|
||||
CSR_MCYCLE,
|
||||
CSR_INSTRET,
|
||||
CSR_MINSTRET,
|
||||
CSR_MHPMCOUNTER3,
|
||||
CSR_MHPMCOUNTER4, CSR_MHPMCOUNTER5, CSR_MHPMCOUNTER6, CSR_MHPMCOUNTER7,
|
||||
CSR_MHPMCOUNTER8, CSR_MHPMCOUNTER9, CSR_MHPMCOUNTER10, CSR_MHPMCOUNTER11,
|
||||
CSR_MHPMCOUNTER12, CSR_MHPMCOUNTER13, CSR_MHPMCOUNTER14, CSR_MHPMCOUNTER15,
|
||||
CSR_MHPMCOUNTER16, CSR_MHPMCOUNTER17, CSR_MHPMCOUNTER18, CSR_MHPMCOUNTER19,
|
||||
CSR_MHPMCOUNTER20, CSR_MHPMCOUNTER21, CSR_MHPMCOUNTER22, CSR_MHPMCOUNTER23,
|
||||
CSR_MHPMCOUNTER24, CSR_MHPMCOUNTER25, CSR_MHPMCOUNTER26, CSR_MHPMCOUNTER27,
|
||||
CSR_MHPMCOUNTER28, CSR_MHPMCOUNTER29, CSR_MHPMCOUNTER30, CSR_MHPMCOUNTER31: begin
|
||||
CSR_MHPMCOUNTER12: begin
|
||||
csr_rdata_int = mhpmcounter[mhpmcounter_idx][31:0];
|
||||
end
|
||||
|
||||
CSR_CYCLEH,
|
||||
CSR_MCYCLEH,
|
||||
CSR_INSTRETH,
|
||||
CSR_MINSTRETH,
|
||||
CSR_MHPMCOUNTER3H,
|
||||
CSR_MHPMCOUNTER4H, CSR_MHPMCOUNTER5H, CSR_MHPMCOUNTER6H, CSR_MHPMCOUNTER7H,
|
||||
CSR_MHPMCOUNTER8H, CSR_MHPMCOUNTER9H, CSR_MHPMCOUNTER10H, CSR_MHPMCOUNTER11H,
|
||||
CSR_MHPMCOUNTER12H, CSR_MHPMCOUNTER13H, CSR_MHPMCOUNTER14H, CSR_MHPMCOUNTER15H,
|
||||
CSR_MHPMCOUNTER16H, CSR_MHPMCOUNTER17H, CSR_MHPMCOUNTER18H, CSR_MHPMCOUNTER19H,
|
||||
CSR_MHPMCOUNTER20H, CSR_MHPMCOUNTER21H, CSR_MHPMCOUNTER22H, CSR_MHPMCOUNTER23H,
|
||||
CSR_MHPMCOUNTER24H, CSR_MHPMCOUNTER25H, CSR_MHPMCOUNTER26H, CSR_MHPMCOUNTER27H,
|
||||
CSR_MHPMCOUNTER28H, CSR_MHPMCOUNTER29H, CSR_MHPMCOUNTER30H, CSR_MHPMCOUNTER31H: begin
|
||||
CSR_MHPMCOUNTER12H: begin
|
||||
csr_rdata_int = mhpmcounter[mhpmcounter_idx][63:32];
|
||||
end
|
||||
|
||||
|
@ -460,11 +468,6 @@ import cve2_pkg::*;
|
|||
illegal_csr = ~DbgTriggerEn;
|
||||
end
|
||||
|
||||
// Custom CSR for LFSR re-seeding (cannot be read)
|
||||
CSR_SECURESEED: begin
|
||||
csr_rdata_int = '0;
|
||||
end
|
||||
|
||||
default: begin
|
||||
illegal_csr = 1'b1;
|
||||
end
|
||||
|
@ -594,11 +597,7 @@ import cve2_pkg::*;
|
|||
CSR_MHPMCOUNTER3,
|
||||
CSR_MHPMCOUNTER4, CSR_MHPMCOUNTER5, CSR_MHPMCOUNTER6, CSR_MHPMCOUNTER7,
|
||||
CSR_MHPMCOUNTER8, CSR_MHPMCOUNTER9, CSR_MHPMCOUNTER10, CSR_MHPMCOUNTER11,
|
||||
CSR_MHPMCOUNTER12, CSR_MHPMCOUNTER13, CSR_MHPMCOUNTER14, CSR_MHPMCOUNTER15,
|
||||
CSR_MHPMCOUNTER16, CSR_MHPMCOUNTER17, CSR_MHPMCOUNTER18, CSR_MHPMCOUNTER19,
|
||||
CSR_MHPMCOUNTER20, CSR_MHPMCOUNTER21, CSR_MHPMCOUNTER22, CSR_MHPMCOUNTER23,
|
||||
CSR_MHPMCOUNTER24, CSR_MHPMCOUNTER25, CSR_MHPMCOUNTER26, CSR_MHPMCOUNTER27,
|
||||
CSR_MHPMCOUNTER28, CSR_MHPMCOUNTER29, CSR_MHPMCOUNTER30, CSR_MHPMCOUNTER31: begin
|
||||
CSR_MHPMCOUNTER12: begin
|
||||
mhpmcounter_we[mhpmcounter_idx] = 1'b1;
|
||||
end
|
||||
|
||||
|
@ -607,11 +606,7 @@ import cve2_pkg::*;
|
|||
CSR_MHPMCOUNTER3H,
|
||||
CSR_MHPMCOUNTER4H, CSR_MHPMCOUNTER5H, CSR_MHPMCOUNTER6H, CSR_MHPMCOUNTER7H,
|
||||
CSR_MHPMCOUNTER8H, CSR_MHPMCOUNTER9H, CSR_MHPMCOUNTER10H, CSR_MHPMCOUNTER11H,
|
||||
CSR_MHPMCOUNTER12H, CSR_MHPMCOUNTER13H, CSR_MHPMCOUNTER14H, CSR_MHPMCOUNTER15H,
|
||||
CSR_MHPMCOUNTER16H, CSR_MHPMCOUNTER17H, CSR_MHPMCOUNTER18H, CSR_MHPMCOUNTER19H,
|
||||
CSR_MHPMCOUNTER20H, CSR_MHPMCOUNTER21H, CSR_MHPMCOUNTER22H, CSR_MHPMCOUNTER23H,
|
||||
CSR_MHPMCOUNTER24H, CSR_MHPMCOUNTER25H, CSR_MHPMCOUNTER26H, CSR_MHPMCOUNTER27H,
|
||||
CSR_MHPMCOUNTER28H, CSR_MHPMCOUNTER29H, CSR_MHPMCOUNTER30H, CSR_MHPMCOUNTER31H: begin
|
||||
CSR_MHPMCOUNTER12H: begin
|
||||
mhpmcounterh_we[mhpmcounter_idx] = 1'b1;
|
||||
end
|
||||
|
||||
|
@ -1300,9 +1295,25 @@ import cve2_pkg::*;
|
|||
assign mcountinhibit = mcountinhibit_q;
|
||||
end
|
||||
|
||||
// MCOUNTINHIBIT
|
||||
localparam mcountinhibit_t MCOUNTINHIBIT_RST_VAL = '{cy: 1'b1,
|
||||
zero0: 1'b0,
|
||||
ir: 1'b1,
|
||||
hpm3: 1'b1,
|
||||
hpm4: 1'b0,
|
||||
hpm5: 1'b0,
|
||||
hpm6: 1'b0,
|
||||
hpm7: 1'b0,
|
||||
hpm8: 1'b0,
|
||||
hpm9: 1'b0,
|
||||
hpm10: 1'b0,
|
||||
hpm11: 1'b0,
|
||||
hpm12: 1'b0};
|
||||
|
||||
|
||||
always_ff @(posedge clk_i or negedge rst_ni) begin
|
||||
if (!rst_ni) begin
|
||||
mcountinhibit_q <= '0;
|
||||
mcountinhibit_q <= 13'(MCOUNTINHIBIT_RST_VAL);
|
||||
end else begin
|
||||
mcountinhibit_q <= mcountinhibit_d;
|
||||
end
|
||||
|
|
|
@ -441,26 +441,9 @@ package cve2_pkg;
|
|||
CSR_MHPMEVENT10 = 12'h32A,
|
||||
CSR_MHPMEVENT11 = 12'h32B,
|
||||
CSR_MHPMEVENT12 = 12'h32C,
|
||||
CSR_MHPMEVENT13 = 12'h32D,
|
||||
CSR_MHPMEVENT14 = 12'h32E,
|
||||
CSR_MHPMEVENT15 = 12'h32F,
|
||||
CSR_MHPMEVENT16 = 12'h330,
|
||||
CSR_MHPMEVENT17 = 12'h331,
|
||||
CSR_MHPMEVENT18 = 12'h332,
|
||||
CSR_MHPMEVENT19 = 12'h333,
|
||||
CSR_MHPMEVENT20 = 12'h334,
|
||||
CSR_MHPMEVENT21 = 12'h335,
|
||||
CSR_MHPMEVENT22 = 12'h336,
|
||||
CSR_MHPMEVENT23 = 12'h337,
|
||||
CSR_MHPMEVENT24 = 12'h338,
|
||||
CSR_MHPMEVENT25 = 12'h339,
|
||||
CSR_MHPMEVENT26 = 12'h33A,
|
||||
CSR_MHPMEVENT27 = 12'h33B,
|
||||
CSR_MHPMEVENT28 = 12'h33C,
|
||||
CSR_MHPMEVENT29 = 12'h33D,
|
||||
CSR_MHPMEVENT30 = 12'h33E,
|
||||
CSR_MHPMEVENT31 = 12'h33F,
|
||||
CSR_CYCLE = 12'hC00,
|
||||
CSR_MCYCLE = 12'hB00,
|
||||
CSR_INSTRET = 12'hC02,
|
||||
CSR_MINSTRET = 12'hB02,
|
||||
CSR_MHPMCOUNTER3 = 12'hB03,
|
||||
CSR_MHPMCOUNTER4 = 12'hB04,
|
||||
|
@ -472,26 +455,9 @@ package cve2_pkg;
|
|||
CSR_MHPMCOUNTER10 = 12'hB0A,
|
||||
CSR_MHPMCOUNTER11 = 12'hB0B,
|
||||
CSR_MHPMCOUNTER12 = 12'hB0C,
|
||||
CSR_MHPMCOUNTER13 = 12'hB0D,
|
||||
CSR_MHPMCOUNTER14 = 12'hB0E,
|
||||
CSR_MHPMCOUNTER15 = 12'hB0F,
|
||||
CSR_MHPMCOUNTER16 = 12'hB10,
|
||||
CSR_MHPMCOUNTER17 = 12'hB11,
|
||||
CSR_MHPMCOUNTER18 = 12'hB12,
|
||||
CSR_MHPMCOUNTER19 = 12'hB13,
|
||||
CSR_MHPMCOUNTER20 = 12'hB14,
|
||||
CSR_MHPMCOUNTER21 = 12'hB15,
|
||||
CSR_MHPMCOUNTER22 = 12'hB16,
|
||||
CSR_MHPMCOUNTER23 = 12'hB17,
|
||||
CSR_MHPMCOUNTER24 = 12'hB18,
|
||||
CSR_MHPMCOUNTER25 = 12'hB19,
|
||||
CSR_MHPMCOUNTER26 = 12'hB1A,
|
||||
CSR_MHPMCOUNTER27 = 12'hB1B,
|
||||
CSR_MHPMCOUNTER28 = 12'hB1C,
|
||||
CSR_MHPMCOUNTER29 = 12'hB1D,
|
||||
CSR_MHPMCOUNTER30 = 12'hB1E,
|
||||
CSR_MHPMCOUNTER31 = 12'hB1F,
|
||||
CSR_CYCLEH = 12'hC80,
|
||||
CSR_MCYCLEH = 12'hB80,
|
||||
CSR_INSTRETH = 12'hC82,
|
||||
CSR_MINSTRETH = 12'hB82,
|
||||
CSR_MHPMCOUNTER3H = 12'hB83,
|
||||
CSR_MHPMCOUNTER4H = 12'hB84,
|
||||
|
@ -503,27 +469,7 @@ package cve2_pkg;
|
|||
CSR_MHPMCOUNTER10H = 12'hB8A,
|
||||
CSR_MHPMCOUNTER11H = 12'hB8B,
|
||||
CSR_MHPMCOUNTER12H = 12'hB8C,
|
||||
CSR_MHPMCOUNTER13H = 12'hB8D,
|
||||
CSR_MHPMCOUNTER14H = 12'hB8E,
|
||||
CSR_MHPMCOUNTER15H = 12'hB8F,
|
||||
CSR_MHPMCOUNTER16H = 12'hB90,
|
||||
CSR_MHPMCOUNTER17H = 12'hB91,
|
||||
CSR_MHPMCOUNTER18H = 12'hB92,
|
||||
CSR_MHPMCOUNTER19H = 12'hB93,
|
||||
CSR_MHPMCOUNTER20H = 12'hB94,
|
||||
CSR_MHPMCOUNTER21H = 12'hB95,
|
||||
CSR_MHPMCOUNTER22H = 12'hB96,
|
||||
CSR_MHPMCOUNTER23H = 12'hB97,
|
||||
CSR_MHPMCOUNTER24H = 12'hB98,
|
||||
CSR_MHPMCOUNTER25H = 12'hB99,
|
||||
CSR_MHPMCOUNTER26H = 12'hB9A,
|
||||
CSR_MHPMCOUNTER27H = 12'hB9B,
|
||||
CSR_MHPMCOUNTER28H = 12'hB9C,
|
||||
CSR_MHPMCOUNTER29H = 12'hB9D,
|
||||
CSR_MHPMCOUNTER30H = 12'hB9E,
|
||||
CSR_MHPMCOUNTER31H = 12'hB9F,
|
||||
CSR_CPUCTRL = 12'h7C0,
|
||||
CSR_SECURESEED = 12'h7C1
|
||||
CSR_CPUCTRL = 12'h7C0
|
||||
} csr_num_e;
|
||||
|
||||
// CSR pmp-related offsets
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue