// =============================================================================
// Generated by efx_ipmgr
// Version: 2025.1.95
// IP Version: 5.4
// =============================================================================

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2025 Efinix Inc. All rights reserved.              
//
// This   document  contains  proprietary information  which   is        
// protected by  copyright. All rights  are reserved.  This notice       
// refers to original work by Efinix, Inc. which may be derivitive       
// of other work distributed under license of the authors.  In the       
// case of derivative work, nothing in this notice overrides the         
// original author's license agreement.  Where applicable, the           
// original license agreement is included in it's original               
// unmodified form immediately below this header.                        
//                                                                       
// WARRANTY DISCLAIMER.                                                  
//     THE  DESIGN, CODE, OR INFORMATION ARE PROVIDED “AS IS” AND        
//     EFINIX MAKES NO WARRANTIES, EXPRESS OR IMPLIED WITH               
//     RESPECT THERETO, AND EXPRESSLY DISCLAIMS ANY IMPLIED WARRANTIES,  
//     INCLUDING, WITHOUT LIMITATION, THE IMPLIED WARRANTIES OF          
//     MERCHANTABILITY, NON-INFRINGEMENT AND FITNESS FOR A PARTICULAR    
//     PURPOSE.  SOME STATES DO NOT ALLOW EXCLUSIONS OF AN IMPLIED       
//     WARRANTY, SO THIS DISCLAIMER MAY NOT APPLY TO LICENSEE.           
//                                                                       
// LIMITATION OF LIABILITY.                                              
//     NOTWITHSTANDING ANYTHING TO THE CONTRARY, EXCEPT FOR BODILY       
//     INJURY, EFINIX SHALL NOT BE LIABLE WITH RESPECT TO ANY SUBJECT    
//     MATTER OF THIS AGREEMENT UNDER TORT, CONTRACT, STRICT LIABILITY   
//     OR ANY OTHER LEGAL OR EQUITABLE THEORY (I) FOR ANY INDIRECT,      
//     SPECIAL, INCIDENTAL, EXEMPLARY OR CONSEQUENTIAL DAMAGES OF ANY    
//     CHARACTER INCLUDING, WITHOUT LIMITATION, DAMAGES FOR LOSS OF      
//     GOODWILL, DATA OR PROFIT, WORK STOPPAGE, OR COMPUTER FAILURE OR   
//     MALFUNCTION, OR IN ANY EVENT (II) FOR ANY AMOUNT IN EXCESS, IN    
//     THE AGGREGATE, OF THE FEE PAID BY LICENSEE TO EFINIX HEREUNDER    
//     (OR, IF THE FEE HAS BEEN WAIVED, $100), EVEN IF EFINIX SHALL HAVE 
//     BEEN INFORMED OF THE POSSIBILITY OF SUCH DAMAGES.  SOME STATES DO 
//     NOT ALLOW THE EXCLUSION OR LIMITATION OF INCIDENTAL OR            
//     CONSEQUENTIAL DAMAGES, SO THIS LIMITATION AND EXCLUSION MAY NOT   
//     APPLY TO LICENSEE.                                                
//
////////////////////////////////////////////////////////////////////////////////

