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

140 lines
5.8 KiB
Systemverilog

// Generated by CIRCT firtool-1.151.0
// Users can define 'PRINTF_COND' to add an extra gate to prints.
`ifndef PRINTF_COND_
`ifdef PRINTF_COND
`define PRINTF_COND_ (`PRINTF_COND)
`else // PRINTF_COND
`define PRINTF_COND_ 1
`endif // PRINTF_COND
`endif // not def PRINTF_COND_
module TLToAPB(
input clock,
reset,
output auto_in_a_ready,
input auto_in_a_valid,
input [2:0] auto_in_a_bits_opcode,
auto_in_a_bits_param,
input [1:0] auto_in_a_bits_size,
input [6:0] auto_in_a_bits_source,
input [28:0] auto_in_a_bits_address,
input auto_in_a_bits_user_amba_prot_bufferable,
auto_in_a_bits_user_amba_prot_modifiable,
auto_in_a_bits_user_amba_prot_readalloc,
auto_in_a_bits_user_amba_prot_writealloc,
auto_in_a_bits_user_amba_prot_privileged,
auto_in_a_bits_user_amba_prot_secure,
auto_in_a_bits_user_amba_prot_fetch,
input [3:0] auto_in_a_bits_mask,
input [31:0] auto_in_a_bits_data,
input auto_in_a_bits_corrupt,
auto_in_d_ready,
output auto_in_d_valid,
output [2:0] auto_in_d_bits_opcode,
output [1:0] auto_in_d_bits_param,
auto_in_d_bits_size,
output [6:0] auto_in_d_bits_source,
output auto_in_d_bits_sink,
auto_in_d_bits_denied,
output [31:0] auto_in_d_bits_data,
output auto_in_d_bits_corrupt,
auto_out_psel,
auto_out_penable,
auto_out_pwrite,
output [28:0] auto_out_paddr,
output [31:0] auto_out_pwdata,
input auto_out_pready,
auto_out_pslverr,
input [31:0] auto_out_prdata
);
wire _a_q_io_deq_valid;
wire [2:0] _a_q_io_deq_bits_opcode;
wire [1:0] _a_q_io_deq_bits_size;
wire [6:0] _a_q_io_deq_bits_source;
wire _nodeIn_d_q_io_enq_ready;
wire _nodeIn_d_q_io_deq_valid;
reg a_enable;
reg a_sel_REG;
wire a_sel = _a_q_io_deq_valid & a_sel_REG;
reg d_write;
reg [6:0] d_source;
reg [1:0] d_size;
wire d_valid = a_enable & auto_out_pready;
wire _GEN = ~d_valid | _nodeIn_d_q_io_enq_ready;
`ifndef SYNTHESIS
always @(posedge clock) begin
if ((`PRINTF_COND_) & ~reset & ~_GEN)
$fwrite(32'h80000002,
"Assertion failed\n at ToAPB.scala:110 assert (!d.valid || d.ready)\n");
end // always @(posedge)
`endif // not def SYNTHESIS
always @(posedge clock) begin
if (reset)
a_enable <= 1'h0;
else
a_enable <= ~(_nodeIn_d_q_io_enq_ready & d_valid) & (a_sel | a_enable);
a_sel_REG <= ~_nodeIn_d_q_io_deq_valid | auto_in_d_ready;
if (a_sel & ~a_enable) begin
d_write <= ~(_a_q_io_deq_bits_opcode[2]);
d_source <= _a_q_io_deq_bits_source;
d_size <= _a_q_io_deq_bits_size;
end
end // always @(posedge)
Queue1_TLBundleD_a29d32s7k1z2u nodeIn_d_q (
.clock (clock),
.reset (reset),
.io_enq_ready (_nodeIn_d_q_io_enq_ready),
.io_enq_valid (d_valid),
.io_enq_bits_opcode ({2'h0, ~d_write}),
.io_enq_bits_size (d_size),
.io_enq_bits_source (d_source),
.io_enq_bits_denied (d_write & auto_out_pslverr),
.io_enq_bits_data (auto_out_prdata),
.io_enq_bits_corrupt (~d_write & auto_out_pslverr),
.io_deq_ready (auto_in_d_ready),
.io_deq_valid (_nodeIn_d_q_io_deq_valid),
.io_deq_bits_opcode (auto_in_d_bits_opcode),
.io_deq_bits_param (auto_in_d_bits_param),
.io_deq_bits_size (auto_in_d_bits_size),
.io_deq_bits_source (auto_in_d_bits_source),
.io_deq_bits_sink (auto_in_d_bits_sink),
.io_deq_bits_denied (auto_in_d_bits_denied),
.io_deq_bits_data (auto_in_d_bits_data),
.io_deq_bits_corrupt (auto_in_d_bits_corrupt)
);
Queue1_TLBundleA_a29d32s7k1z2u a_q (
.clock (clock),
.reset (reset),
.io_enq_ready (auto_in_a_ready),
.io_enq_valid (auto_in_a_valid),
.io_enq_bits_opcode (auto_in_a_bits_opcode),
.io_enq_bits_param (auto_in_a_bits_param),
.io_enq_bits_size (auto_in_a_bits_size),
.io_enq_bits_source (auto_in_a_bits_source),
.io_enq_bits_address (auto_in_a_bits_address),
.io_enq_bits_user_amba_prot_bufferable (auto_in_a_bits_user_amba_prot_bufferable),
.io_enq_bits_user_amba_prot_modifiable (auto_in_a_bits_user_amba_prot_modifiable),
.io_enq_bits_user_amba_prot_readalloc (auto_in_a_bits_user_amba_prot_readalloc),
.io_enq_bits_user_amba_prot_writealloc (auto_in_a_bits_user_amba_prot_writealloc),
.io_enq_bits_user_amba_prot_privileged (auto_in_a_bits_user_amba_prot_privileged),
.io_enq_bits_user_amba_prot_secure (auto_in_a_bits_user_amba_prot_secure),
.io_enq_bits_user_amba_prot_fetch (auto_in_a_bits_user_amba_prot_fetch),
.io_enq_bits_mask (auto_in_a_bits_mask),
.io_enq_bits_data (auto_in_a_bits_data),
.io_enq_bits_corrupt (auto_in_a_bits_corrupt),
.io_deq_ready (d_valid),
.io_deq_valid (_a_q_io_deq_valid),
.io_deq_bits_opcode (_a_q_io_deq_bits_opcode),
.io_deq_bits_size (_a_q_io_deq_bits_size),
.io_deq_bits_source (_a_q_io_deq_bits_source),
.io_deq_bits_address (auto_out_paddr),
.io_deq_bits_data (auto_out_pwdata)
);
assign auto_in_d_valid = _nodeIn_d_q_io_deq_valid;
assign auto_out_psel = a_sel;
assign auto_out_penable = a_enable;
assign auto_out_pwrite = ~(_a_q_io_deq_bits_opcode[2]);
endmodule