67 lines
3.1 KiB
Systemverilog
67 lines
3.1 KiB
Systemverilog
// Generated by CIRCT firtool-1.151.0
|
|
module PMAChecker(
|
|
input [33:0] io_paddr,
|
|
output io_resp_r,
|
|
io_resp_w,
|
|
io_resp_pp,
|
|
io_resp_al,
|
|
io_resp_aa,
|
|
io_resp_x,
|
|
io_resp_eff
|
|
);
|
|
|
|
wire [9:0] _GEN = io_paddr[25:16] ^ 10'h200;
|
|
wire [16:0] _GEN_0 = io_paddr[28:12] ^ 17'h10014;
|
|
wire [11:0] _GEN_1 = io_paddr[31:20] ^ 12'h800;
|
|
wire legal_address =
|
|
io_paddr[33:12] == 22'h0 | {io_paddr[33:14], ~(io_paddr[13:12])} == 22'h0
|
|
| {io_paddr[33:17], ~(io_paddr[16])} == 18'h0 | {io_paddr[33:26], _GEN} == 18'h0
|
|
| {io_paddr[33:28], ~(io_paddr[27:26])} == 8'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10013} == 22'h0
|
|
| {io_paddr[33:29], _GEN_0} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10015} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10020} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10021} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10022} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10023} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10024} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10025} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10026} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10027} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10028} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h10029} == 22'h0
|
|
| {io_paddr[33:29], io_paddr[28:12] ^ 17'h1002A} == 22'h0
|
|
| {io_paddr[33:32], _GEN_1} == 14'h0;
|
|
wire _GEN_2 = |{io_paddr[31:29], io_paddr[27], io_paddr[16]};
|
|
wire _GEN_3 = |{io_paddr[31:27], io_paddr[16], io_paddr[14]};
|
|
wire _GEN_4 = |{io_paddr[31:28], ~(io_paddr[27])};
|
|
wire [16:0] _GEN_5 = io_paddr[28:12] ^ 17'h10011;
|
|
wire _GEN_6 =
|
|
|{io_paddr[31:29], _GEN_5[16:15], _GEN_5[4], io_paddr[14], _GEN_5[0]};
|
|
wire _GEN_7 = |{io_paddr[31:29], _GEN_0[16:15], _GEN_0[4], _GEN_0[2]};
|
|
wire _GEN_8 = |(_GEN_1[11:7]);
|
|
wire [14:0] _GEN_9 = io_paddr[28:14] ^ 15'h4002;
|
|
assign io_resp_r = legal_address;
|
|
assign io_resp_w =
|
|
legal_address & (~_GEN_2 | ~_GEN_3 | ~_GEN_4 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8);
|
|
assign io_resp_pp =
|
|
legal_address & (~_GEN_2 | ~_GEN_3 | ~_GEN_4 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8);
|
|
assign io_resp_al =
|
|
legal_address & (~_GEN_2 | ~_GEN_3 | ~_GEN_4 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8);
|
|
assign io_resp_aa =
|
|
legal_address & (~_GEN_2 | ~_GEN_3 | ~_GEN_4 | ~_GEN_6 | ~_GEN_7 | ~_GEN_8);
|
|
assign io_resp_x =
|
|
legal_address
|
|
& ({io_paddr[30:27], io_paddr[25]} == 5'h0
|
|
| {io_paddr[31:27], io_paddr[25], io_paddr[14]} == 7'h0);
|
|
assign io_resp_eff =
|
|
legal_address
|
|
& ({io_paddr[31:27], io_paddr[25], io_paddr[16:14], io_paddr[12]} == 10'h0
|
|
| {io_paddr[31:27], _GEN[9], io_paddr[16]} == 7'h0 | ~_GEN_4
|
|
| {io_paddr[31:29], io_paddr[28:27] ^ 2'h2, io_paddr[25], io_paddr[16:15]} == 8'h0
|
|
| {io_paddr[31:29], _GEN_9[14:13], io_paddr[25], _GEN_9[2:0]} == 9'h0
|
|
| {io_paddr[31:29], _GEN_5[16:15], io_paddr[25], _GEN_5[4:2], _GEN_5[0]} == 10'h0
|
|
| {io_paddr[31:29], _GEN_0[16:15], io_paddr[25], _GEN_0[4:2]} == 9'h0);
|
|
endmodule
|
|
|