`define IP_UUID _f860ac11fa8043be8fa45e244a8a89a5
`define IP_NAME_CONCAT(a,b) a``b
`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
module gAXIM_2to1_switch
(
    input rst_n,
    input clk,
    input [1:0] s_axi_awvalid,
    input [63:0] s_axi_awaddr,
    input [3:0] s_axi_awlock,
    output [1:0] s_axi_awready,
    input [1:0] s_axi_arvalid,
    input [63:0] s_axi_araddr,
    input [3:0] s_axi_arlock,
    output [1:0] s_axi_arready,
    input [1:0] s_axi_wvalid,
    input [1:0] s_axi_wlast,
    input [15:0] s_axi_wid,
    input [1:0] s_axi_bready,
    output [3:0] s_axi_bresp,
    input [1:0] s_axi_rready,
    output [15:0] s_axi_bid,
    output [15:0] s_axi_rid,
    input [255:0] s_axi_wdata,
    output [255:0] s_axi_rdata,
    output [3:0] s_axi_rresp,
    output [1:0] s_axi_bvalid,
    output [1:0] s_axi_rvalid,
    output [1:0] s_axi_rlast,
    input [31:0] s_axi_wstrb,
    output [0:0] m_axi_awvalid,
    output [31:0] m_axi_awaddr,
    output [1:0] m_axi_awlock,
    input [0:0] m_axi_awready,
    output [0:0] m_axi_arvalid,
    output [31:0] m_axi_araddr,
    output [1:0] m_axi_arlock,
    input [0:0] m_axi_arready,
    output [0:0] m_axi_wvalid,
    output [0:0] m_axi_wlast,
    output [0:0] m_axi_bready,
    input [1:0] m_axi_bresp,
    output [0:0] m_axi_rready,
    input [7:0] m_axi_bid,
    input [7:0] m_axi_rid,
    output [127:0] m_axi_wdata,
    input [127:0] m_axi_rdata,
    input [1:0] m_axi_rresp,
    input [0:0] m_axi_bvalid,
    input [0:0] m_axi_rvalid,
    input [0:0] m_axi_rlast,
    output [15:0] m_axi_wstrb,
    input [0:0] m_axi_wready,
    output [1:0] s_axi_wready,
    input [7:0] s_axi_awprot,
    input [7:0] s_axi_awcache,
    input [7:0] s_axi_awqos,
    input [5:0] s_axi_awuser,
    input [7:0] s_axi_arqos,
    input [7:0] s_axi_arcache,
    output [3:0] m_axi_awprot,
    input [15:0] s_axi_arid,
    input [5:0] s_axi_arsize,
    input [15:0] s_axi_arlen,
    input [3:0] s_axi_arburst,
    input [7:0] s_axi_arprot,
    input [15:0] s_axi_awid,
    input [3:0] s_axi_awburst,
    input [15:0] s_axi_awlen,
    input [5:0] s_axi_awsize,
    output [7:0] m_axi_awid,
    output [1:0] m_axi_awburst,
    output [7:0] m_axi_awlen,
    output [2:0] m_axi_awsize,
    output [3:0] m_axi_awcache,
    output [3:0] m_axi_awqos,
    output [2:0] m_axi_awuser,
    output [3:0] m_axi_arprot,
    output [1:0] m_axi_arburst,
    output [7:0] m_axi_arlen,
    output [2:0] m_axi_arsize,
    output [3:0] m_axi_arcache,
    output [3:0] m_axi_arqos,
    output [2:0] m_axi_aruser,
    output [3:0] m_axi_awregion,
    output [3:0] m_axi_arregion,
    output [7:0] m_axi_arid,
    output [2:0] m_axi_wuser,
    input [2:0] m_axi_ruser,
    input [2:0] m_axi_buser,
    input [5:0] s_axi_aruser,
    input [5:0] s_axi_wuser,
    output [5:0] s_axi_buser,
    output [5:0] s_axi_ruser
);
`IP_MODULE_NAME(efx_axi_interconnect)
#(
    .ARB_MODE ("ROUND_ROBIN_1"),
    .S_PORTS (2),
    .DATA_WIDTH (128),
    .ADDR_WIDTH (32),
    .M_PORTS (1),
    .ID_WIDTH (8),
    .USER_WIDTH (3),
    .PROTOCOL ("AXI4")
)
u_efx_axi_interconnect
(
    .rst_n ( rst_n ),
    .clk ( clk ),
    .s_axi_awvalid ( s_axi_awvalid ),
    .s_axi_awaddr ( s_axi_awaddr ),
    .s_axi_awlock ( s_axi_awlock ),
    .s_axi_awready ( s_axi_awready ),
    .s_axi_arvalid ( s_axi_arvalid ),
    .s_axi_araddr ( s_axi_araddr ),
    .s_axi_arlock ( s_axi_arlock ),
    .s_axi_arready ( s_axi_arready ),
    .s_axi_wvalid ( s_axi_wvalid ),
    .s_axi_wlast ( s_axi_wlast ),
    .s_axi_wid ( s_axi_wid ),
    .s_axi_bready ( s_axi_bready ),
    .s_axi_bresp ( s_axi_bresp ),
    .s_axi_rready ( s_axi_rready ),
    .s_axi_bid ( s_axi_bid ),
    .s_axi_rid ( s_axi_rid ),
    .s_axi_wdata ( s_axi_wdata ),
    .s_axi_rdata ( s_axi_rdata ),
    .s_axi_rresp ( s_axi_rresp ),
    .s_axi_bvalid ( s_axi_bvalid ),
    .s_axi_rvalid ( s_axi_rvalid ),
    .s_axi_rlast ( s_axi_rlast ),
    .s_axi_wstrb ( s_axi_wstrb ),
    .m_axi_awvalid ( m_axi_awvalid ),
    .m_axi_awaddr ( m_axi_awaddr ),
    .m_axi_awlock ( m_axi_awlock ),
    .m_axi_awready ( m_axi_awready ),
    .m_axi_arvalid ( m_axi_arvalid ),
    .m_axi_araddr ( m_axi_araddr ),
    .m_axi_arlock ( m_axi_arlock ),
    .m_axi_arready ( m_axi_arready ),
    .m_axi_wvalid ( m_axi_wvalid ),
    .m_axi_wlast ( m_axi_wlast ),
    .m_axi_bready ( m_axi_bready ),
    .m_axi_bresp ( m_axi_bresp ),
    .m_axi_rready ( m_axi_rready ),
    .m_axi_bid ( m_axi_bid ),
    .m_axi_rid ( m_axi_rid ),
    .m_axi_wdata ( m_axi_wdata ),
    .m_axi_rdata ( m_axi_rdata ),
    .m_axi_rresp ( m_axi_rresp ),
    .m_axi_bvalid ( m_axi_bvalid ),
    .m_axi_rvalid ( m_axi_rvalid ),
    .m_axi_rlast ( m_axi_rlast ),
    .m_axi_wstrb ( m_axi_wstrb ),
    .m_axi_wready ( m_axi_wready ),
    .s_axi_wready ( s_axi_wready ),
    .s_axi_awprot ( s_axi_awprot ),
    .s_axi_awcache ( s_axi_awcache ),
    .s_axi_awqos ( s_axi_awqos ),
    .s_axi_awuser ( s_axi_awuser ),
    .s_axi_arqos ( s_axi_arqos ),
    .s_axi_arcache ( s_axi_arcache ),
    .m_axi_awprot ( m_axi_awprot ),
    .s_axi_arid ( s_axi_arid ),
    .s_axi_arsize ( s_axi_arsize ),
    .s_axi_arlen ( s_axi_arlen ),
    .s_axi_arburst ( s_axi_arburst ),
    .s_axi_arprot ( s_axi_arprot ),
    .s_axi_awid ( s_axi_awid ),
    .s_axi_awburst ( s_axi_awburst ),
    .s_axi_awlen ( s_axi_awlen ),
    .s_axi_awsize ( s_axi_awsize ),
    .m_axi_awid ( m_axi_awid ),
    .m_axi_awburst ( m_axi_awburst ),
    .m_axi_awlen ( m_axi_awlen ),
    .m_axi_awsize ( m_axi_awsize ),
    .m_axi_awcache ( m_axi_awcache ),
    .m_axi_awqos ( m_axi_awqos ),
    .m_axi_awuser ( m_axi_awuser ),
    .m_axi_arprot ( m_axi_arprot ),
    .m_axi_arburst ( m_axi_arburst ),
    .m_axi_arlen ( m_axi_arlen ),
    .m_axi_arsize ( m_axi_arsize ),
    .m_axi_arcache ( m_axi_arcache ),
    .m_axi_arqos ( m_axi_arqos ),
    .m_axi_aruser ( m_axi_aruser ),
    .m_axi_awregion ( m_axi_awregion ),
    .m_axi_arregion ( m_axi_arregion ),
    .m_axi_arid ( m_axi_arid ),
    .m_axi_wuser ( m_axi_wuser ),
    .m_axi_ruser ( m_axi_ruser ),
    .m_axi_buser ( m_axi_buser ),
    .s_axi_aruser ( s_axi_aruser ),
    .s_axi_wuser ( s_axi_wuser ),
    .s_axi_buser ( s_axi_buser ),
    .s_axi_ruser ( s_axi_ruser )
);
endmodule

