-
Notifications
You must be signed in to change notification settings - Fork 685
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[Scratchpads] Needed packages for scratchpads and ahb peripheral bus #2458
base: feature/scratchpads
Are you sure you want to change the base?
Changes from 24 commits
1b8f2ad
e6b4236
887be36
b3feeb7
b58ae5d
2ab02dd
aa276ed
ba33f04
b0aa116
2aae707
400f176
a105964
273a67a
679d19b
b10e82d
2f76258
0b39bcf
dd817f5
a8f0a11
60cbf57
3013a54
7e7fcc7
cb5d33f
16754f5
7193e34
195cced
3553487
acf2531
483caa0
664917a
bb52e97
9b2c9db
71c8fa2
d8b7f5c
66dc8f9
1a08139
581ccbb
3e5761e
43b333b
File filter
Filter by extension
Conversations
Jump to
Diff view
Diff view
There are no files selected for viewing
Original file line number | Diff line number | Diff line change | ||||||||||||||||||||||||||||||||
---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
@@ -0,0 +1,76 @@ | ||||||||||||||||||||||||||||||||||
//----------------------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||
// Copyright 2024 Robert Bosch GmbH | ||||||||||||||||||||||||||||||||||
// | ||||||||||||||||||||||||||||||||||
// SPDX-License-Identifier: SHL-0.51 | ||||||||||||||||||||||||||||||||||
// | ||||||||||||||||||||||||||||||||||
// Original Author: Coralie Allioux - Robert Bosch France SAS | ||||||||||||||||||||||||||||||||||
//----------------------------------------------------------------------------- | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
module address_decoder import address_decoder_pkg::*;#( | ||||||||||||||||||||||||||||||||||
parameter config_pkg::cva6_cfg_t CVA6Cfg = config_pkg::cva6_cfg_empty, | ||||||||||||||||||||||||||||||||||
parameter type exception_t = logic, | ||||||||||||||||||||||||||||||||||
parameter ADDR_WIDTH = 32 | ||||||||||||||||||||||||||||||||||
) ( | ||||||||||||||||||||||||||||||||||
input logic clk_i, | ||||||||||||||||||||||||||||||||||
input logic rst_ni, | ||||||||||||||||||||||||||||||||||
Comment on lines
+14
to
+15
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [verible-verilog-format] reported by reviewdog 🐶
Suggested change
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
input logic addr_valid_i, // Input address is valid | ||||||||||||||||||||||||||||||||||
input logic [ADDR_WIDTH-1:0] addr_i, // Address to be decoded | ||||||||||||||||||||||||||||||||||
Comment on lines
+17
to
+18
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [verible-verilog-format] reported by reviewdog 🐶
Suggested change
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
input logic dscr_en_i, // From CSR | ||||||||||||||||||||||||||||||||||
input logic iscr_en_i, // From CSR | ||||||||||||||||||||||||||||||||||
input logic ahb_periph_en_i, // From CSR | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
input logic [CVA6Cfg.XLEN-1:0] exception_code_i, | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
output exception_t ex_o, | ||||||||||||||||||||||||||||||||||
output addr_dec_mode_e select_mem_o | ||||||||||||||||||||||||||||||||||
Comment on lines
+20
to
+27
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [verible-verilog-format] reported by reviewdog 🐶
Suggested change
|
||||||||||||||||||||||||||||||||||
); | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
logic match_any_ahbperiph_region; | ||||||||||||||||||||||||||||||||||
logic match_dscr_region; | ||||||||||||||||||||||||||||||||||
logic match_iscr_region; | ||||||||||||||||||||||||||||||||||
addr_dec_mode_e select_mem_n, select_mem_q; | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
assign match_dscr_region = config_pkg::is_inside_data_scratchpad(CVA6Cfg, {{64-ADDR_WIDTH{1'b0}}, addr_i}); | ||||||||||||||||||||||||||||||||||
assign match_iscr_region = config_pkg::is_inside_instruction_scratchpad(CVA6Cfg, {{64-ADDR_WIDTH{1'b0}}, addr_i}); | ||||||||||||||||||||||||||||||||||
assign match_any_ahbperiph_region = config_pkg::is_inside_ahbperiph_regions(CVA6Cfg, {{64-ADDR_WIDTH{1'b0}}, addr_i}); | ||||||||||||||||||||||||||||||||||
Comment on lines
+35
to
+37
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [verible-verilog-format] reported by reviewdog 🐶
Suggested change
|
||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
assign select_mem_o = select_mem_n; | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
always_comb begin : select_mem_p | ||||||||||||||||||||||||||||||||||
ex_o = '0; | ||||||||||||||||||||||||||||||||||
select_mem_n = select_mem_q; | ||||||||||||||||||||||||||||||||||
if (addr_valid_i) begin | ||||||||||||||||||||||||||||||||||
unique if (match_dscr_region) begin | ||||||||||||||||||||||||||||||||||
// Equal to 0 only if DataScrPresent is set | ||||||||||||||||||||||||||||||||||
select_mem_n = DECODER_MODE_DSCR; | ||||||||||||||||||||||||||||||||||
if (!dscr_en_i) begin | ||||||||||||||||||||||||||||||||||
ex_o = {exception_code_i, CVA6Cfg.XLEN'(addr_i), 1'b1}; | ||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||
end else if (match_iscr_region) begin | ||||||||||||||||||||||||||||||||||
// Equal to 0 only if InstrScrPresent is set | ||||||||||||||||||||||||||||||||||
select_mem_n = DECODER_MODE_ISCR; | ||||||||||||||||||||||||||||||||||
if (!iscr_en_i) begin | ||||||||||||||||||||||||||||||||||
ex_o = {exception_code_i, CVA6Cfg.XLEN'(addr_i), 1'b1}; | ||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||
end else if (match_any_ahbperiph_region) begin | ||||||||||||||||||||||||||||||||||
select_mem_n = DECODER_MODE_AHB_PERIPH; | ||||||||||||||||||||||||||||||||||
if (!ahb_periph_en_i) begin | ||||||||||||||||||||||||||||||||||
ex_o = {exception_code_i, CVA6Cfg.XLEN'(addr_i), 1'b1}; | ||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||
end else begin | ||||||||||||||||||||||||||||||||||
select_mem_n = DECODER_MODE_CACHE; | ||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
always_ff @(posedge clk_i or negedge rst_ni) begin : select_mem_q_p | ||||||||||||||||||||||||||||||||||
if (~rst_ni) begin | ||||||||||||||||||||||||||||||||||
select_mem_q <= DECODER_MODE_CACHE; | ||||||||||||||||||||||||||||||||||
end else begin | ||||||||||||||||||||||||||||||||||
select_mem_q <= select_mem_n; | ||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||
end | ||||||||||||||||||||||||||||||||||
|
||||||||||||||||||||||||||||||||||
endmodule | ||||||||||||||||||||||||||||||||||
Comment on lines
+75
to
+76
There was a problem hiding this comment. Choose a reason for hiding this commentThe reason will be displayed to describe this comment to others. Learn more. [verible-verilog-format] reported by reviewdog 🐶
Suggested change
|
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
[verible-verilog-format] reported by reviewdog 🐶