Files
gps/hardware/generated/genesys2-soc-verilog/PMAChecker.sv
T
2026-08-06 22:14:52 +03:00

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