//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
k0MNGAL+siJuDYrFA58rRJscMTUE6hiuNEylu7uA+mdVk/vCPJpUprjqZIgJ75i6
csRX146zVh4AUQABC09rbvto0kqPbqsZwZGmdOm1W8NmGZIXLCsG4MZs984TiToI
QMOSc+XFr9GVx1rFODfIQCsRVOla6WZCpHrBZzFjmFwY4t9fXFQCs5fSkNbGyG6v
8YDvdegFPMYp5Qu9ccfxeosyrpdCBompAmWscbYmzMrmyFiInvb8Y5dyqCuve1NW
jirl6fz1954ypdomnZDn+X9k8zTCJAxovyf9Qxk6Q+/Pf6e6yRqEYBxT7dtZhWRG
tEQdKP3bt5KBf+EuwdVLuQ==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 9552 )
`pragma protect data_block
[encoded data, 12935 characters]
`pragma protect end_protected

//pragma protect end


module `IP_MODULE_NAME(efx_axi_interconnect) #(
    parameter PROTOCOL        = "AXI4",                            
    parameter ARB_MODE        = "PRIORITY",                        
    parameter S_PORTS         = 1,                                 
    parameter M_PORTS         = 8,                                 
    parameter ID_WIDTH        = 8,                                 
    parameter DATA_WIDTH      = 32,                                
    parameter USER_WIDTH      = 3,                                 
    parameter ADDR_WIDTH      = 32,                                
    parameter M_REGIONS       = 1,
    parameter M_CONNECT_READ  = {M_PORTS{{S_PORTS{1'b1}}}},        
    parameter M_CONNECT_WRITE = {M_PORTS{{S_PORTS{1'b1}}}},        
    parameter STRB_WIDTH      = DATA_WIDTH/8
) (
    input  wire                           clk,
    input  wire                           rst_n,
    input  wire [S_PORTS-1:0]             s_axi_awvalid,
    input  wire [S_PORTS*ADDR_WIDTH-1:0]  s_axi_awaddr,
    input  wire [S_PORTS*3-1:0]           s_axi_awprot,
    input  wire [S_PORTS*ID_WIDTH-1:0]    s_axi_awid,       
    input  wire [S_PORTS*2-1:0]           s_axi_awburst,    
    input  wire [S_PORTS*8-1:0]           s_axi_awlen,      
    input  wire [S_PORTS*3-1:0]           s_axi_awsize,     
    input  wire [S_PORTS*4-1:0]           s_axi_awcache,    
    input  wire [S_PORTS*4-1:0]           s_axi_awqos,      
    input  wire [S_PORTS*USER_WIDTH-1:0]  s_axi_awuser,     
    input  wire [S_PORTS*2-1:0]           s_axi_awlock,
    output reg  [S_PORTS-1:0]             s_axi_awready,
    input  wire [S_PORTS-1:0]             s_axi_wvalid,
    input  wire [S_PORTS*DATA_WIDTH-1:0]  s_axi_wdata,
    input  wire [S_PORTS*STRB_WIDTH-1:0]  s_axi_wstrb,
    input  wire [S_PORTS-1:0]             s_axi_wlast,      
    input  wire [S_PORTS*USER_WIDTH-1:0]  s_axi_wuser,      
    input  wire [S_PORTS*ID_WIDTH-1:0]    s_axi_wid,        
    output wire [S_PORTS-1:0]             s_axi_wready,
    input  wire [S_PORTS-1:0]             s_axi_bready,
    output wire [S_PORTS*2-1:0]           s_axi_bresp,
    output reg  [S_PORTS-1:0]             s_axi_bvalid,
    output wire [S_PORTS*ID_WIDTH-1:0]    s_axi_bid,        
    output wire [S_PORTS*USER_WIDTH-1:0]  s_axi_buser,      
    input  wire [S_PORTS-1:0]             s_axi_arvalid,
    input  wire [S_PORTS*ADDR_WIDTH-1:0]  s_axi_araddr,
    input  wire [S_PORTS*3-1:0]           s_axi_arprot,
    input  wire [S_PORTS*ID_WIDTH-1:0]    s_axi_arid,       
    input  wire [S_PORTS*2-1:0]           s_axi_arburst,    
    input  wire [S_PORTS*8-1:0]           s_axi_arlen,      
    input  wire [S_PORTS*3-1:0]           s_axi_arsize,     
    input  wire [S_PORTS*4-1:0]           s_axi_arcache,    
    input  wire [S_PORTS*4-1:0]           s_axi_arqos,      
    input  wire [S_PORTS*USER_WIDTH-1:0]  s_axi_aruser,     
    input  wire [S_PORTS*2-1:0]           s_axi_arlock,
    output reg  [S_PORTS-1:0]             s_axi_arready,
    input  wire [S_PORTS-1:0]             s_axi_rready,
    output wire [S_PORTS*ID_WIDTH-1:0]    s_axi_rid,
    output wire [S_PORTS*DATA_WIDTH-1:0]  s_axi_rdata,
    output wire [S_PORTS*2-1:0]           s_axi_rresp,
    output wire [S_PORTS-1:0]             s_axi_rvalid,
    output wire [S_PORTS-1:0]             s_axi_rlast,
    output wire [S_PORTS*USER_WIDTH-1:0]  s_axi_ruser,
    output reg  [M_PORTS-1:0]             m_axi_awvalid,
    output wire [M_PORTS*ID_WIDTH-1:0]    m_axi_awid,
    output wire [M_PORTS*2-1:0]           m_axi_awburst,
    output wire [M_PORTS*8-1:0]           m_axi_awlen,
    output wire [M_PORTS*3-1:0]           m_axi_awsize,
    output wire [M_PORTS*4-1:0]           m_axi_awcache,
    output wire [M_PORTS*4-1:0]           m_axi_awqos,
    output wire [M_PORTS*4-1:0]           m_axi_awregion,
    output wire [M_PORTS*USER_WIDTH-1:0]  m_axi_awuser,
    output wire [M_PORTS*ADDR_WIDTH-1:0]  m_axi_awaddr,
    output wire [M_PORTS*3-1:0]           m_axi_awprot,
    output wire [M_PORTS*2-1:0]           m_axi_awlock,
    input  wire [M_PORTS-1:0]             m_axi_awready,
    output wire [M_PORTS*DATA_WIDTH-1:0]  m_axi_wdata,
    output wire [M_PORTS*STRB_WIDTH-1:0]  m_axi_wstrb,
    output wire [M_PORTS-1:0]             m_axi_wvalid,
    output wire [M_PORTS-1:0]             m_axi_wlast,
    output wire [M_PORTS*USER_WIDTH-1:0]  m_axi_wuser,
    output wire [M_PORTS*ID_WIDTH-1:0]    m_axi_wid,
    input  wire [M_PORTS-1:0]             m_axi_wready,
    input  wire [M_PORTS*2-1:0]           m_axi_bresp,
    input  wire [M_PORTS-1:0]             m_axi_bvalid,
    input  wire [M_PORTS*ID_WIDTH-1:0]    m_axi_bid,
    input  wire [M_PORTS*USER_WIDTH-1:0]  m_axi_buser,
    output reg  [M_PORTS-1:0]             m_axi_bready,
    output reg  [M_PORTS-1:0]             m_axi_arvalid,
    output wire [M_PORTS*ID_WIDTH-1:0]    m_axi_arid,
    output wire [M_PORTS*2-1:0]           m_axi_arburst,
    output wire [M_PORTS*8-1:0]           m_axi_arlen,
    output wire [M_PORTS*3-1:0]           m_axi_arsize,
    output wire [M_PORTS*4-1:0]           m_axi_arcache,
    output wire [M_PORTS*4-1:0]           m_axi_arqos,
    output wire [M_PORTS*4-1:0]           m_axi_arregion,
    output wire [M_PORTS*USER_WIDTH-1:0]  m_axi_aruser,
    output wire [M_PORTS*ADDR_WIDTH-1:0]  m_axi_araddr,
    output wire [M_PORTS*3-1:0]           m_axi_arprot,
    output wire [M_PORTS*2-1:0]           m_axi_arlock,
    input  wire [M_PORTS-1:0]             m_axi_arready,
    input  wire [M_PORTS*ID_WIDTH-1:0]    m_axi_rid,
    input  wire [M_PORTS*DATA_WIDTH-1:0]  m_axi_rdata,
    input  wire [M_PORTS*2-1:0]           m_axi_rresp,
    input  wire [M_PORTS-1:0]             m_axi_rvalid,
    input  wire [M_PORTS-1:0]             m_axi_rlast,
    input  wire [M_PORTS*USER_WIDTH-1:0]  m_axi_ruser,
    output wire [M_PORTS-1:0]             m_axi_rready
);
`include "axi_interconnect.vh"
parameter S_PORTS_WIDTH   = clog2(S_PORTS);
parameter M_PORTS_WIDTH   = clog2(M_PORTS);
parameter M_BASE_ADDR_INT = M_BASE_ADDR ? M_BASE_ADDR : calcBaseAddrs(0);
parameter IDLE        = 0,
          PORT_GRANT  = 1,
          ADDR_DECODE = 2,
          WR_FORWARD  = 3,
          WR_RESPONSE = 4,
          RD_REQUEST  = 5,
          RD_RETURN   = 6,
          DRP_REQUEST = 7,
          DRP_WAIT    = 8,
          END_WAIT    = 9;
