319 lines
10 KiB
Systemverilog
319 lines
10 KiB
Systemverilog
// Generated by CIRCT firtool-1.151.0
|
|
module ITLB(
|
|
input [33:0] io_req_bits_vaddr,
|
|
output [31:0] io_resp_paddr,
|
|
output io_resp_pf_inst,
|
|
io_resp_ae_inst,
|
|
io_resp_cacheable,
|
|
input io_ptw_status_debug,
|
|
io_ptw_pmp_0_cfg_l,
|
|
input [1:0] io_ptw_pmp_0_cfg_a,
|
|
input io_ptw_pmp_0_cfg_x,
|
|
input [29:0] io_ptw_pmp_0_addr,
|
|
input [31:0] io_ptw_pmp_0_mask,
|
|
input io_ptw_pmp_1_cfg_l,
|
|
input [1:0] io_ptw_pmp_1_cfg_a,
|
|
input io_ptw_pmp_1_cfg_x,
|
|
input [29:0] io_ptw_pmp_1_addr,
|
|
input [31:0] io_ptw_pmp_1_mask,
|
|
input io_ptw_pmp_2_cfg_l,
|
|
input [1:0] io_ptw_pmp_2_cfg_a,
|
|
input io_ptw_pmp_2_cfg_x,
|
|
input [29:0] io_ptw_pmp_2_addr,
|
|
input [31:0] io_ptw_pmp_2_mask,
|
|
input io_ptw_pmp_3_cfg_l,
|
|
input [1:0] io_ptw_pmp_3_cfg_a,
|
|
input io_ptw_pmp_3_cfg_x,
|
|
input [29:0] io_ptw_pmp_3_addr,
|
|
input [31:0] io_ptw_pmp_3_mask,
|
|
input io_ptw_pmp_4_cfg_l,
|
|
input [1:0] io_ptw_pmp_4_cfg_a,
|
|
input io_ptw_pmp_4_cfg_x,
|
|
input [29:0] io_ptw_pmp_4_addr,
|
|
input [31:0] io_ptw_pmp_4_mask,
|
|
input io_ptw_pmp_5_cfg_l,
|
|
input [1:0] io_ptw_pmp_5_cfg_a,
|
|
input io_ptw_pmp_5_cfg_x,
|
|
input [29:0] io_ptw_pmp_5_addr,
|
|
input [31:0] io_ptw_pmp_5_mask,
|
|
input io_ptw_pmp_6_cfg_l,
|
|
input [1:0] io_ptw_pmp_6_cfg_a,
|
|
input io_ptw_pmp_6_cfg_x,
|
|
input [29:0] io_ptw_pmp_6_addr,
|
|
input [31:0] io_ptw_pmp_6_mask,
|
|
input io_ptw_pmp_7_cfg_l,
|
|
input [1:0] io_ptw_pmp_7_cfg_a,
|
|
input io_ptw_pmp_7_cfg_x,
|
|
input [29:0] io_ptw_pmp_7_addr,
|
|
input [31:0] io_ptw_pmp_7_mask
|
|
);
|
|
|
|
wire _pma_io_resp_x;
|
|
wire _pmp_io_x;
|
|
PMPChecker_s2 pmp (
|
|
.io_pmp_0_cfg_l (io_ptw_pmp_0_cfg_l),
|
|
.io_pmp_0_cfg_a (io_ptw_pmp_0_cfg_a),
|
|
.io_pmp_0_cfg_x (io_ptw_pmp_0_cfg_x),
|
|
.io_pmp_0_addr (io_ptw_pmp_0_addr),
|
|
.io_pmp_0_mask (io_ptw_pmp_0_mask),
|
|
.io_pmp_1_cfg_l (io_ptw_pmp_1_cfg_l),
|
|
.io_pmp_1_cfg_a (io_ptw_pmp_1_cfg_a),
|
|
.io_pmp_1_cfg_x (io_ptw_pmp_1_cfg_x),
|
|
.io_pmp_1_addr (io_ptw_pmp_1_addr),
|
|
.io_pmp_1_mask (io_ptw_pmp_1_mask),
|
|
.io_pmp_2_cfg_l (io_ptw_pmp_2_cfg_l),
|
|
.io_pmp_2_cfg_a (io_ptw_pmp_2_cfg_a),
|
|
.io_pmp_2_cfg_x (io_ptw_pmp_2_cfg_x),
|
|
.io_pmp_2_addr (io_ptw_pmp_2_addr),
|
|
.io_pmp_2_mask (io_ptw_pmp_2_mask),
|
|
.io_pmp_3_cfg_l (io_ptw_pmp_3_cfg_l),
|
|
.io_pmp_3_cfg_a (io_ptw_pmp_3_cfg_a),
|
|
.io_pmp_3_cfg_x (io_ptw_pmp_3_cfg_x),
|
|
.io_pmp_3_addr (io_ptw_pmp_3_addr),
|
|
.io_pmp_3_mask (io_ptw_pmp_3_mask),
|
|
.io_pmp_4_cfg_l (io_ptw_pmp_4_cfg_l),
|
|
.io_pmp_4_cfg_a (io_ptw_pmp_4_cfg_a),
|
|
.io_pmp_4_cfg_x (io_ptw_pmp_4_cfg_x),
|
|
.io_pmp_4_addr (io_ptw_pmp_4_addr),
|
|
.io_pmp_4_mask (io_ptw_pmp_4_mask),
|
|
.io_pmp_5_cfg_l (io_ptw_pmp_5_cfg_l),
|
|
.io_pmp_5_cfg_a (io_ptw_pmp_5_cfg_a),
|
|
.io_pmp_5_cfg_x (io_ptw_pmp_5_cfg_x),
|
|
.io_pmp_5_addr (io_ptw_pmp_5_addr),
|
|
.io_pmp_5_mask (io_ptw_pmp_5_mask),
|
|
.io_pmp_6_cfg_l (io_ptw_pmp_6_cfg_l),
|
|
.io_pmp_6_cfg_a (io_ptw_pmp_6_cfg_a),
|
|
.io_pmp_6_cfg_x (io_ptw_pmp_6_cfg_x),
|
|
.io_pmp_6_addr (io_ptw_pmp_6_addr),
|
|
.io_pmp_6_mask (io_ptw_pmp_6_mask),
|
|
.io_pmp_7_cfg_l (io_ptw_pmp_7_cfg_l),
|
|
.io_pmp_7_cfg_a (io_ptw_pmp_7_cfg_a),
|
|
.io_pmp_7_cfg_x (io_ptw_pmp_7_cfg_x),
|
|
.io_pmp_7_addr (io_ptw_pmp_7_addr),
|
|
.io_pmp_7_mask (io_ptw_pmp_7_mask),
|
|
.io_addr (io_req_bits_vaddr[31:0]),
|
|
.io_x (_pmp_io_x)
|
|
);
|
|
PMAChecker pma (
|
|
.io_paddr (io_req_bits_vaddr),
|
|
.io_resp_r (/* unused */),
|
|
.io_resp_w (/* unused */),
|
|
.io_resp_pp (/* unused */),
|
|
.io_resp_al (/* unused */),
|
|
.io_resp_aa (/* unused */),
|
|
.io_resp_x (_pma_io_resp_x),
|
|
.io_resp_eff (/* unused */)
|
|
);
|
|
OptimizationBarrier_TLBEntryData entries_barrier (
|
|
.io_x_u (1'h0),
|
|
.io_x_ae_ptw (1'h0),
|
|
.io_x_ae_final (1'h0),
|
|
.io_x_pf (1'h0),
|
|
.io_x_gf (1'h0),
|
|
.io_x_sw (1'h0),
|
|
.io_x_sx (1'h0),
|
|
.io_x_sr (1'h0),
|
|
.io_x_pw (1'h0),
|
|
.io_x_px (1'h0),
|
|
.io_x_pr (1'h0),
|
|
.io_x_ppp (1'h0),
|
|
.io_x_pal (1'h0),
|
|
.io_x_paa (1'h0),
|
|
.io_x_eff (1'h0),
|
|
.io_x_c (1'h0),
|
|
.io_y_u (/* unused */),
|
|
.io_y_ae_ptw (/* unused */),
|
|
.io_y_ae_final (/* unused */),
|
|
.io_y_pf (/* unused */),
|
|
.io_y_gf (/* unused */),
|
|
.io_y_sw (/* unused */),
|
|
.io_y_sx (/* unused */),
|
|
.io_y_sr (/* unused */),
|
|
.io_y_pw (/* unused */),
|
|
.io_y_px (/* unused */),
|
|
.io_y_pr (/* unused */),
|
|
.io_y_ppp (/* unused */),
|
|
.io_y_pal (/* unused */),
|
|
.io_y_paa (/* unused */),
|
|
.io_y_eff (/* unused */),
|
|
.io_y_c (/* unused */)
|
|
);
|
|
OptimizationBarrier_TLBEntryData entries_barrier_1 (
|
|
.io_x_u (1'h0),
|
|
.io_x_ae_ptw (1'h0),
|
|
.io_x_ae_final (1'h0),
|
|
.io_x_pf (1'h0),
|
|
.io_x_gf (1'h0),
|
|
.io_x_sw (1'h0),
|
|
.io_x_sx (1'h0),
|
|
.io_x_sr (1'h0),
|
|
.io_x_pw (1'h0),
|
|
.io_x_px (1'h0),
|
|
.io_x_pr (1'h0),
|
|
.io_x_ppp (1'h0),
|
|
.io_x_pal (1'h0),
|
|
.io_x_paa (1'h0),
|
|
.io_x_eff (1'h0),
|
|
.io_x_c (1'h0),
|
|
.io_y_u (/* unused */),
|
|
.io_y_ae_ptw (/* unused */),
|
|
.io_y_ae_final (/* unused */),
|
|
.io_y_pf (/* unused */),
|
|
.io_y_gf (/* unused */),
|
|
.io_y_sw (/* unused */),
|
|
.io_y_sx (/* unused */),
|
|
.io_y_sr (/* unused */),
|
|
.io_y_pw (/* unused */),
|
|
.io_y_px (/* unused */),
|
|
.io_y_pr (/* unused */),
|
|
.io_y_ppp (/* unused */),
|
|
.io_y_pal (/* unused */),
|
|
.io_y_paa (/* unused */),
|
|
.io_y_eff (/* unused */),
|
|
.io_y_c (/* unused */)
|
|
);
|
|
OptimizationBarrier_TLBEntryData entries_barrier_2 (
|
|
.io_x_u (1'h0),
|
|
.io_x_ae_ptw (1'h0),
|
|
.io_x_ae_final (1'h0),
|
|
.io_x_pf (1'h0),
|
|
.io_x_gf (1'h0),
|
|
.io_x_sw (1'h0),
|
|
.io_x_sx (1'h0),
|
|
.io_x_sr (1'h0),
|
|
.io_x_pw (1'h0),
|
|
.io_x_px (1'h0),
|
|
.io_x_pr (1'h0),
|
|
.io_x_ppp (1'h0),
|
|
.io_x_pal (1'h0),
|
|
.io_x_paa (1'h0),
|
|
.io_x_eff (1'h0),
|
|
.io_x_c (1'h0),
|
|
.io_y_u (/* unused */),
|
|
.io_y_ae_ptw (/* unused */),
|
|
.io_y_ae_final (/* unused */),
|
|
.io_y_pf (/* unused */),
|
|
.io_y_gf (/* unused */),
|
|
.io_y_sw (/* unused */),
|
|
.io_y_sx (/* unused */),
|
|
.io_y_sr (/* unused */),
|
|
.io_y_pw (/* unused */),
|
|
.io_y_px (/* unused */),
|
|
.io_y_pr (/* unused */),
|
|
.io_y_ppp (/* unused */),
|
|
.io_y_pal (/* unused */),
|
|
.io_y_paa (/* unused */),
|
|
.io_y_eff (/* unused */),
|
|
.io_y_c (/* unused */)
|
|
);
|
|
OptimizationBarrier_TLBEntryData entries_barrier_3 (
|
|
.io_x_u (1'h0),
|
|
.io_x_ae_ptw (1'h0),
|
|
.io_x_ae_final (1'h0),
|
|
.io_x_pf (1'h0),
|
|
.io_x_gf (1'h0),
|
|
.io_x_sw (1'h0),
|
|
.io_x_sx (1'h0),
|
|
.io_x_sr (1'h0),
|
|
.io_x_pw (1'h0),
|
|
.io_x_px (1'h0),
|
|
.io_x_pr (1'h0),
|
|
.io_x_ppp (1'h0),
|
|
.io_x_pal (1'h0),
|
|
.io_x_paa (1'h0),
|
|
.io_x_eff (1'h0),
|
|
.io_x_c (1'h0),
|
|
.io_y_u (/* unused */),
|
|
.io_y_ae_ptw (/* unused */),
|
|
.io_y_ae_final (/* unused */),
|
|
.io_y_pf (/* unused */),
|
|
.io_y_gf (/* unused */),
|
|
.io_y_sw (/* unused */),
|
|
.io_y_sx (/* unused */),
|
|
.io_y_sr (/* unused */),
|
|
.io_y_pw (/* unused */),
|
|
.io_y_px (/* unused */),
|
|
.io_y_pr (/* unused */),
|
|
.io_y_ppp (/* unused */),
|
|
.io_y_pal (/* unused */),
|
|
.io_y_paa (/* unused */),
|
|
.io_y_eff (/* unused */),
|
|
.io_y_c (/* unused */)
|
|
);
|
|
OptimizationBarrier_TLBEntryData entries_barrier_4 (
|
|
.io_x_u (1'h0),
|
|
.io_x_ae_ptw (1'h0),
|
|
.io_x_ae_final (1'h0),
|
|
.io_x_pf (1'h0),
|
|
.io_x_gf (1'h0),
|
|
.io_x_sw (1'h0),
|
|
.io_x_sx (1'h0),
|
|
.io_x_sr (1'h0),
|
|
.io_x_pw (1'h0),
|
|
.io_x_px (1'h0),
|
|
.io_x_pr (1'h0),
|
|
.io_x_ppp (1'h0),
|
|
.io_x_pal (1'h0),
|
|
.io_x_paa (1'h0),
|
|
.io_x_eff (1'h0),
|
|
.io_x_c (1'h0),
|
|
.io_y_u (/* unused */),
|
|
.io_y_ae_ptw (/* unused */),
|
|
.io_y_ae_final (/* unused */),
|
|
.io_y_pf (/* unused */),
|
|
.io_y_gf (/* unused */),
|
|
.io_y_sw (/* unused */),
|
|
.io_y_sx (/* unused */),
|
|
.io_y_sr (/* unused */),
|
|
.io_y_pw (/* unused */),
|
|
.io_y_px (/* unused */),
|
|
.io_y_pr (/* unused */),
|
|
.io_y_ppp (/* unused */),
|
|
.io_y_pal (/* unused */),
|
|
.io_y_paa (/* unused */),
|
|
.io_y_eff (/* unused */),
|
|
.io_y_c (/* unused */)
|
|
);
|
|
OptimizationBarrier_TLBEntryData entries_barrier_5 (
|
|
.io_x_u (1'h0),
|
|
.io_x_ae_ptw (1'h0),
|
|
.io_x_ae_final (1'h0),
|
|
.io_x_pf (1'h0),
|
|
.io_x_gf (1'h0),
|
|
.io_x_sw (1'h0),
|
|
.io_x_sx (1'h0),
|
|
.io_x_sr (1'h0),
|
|
.io_x_pw (1'h0),
|
|
.io_x_px (1'h0),
|
|
.io_x_pr (1'h0),
|
|
.io_x_ppp (1'h0),
|
|
.io_x_pal (1'h0),
|
|
.io_x_paa (1'h0),
|
|
.io_x_eff (1'h0),
|
|
.io_x_c (1'h0),
|
|
.io_y_u (/* unused */),
|
|
.io_y_ae_ptw (/* unused */),
|
|
.io_y_ae_final (/* unused */),
|
|
.io_y_pf (/* unused */),
|
|
.io_y_gf (/* unused */),
|
|
.io_y_sw (/* unused */),
|
|
.io_y_sx (/* unused */),
|
|
.io_y_sr (/* unused */),
|
|
.io_y_pw (/* unused */),
|
|
.io_y_px (/* unused */),
|
|
.io_y_pr (/* unused */),
|
|
.io_y_ppp (/* unused */),
|
|
.io_y_pal (/* unused */),
|
|
.io_y_paa (/* unused */),
|
|
.io_y_eff (/* unused */),
|
|
.io_y_c (/* unused */)
|
|
);
|
|
assign io_resp_paddr = io_req_bits_vaddr[31:0];
|
|
assign io_resp_pf_inst = 1'h0;
|
|
assign io_resp_ae_inst =
|
|
~(_pma_io_resp_x & ~(~io_ptw_status_debug & io_req_bits_vaddr[33:12] == 22'h0)
|
|
& _pmp_io_x);
|
|
assign io_resp_cacheable = 1'h0;
|
|
endmodule
|
|
|