91 lines
3.8 KiB
Systemverilog
91 lines
3.8 KiB
Systemverilog
// Generated by CIRCT firtool-1.151.0
|
|
module PMPChecker_s2(
|
|
input io_pmp_0_cfg_l,
|
|
input [1:0] io_pmp_0_cfg_a,
|
|
input io_pmp_0_cfg_x,
|
|
input [29:0] io_pmp_0_addr,
|
|
input [31:0] io_pmp_0_mask,
|
|
input io_pmp_1_cfg_l,
|
|
input [1:0] io_pmp_1_cfg_a,
|
|
input io_pmp_1_cfg_x,
|
|
input [29:0] io_pmp_1_addr,
|
|
input [31:0] io_pmp_1_mask,
|
|
input io_pmp_2_cfg_l,
|
|
input [1:0] io_pmp_2_cfg_a,
|
|
input io_pmp_2_cfg_x,
|
|
input [29:0] io_pmp_2_addr,
|
|
input [31:0] io_pmp_2_mask,
|
|
input io_pmp_3_cfg_l,
|
|
input [1:0] io_pmp_3_cfg_a,
|
|
input io_pmp_3_cfg_x,
|
|
input [29:0] io_pmp_3_addr,
|
|
input [31:0] io_pmp_3_mask,
|
|
input io_pmp_4_cfg_l,
|
|
input [1:0] io_pmp_4_cfg_a,
|
|
input io_pmp_4_cfg_x,
|
|
input [29:0] io_pmp_4_addr,
|
|
input [31:0] io_pmp_4_mask,
|
|
input io_pmp_5_cfg_l,
|
|
input [1:0] io_pmp_5_cfg_a,
|
|
input io_pmp_5_cfg_x,
|
|
input [29:0] io_pmp_5_addr,
|
|
input [31:0] io_pmp_5_mask,
|
|
input io_pmp_6_cfg_l,
|
|
input [1:0] io_pmp_6_cfg_a,
|
|
input io_pmp_6_cfg_x,
|
|
input [29:0] io_pmp_6_addr,
|
|
input [31:0] io_pmp_6_mask,
|
|
input io_pmp_7_cfg_l,
|
|
input [1:0] io_pmp_7_cfg_a,
|
|
input io_pmp_7_cfg_x,
|
|
input [29:0] io_pmp_7_addr,
|
|
input [31:0] io_pmp_7_mask,
|
|
io_addr,
|
|
output io_x
|
|
);
|
|
|
|
assign io_x =
|
|
(io_pmp_0_cfg_a[1]
|
|
? ((io_addr ^ {io_pmp_0_addr, 2'h0}) & ~io_pmp_0_mask) == 32'h0
|
|
: io_pmp_0_cfg_a[0] & io_addr < {io_pmp_0_addr, 2'h0})
|
|
? io_pmp_0_cfg_x | ~io_pmp_0_cfg_l
|
|
: (io_pmp_1_cfg_a[1]
|
|
? ((io_addr ^ {io_pmp_1_addr, 2'h0}) & ~io_pmp_1_mask) == 32'h0
|
|
: io_pmp_1_cfg_a[0] & io_addr >= {io_pmp_0_addr, 2'h0}
|
|
& io_addr < {io_pmp_1_addr, 2'h0})
|
|
? io_pmp_1_cfg_x | ~io_pmp_1_cfg_l
|
|
: (io_pmp_2_cfg_a[1]
|
|
? ((io_addr ^ {io_pmp_2_addr, 2'h0}) & ~io_pmp_2_mask) == 32'h0
|
|
: io_pmp_2_cfg_a[0] & io_addr >= {io_pmp_1_addr, 2'h0}
|
|
& io_addr < {io_pmp_2_addr, 2'h0})
|
|
? io_pmp_2_cfg_x | ~io_pmp_2_cfg_l
|
|
: (io_pmp_3_cfg_a[1]
|
|
? ((io_addr ^ {io_pmp_3_addr, 2'h0}) & ~io_pmp_3_mask) == 32'h0
|
|
: io_pmp_3_cfg_a[0] & io_addr >= {io_pmp_2_addr, 2'h0}
|
|
& io_addr < {io_pmp_3_addr, 2'h0})
|
|
? io_pmp_3_cfg_x | ~io_pmp_3_cfg_l
|
|
: (io_pmp_4_cfg_a[1]
|
|
? ((io_addr ^ {io_pmp_4_addr, 2'h0}) & ~io_pmp_4_mask) == 32'h0
|
|
: io_pmp_4_cfg_a[0] & io_addr >= {io_pmp_3_addr, 2'h0}
|
|
& io_addr < {io_pmp_4_addr, 2'h0})
|
|
? io_pmp_4_cfg_x | ~io_pmp_4_cfg_l
|
|
: (io_pmp_5_cfg_a[1]
|
|
? ((io_addr ^ {io_pmp_5_addr, 2'h0}) & ~io_pmp_5_mask) == 32'h0
|
|
: io_pmp_5_cfg_a[0] & io_addr >= {io_pmp_4_addr, 2'h0}
|
|
& io_addr < {io_pmp_5_addr, 2'h0})
|
|
? io_pmp_5_cfg_x | ~io_pmp_5_cfg_l
|
|
: (io_pmp_6_cfg_a[1]
|
|
? ((io_addr ^ {io_pmp_6_addr, 2'h0})
|
|
& ~io_pmp_6_mask) == 32'h0
|
|
: io_pmp_6_cfg_a[0] & io_addr >= {io_pmp_5_addr, 2'h0}
|
|
& io_addr < {io_pmp_6_addr, 2'h0})
|
|
? io_pmp_6_cfg_x | ~io_pmp_6_cfg_l
|
|
: ~(io_pmp_7_cfg_a[1]
|
|
? ((io_addr ^ {io_pmp_7_addr, 2'h0})
|
|
& ~io_pmp_7_mask) == 32'h0
|
|
: io_pmp_7_cfg_a[0] & io_addr >= {io_pmp_6_addr, 2'h0}
|
|
& io_addr < {io_pmp_7_addr, 2'h0}) | io_pmp_7_cfg_x
|
|
| ~io_pmp_7_cfg_l;
|
|
endmodule
|
|
|