//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
f0DVmU/kdU862C3ryhjQlDsM4c/0bG91GM/Tt0YfOziNIhVBbdZsoYW2RTSSEC81
yNXUBt7tFmZq4YDopiOye7MWsFmf8WWRQEL3slo6DkYqzPlqCgnjys82AVws5Cco
WGW89TXAcQAYHJy7oG8Ae9oSMdLa3PIQNp7mSA6rz4RhAKHQyvxQU3wr0zXDmYKl
CeyI1ZIu155HAUZL2bXguauGtJWtwaTXIrQO4i5/hXied5l3pm8lCdXsKbM1Enxx
V3E/sk/RBAVETx2fmYxracwCdN363LHRvYHyP4b2qkmUndhj47mK2s4d6wc/G0IJ
HQRhooSUf5bQscVy4yyOxw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 24464 )
`pragma protect data_block
[encoded data, 33085 characters]
PzVEZruTbQ4jUKjpfHxf9WBgIVrEYTPTBjPjxaZbhfA=
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
gQ+VauIuH+g40FNOpVzoPSXPaSSXzZWh6rE+e4zt/Higof5lTVqndEO2y+vyS/HT
Uz3/xsHmLa5/hfJOzrQ2WAbWJcFOc0pzmbDqYnUgEw1W4IUS1qcjifpXTLdxvwfy
rSWd00QRecQN7v+pyLFb6xf5TELzzsB2PAr6/xlRVs03sGcC8jpFMP1gppLRrh+C
xnDjMIBVdGmu01tJ1gcEY/913addbws7HLgMcMDLft0U/4zTbjE/rrDoC7+eO+3k
z9ZPUNkRvEPxurfsVZfIuglJuZJSqyaB+Khmc5Q1nMDb9IswcttQUM3RtjEksR13
Y4OcKLh/ejWsVorB6JLJeA==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1312 )
`pragma protect data_block
fo0JdXfIQsWgrENhFGo0RRW9s/IV4eGBK5upzSxFjRkxTj+wCit1QKkd15jJgDu4
P06Rnw+P2/Cu/tkXRjH7RGfSCa1EZ08cwLiSykEmyb+qQo8wTkOBh8KIag5m0P1t
XTuNeK4lZP50EUwL/4wSSMPuRtdpIAF+0PAXjdoge2gwhduxtVQZpgPO12dwk0Wo
Qyfuxrm/7iyjiETt18QCBk/PXC9JLX6a9hmtr8ujb+7IKQJFj1S7F9WxCZ1yamDs
e1D+l34aYZ5r3sBbAysWrg65oN3fAAd6bhptfeU2+BDBA8oKIcTClBK2f3pBUPul
8YV5xUU0+FGat/Rjkm2ZmKKpm9JD+w7ufesbJ2fqRCCex08yynx+EuV6lNupQQk3
UbxIK2+04eVmLtY7V87103cxyVnLFXqAQY3XaG0AWBpO2Ew1NwH6CU4yFpyUAC84
Bjztc1mHKONeueopzONq61tRDqarI0ex6IhDy04D9/zAOhMyBrEHzeR0UozXtK6Y
TB/qqFBgJmagIMQWcL03s2FYWQgGUU3PRQ4JiB57ubJG6H64M9UJUMXI7VXW245F
S0oLuBSWchTwY4/6zvioNieoCZgdkxOTUqHNuV4Zf7Epcgh3IQIZRzjBSpah3skn
kQwLdkHYbh3EzBAN0L4lF8u4LE/8SqwLPpsl91D8Qck2jzgNTYnbsG+t2tsum6n8
wYvw9H2G6SCXAimDrg2Qy66lpdDA8XQf+1Pu8sYKlEd3GH9lQyGX+l4gx3OLuOtR
fAlYbOhHnFRDXMNE9ZG/I8VKDFToJD1/SjoKUnrz4TdMcQZn3Asrj6LyXsw5CHgd
zhf60BREHK5nXIJRGkqTlV0OyCbaEe0yTgmpWapYbnUcpX4UNu07ijUdSbUBReil
f2PULQwchd1Nh+nj49FyRm0SU4twHeYIMoSC2sMtPiJkuqAZPugzpBpKZUPnKzDd
VmHxPV5Fl4haVbGLfQj4rfl6Mqpqk2DLOiPmwiXnf7CTAjpnwNQ07KsBw6SKxLAe
YS+1RZFe1JQTA73Dv+hAjOEby2uC1tz9V61abAakI4omdhXK1WBGS7AW7VIkOhsa
U2d43C1vqygKdJzTQVB3SVqswMzruIiClRGEypfl8F1L7BIegRA7y6KJYY2lQ69u
7eDX8XmDYmXDiWgXqtWRALbhHrDi8EwOCp5Tts6KK1q+HZNB6UjiGUrGZ2/EhU4H
rNhfbS8YD9wTQtEs/QCi40wIeLIYjIf429BBIRU8k3na6ZwzGLdfxJnqsRLJ6E7X
aCiJk8iag4Wfv0HsAb9J8vDUKzzLHS5OYlHmEss6CTswBAYs7u8/UF9rlfvXy8Mb
z5tfh7xCXqOQpY1gF85w0agvdFKLhhUzfB2Y/XiH+P9zw8608Q4B2irkUuj0fbhU
/VGCOg52ghhNNkaio6JDtzCj/4nMf3QJwdYnJNTiSWLmN/D4rgU8FE7RObm2foEA
5qemSiCt9nYnRGtaRQ0jFh1zieourorN3TI49Lfh/b++M/Hq8OUZh7Uxs5ni4scB
RqEGxATE+29gCCCJ1S3HVi7fcit9xh2mupZnT+m3qHM+Jt01sv59AUJ/UFx/cNYz
qo1oB/NkzOstxVDMlcp8bOO+elF1X4n4wKeC0g/eMM8C+ffQiVT7Rqh2mYLgXQA7
BhBS+E0RB6UhkxYPnRFEgtk0VLL54VPEVDTINYlLs+L3ZsWwYJs39Gen6vvvepYy
bujDTnnouQqtvD9ok3pkbA==
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
TpRHXtmr81JyoWaAtQOsoLu44jF5UvFDPdO5/CllOd3kdY7PwU2fkKx7bS6RlGe6
282Wvc58pPBGh6uImNRfZkaAKTaspN+giuR1GHAo4nfIKi92dgY2DTW5JbEU67ml
1IGNiK4su606fm7n90PZ69MZadoZPNpUxZxzYbSs+I39eZWsgU+rtoUE2d35qjdW
UyorSD+O2F5Wv51CWlcWJyscNK886BFGFi72CtEY8IdYcolZ7hcONOhQT5jbhGWK
UFFTqjnMO6iVrEodujVvUgcUtFQSTl5/oHSkmacP7CSADA82+06uIHf+rByqHGTp
JNgtSAVN844IRP39n4T5EA==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1200 )
`pragma protect data_block
dW2N/rFxim9wkWiMqoV2KfFOb7ryaosiEjsKQ5d9XAY99bfh9dHXfxBwbIc/m/4e
C1jjMt+51lGF8ncrYuentPA6MwNEfk27Jwvqv9/Trdq+kOdiWuYmhbZxfJC2L3WJ
BzjhoC/o2ZNSFpgmDKLxln0/pf6iM8sUIldzujq1RDEv/fZvcQ9IXZ0c0cgbXEWf
SfOaD5E2qBGsljqkzqzIKjaiTPnGPsKJ6cZ41jLGbcm+AcbSk6th9Vdeim0hCA9t
HjX+E+Tq77j/ivdd5OuzAehdPAg3IiMJTQxdTNsI3km5GzvomnmxK+pG8L9aCaAh
o+hCsSXZD2QyVCRFZjVT4s0ltvRto5PgSDzzqm1N69eUDE/spFnroMx1TQCLbjBT
zS0w4mCeLkzFlxc0DJduqQlnRMlA8AnBFujD/Q2OAdVMSHQC7YscXbPzF31GPlqx
Eg2t/VyotaMLOGG0wG7ax43UokgdGbSuphzh14sCh3ZSbPueJQLw2MQwK5M2gcvg
/OCrpP6ZQDt10hFz8i/uLrgNIWA93ZzqujdUnYXBBCwUzRJEyHSLnlXX6Ko3rzE5
ct8FuQPGV8vF+t6COL2nQ0qaq+23R5E5PuFtEMyRrDT+p8iXZasw8RECO0NyVnEE
YuX0T1i6imJS88oOkLq+ywGLgMFC+4O26DIlpPh4+UJ/fnt/pVOADhugk3UeF+QA
ZDR1sgxihCZe9rP7QzVpjm2tDiaPt+fklsKWPprWH2eAiuNaia9mSSHNYGF2x2lD
9h3FKeV/2LSUG5mOvvl3sgKhV2fY0MuldurIH+utuZSPbknY3sebf3BKCntClVOm
6zvNgcnFtvD2+A79A8sltui4gm5GYPS2b0YDfju51vT0iTsCH30p3LWNEG/zEtf2
48bHsr15Z/CgHdw169NsY8B3V8RHxaJP+T6zbPLBjVmRFbuTftozxf/dv+m7Rgl2
3kmwmDxauFLyklSGjQ352H678ASYS37eMG1wvn3akQjYEAsrQTdi1sxmk6SACmSb
Ko7v8gOZpn886AO3O4V3iIggxtfGIfRMtOXcoEIX6dRl5GdFkcASHigHwoV56yRO
tlfJEHrrKLKbmqhjLMjDz5jTptQZfwCjZGzki/PYImxPv0ay8+PTa/qXEaJEMsWZ
vWEGZGSO9zphfmPXEJI+qF22X0dYlKGn/U8rzBEsdcxIXyGWQwBJvbo+GhnPURiQ
i1MJHwfOEDztC3XemmsQeaMuSDWZFrnOKXuYkOBj7tD8ir7vJOor8isvwQUz9LGK
g5Vx+0HdaBgE32QEZ/NjYA1V6bM0iUHz9e9qzEVqN/kRww8HFXA6SnpD5lz6hyxy
jFVRtphwYQWmSzwLvFWa2AYQuI4xjU7tJKOCZRqxjD4hiIkjDK6/K/01Gk5QL/3K
12xoSmqSIZRHwxFGBoHiuBmy+wBhSdqqIOdJ/OsoBT+1OwzQ24l0CRjfAk+zBdVi
7A89GoA5JGSeX8OCJopZvuJ/kEWBUL+l+AU3S9Z4l0uVYybFXE7WXuTNCWRjCQFQ
DmofPA/+XPmyr1MT/3DpFQgnMN00C/jJ1eRmmSntrjCcYaPS0vX117igGa1YWfcD
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
TBCX5/gAT5S6xdVBuY05hYDsXmHLnm/0Yl4d4ayUlKrDe3IUWB3JcRtZJEwtIwhQ
wqO6qIYs21XvVt74eCxdt1SZXHRXXJiT196fD9q5vFrJxAQqeTDvH51bmshhKW+i
DwXpMTwZlLgBsT2BEP5C0RiiICy9chJTycHB7vHEh6lTXT6S/2H7bweTMlFCh6s6
n5aHgBbfjk9BYIUSTuEvOxw9Yki0T44zjqGmjZ3qxkhk5Rae8iPLqCnjRTjNfqOE
zQtaoVQW+8NbATVUmZC4WlgxF/J03hq0TLeqLYfcuWR0uH9vLAWsUzHqlGMZvUSV
23zwmB8p0BqUeaj1cllyzw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1984 )
`pragma protect data_block
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
9Jse9KsUSQdI7bnqvPdYIQ==
`pragma protect end_protected

//pragma protect end


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2021.1"
`pragma protect key_keyowner = "Efinix Inc." , key_keyname = "EFX_K01"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
eiP/26NloMbfJbEe1aU/cN+AkTVidxKZaNv824TVZXkpjf5L1zEVLf4buBzXwSr1
MiO1FaB1qgL+ZgKHLwNzc4IiIP0d7qYOaGR46jDr8/k9N2BVxXC3V0wJJ6yhDom9
O7B9d2Lcm+b0UifdEaFcX3luTwZzXAQW83Bggnm4eVP275Vqog3REHo5wgsstEU3
AG6o+oVDnNjZTPDPyJ4uHq9bjFFyvY3ga+lOo2iVymecnhCiRtjy3AFtvWBJW0ek
uhj8QvNYf04TXkRXdhdRfq/HDLr3M6Qa7/Xn6vGE+drFyRTL1nmH9wkjBBbD3swn
58tiwvvx3ajgMOCJeXfrXQ==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1104 )
`pragma protect data_block
z83CFN/6+XAqqlsaR10y0/0TRdqihm7Mln1SErDagYzHq/tf3472iVn71ufDnRwX
XjpfuAMiYkGYL+YySToA+S247ZqaWHze8oceixrYgRvhox5tY82fxq9Fl8kghDLv
SjC2MS3eD6cYQeQLFqzD1Mn0WKOQZFVCku3VAWFB2lduR5mhayfY/Fa3R/W72ABn
Z0d6Zn4ZBsgSyb/M70GpfeksPL4x3rnLEOyMOaWSU6+bpfwlHv6gwzh9HPzLZxVy
08g2U6/uxm0PBfE3o/LncY5k29GaWHkcOHv6VhXh/m8K01MJZqFeBphDIArYoxxq
PWDxAO8AUxxtI14Tgpa2V285dFMvK+4KnQioTwi0kMw0x+o+AprykzkXPkE/VVzK
KXd3WO23uskN1uRWHMVa+YBeVjuyFSDLn3GxfHH9tkFDow1kssYW0TqHWs0aqHah
qnNS7hoeJjqPZiowmyQrmDxNCJSTzH8quhzu6sXOHqjuy3hV/M2EY8gngXNAKKsb
WbOvs5QeFheEcLGYrod/Zfv9aZk0e3y0m11vKOyZVQVGFJQzc1uQ0fLjWrpSt7yG
qya4/JgJ8aoha2vBdN7gKSQ0jQBRSMhhOkv1iunq1iT+1ZETzOdrs32w7jLu65tq
rkZk2Z9PlyyFm4XlIu3ljYIH3Z1F+BdPGXiUKHiLhEHanApDED/zljh7BDGApCKl
t1zRJJjZMckJfWQclrLgdXSejbEhZFqHfgYNQe4ywo4o/SbWaqGvPgahhDBBVxZV
rvCFFNip8ka1YAIM4x0DqYw1pSFzn0sUmEm44Jl+Eo4D5chLPEJnYyAjsKm0nIFa
We3J6DKurh1q/PmPYqN51Vno2A5tlFLR8v6SH4m4qu3V3skZsRF0vR6BGx84VdVj
bN8BlLOwDEGmTO8UZpg5knVPN5bAfvf/kXvbSbr8KPR5NBZRqz3SXFeMxZYBPfbj
GI8S5ZZZeq5AvybyDwwt8BHWypNkKlsr+UxyAt+phMEA8F/U9gAt5r50llYjO4qu
5tLeotWmT7oFHBktGytHHC+gKwtWEMsJLm7+744JbDfnMvdHRr+AQgpYts9jdNY6
guxuay2WoNBpjmE51Kq8M1xXeO6beJN3h1JAlESUfz7eFKkE8Vkr5Jg6ccn0KUsS
ZZmNyAaAta//k2mRELcX5bJmUCCHy7lAgQBjtv7XZBfyULC/eXy3RUO/ar8/VQKj
wwOLkv6PJN1DfDlpZ+oswIslScrN1ijU4t2buGKO8zI+cQCpYuC9FBN8V8chHOZw
//0ODvW7AEl6D/OUt8ZC6gUirNCSFRQjXz5x+MOrJPH54wUb0gmtQRPSsbnbcm8g
r+J90t6Fz+FSggPmyNbgv8Z+eWprb5Z3QuqJaQlTYxXGJYLXXwcTjZP3Sf58Vd4Q
9PV9zVG1BxTwV5hFTLJrTkIFGs6wyF+96e+3TnhJKuzZ4Qgf0XJPp9crAdiNtxfx
`pragma protect end_protected

//pragma protect end

`undef IP_UUID
`undef IP_NAME_CONCAT
`undef IP_MODULE_NAME
