// =============================================================================
// Generated by efx_ipmgr
// Version: 2025.2.288.2.10
// IP Version: 7.1
// =============================================================================

////////////////////////////////////////////////////////////////////////////////
// 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 _4c19f37180ff465ca20760e199a0613f
`define IP_NAME_CONCAT(a,b) a``b
`define IP_MODULE_NAME(name) `IP_NAME_CONCAT(name,`IP_UUID)
module gTSE
(
    input mac_reset,
    input proto_reset,
    output rx_mac_aclk,
    input tx_mac_aclk,
    output [2:0] eth_speed,
    input rx_axis_clk,
    output rx_axis_mac_tuser,
    output rx_axis_mac_tlast,
    output rx_axis_mac_tvalid,
    input rx_axis_mac_tready,
    input tx_axis_clk,
    input tx_axis_mac_tvalid,
    input tx_axis_mac_tlast,
    input tx_axis_mac_tuser,
    output tx_axis_mac_tready,
    output [3:0] rgmii_txd_HI,
    output [3:0] rgmii_txd_LO,
    output rgmii_tx_ctl_HI,
    output rgmii_tx_ctl_LO,
    output rgmii_txc_HI,
    output rgmii_txc_LO,
    input [3:0] rgmii_rxd_HI,
    input [3:0] rgmii_rxd_LO,
    input rgmii_rx_ctl_HI,
    input rgmii_rx_ctl_LO,
    input rgmii_rxc,
    input s_axi_aclk,
    output [7:0] rx_axis_mac_tdata,
    input [7:0] tx_axis_mac_tdata,
    input [0:0] tx_axis_mac_tstrb,
    output [0:0] rx_axis_mac_tstrb,
    output MdoEn,
    output Mdo,
    input Mdi,
    output Mdc,
    input [9:0] s_axi_araddr,
    output s_axi_arready,
    input s_axi_arvalid,
    input [9:0] s_axi_awaddr,
    output s_axi_awready,
    input s_axi_awvalid,
    input s_axi_bready,
    output [1:0] s_axi_bresp,
    output s_axi_bvalid,
    output [31:0] s_axi_rdata,
    input s_axi_rready,
    output [1:0] s_axi_rresp,
    output s_axi_rvalid,
    input [31:0] s_axi_wdata,
    output s_axi_wready,
    input s_axi_wvalid
);
`IP_MODULE_NAME(efx_mac1gbe)
#(
    .VERSION (16),
    .TXFIFO_EN (1'b1),
    .RXFIFO_EN (1'b1),
    .TXFIFO_DTH (4096),
    .RXFIFO_DTH (4096),
    .PHY_INTF_MODE (0),
    .AXIS_DW (8),
    .RGMII_RXC_EDGE (1'b1),
    .RGMII_TXC_DLY (1'b1),
    .INTER_PACKET_GAP (6'd12),
    .MTU_FRAME_LENGTH (16'd1518),
    .MAC_SOURCE_ADDRESS (48'd0),
    .ENABLE_BROADCAST_FILTERING (1'b1),
    .LOOPBACK_EN (1'b1),
    .APBIF (1'b0),
    .FAMILY ("TITANIUM")
)
u_efx_mac1gbe
(
    .mac_reset ( mac_reset ),
    .proto_reset ( proto_reset ),
    .rx_mac_aclk ( rx_mac_aclk ),
    .tx_mac_aclk ( tx_mac_aclk ),
    .eth_speed ( eth_speed ),
    .rx_axis_clk ( rx_axis_clk ),
    .rx_axis_mac_tuser ( rx_axis_mac_tuser ),
    .rx_axis_mac_tlast ( rx_axis_mac_tlast ),
    .rx_axis_mac_tvalid ( rx_axis_mac_tvalid ),
    .rx_axis_mac_tready ( rx_axis_mac_tready ),
    .tx_axis_clk ( tx_axis_clk ),
    .tx_axis_mac_tvalid ( tx_axis_mac_tvalid ),
    .tx_axis_mac_tlast ( tx_axis_mac_tlast ),
    .tx_axis_mac_tuser ( tx_axis_mac_tuser ),
    .tx_axis_mac_tready ( tx_axis_mac_tready ),
    .rgmii_txd_HI ( rgmii_txd_HI ),
    .rgmii_txd_LO ( rgmii_txd_LO ),
    .rgmii_tx_ctl_HI ( rgmii_tx_ctl_HI ),
    .rgmii_tx_ctl_LO ( rgmii_tx_ctl_LO ),
    .rgmii_txc_HI ( rgmii_txc_HI ),
    .rgmii_txc_LO ( rgmii_txc_LO ),
    .rgmii_rxd_HI ( rgmii_rxd_HI ),
    .rgmii_rxd_LO ( rgmii_rxd_LO ),
    .rgmii_rx_ctl_HI ( rgmii_rx_ctl_HI ),
    .rgmii_rx_ctl_LO ( rgmii_rx_ctl_LO ),
    .rgmii_rxc ( rgmii_rxc ),
    .s_axi_aclk ( s_axi_aclk ),
    .rx_axis_mac_tdata ( rx_axis_mac_tdata ),
    .tx_axis_mac_tdata ( tx_axis_mac_tdata ),
    .tx_axis_mac_tstrb ( tx_axis_mac_tstrb ),
    .rx_axis_mac_tstrb ( rx_axis_mac_tstrb ),
    .MdoEn ( MdoEn ),
    .Mdo ( Mdo ),
    .Mdi ( Mdi ),
    .Mdc ( Mdc ),
    .s_axi_araddr ( s_axi_araddr ),
    .s_axi_arready ( s_axi_arready ),
    .s_axi_arvalid ( s_axi_arvalid ),
    .s_axi_awaddr ( s_axi_awaddr ),
    .s_axi_awready ( s_axi_awready ),
    .s_axi_awvalid ( s_axi_awvalid ),
    .s_axi_bready ( s_axi_bready ),
    .s_axi_bresp ( s_axi_bresp ),
    .s_axi_bvalid ( s_axi_bvalid ),
    .s_axi_rdata ( s_axi_rdata ),
    .s_axi_rready ( s_axi_rready ),
    .s_axi_rresp ( s_axi_rresp ),
    .s_axi_rvalid ( s_axi_rvalid ),
    .s_axi_wdata ( s_axi_wdata ),
    .s_axi_wready ( s_axi_wready ),
    .s_axi_wvalid ( s_axi_wvalid )
);
endmodule

/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   simple_dual_port_ram_fifo.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      EFX FIFO
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
//
// *******************************

module `IP_MODULE_NAME(efx_fifo_top) # (
    parameter FAMILY             = "TRION",       // New Param
    parameter SYNC_CLK           = 0,
    parameter BYPASS_RESET_SYNC  = 0,             // New Param
    parameter SYNC_STAGE         = 2,             // New Param
    parameter MODE               = "STANDARD",
    parameter DEPTH              = 512,           // Reverted (Equivalent to WDATA_DEPTH) 
    parameter DATA_WIDTH         = 32,            // Reverted (Equivalent to WDATA_WIDTH)
    parameter PIPELINE_REG       = 1,             // Reverted (By default is ON)
    parameter OPTIONAL_FLAGS     = 1,             // Reverted
    parameter OUTPUT_REG         = 0,
    parameter PROGRAMMABLE_FULL  = "STATIC_DUAL", // Set to "NONE" if not require this feature
    parameter PROG_FULL_ASSERT   = 27,
    parameter PROG_FULL_NEGATE   = 23,
    parameter PROGRAMMABLE_EMPTY = "STATIC_DUAL", // Set to "NONE" if not require this feature
    parameter PROG_EMPTY_ASSERT  = 5,
    parameter PROG_EMPTY_NEGATE  = 7,
    parameter ALMOST_FLAG        = OPTIONAL_FLAGS,
    parameter HANDSHAKE_FLAG     = OPTIONAL_FLAGS,
    parameter ASYM_WIDTH_RATIO   = 4,
    parameter WADDR_WIDTH        = depth2width(DEPTH),
    parameter RDATA_WIDTH        = rdwidthcompute(ASYM_WIDTH_RATIO,DATA_WIDTH),
    parameter RD_DEPTH           = rddepthcompute(DEPTH,DATA_WIDTH,RDATA_WIDTH),
    parameter RADDR_WIDTH        = depth2width(RD_DEPTH),
    parameter ENDIANESS		      = 0,
    parameter OVERFLOW_PROTECT   = 1,
    parameter UNDERFLOW_PROTECT  = 1,
    parameter RAM_STYLE          = "block_ram"

)(
    input  wire                   a_rst_i,
    input  wire                   a_wr_rst_i,
    input  wire                   a_rd_rst_i,
    input  wire                   clk_i,
    input  wire                   wr_clk_i,
    input  wire                   rd_clk_i,
    input  wire                   wr_en_i,
    input  wire                   rd_en_i,
    input  wire [DATA_WIDTH-1:0]  wdata,
    output wire                   almost_full_o,
    output wire                   prog_full_o,
    output wire                   full_o,
    output wire                   overflow_o,
    output wire                   wr_ack_o,
    output wire [WADDR_WIDTH :0]  datacount_o,
    output wire [WADDR_WIDTH :0]  wr_datacount_o,
    output wire                   empty_o,
    output wire                   almost_empty_o,
    output wire                   prog_empty_o,
    output wire                   underflow_o,
    output wire                   rd_valid_o,
    output wire [RDATA_WIDTH-1:0] rdata,
    output wire [RADDR_WIDTH :0]  rd_datacount_o,
    output wire                   rst_busy
); 

localparam WR_DEPTH      = DEPTH;
localparam WDATA_WIDTH   = DATA_WIDTH;
localparam RAM_MUX_RATIO = (RDATA_WIDTH <= WDATA_WIDTH/32) ? 32 :
                           (RDATA_WIDTH <= WDATA_WIDTH/16) ? 16 :
                           (RDATA_WIDTH <= WDATA_WIDTH/8)  ? 8  :
                           (RDATA_WIDTH <= WDATA_WIDTH/4)  ? 4  :
                           (RDATA_WIDTH <= WDATA_WIDTH/2)  ? 2  :
                           (RDATA_WIDTH <= WDATA_WIDTH)    ? 1  :
                           (RDATA_WIDTH <= WDATA_WIDTH*2)  ? 2  :
                           (RDATA_WIDTH <= WDATA_WIDTH*4)  ? 4  :
                           (RDATA_WIDTH <= WDATA_WIDTH*8)  ? 8  :
                           (RDATA_WIDTH <= WDATA_WIDTH*16) ? 16 : 32;           

wire                   wr_rst_int;
wire                   rd_rst_int;
wire                   wr_en_int;
wire                   rd_en_int;
wire [WADDR_WIDTH-1:0] waddr;
wire [RADDR_WIDTH-1:0] raddr;
wire                   wr_clk_int;
wire                   rd_clk_int;
wire [WADDR_WIDTH :0]  wr_datacount_int;
wire [RADDR_WIDTH :0]  rd_datacount_int;

generate
    if (ASYM_WIDTH_RATIO == 4) begin
        if (SYNC_CLK) begin
            assign wr_clk_int     = clk_i;    
            assign rd_clk_int     = clk_i;
            assign datacount_o    = wr_datacount_int;
            assign wr_datacount_o = {(WADDR_WIDTH+1){1'b0}};
            assign rd_datacount_o = {(RADDR_WIDTH+1){1'b0}};
        end
        else begin
            assign wr_clk_int     = wr_clk_i;    
            assign rd_clk_int     = rd_clk_i;
            assign datacount_o    = {(WADDR_WIDTH+1){1'b0}};
            assign wr_datacount_o = wr_datacount_int;
            assign rd_datacount_o = rd_datacount_int;
        end
    end
    else begin
        assign datacount_o    = {(WADDR_WIDTH+1){1'b0}};
        assign wr_datacount_o = wr_datacount_int;
        assign rd_datacount_o = rd_datacount_int;
        if (SYNC_CLK) begin
            assign wr_clk_int     = clk_i;    
            assign rd_clk_int     = clk_i;
        end
        else begin
            assign wr_clk_int     = wr_clk_i;    
            assign rd_clk_int     = rd_clk_i;
        end
    end    

    if (!SYNC_CLK) begin
        //(* async_reg = "true" *) reg [1:0] wr_rst;
        //(* async_reg = "true" *) reg [1:0] rd_rst;
        //
        //always @ (posedge wr_clk_int or posedge a_rst_i) begin
        //    if (a_rst_i) 
        //        wr_rst <= 2'b11;
        //    else 
        //        wr_rst <= {wr_rst[0],1'b0};            
        //end
        //
        //always @ (posedge rd_clk_int or posedge a_rst_i) begin
        //    if (a_rst_i) 
        //        rd_rst <= 2'b11;
        //    else 
        //        rd_rst <= {rd_rst[0],1'b0};            
        //end
        

        if (BYPASS_RESET_SYNC) begin
            assign wr_rst_int = a_wr_rst_i;
            assign rd_rst_int = a_rd_rst_i; 
            assign rst_busy   = 1'b0;
        end 
        else begin
            `IP_MODULE_NAME(efx_resetsync) #(
               .ACTIVE_LOW (0)
            ) efx_resetsync_wr_rst (
               .clk   (wr_clk_int),
               .reset (a_rst_i),
               .d_o   (wr_rst_int)
            );

            `IP_MODULE_NAME(efx_resetsync) #(
               .ACTIVE_LOW (0)
            ) efx_resetsync_rd_rst (
               .clk   (rd_clk_int),
               .reset (a_rst_i),
               .d_o   (rd_rst_int)
            );
            assign rst_busy   = wr_rst_int | rd_rst_int;
        end

    end
    else begin
        //(* async_reg = "true" *) reg [1:0] a_rst;
        //
        //always @ (posedge clk_i or posedge a_rst_i) begin
        //    if (a_rst_i) 
        //        a_rst <= 2'b11;
        //    else 
        //        a_rst <= {a_rst[0],1'b0};            
        //end
        wire   a_rst;

        `IP_MODULE_NAME(efx_resetsync) #(
           .ACTIVE_LOW (0)
        ) efx_resetsync_a_rst (
           .clk   (clk_i),
           .reset (a_rst_i),
           .d_o   (a_rst)
        );

        if (BYPASS_RESET_SYNC) begin
            assign wr_rst_int = a_rst_i;
            assign rd_rst_int = a_rst_i;
            assign rst_busy   = 1'b0;
        end
        else begin
            assign wr_rst_int = a_rst;
            assign rd_rst_int = a_rst;   
            assign rst_busy   = wr_rst_int | rd_rst_int;
        end
    end 
endgenerate

`IP_MODULE_NAME(efx_fifo_ram) # (
    .FAMILY        (FAMILY),
    .WR_DEPTH      (WR_DEPTH),
    .RD_DEPTH      (RD_DEPTH),
    .WDATA_WIDTH   (WDATA_WIDTH),
    .RDATA_WIDTH   (RDATA_WIDTH),
    .WADDR_WIDTH   (WADDR_WIDTH),
    .RADDR_WIDTH   (RADDR_WIDTH),
    .OUTPUT_REG    (OUTPUT_REG),
    .RAM_MUX_RATIO (RAM_MUX_RATIO),
    .ENDIANESS	    (ENDIANESS),
    .RAM_STYLE     (RAM_STYLE)
) xefx_fifo_ram (
    .wdata (wdata), 
    .waddr (waddr),
    .raddr (raddr), 
    .we    (wr_en_int), 
    .re    (rd_en_int),
    .wclk  (wr_clk_int),
    .rclk  (rd_clk_int),
    .rdata (rdata)
);

`IP_MODULE_NAME(efx_fifo_ctl) # (
    .SYNC_CLK           (SYNC_CLK),
    .SYNC_STAGE         (SYNC_STAGE),
    .MODE               (MODE),
    .WR_DEPTH           (WR_DEPTH),
    .WADDR_WIDTH        (WADDR_WIDTH),
    .RADDR_WIDTH        (RADDR_WIDTH),
    .ASYM_WIDTH_RATIO   (ASYM_WIDTH_RATIO),
    .RAM_MUX_RATIO      (RAM_MUX_RATIO),
    .PIPELINE_REG       (PIPELINE_REG),
    .ALMOST_FLAG        (ALMOST_FLAG),
    .PROGRAMMABLE_FULL  (PROGRAMMABLE_FULL),
    .PROG_FULL_ASSERT   (PROG_FULL_ASSERT),
    .PROG_FULL_NEGATE   (PROG_FULL_NEGATE),
    .PROGRAMMABLE_EMPTY (PROGRAMMABLE_EMPTY),
    .PROG_EMPTY_ASSERT  (PROG_EMPTY_ASSERT),
    .PROG_EMPTY_NEGATE  (PROG_EMPTY_NEGATE),
    .OUTPUT_REG         (OUTPUT_REG),
    .HANDSHAKE_FLAG     (HANDSHAKE_FLAG),
    .OVERFLOW_PROTECT   (OVERFLOW_PROTECT),
    .UNDERFLOW_PROTECT  (UNDERFLOW_PROTECT)
) xefx_fifo_ctl (
    .wr_rst          (wr_rst_int),
    .rd_rst          (rd_rst_int),
    .wclk            (wr_clk_int),
    .rclk            (rd_clk_int),
    .we              (wr_en_i),
    .re              (rd_en_i),
    .wr_full         (full_o),
    .wr_ack          (wr_ack_o),
    .rd_empty        (empty_o),
    .wr_almost_full  (almost_full_o),
    .rd_almost_empty (almost_empty_o),
    .wr_prog_full    (prog_full_o),
    .rd_prog_empty   (prog_empty_o),
    .wr_en_int       (wr_en_int),
    .rd_en_int       (rd_en_int),
    .waddr           (waddr),
    .raddr           (raddr),
    .wr_datacount    (wr_datacount_int),
    .rd_datacount    (rd_datacount_int),
    .rd_vld          (rd_valid_o),
    .wr_overflow     (overflow_o),
    .rd_underflow    (underflow_o)
);

function integer depth2width;
input [31:0] depth;
begin : fnDepth2Width
    if (depth > 1) begin
        depth = depth - 1;
        for (depth2width=0; depth>0; depth2width = depth2width + 1)
            depth = depth>>1;
        end
    else
       depth2width = 0;
end
endfunction 

function integer width2depth;
input [31:0] width;
begin : fnWidth2Depth
    width2depth = width**2;
end
endfunction

function integer rdwidthcompute;
input [31:0] asym_option;
input [31:0] wr_width;
begin : RdWidthCompute
    rdwidthcompute = (asym_option==0)? wr_width/16 :
                     (asym_option==1)? wr_width/8  :
                     (asym_option==2)? wr_width/4  :
                     (asym_option==3)? wr_width/2  :
                     (asym_option==4)? wr_width/1  :
                     (asym_option==5)? wr_width*2  :
                     (asym_option==6)? wr_width*4  :
                     (asym_option==7)? wr_width*8  :
                     (asym_option==8)? wr_width*16 : wr_width/1;
end
endfunction

function integer rddepthcompute;
input [31:0] wr_depth;
input [31:0] wr_width;
input [31:0] rd_width;
begin : RdDepthCompute
    rddepthcompute = (wr_depth * wr_width) / rd_width;
end
endfunction

endmodule


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   simple_dual_port_ram_fifo.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      EFX FIFO
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
//
// *******************************

module `IP_MODULE_NAME(efx_fifo_ram) #(
    parameter FAMILY        = "TRION",
    parameter WR_DEPTH      = 512,
    parameter RD_DEPTH      = 512,
    parameter WDATA_WIDTH   = 8,
    parameter RDATA_WIDTH   = 8,
    parameter WADDR_WIDTH   = 9,
    parameter RADDR_WIDTH   = 9,
    parameter OUTPUT_REG    = 1,
    parameter RAM_MUX_RATIO = 4,
    parameter ENDIANESS 	 = 0, //0: Big endian (default)   1: Little endian 
    parameter RAM_STYLE     = "block_ram"
) (
    input  wire                     wclk,
    input  wire                     rclk,
    input  wire                     we,
    input  wire                     re,
    input  wire [(WDATA_WIDTH-1):0] wdata,
    input  wire [(WADDR_WIDTH-1):0] waddr,
    input  wire [(RADDR_WIDTH-1):0] raddr,
    output wire [(RDATA_WIDTH-1):0] rdata
);

localparam MEM_DEPTH         = (WR_DEPTH > RD_DEPTH) ? WR_DEPTH : RD_DEPTH;
localparam MEM_DATA_WIDTH    = (WDATA_WIDTH > RDATA_WIDTH) ? RDATA_WIDTH : WDATA_WIDTH;   
localparam LSB_WIDTH         = (WADDR_WIDTH > RADDR_WIDTH) ? (WADDR_WIDTH - RADDR_WIDTH) : (RADDR_WIDTH - WADDR_WIDTH);
localparam RDATA_WDATA_RATIO = (RDATA_WIDTH <= WDATA_WIDTH/32) ? "ONE_THIRTYTWO" :
                               (RDATA_WIDTH <= WDATA_WIDTH/16) ? "ONE_SIXTEENTH" :
                               (RDATA_WIDTH <= WDATA_WIDTH/8)  ? "ONE_EIGHTH"    :
                               (RDATA_WIDTH <= WDATA_WIDTH/4)  ? "ONE_FOURTH"    :
                               (RDATA_WIDTH <= WDATA_WIDTH/2)  ? "ONE_HALF"      :
                               (RDATA_WIDTH <= WDATA_WIDTH)    ? "ONE"           :
                               (RDATA_WIDTH <= WDATA_WIDTH*2)  ? "TWO_TIMES"     :
                               (RDATA_WIDTH <= WDATA_WIDTH*4)  ? "FOUR_TIMES"    :
                               (RDATA_WIDTH <= WDATA_WIDTH*4)  ? "EIGHT_TIMES"   :
                               (RDATA_WIDTH <= WDATA_WIDTH*4)  ? "SIXTEEN_TIMES" : "THIRTYTWO_TIMES";

(* syn_ramstyle = RAM_STYLE *) reg [MEM_DATA_WIDTH-1:0] ram[MEM_DEPTH-1:0];
reg [RDATA_WIDTH-1:0]    r_rdata_1P;
reg [RDATA_WIDTH-1:0]    r_rdata_2P;

wire                     re_int;

generate
    if (FAMILY == "TRION") begin
        if (RDATA_WDATA_RATIO == "ONE") begin
            always @ (posedge wclk) begin
                if (we)
                    ram[waddr] <= wdata;
            end
    
            always @ (posedge rclk) begin
                if (re_int) begin
                    r_rdata_1P <= ram[raddr];
                end
                r_rdata_2P <= r_rdata_1P;
            end
        end
        
        else if (RDATA_WDATA_RATIO == "ONE_THIRTYTWO" || RDATA_WDATA_RATIO == "ONE_SIXTEENTH" || RDATA_WDATA_RATIO == "ONE_EIGHTH" || RDATA_WDATA_RATIO == "ONE_FOURTH"  || RDATA_WDATA_RATIO == "ONE_HALF" ) begin
            if (ENDIANESS == 0) begin 
            	integer i;
            	always @ (posedge wclk) begin
                	for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (we) begin
                            ram[{waddr,LSB_WIDTH'(RAM_MUX_RATIO-1-i)}] <= wdata[((WDATA_WIDTH/RAM_MUX_RATIO)*i) +: WDATA_WIDTH/RAM_MUX_RATIO];
                        end
                    end
                end
                always @ (posedge rclk) begin 
                	if (re_int) begin
                		r_rdata_1P <= ram[raddr];
                    end
                		r_rdata_2P <= r_rdata_1P;
                end
            end
            else begin //endianess == 1
            	integer i;
            	always @ (posedge wclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (we) begin
                            ram[{waddr,LSB_WIDTH'(i)}] <= wdata[((WDATA_WIDTH/RAM_MUX_RATIO)*i) +: WDATA_WIDTH/RAM_MUX_RATIO];
                        end
                    end
                end
                always @ (posedge rclk) begin 
                	if (re_int) begin
                		r_rdata_1P <= ram[raddr];
                	end
                		r_rdata_2P <= r_rdata_1P;
                end
            end
        end
        
        else if (RDATA_WDATA_RATIO == "TWO_TIMES" || RDATA_WDATA_RATIO == "FOUR_TIMES"  || RDATA_WDATA_RATIO == "EIGHT_TIMES"  || RDATA_WDATA_RATIO == "SIXTEEN_TIMES"  ||RDATA_WDATA_RATIO == "THIRTYTWO_TIMES" ) begin
            //integer i;
        	if (ENDIANESS == 0) begin
        		always @ (posedge wclk) begin
        			if (we)
        				ram[waddr] <= wdata;
        		end
        		integer i;
        		always @ (posedge rclk) begin
        			for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (re_int) begin
                    		r_rdata_1P[((RDATA_WIDTH/RAM_MUX_RATIO)*i) +: RDATA_WIDTH/RAM_MUX_RATIO] <= ram[{raddr,LSB_WIDTH'(RAM_MUX_RATIO-1-i)}];
                    	end
                        	r_rdata_2P <= r_rdata_1P;
                    end
                end 
            end
            else begin //endianess == 1
            	always @ (posedge wclk) begin
        			if (we)
        				ram[waddr] <= wdata;
        		end
        		integer i;
        		always @ (posedge rclk) begin
        			for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (re_int) begin
                    		r_rdata_1P[((RDATA_WIDTH/RAM_MUX_RATIO)*i) +: RDATA_WIDTH/RAM_MUX_RATIO] <= ram[{raddr,LSB_WIDTH'(i)}];
                    	end
                        	r_rdata_2P <= r_rdata_1P;
                    end
                end
            end
        end
        if (OUTPUT_REG) begin
            assign re_int = re;
            assign rdata  = r_rdata_2P;            
        end
        else begin
            assign re_int = re;
            assign rdata  = r_rdata_1P;
        end
    end
    else begin
        if (RDATA_WDATA_RATIO == "ONE") begin
            always @ (posedge wclk) begin
                if (we)
                    ram[waddr] <= wdata;
            end
    
            always @ (posedge rclk) begin
                if (re_int) begin
                    r_rdata_1P <= ram[raddr];
                    r_rdata_2P <= r_rdata_1P;
                end
            end
        end 
        else if (RDATA_WDATA_RATIO == "ONE_THIRTYTWO" || RDATA_WDATA_RATIO == "ONE_SIXTEENTH" || RDATA_WDATA_RATIO == "ONE_EIGHTH" || RDATA_WDATA_RATIO == "ONE_FOURTH"  || RDATA_WDATA_RATIO == "ONE_HALF" ) begin
            //integer i;
            if (ENDIANESS == 0) begin
            	integer i;
            	always @ (posedge wclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (we) begin
                            	ram[{waddr,LSB_WIDTH'(RAM_MUX_RATIO-1-i)}] <= wdata[((WDATA_WIDTH/RAM_MUX_RATIO)*i) +: WDATA_WIDTH/RAM_MUX_RATIO];
                        end
                    end
                 end
               	always @ (posedge rclk) begin 
               		if (re_int) begin
               			r_rdata_1P <= ram[raddr];
               			r_rdata_2P <= r_rdata_1P;
               		end
               	end
            end
            
            else begin //endianess == 1
            	integer i;
            	always @ (posedge wclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (we) begin
                            	ram[{waddr,LSB_WIDTH'(i)}] <= wdata[((WDATA_WIDTH/RAM_MUX_RATIO)*i) +: WDATA_WIDTH/RAM_MUX_RATIO];
                        end
                    end
                 end
               	always @ (posedge rclk) begin 
               		if (re_int) begin
               			r_rdata_1P <= ram[raddr];
               			r_rdata_2P <= r_rdata_1P;
               		end
               	end
            end
        end
        else if (RDATA_WDATA_RATIO == "TWO_TIMES" || RDATA_WDATA_RATIO == "FOUR_TIMES"  || RDATA_WDATA_RATIO == "EIGHT_TIMES"  || RDATA_WDATA_RATIO == "SIXTEEN_TIMES"  || RDATA_WDATA_RATIO == "THIRTYTWO_TIMES" ) begin
        	//integer i;
        	if (ENDIANESS == 0) begin
        		always @ (posedge wclk) begin
        			if (we)
        				ram[waddr] <= wdata;
        		end
        		integer i;
            	always @ (posedge rclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (re_int) begin
                    		r_rdata_1P[((RDATA_WIDTH/RAM_MUX_RATIO)*i) +: RDATA_WIDTH/RAM_MUX_RATIO] <= ram[{raddr,LSB_WIDTH'(RAM_MUX_RATIO-1-i)}];
                    		r_rdata_2P                                                               <= r_rdata_1P;
                    	end
                    end
                end 
            end
            
            else begin //endianess ==1
        		always @ (posedge wclk) begin
        			if (we)
        				ram[waddr] <= wdata;
        		end
        		integer i;
            	always @ (posedge rclk) begin
            		for (i=0; i<RAM_MUX_RATIO; i=i+1) begin
                    	if (re_int) begin
                    		r_rdata_1P[((RDATA_WIDTH/RAM_MUX_RATIO)*i) +: RDATA_WIDTH/RAM_MUX_RATIO] <= ram[{raddr,LSB_WIDTH'(i)}];
                    		r_rdata_2P                                                               <= r_rdata_1P;
                    	end
                    end
                end 
            end
        end
        // NIC
        //if (MODE == "STANDARD") begin     
        //    if (OUTPUT_REG) begin
        //        reg re_r;
        //        always @ (posedge rclk) begin
        //            re_r <= re;
        //        end
        //        assign re_int = re | re_r;        
        //        assign rdata  = r_rdata_2P;            
        //    end
        //    else begin
        //        assign re_int = re;
        //        assign rdata  = r_rdata_1P;
        //    end
        //end
        //else begin
        //    assign re_int = re;
        //    assign rdata  = r_rdata_1P;
        //end    
        if (OUTPUT_REG) begin
            reg re_r;
            always @ (posedge rclk) begin
                re_r <= re;
            end
            assign re_int = re | re_r;        
            assign rdata  = r_rdata_2P;            
        end
        else begin
            assign re_int = re;
            assign rdata  = r_rdata_1P;
        end    
    end
endgenerate

endmodule

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2021 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.
//
////////////////////////////////////////////////////////////////////////////////


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   gray2bin.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      Gray to Binary Encoding Convertor
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

`resetall
`timescale 1ns/1ps

module `IP_MODULE_NAME(efx_fifo_gray2bin)
#(parameter WIDTH=5)
(// outputs
 output wire [WIDTH-1:0] bin_o,
 // input
 input [WIDTH-1:0] gray_i);

//---------------------------------------------------------------------
// Recursive Module
// Description: reduction xor
generate
   if (WIDTH > 1) begin
      wire [1:0] bin_1;
      assign bin_1 = {gray_i[WIDTH-1], gray_i[WIDTH-1]^gray_i[WIDTH-2]};
      if (WIDTH == 2) begin
	 assign bin_o = bin_1;
      end
      else begin
	 assign bin_o[WIDTH-1] = bin_1[1];
	 `IP_MODULE_NAME(efx_fifo_gray2bin) #(.WIDTH(WIDTH-1)) u_gray2bin (.bin_o(bin_o[WIDTH-2:0]), .gray_i({bin_1[0], gray_i[WIDTH-3:0]}));
      end
   end
   else /* if (WIDTH == 1) */
     assign bin_o = gray_i;
endgenerate
   
endmodule 

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2020 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.
//
////////////////////////////////////////////////////////////////////////////////


////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   pipe_reg.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      Parallel Pipelining Shift Register
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

module `IP_MODULE_NAME(efx_fifo_datasync) #(
    parameter STAGE = 32,
    parameter WIDTH = 4
) (
 input  wire             clk_i,
 input  wire [WIDTH-1:0] d_i,
 output wire [WIDTH-1:0] d_o
);

(* async_reg = "true" *) reg [WIDTH-1:0] pipe_reg [STAGE-1:0];
integer i;

always @(posedge clk_i) begin
  for (i=STAGE-1; i>0; i = i - 1) begin
    pipe_reg[i] <= pipe_reg[i-1];
  end
  pipe_reg[0] <= d_i;
end
assign d_o = pipe_reg[STAGE-1];
   

endmodule

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2020 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.
//
////////////////////////////////////////////////////////////////////////////////



// synopsys translate_off
`timescale 1 ns / 1 ps													
// synopsys translate_on

module `IP_MODULE_NAME(efx_resetsync) #(
    parameter ASYNC_STAGE = 2,
    parameter ACTIVE_LOW = 1
) (
    input  wire             clk,
    input  wire             reset,
    output wire             d_o
);


generate
   if (ACTIVE_LOW == 1) begin: active_low
      `IP_MODULE_NAME(efx_asyncreg) #(
         .WIDTH      (1),
         .ACTIVE_LOW (1),
         .RST_VALUE  (0)
      ) efx_resetsync_active_low (
         .clk     (clk),
         .reset_n (reset),
         .d_i     (1'b1),
         .d_o     (d_o)
      );
   end
   else begin: active_high
      `IP_MODULE_NAME(efx_asyncreg) #(
         .WIDTH      (1),
         .ACTIVE_LOW (0),
         .RST_VALUE  (1)
      ) efx_resetsync_active_high (
         .clk     (clk),
         .reset_n (reset),
         .d_i     (1'b0),
         .d_o     (d_o)
      );
   end
endgenerate

endmodule



// synopsys translate_off
`timescale 1 ns / 1 ps													
// synopsys translate_on

module `IP_MODULE_NAME(efx_asyncreg) #(
    parameter ASYNC_STAGE = 2,
    parameter WIDTH = 4,
    parameter ACTIVE_LOW = 1, // 0 - Active high reset, 1 - Active low reset
    parameter RST_VALUE = 0,
    parameter OFF_ASSERTION = 0 // 1 = Turn off PULSE_WIDTH_CHK assertion for a particular instance 
) (
    input  wire             clk,
    input  wire             reset_n,
    input  wire [WIDTH-1:0] d_i,
    output wire [WIDTH-1:0] d_o
);










`pragma protect begin_protected
`pragma protect version = 1
`pragma protect author = "author-a" , author_info = "author-a-details"
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`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
IjzmeF2ACtI8q/MHPcSQakfCyuQSUgg747Z3U+BWZdCStFbqF/Rhg0VPl8JT+91V
o/8Ohsiw6GnpSIX69XazqGYmhEjb+W7W2ngBYentEXdSyzUYvEbr8i71cL04f1fE
El78uYgSvjFwoDyocXOVYk8JA0v7y6WnabkL02lAqASKGQK55nzfKeUVbJHKHjAY
kIT3Nf7JWK2NVVymI1Zs5QttwrNgKBSqoiPvmy4+16bTQMx4R205Bb4rT1MqSqIc
/5U5/Z1e1tZzOqoEyhfcMMKW0emdBIdByNvteK05ZATt11Uzj2M/Vn1r9KmYd0h1
uYJaS5tuGEuFInBHa7oO8g==
`pragma protect key_keyowner = "Cadence Design Systems." , key_keyname = "CDS_RSA_KEY_VER_2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
ABJo/BvEH9XbZrt+xPOQ2C7yeLcnebDlRELbHyCdXeeNkZRVZ9m0ie+1HufS/I+3
fC63lnVTenVdf9s4tm1RLd5VBkmFb37ikgaESy2aRKWsdLG6x2OyuODoMDRCjYUa
rxhnwLWh5E55yR3XVZgM2k7/NPP2cTL7iOSCjH4No38siNjs4Fapyc4FFq0TOsQq
PMqsZ5jgmM+ZT8cil0wMt5tpdEOwvchbe1GcZLIhcIFLD/Gb2XtP0Q0QkOlNzuiL
DNyobLTjDkV5si+/23Ng2E7tDq+SX+vJP4ciI63kXtsmQdn1ff2Y64ibNXJtpu/w
K3OoKmk3zFeArSsql8B4/Q==
`pragma protect key_keyowner = "Synopsys" , key_keyname = "SNPS-VCS-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 128 )
`pragma protect key_block
RAoMYYsrw2j05cvQ8NR0lCh+Ia/OGVfdwZqq0pwIkgDzO3Z7ol96oQmQzFfIQY/M
GzEOFdYJTfjnxPvhSPxT1tpq2Fgx6PbC2FMWFtN6/TrG/s01ifIWIZ9Wrfo8Q01l
6XTAESHR1htrOOx6AiDHAQLOlBb0zgfZjayGJBRX7FI=
`pragma protect key_keyowner = "Aldec" , key_keyname = "ALDEC15_001"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
YclPuIbYLW/ftZYybucr9ooblGFkJDcdUWf6kCJBGKpIRjItUB3LdSwcREekRWqf
RGiSRFoyrOTiScT06zZ4fkm+PEKj8O3RU1VMMzDjuEUqkAEELJHNOH71tCSC6MWk
1dop7MZy8BSXhzg3W3RXIA8IGSJRDibliv+SjkbUzg/WceDI176fJmUwGUji93Tw
Zu2vRjA/RTi3ZMzS/2Z9YE156hpipJ/Cu6ca8V3y5Kt6DX4fcCS09xESr6soT5Oz
eKRExN7wu8dvYMUuu1YgCVVR47BBDQi3wdZHqlq1PLaycnNOwBPLOAzA19Hefh/0
2HflB1HYKxojQCcZU7qUgQ==
`pragma protect key_keyowner = "Siemens" , key_keyname = "SIEMENS-VERIF-SIM-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
fMvC6d2jTMqMqGFzPCPWt6pV9wRUCG4/taH3Nfn7RcekdiLyXQEQgm1SN+X+hkbx
Pu7552vaw2ez4j3zrTk2vRPnDAsxY8GidEnkJcULi8kiia9Xy/ePFLxOJHHigkiB
rU7uwrFblcYYBRwQjhMhJDowyR9HVAonxhOWVIlYagtABxLYlNdDEn+N4yPLVCsr
XUWy1E2L5GUFFNQffENN0iyUaKdWAKGIqgIZK1sB3tVOPVsULetSoyzRErWPNZQD
e5jbBBNZGyQQWgOJkOfy280ekoUUEZajqtB1jDvE3k8kbo4rzvr7yTkhSzLqjGod
B2Zpo2FQ//YDRSAaEa9ksQ==
`pragma protect key_keyowner = "Mentor Graphics Corporation" , key_keyname = "MGC-VERIF-SIM-RSA-2"
`pragma protect key_method = "rsa"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 256 )
`pragma protect key_block
TcmE9lQROafuvxGWP3fMVxDoeaiMX6ALoT3detg/qWZ36+yPTc/t8N7/DtSx17Ze
vr6iBb+ge3aAzWAq2QHyVfgVV15dvW/HsOXXTh7UqExiO7Dxa6nHXuAhYMON6NP2
ihfIRSvdnrL2ufvg7A2rCHGAqnr6cVnRLfhNJxtA1lloQbJEtlf/CWNblDxEfyw2
06l3l8pp1rS0E4tMqagmOr+yhNSpcS9vQswFltqroh6kNIE64zKri96HKkRFLNlP
fpsN7plEpLS54SxIMmh8Op+w0a/jXVOxxD+FLepsZWfGiNksENgu2Xo6TvZIQUUN
ZoPzFCMjGk5ZmMyIlytNCw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4288 )
`pragma protect data_block
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
Ei7EaFpheCmlTJyxUg8TdA==
`pragma protect end_protected


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2021 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   simple_dual_port_ram_fifo.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      EFX FIFO
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
//
// *******************************

module `IP_MODULE_NAME(efx_fifo_ctl) # (
    parameter SYNC_CLK           = 1,
    parameter SYNC_STAGE         = 2,
    parameter MODE               = "STANDARD",
    parameter WR_DEPTH           = 512,
    parameter WADDR_WIDTH        = 9,
    parameter RADDR_WIDTH        = 9,
    parameter ASYM_WIDTH_RATIO   = 4,
    parameter RAM_MUX_RATIO      = 1,
    parameter PIPELINE_REG       = 1,
    parameter ALMOST_FLAG        = 1,
    parameter PROGRAMMABLE_FULL  = "NONE",
    parameter PROG_FULL_ASSERT   = 0,
    parameter PROG_FULL_NEGATE   = 0,
    parameter PROGRAMMABLE_EMPTY = "NONE",
    parameter PROG_EMPTY_ASSERT  = 0,
    parameter PROG_EMPTY_NEGATE  = 0,
    parameter OUTPUT_REG         = 0,
    parameter HANDSHAKE_FLAG     = 1, 
    parameter OVERFLOW_PROTECT   = 0,
    parameter UNDERFLOW_PROTECT  = 0
)(
    input   wire                   wr_rst,
    input   wire                   rd_rst,
    input   wire                   wclk,
    input   wire                   rclk,
    input   wire                   we,
    input   wire                   re,
    output  wire                   wr_full,
    output  reg                    wr_ack,
    output  wire                   wr_almost_full,
    output  wire                   rd_empty,
    output  wire                   rd_almost_empty,
    output  wire                   wr_prog_full,
    output  wire                   rd_prog_empty,
    output  wire                   wr_en_int,
    output  wire                   rd_en_int,
    output  wire [WADDR_WIDTH-1:0] waddr,
    output  wire [RADDR_WIDTH-1:0] raddr,
    output  wire [WADDR_WIDTH:0]   wr_datacount,
    output  wire [RADDR_WIDTH:0]   rd_datacount,
    output  wire                   rd_vld,
    output  reg                    wr_overflow,
    output  reg                    rd_underflow
);

reg  [WADDR_WIDTH:0] waddr_cntr;
reg  [WADDR_WIDTH:0] waddr_cntr_r;
reg  [RADDR_WIDTH:0] raddr_cntr;
reg                  rd_valid;

wire [WADDR_WIDTH:0] waddr_int;
wire [RADDR_WIDTH:0] raddr_int;
wire                 rd_empty_int;
wire [WADDR_WIDTH:0] wr_datacount_int;
wire [RADDR_WIDTH:0] rd_datacount_int;

assign waddr     = waddr_cntr[WADDR_WIDTH-1:0];
// NIC
wire [RADDR_WIDTH:0] ram_raddr;
assign raddr     = (MODE == "FWFT") ? ram_raddr[RADDR_WIDTH-1:0] : raddr_cntr[RADDR_WIDTH-1:0];
//assign raddr     = raddr_cntr[RADDR_WIDTH-1:0];
//assign wr_en_int = we & ~wr_full;
assign wr_en_int = OVERFLOW_PROTECT ? we & ~wr_full : we;

assign wr_datacount  = wr_datacount_int;
assign rd_datacount  = ASYM_WIDTH_RATIO == 4 && SYNC_CLK ? wr_datacount_int : rd_datacount_int;


generate
    if (MODE == "FWFT") begin    
        // NIC
        //assign rd_en_int     = (~rd_empty_int & rd_empty) | (re & ~rd_empty_int);
        //assign rd_empty      = rd_empty_fwft;

        assign rd_en_int     = 1'b1;
        //assign rd_empty      = rd_empty_int;
        
        //always @ (posedge rclk or posedge rd_rst) begin
        //    if (rd_rst) begin
        //        init_set <= 1'b1;
        //    end
        //    else if (~init_set & rd_empty) begin
        //        init_set <= 1'b1;            
        //    end
        //    else if (~rd_empty_int) begin
        //        init_set <= 1'b0;            
        //    end
        //    else if (rd_empty) begin
        //        init_set <= 1'b1;            
        //    end
        //end
        // NIC 
        //always @ (posedge rclk or posedge rd_rst) begin
        //    if (rd_rst) begin
        //        rd_empty_fwft <= 1'b1;
        //    end
        //    else if (rd_en_int) begin
        //        rd_empty_fwft <= 1'b0;            
        //    end
        //    else if (re) begin
        //        rd_empty_fwft <= 1'b1;            
        //    end
        //end          
        
        //if (FAMILY == "TRION") begin
        if (OUTPUT_REG) begin
            always @ (posedge rclk or posedge rd_rst) begin
                if (rd_rst) begin
                    rd_valid <= 1'b0;
                end
                else begin
                    rd_valid <= ~rd_empty;
                end
            end
            assign rd_vld = rd_valid;                
        end    
        else begin
            assign rd_vld = ~rd_empty;                
        end
        
        assign rd_empty = rd_empty_int;
    end
    else begin
        assign rd_en_int     = UNDERFLOW_PROTECT ? re & ~rd_empty_int : re;
        assign rd_empty      = rd_empty_int;
        
        if (OUTPUT_REG) begin
            reg rd_valid_r;
            always @ (posedge rclk or posedge rd_rst) begin
                if (rd_rst) begin
                    rd_valid_r <= 'h0;
                    rd_valid   <= 'h0;
                end
                else begin
                    {rd_valid,rd_valid_r} <= {rd_valid_r,rd_en_int};
                end
            end
            assign rd_vld = rd_valid;            
        end
        else begin
            always @ (posedge rclk or posedge rd_rst) begin
                if (rd_rst) begin
                    rd_valid  <= 'h0;
                end
                else begin
                    rd_valid <= rd_en_int;
                end
            end
            assign rd_vld = rd_valid;
        end
    end
    
    if (ALMOST_FLAG) begin
        assign wr_almost_full   = wr_datacount >= WR_DEPTH-1;
        assign rd_almost_empty  = rd_datacount <= 'd1;
    end
    else begin
        assign wr_almost_full   = 1'b0;
        assign rd_almost_empty  = 1'b0;        
    end
    
    if (PROGRAMMABLE_FULL == "STATIC_SINGLE") begin
        reg    wr_prog_full_int;
        assign wr_prog_full  = wr_datacount >= PROG_FULL_ASSERT;
        
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_prog_full_int  <= 1'b0;
            end
            else begin
                wr_prog_full_int  <= wr_prog_full;
            end
        end  
    end
    else if (PROGRAMMABLE_FULL == "STATIC_DUAL") begin
        reg    wr_prog_full_int;
        assign wr_prog_full  = wr_prog_full_int ? wr_datacount >= PROG_FULL_NEGATE : wr_datacount >= PROG_FULL_ASSERT;   

        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_prog_full_int  <= 1'b0;
            end
            else begin
                wr_prog_full_int  <= wr_prog_full;
            end
        end              
    end
    else begin
        assign wr_prog_full  = 1'b0; 
    end
        
    if (PROGRAMMABLE_EMPTY == "STATIC_SINGLE") begin
        reg    rd_prog_empty_int;
        assign rd_prog_empty  = rd_datacount <= PROG_EMPTY_ASSERT;
            
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                rd_prog_empty_int <= 1'b1;
            end
            else begin
                rd_prog_empty_int <= rd_prog_empty;
            end
        end
    end
    else if (PROGRAMMABLE_EMPTY == "STATIC_DUAL") begin
        reg    rd_prog_empty_int;
        assign rd_prog_empty = rd_prog_empty_int ? (rd_datacount <= PROG_EMPTY_NEGATE) : (rd_datacount <= PROG_EMPTY_ASSERT);
            
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                rd_prog_empty_int <= 1'b1;
            end
            else begin
                rd_prog_empty_int <= rd_prog_empty;
            end
        end  
    end
    else begin
        assign rd_prog_empty  = 1'b0; 
    end
    
    if (HANDSHAKE_FLAG) begin
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_ack <= 1'b0;
            end
            else begin
                // NIC
                //wr_ack <= wr_en_int & ~wr_overflow;
                wr_ack <= OVERFLOW_PROTECT ? wr_en_int & ~wr_overflow : wr_en_int;
            end
        end
    end

    if (OVERFLOW_PROTECT) begin
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_overflow <= 1'b0;
            end
            else if (we && wr_full) begin
                wr_overflow <= 1'b1;
            end
            else begin
                wr_overflow <= 1'b0;            
            end
        end
    end
    else if (HANDSHAKE_FLAG) begin
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                wr_overflow <= 1'b0;
            end
            else begin
                wr_overflow <= we && wr_full ? 1'b1 : wr_overflow;
            end
        end
    end

    if (UNDERFLOW_PROTECT) begin     
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                rd_underflow <= 1'b0;
            end
            else if (re && rd_empty) begin
                rd_underflow <= 1'b1;
            end
            else begin
                rd_underflow <= 1'b0;            
            end
        end
    end
    else if (HANDSHAKE_FLAG) begin
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                rd_underflow <= 1'b0;
            end
            else begin
                rd_underflow <= re && rd_empty ? 1'b1 : rd_underflow;
            end
        end
    end
    
    localparam RATIO_WIDTH = (RADDR_WIDTH >= WADDR_WIDTH)? RADDR_WIDTH - WADDR_WIDTH : WADDR_WIDTH - RADDR_WIDTH;
    
    if (ASYM_WIDTH_RATIO < 4) begin
        assign wr_full          = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:RATIO_WIDTH]);
        assign rd_empty_int     = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:RATIO_WIDTH];
        assign wr_datacount_int = waddr_cntr - (raddr_int/RAM_MUX_RATIO);
        assign rd_datacount_int = (waddr_int*RAM_MUX_RATIO)-raddr_cntr;
    end
    // NIC
    else if (ASYM_WIDTH_RATIO == 4) begin
        assign wr_full          = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:0] == raddr_int[RADDR_WIDTH-1:0]);
        assign rd_empty_int     = waddr_int[WADDR_WIDTH:0] == raddr_cntr[RADDR_WIDTH:0];
        assign wr_datacount_int = waddr_cntr - raddr_int;
        assign rd_datacount_int = waddr_int - raddr_cntr;
    end
    else begin
        assign wr_full          = (waddr_cntr[WADDR_WIDTH]^raddr_int[RADDR_WIDTH]) & (waddr_cntr[WADDR_WIDTH-1:RATIO_WIDTH] == raddr_int[RADDR_WIDTH-1:0]);
        // NIC
        //assign rd_empty_int     = (waddr_int- raddr_cntr*RAM_MUX_RATIO) < RAM_MUX_RATIO;
        assign rd_empty_int     = waddr_int[WADDR_WIDTH:RATIO_WIDTH] == raddr_cntr[RADDR_WIDTH:0];
        assign wr_datacount_int = waddr_cntr - (raddr_int*RAM_MUX_RATIO);
        assign rd_datacount_int = (waddr_int/RAM_MUX_RATIO)-raddr_cntr;
    end
endgenerate

always @ (posedge wclk or posedge wr_rst) begin
    if (wr_rst) begin
        waddr_cntr   <= 'h0;
    end
    else if (wr_en_int) begin
        waddr_cntr   <= waddr_cntr + 1'b1;
    end
end

always @ (posedge wclk or posedge wr_rst) begin
    if (wr_rst) begin
        waddr_cntr_r  <= 'h0;
    end
    else begin
        waddr_cntr_r  <= waddr_cntr;
    end
end

always @ (posedge rclk or posedge rd_rst) begin
    if (rd_rst) begin
        raddr_cntr   <= 'h0;
    end
    // NIC
    //else if (rd_en_int) begin
    else begin
        //raddr_cntr   <= raddr_cntr + 1'b1;
        //raddr_cntr   <= raddr_cntr + (re & ~rd_empty_int);
        raddr_cntr   <= ram_raddr;
    end
end
// NIC
assign ram_raddr = raddr_cntr + (UNDERFLOW_PROTECT ? re & ~rd_empty_int : re);


generate
    if (SYNC_CLK) begin : sync_clk
       if (MODE == "FWFT") begin
          assign waddr_int = waddr_cntr_r;
          assign raddr_int        = raddr_cntr;
       end
       else begin
          assign waddr_int        = waddr_cntr;
          assign raddr_int        = raddr_cntr;
       end
    end
    else begin : async_clk
        reg  [RADDR_WIDTH:0] raddr_cntr_gry_r;
        reg  [WADDR_WIDTH:0] waddr_cntr_gry_r;
        
        wire [RADDR_WIDTH:0] raddr_cntr_gry;
        wire [RADDR_WIDTH:0] raddr_cntr_gry_sync;
        wire [RADDR_WIDTH:0] raddr_cntr_sync_g2b;
        wire [WADDR_WIDTH:0] waddr_cntr_gry;
        wire [WADDR_WIDTH:0] waddr_cntr_gry_sync;
        wire [WADDR_WIDTH:0] waddr_cntr_sync_g2b;

        if (PIPELINE_REG) begin
            reg  [RADDR_WIDTH:0] raddr_cntr_sync_g2b_r;    
            reg  [WADDR_WIDTH:0] waddr_cntr_sync_g2b_r;        
        
            assign waddr_int        = waddr_cntr_sync_g2b_r;
            assign raddr_int        = raddr_cntr_sync_g2b_r;
            
            always @ (posedge wclk or posedge wr_rst) begin
                if (wr_rst) begin
                    raddr_cntr_sync_g2b_r <= 'h0;
                end
                else begin
                    raddr_cntr_sync_g2b_r <= raddr_cntr_sync_g2b;
                end
            end
            
            always @ (posedge rclk or posedge rd_rst) begin
                if (rd_rst) begin
                    waddr_cntr_sync_g2b_r <= 'h0;
                end
                else begin
                    waddr_cntr_sync_g2b_r <= waddr_cntr_sync_g2b;
                end
            end
        end
        else begin
            assign waddr_int        = waddr_cntr_sync_g2b;
            assign raddr_int        = raddr_cntr_sync_g2b;        
        end
      
        always @ (posedge rclk or posedge rd_rst) begin
            if (rd_rst) begin
                raddr_cntr_gry_r <= 'h0;
            end
            else begin
                raddr_cntr_gry_r <= raddr_cntr_gry;
            end
        end
        `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(RADDR_WIDTH+1)                                                               ) xrd2wr_bin2gray    (.bin_i(raddr_cntr), .gray_o(raddr_cntr_gry));
        `IP_MODULE_NAME(efx_asyncreg)      # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (RADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) xrd2wr_addr_sync   (.clk(wclk), .reset_n(wr_rst), .d_i(raddr_cntr_gry_r), .d_o(raddr_cntr_gry_sync));
        `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(RADDR_WIDTH+1)                                                               ) xrd2wr_gray2bin    (.gray_i(raddr_cntr_gry_sync), .bin_o(raddr_cntr_sync_g2b));
        
        always @ (posedge wclk or posedge wr_rst) begin
            if (wr_rst) begin
                waddr_cntr_gry_r <= 'h0;
            end
            else begin
                waddr_cntr_gry_r <= waddr_cntr_gry;
            end
        end        
        `IP_MODULE_NAME(efx_fifo_bin2gray) # (.WIDTH(WADDR_WIDTH+1)                                                               ) wr2rd_bin2gray  (.bin_i(waddr_cntr), .gray_o(waddr_cntr_gry));
        `IP_MODULE_NAME(efx_asyncreg)      # (.ASYNC_STAGE(SYNC_STAGE), .WIDTH (WADDR_WIDTH+1), .ACTIVE_LOW(0), .OFF_ASSERTION (1)) wr2rd_addr_sync (.clk(rclk), .reset_n(rd_rst), .d_i(waddr_cntr_gry_r), .d_o(waddr_cntr_gry_sync));
        `IP_MODULE_NAME(efx_fifo_gray2bin) # (.WIDTH(WADDR_WIDTH+1)                                                               ) wr2rd_gray2bin  (.gray_i(waddr_cntr_gry_sync), .bin_o(waddr_cntr_sync_g2b));        

    end
endgenerate
endmodule


////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   bin2gray.v
//       / / .'     /    
//    __/ /.'      /     Description:
//   __   \       /      Binary to Gray Encoding Convertor
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

`resetall
`timescale 1ns/1ps

module `IP_MODULE_NAME(efx_fifo_bin2gray)
#(parameter WIDTH=5)
(// outputs
 output wire [WIDTH-1:0] gray_o,
 // input
 input [WIDTH-1:0] bin_i
 );

//---------------------------------------------------------------------
// Function :   bit_xor
// Description: reduction xor
function bit_xor (
  input [31:0] nex_bit,
  input [31:0] curr_bit,
  input [WIDTH-1:0] xor_in);
  begin : fn_bit_xor
    bit_xor = xor_in[nex_bit] ^ xor_in[curr_bit];
  end
endfunction

// Convert Binary to Gray, bit by bit
generate 
begin
  genvar bit_idx;
  for(bit_idx=0; bit_idx<WIDTH-1; bit_idx=bit_idx+1) begin : gBinBits
    assign gray_o[bit_idx] = bit_xor(bit_idx+1, bit_idx, bin_i);
  end
  assign   gray_o[WIDTH-1] = bin_i[WIDTH-1];
end
endgenerate

endmodule 

////////////////////////////////////////////////////////////////////////////////
// Copyright (C) 2013-2020 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.
//
////////////////////////////////////////////////////////////////////////////////


//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`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
ah1CSP63MUmdoRE9KU/7qpW2mCUqZialbS7PMODpI5X3vEXsLaXDCKMwJ5XcKtMy
EIWdxIcdTHeEDiy9eQJ1S6CzeEtgqXJMVgxfPaErAghPwnMjNBMF6NyW3amjI80j
IK4Q0hvXX2CA7yAajPIFtWxKeCSCDkhFmgUTKFi9bnG5aNnMLN+6cIOabVJrl+AJ
hNkBxRJ2vrtVXbudId8+sn3kyglN4GE6ar9iXv81sZ81Y8Tyrcchu7B/uWvEYDjM
p4YgaPR8upa6DcHL7sHcv9zw9Ir/vjdD9/L75EElxWPgzlSMQHARtQ2bvkzdayxb
JmqVlrHqI8XXqzSddy8vAA==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 8512 )
`pragma protect data_block
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
TofYyNjGyhFCZZt3+S+b6g==
`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 = "2023.4"
`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
GqF8fCMCqX9cvfEFdHCUoOAphWf+efs4UveHi+vbq3T2X1Zxa6jJmB2i1HhKawNU
6qKVHV5bCrc5Wei/OmnnPkXMuLZIjVaGylQY6COudDNU68V7mYJG9CKXxhzyMUpc
Iy7adLz4sIeQth0v9LoFEipBz7q7UPPzu+YhHXW/QB3PIQx7yvf1ByHMczOaqA5o
QK/SgoYgw1nItbJ3vxlx+pueLJzlXhjQRlf3peFA06PF3XQk3/xVVP72t9SCdHWO
tsNfffCgrxsXaXqV6IUhAwJX8y1yhJUEfCDS9DiEZP3U4bfZcgNJtzQfjaVz073h
zvbvtlNgxOtw1SlR1dT0fw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 432 )
`pragma protect data_block
U7QRtGq/G8+nBIV5ojQNU45u3qkLJd45OqJWleyUjhcfNZoOYC+zseMBjpuXowB5
SeceD/sm/Jn21y7gT6j50503tgbbEsek0lXOWpx0coxe/cYDiGFCzhLodvbgCser
/neCuuXDaLvEN9S4c8pfP2i5+qcIMo52NONOIXuGqAaIuiPeeOv1XEYTr0IVI/qK
mdJlyWDvuaaAfacIVCRh1So/g/jW4Xm1HoDy0gsSJiuLvJTXt/P0ZCHzyr93EnBP
2RI6RDulUCfh5XAi7G/jwnT7PcO86ZQCmpKyndujBVrlW0RbYyR5KDUKKR4ncakH
cLZqScz+VabSZaSzygIv+1ir9KoPX5ChDqdQedWru1Bn91X6/7vNImOeVIgeWYv/
bdUFpYoVL/InbDtBQm1wvT+jmbOZPePzOwBrnCZAafBrApuPj2XQ5u23XqOCuG3H
oQaS4N9mgH/5F0wzQ/HzGBAJ7bw5rw/FuWRGNi48xDuBEt704i2H6gYM/aakqAU9
dsczrg/5zjz9m2X9Y2IO1l/xD86qyG6yuDce6c6gZYiMnBr3WnsHpHH4k7xUHTT3
`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 = "2023.4"
`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
NMJzeJcTsA8NtSPvBrIMXiRzk2+AEhtFj0ikM/FX3JZpQ4bP67J184nC8s+YQCx4
9sYWVtmnaSqePX2CL5mZ+aWIcsSqui2u73d/Bg+gzDtRmc4ATUuTWZv6/ZxhJ/5Z
u8B9L/ZvnBUuVSsyw0YVzE+XsUr0eXdh4Wg9xrR56a5C9tmqsVLT8AlEGAUDw4do
KDYC96nYXf/BEnphxyALqmrrHhzfASd/9GWnTl5tqi6eXo5d/0GnAg/TumQB9VtC
qzB2XmUFsov3D71Vk5rsfyMzlPQTKeY3gOZaSWhORjUs4q4Sc3PwiIsk6IfvDPdO
opyDuRj3IOUtvCE9y6XKfg==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 6192 )
`pragma protect data_block
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
`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 = "2023.4"
`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
C+BVml/KQ8QAs+EWMqZgQUmxQ/16vMdYR8KdOJPROqxy/2R4KpsrucSPGrri3HB4
5cov4xTwlRrM0dVRTSy+IpnCNuCnG2GaPPZtEEtppsdZsawMQHHeny+aaAH8QWd/
P7xzXIpnkSehz3uCwjoRL5NvWWs5wrbBgpmkShYE4g8GrBceK4K3q0QHmWlo6biB
SkKv3keLl2LvqKRFsyI887loII5GMe7kOqUaT2UTX04i9pHvTYrmM1XPvL0/Z9e9
GeIJ0s6+ss+nZ/KRs2vD5iNWzBNR79Jb4/Hm+jPkUk90Ye/pb/zK3zbqaPGcFRbs
27BwV2nodZkA3Tx3XwynxA==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1152 )
`pragma protect data_block
DMuRrHGWbQdSTzf44BjqEweUP5/eFSF6jxJ15kKaS7oSO+bqyHLEBGXIth8bUjpY
4E3Tr1QTgQrV0ILL34icSd5LDGEA9lZTGooYF01Nqt7ydPZxvELA+XmXGEzFvW7e
DjX/FhycmD2GOxNdXfM1pXMIH54NYa/r/KDMosYS4oFmfzKJ5Rwu6A3rY57txwnA
aAwTTd+al4fGQdgydcHAZ1lGRYQr0VCFXfp9fTVYbQnH4Q2w+K2vp+YLharoxhXE
3krDYYXB7guER+j7nqNxl+myfsa5SZnaCwmZ77Y18PJoQ6vkVfBtw8zJ3pbGELvm
jGClvY9O/Zx5L8B0zCXh8jqEVYKkD8b6uG8alk1LddR/7OgIne8YDNvNeOluMkk1
X6DZNT5TmklsDcbt76KRimy844HtLhu/2K8RN8WBCaxNaJux1/+FjgmbyTx6mov/
eXPcDxHJWEsJsOYetGDv4gxFqPjO3n7FQMjN+1PXrVItAeke2zEUDEJSqejFQVaL
H0epnzxky8qeiy0IpJaECJGlinhs4NGARrxq9HRvjJGRRxLSaZ0zXt+kQt2t5iFc
i8OHCCw8dXWdKSlncq0tz6ddsu+SMvqmFIhayQXX0p4zgF6ngeE7mXfTBZJOp097
F8saaXCdDN+/RHPCoHeWzqeYSs/agnKbUUm8QhneLhr2R1BkxFm5YWtWcCYrZAUf
eqKjwuZKc/nhcEB4FnL/0Q8PlbTaNVin3npB/HRh0xZQm52SXu2x077O5pQT5WMC
M0LvIKulm+oVjw1Wmy0z9++T9Otyo+fF6hr+AtTzxj0TQwBmrlQZuOGkxRE/RUMf
z2DHZBpOC2LZGubhR26aJINPuX5lsV5hDuFGzzrOCyrEXFzV2cClku+gw+5cQAVd
43AgHBzNRQ5TXTXGPeCRjqZ9uq4iV5yrotjxE16Q/s+dB+6TuDyb7XpE6IjZBBAs
aYMAe8NbNZJ3FCcc8UbZX0BzA0JxGg+1L92bJ3fZlWAffpYDLX9h1ml2s9jjifEO
MDbmQX1b1QlDK2+XKEwLuX2/X6RFbY6JImgWGwB7RSS0/Lc+SE7YZQVbu0EoRMFl
B9WDj/iq0Ft+WJi3lW6IGTqYyGEZP4VkTqziKT350uKlIJZDweyR4Phez5+CJEDi
UgaeHwx5Y4HoLLvnJ2woS0nQjHnhVakiX01mnyfw2hkK0ybQBezEityyiSn+y7Hr
BtVC0IgsKJrN0oI6nQIIcw/AdonNmst88lfQRfpbs6psEYWo3C0d1OpJH6fypqdi
Cb3lxa1E14r1Z+80l2KaFP1E1Zy2YW0+OUg8IvXaLSyI6sBDi4HgscpjQhp4sc4Z
LpIz1mUBw9CNvB49cS7DHQxcL8n1WrXkQPhKq4vQxxECLJx0fAdrV2uUaVQnkQuN
Jju6Lp8S2hndlz5HdNfG2Q5TVkyb3Kc4FclA3RVBnXNvXroXbqeV2btnoMpyoGWJ
2hjBDvOI+6dwIcIhP0hXf/PR2tobPwsvQnZkLm2X2WVNQZachyyzvZz4q9q8jqEK
`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 = "2023.4"
`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
cLVeskjs110eTOqMsYncgUFfySXVoW4d6tb3cJlwOuYd6PEAZ6lxk7niwBoWi2Mt
8PXpt8sdYQGb5VTj+VswNd6k0HrGDFwR6J4y6ctrpSGGVdj0m/oXdUSBRZezKQc/
BMPVF32V2D+34NRif2oK0xSkguNq4WVsv1XqLapwafiuD8CIIh8q96E6ZyY8wvce
Io42sMnD7EnRbn6bENS1swM9hMftXg/MNm6yhKABn6QC71vE/EeqS/I0bDGwXqkH
Mq0OG9wUmE3YxsD3bHmI3D8iJar68Q6+upNFx/PNLxr0BSHvAMk1g8NT5XnxQXoM
35rZ1GU0MRkDPnVAYt7uMw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 8208 )
`pragma protect data_block
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
`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 = "2023.4"
`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
Mx/CyR4oJ7UnPDvtA3BX4FDIIZJs4R3SDfnkQvx9oCzIiC8BFmOAAos2VSDBCELG
ADRD3CZLEIDfw1uFvu3m3XuwwHbRU0vxmVOzyBzMS7l+1WdAsowJ1t8fsjLxtcRU
GTCyFC/FKyp0BY5Gf1lWpPsikhMkJQNvOoMt5yb5Kc7HQ9AXqOut+35o3uUyGPkC
veBF4ZGCgHN3krTe2j4QGdErqAmlyNrOhbD2RzYjNVY4xRfNC+BcQ+k9tojE/Y6W
t3rRrxMwU0wYU0zQCIO3UmhOxa70JzbFqwxIcRfD9pEJ2YFHVd8z2WTcO6uUDbKy
EOBMff3t5I1hakBI5vHy9g==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1680 )
`pragma protect data_block
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
`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 = "2023.4"
`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
K9sd/rk7NALXNDOKx4aiqZXmx2hjxMxMCh6nkYDD6nAWUGADiYKQ6UAbUfSRG3r5
riXc2Roc7jPMoDK5EttVkY+J5PzRw1yIUENrxVhXzwXzxFZfF9lNfKty5FtDaTHk
o5C7bR7OXrUxbNk/nYkY1GMAPzCQB2sNKGTWt30hSbRxjpMbiQgnV7cDppDcDIjh
iDJ2DFEO8XyT++xupIqONYkaVKA7jRjh5JNfgmNnoEiHHKJR/B071toJ/wJnRDR8
q0fslLM1CohIy2lOs2y492Spb/9ZVyHmGlpR7QMAtg84xBHWadXFLq6+NkV2TF2U
xumSOnIbobI82Iem2jX/2w==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 1872 )
`pragma protect data_block
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
`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 = "2023.4"
`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
mLpV1Gu2KvI34siE3LduNiqfWM8GpvTz4hY+Oclo9dEXhsBCIki9ndhvV5XCBfvf
d5dp/+0WZjVJGeKMSGJNCvHYJNU5lbFaXs2kz5d3vi6zRZp7r9ehcyw+oPJwn2UR
UNnUAiBWJjmkP3FLlURtjM6c328hckzOcIIexVLpJiMlRact8GFrUGwaOKLnWjAx
AIeY0fYoI3k+3wnepNjmr9sV/4UQB9EWvvBHGY/7ST/snm8SjZUdxBzsEluOPw0p
nUHUyUmpdhDO47hCLxKLWwNGkEw9AV6rPf8xplCr2T7xy21zmD67Fc3imLT6k2dq
CQGyF3te7usnhm3VC52hPw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 2656 )
`pragma protect data_block
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
JZy8v3VXdOgTEj+8jfJs3A==
`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 = "2023.4"
`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
E+rPi8nZBBvxw5lnIJA25LiV1KGw4KuXoijON8/1OC2p7Tm9Zi0gAeRVMoR0eOZ9
eys5000osxYCejkvyNmaUmdk8FOKlK/5KAjo+e2V19HgqNTf3/LIbYsebhfxOTfb
xrhTgQYpPTAzlVxDAxz4R6MiX9xrX5EZe06iEc1u8bKilKhwUXTCJXHwkhpl1hI3
4GDwzh2SnoYB3W5SvkuQWjwYxp4wTZPZjw731TbGzdTeLMObSAexK9FPIt5pr8qc
R9qRFfFHPz48NVDe/d9GoT9uZmf/qNeI8XkB22AjAlfN8xkDl0JUpV844N8Qh29L
NXpHL0KzVcX0fpWtDG4GKA==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 16720 )
`pragma protect data_block
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
JlNlfwJg26XD5xeV1r5DLA==
`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 = "2023.4"
`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
m8zQ7sOBnWKqiHsA62YXaRT1XaKRgBHbFdvDVfiNbhvyTitkE/GnfunamJg7vX+8
A6OgV02VtKKhUm6inN7j5ZfdLsphIzI9y+zfVTuxInua9SnrS4ARdJt6+G9hVkYD
j+S5PDLlpbjywBZR5tRHCW/sFRdMjmdyc9HyT+u27rlntbZurvNvc3FOvaNMVW0a
uSJP4ZIpA+vlRG4XkkskySo66eLK2XwjqLhjvYDzBafWJh6UEjEKo1XBXjxLVm/c
vFIAZeeo3jBW9njjLxTkam0ilthxAJHqGN3u6W6LMXwnzj4x+V4PD08HL954xluq
hv6zwVQtIIiw2TJx4Q2AEQ==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 19056 )
`pragma protect data_block
+U6H2+zg4Z32j2XHcEm+g4+6Xc9q1DszEYvyp5Rn6ZC2S1Q5JKjzIacM0In0Q3tI
EMRT8BnAj9wrq9DjlnXuUIiiDF2CuCITzY4SXZw18Zox7jHjI7HmmPnJrONh0EAv
U0ahnPAAsSPHytu79GhXjSHwBApGtn8832JILeEWHF7rD096jG1f9k4HsFszT6dK
1qjWHgpRbKZjy9CrTPbeWRHrAq8ToY3pWF3bdpaN9T8HmHKHxS3x2cWHn2/TKgew
4SmKjQZEFCqjht11vBQ6g6uWjrqh3eT+3nM8U31pOY52BCnl5GvWRKgnLatqkSyo
JQScXU+xLv7jb8QT+f10nbUmNiyqDKJT83V7fy0aif6KNMFQZl52Wc9EKfKem7LD
NTJjCo1Aft0uApjmCNwsKxHuAUtC+BtkCHtoIN8Knh9RT8wmAovhOKUXz9mfRH8Z
YypJ0nzJ2fh9KWGdR6ny04aKcMJa/0PrS7fqc7SLQXvdrj25uhv6ljhHkI5rI2IK
2vyC+3hvDBlRexLp5PZfujJlPU6KXKHMj3WTnpH4+AeYTU1gEOLo5f5h7p/L52/8
apKNKKpNFhg5M/rHJp1rl5tz3RWdEcXm9vH3SBsmPqPBqdhvbw0WUZ2Bm1DPp1bc
H69LT1DR4+G+N8ifeEZjPqr1DtH1eD8q3ZEw/UQMSJ2lTrRKo2vQ6xZkBv/lbaaP
Eh3hqA0BCXtArLoD9atKs2Oo111Qz3UpdtUaxavGWrMEoI2fTNfbk76vVzhIHeGv
54f7VY0XLDxCPSXDkiT5yOEB662aCbYV6Ab5SikrHvl7wBGWvERUHVbngSZmMa/X
nkwIwXgujUXd/Q7LqyAR125AO1Ic8ryR5/gjlugc25P5GnBqF6tgI2OgZRPQaOld
vQlBG23lHbCBbFoiV+Ml/CO7Q1lE7+h/1Vl4PhqsBRtn7NpvemR+M8vZf/IKFN9c
QWRF2SlWGsGVjiO8yNh98XnrEXgWwCKJULqp3zzSgjHEUcXa3j1dr0TnTxaJgzX2
bueJZ+r6OFxDoRe0tgxLbR5TGOUDhfKxNQUwtI1QqB7fwADTEombzyaL4kMZzfl1
EqZdnav64hfyLUwLGwRZTFtSLqGNVo9q68uIAkO1K7D0gSF7tAbHckP7W+TF/5Gk
ehDfrytvjz4XtSbx+7Rh10CYDXTYDTsShlTX4SPp5/OX0rUOQB4tA0sVpVHcrO4j
s2YqacY3sdrZorPpVwwyrs1QsSnN+YSZJVjY/VDdkpkGI87Ap6sEKIphbRpDFFgP
AgPN01WFW6rOKXQSxN/SNgWGeRncP/q406ixDrMF9Q9XHKGRobOL1lp0FboTRRRs
8+c4TvYjxQ/uZdyS9A32VFkdz+03V2/Mjn1B5Ux88n2KIdDXOmmfC6JGDtjobt51
jZhmjur3yWVVs5LAmTCYwQjwPDBh/BAnIn8iN1VK+U/c7hsYWFArCpO01VHa2jGc
t/Rj3TkgrbDYuHDzrnXfVLXCENOGYi5/y7xMdZeoM12o3p2ZgHp8P985DzDk4LeL
VeYKhvHuC7nDo3yRdhwDx5dlAyOUqt2PJnxjc1zJ8muhBlAO2DMXhQcvD4hpSCAY
AaRcMax1rYFMmsDAJuH3sQzZgvi4MRUK/N2HN0Rbsj6EUnF+pJtBd4mb3HTXebcY
N5T1itq3t575ZB2JU6XJCPTS5xUDZwy+eB9PL88aJGnNlZyt6CpJWUboyfPG0cri
8fh/pXZvxlrYxDgowLDAkQgKJ88r+XjUjhb8mKfKtpIVh4x7oEPC3z95puZpg1GZ
bSDNkAFEtcWQa/d0IqrEk8Zoi34NAIDuECxGMYsYa5TiFc9kiCRqOb1GrKbF5ztS
q+TMr5nHY1p4nchf854Hnf3jTA1m6s+STX4f+8v/y8+b4v1jPbKoKBDHDWRqKOKw
JRPbPL7OV7Urnpf+FzeMiJ6O1iqGfCYQXCihPN6Al3ImC3DUyODKPLERLmBUOyQa
QF/KLzMB3KQaBlf8JNTpPD4UvumlPL/MagDlBmnpFmntKz37oAhHyuLpJJS5bISj
TXxz+Mk5UG+o+0u/Gr+mixpO1im1/RD660UXg1OZy5ixarzANzEYoB2enACOtYIf
SnMEbx1sNIrNF9ZUx2UceaGCzaF4NppZ+u2ga+tKcJNZ6G3jnQzvsf3ChgZw9rEl
MTXXDDo1KeCLEdZq66le/0fpUF2cQtVzl9K+RSTTDEKFsZHzZzW7Nyt0WrlPDmnS
A0ORYj4eTZXs+KjijKHb1DEfhFgHNrbydPbK4SiwgHP4v9EK0S/KJ6TB6r9bZlUI
iAGOSi8pdf6e5aMKUvdLrQxB9B8dwLMpRDEYkFEgIr+z0DS475ztZPemiw7DhVyH
FRuXbDTSGnPCX0Srpm734MbcEwgBGMeSLJ4pIGjlsDmbeB9/2HbtMRnPs/s3FqOA
SgnBj0xj+P8fqTfewBugSpoAsiSmURfFrJfpgQCIwWaUCPDfYWJGY2gN8VYJIphJ
L6UV7+gx0s0r4nbdMa84WWt5WU6Jd3qa6gdz5wopENdbTvkNCD/SSBgmgnqmtBM9
2oP6Hnb+3LpJ6AdfzddQPLJtr3rYCJdIsVunbgLWeRvY6DSIjFWkEASZuNYhcAN4
LvPGxXLCqcUWoLqn1uV3hpYKl5K1hragm9/9/8n0ZDANNwbPdBSVvyfCLR7LrDgw
rOuzm3w/YWx2IPXb3D7Jz/cTkC5mGLNrSOFCkaNEtWbHyEAHUsEdOfempEorIHLF
SQyd88dmDTyWhaCrqyJvkCUbNW83FfohDL/AFaJZ0pA8pLKzLSg5LqQ3hzdaE7fx
0PDwRDJtNmjhr9p1cDFmqLj6KzOv7ZYR4/b5n7kCt67+CEMEem0TLqXkuvHnB/9q
WVOCZpYYp45XHu0BmJkLQMF20dmY4wFJHdBQh0N0WvF9xhNZJFqh4AN5ONMlaeIf
zVGy7PzmIxtrEmc67AM0s4c/0mmIdTKP14xLBC9akfuMLogHNzynYuYN+TI9/mnZ
5eWIDi9KNuMV3TmSC2cMBncQnZ9PJFgqOFCgGjEOzGI7xgaV7qqrwjjzZrx8ECym
d3Z9aX9lCslwEa6vybAf2DBMB8Krvnags1pA5gerpBxw6rc0eOHkfYoEpeDgFGGz
M0Yrf9kh9Ck08im958oCLBsPDoQvGZvVAgV1/rl1uX6UMnFvKo6A8nToH9WET5RE
hiupzkXC5wmm0aj8ELwGd9cg8ZUg1vhDDxyv3izDe60SlNEcMlXJbROD5+vVcNiY
pq83YwFE7OGJmox7nz4hrtQCafyMe0sPk0ReWx58rciE/Ei+ZIN3X4i6GUeL20rv
dOGB9YZ3DCIgzAna5TRVN+vwJth501K8zX2wOWIARv9yQYv5Rl9ZpPm2ts4enfjN
RxKZiosATFa2IPrXwuj/G6QrtUGkJ81XXQRi9dtV+I7+Kfx65HBh4HxXd2hF8E7k
c1LVD7MqDE9uFd5RfgVrkr7E/t6Sbfkffqh7k0sENScHeyz4sj44NP8klZ5tvDkz
Jicp2TyS/YM8H/Cjp8bpVPaaYm+LyD7HsC2JEX+dWe+Ns8Ne61+GeqRd/V4KHHxr
MFJdpP1CcBmtbm3tX3uX8oyKkUexlqQoMeBvK0CjHnZ62lRA2kciQwFtB0wY/btl
0QsG8QNXcg9EcLlcq9EZurVDinmVz8zwINV+m6Pm8pmPzyif47KPJaxlkNBrmyZ9
cLgZYJGFCONElhgFvs48+MMMndx6pckump9mCzKpiSIfk5a/vAzm2IUuMLuqQ8ZQ
8QLs7t84VFrWizypd2cIxcJPJgUUzrb6QfcVasZzHRSyRJYjI74ZwPfGc4wbnZCp
AoMI99Ox+wSH9SG5rc5aGYdATnlCqd+O6mwiLVb8t/HvhKlbN3BO+avmqfU0EQvB
MXv4ejz6oJNPgwxraiaz91gVoKcNuIirUf43TfLj5szIBHpPMG3mJRMATvB024E3
4TymDl1kjbp9/vz9ePgrC2ZfDNPFzdISTnzvqqNf1grRbv7Xfw6kUrBZR2vmMVYo
9PCuxtkUBcR/6hMwmf6rCMofpmRxTl9LqOirISTqvpTlspHzZvnUzOeNyoZ57E9b
sx/a258lFQvjdLjgR4gCc6ltUzf/an3+UK1ptLQlZypqCb/EPV4BPbBZmU0PwMc6
U1yUMVyvgU5WX0BOuL7oMCUxMIikjTpKRbCcpKnxYlZ1MK2f0oiQVSDpr3jUDPp8
QuKlCncZNPYukLtMmEJkiXgQ9Rs4KoZVqSxhbZCGlJdLfA8rZYM9U4Glk0Phk7cw
73Vzebag8C6Ed6VkiRB4d7JQpWnrUMieLcN2pzkwVTdFE0NjqDFT7G7+jfNVbPop
+s0yHiefAyj2saxG7XBa965dRA2ADH6BVx6ZST9a+bScY/qnmUhrsOIqD3NErZZg
ACzk/u48oJcTb6hP8ncUyXLY9kwP5aqN1IroWPDKXJdwFOiw0pXLSpuz0IS2oo7M
BlUe2/y++n+uPNtYFft6Sd6hnMTfU3DoShQCsjOU1VzNqlHkA/Ahx5oWTZgwbGr3
I4qctsWlzuys0FiWdRg20Piwjk5wAPhrmAa5MocLI978aX4blMaDF4AbFD9CYX9E
Urb9gMmBvW1lQfbXMKIa4xizOvdsdqwrilFQQH9+UG7gVrhfQQBWRxvsFla3GcIq
8QoKoqx47Z31vuqU6ad1aDIdN2oyGByqLEuGujpgzfPzPOgGTvXag06Impn9OJaj
XMECNDovuHm/ibn/8MYzHa4x+vToshD6i9xKJAMEV+0KYimCqdpeXHG0TXZ03nl3
ljfgMheZ0byB01aRHKFXEpei5njCKv1xmY9JrpwVEZXM3eVPls+pLR68jwMrFbob
wz94YG7g2a3TmDdeKUxn41SAQIKa8gjVZei00dwWx9Sn7zkfxrvtZ2l4M9trWuWI
1MESivIJjJrWbhqql197zH8kuj1D2m3pnPup3CbsCfJn2Bq7JaG+ctnrHDAh1I7B
w8bcbnSlRrGVsD+yi+fq6qdfCpc79vJ0vn//UbDJwCxxsjrQ910nS8xlnxtiIvGr
eM/fGvtJhm2/405ilqlqWhtGIAHJae5p6PN+aSil82Fa66W+RsrGNoo7BpMq1yix
atfSvY5SYymMhATWt/ScRJBHpuFhOGifba3goPskETsIn4i4UktxXj53oY12mZHt
Q2cFrxWvkcXFKjjEB5Ajk+uBhF0NBoykot3NviZqWZa9l/Q/DH97CXDmLoqbfCbs
ir2h0YCj7Taa5j4cPjy9ctlfQ07b6ioaqXUnSGHWR3wLsXthqKgsyuE+OfPjsQ59
wy4mB+Vzb4DrLe65Yd0xH75cfUlg0rR0ONeOrNxDRm02dp/zQUd4s1ch9Jiccrgq
LSaQhKevMLlK711sWPfLdAs2ywsgqqg2I1AzRU42jy0Alf8ZRMYl4xa/IFlvvFPY
V0NDjfbGhTR+UM0flTxB8DdzEwZRuAXLdOPRRbHkx/Q7s57757XnGwR5tHuejeK6
hRa5zsyMxjUmDisR4zj1lxjHfUh7z6eGyRGmVJSL2JTMPL57jLpL1Rpep5ezg0Ue
Euvnl3KDOPHIrlK0w3ZQHhM0wlVCQn/mW8R7OmqlWkY7h4Lr6M0K5QGlqca9N5u4
RwkLVpOw1ZRfMmciWF2iJCketnyi45GpxXBfd0ezxtYdQd9kc8HNsYdH/RMLnlwl
VcNnIvEy23YNIyZq/+k1MDq8Dlu2MOw0qVvhwbWDM+ifh+QgCApRrhwTAsiRDmEE
cuIbQxBVsT5MxxmElGA5quNsiKo1GmKHSXnNXD4MngQXuivI8VAs9H/kWoCEfb2o
1ptUrq6BXK+CzzkNnWly11EGJEC3+bBmeFSOmADejYNuEPr5wGZYVyIfqtmfG4bS
ks2/UFTs0XziLcI9ElZqhlpeZ5O8MPbA3Bi2rNGlzLP9Y6b+Qj4i6xWLBGHjSQT/
WaOnX9GljRQDQwDY8Mw0tqgW6FaJ6OqIobcgbyNMXpWhiUULfA1oHESLiuwhdF21
Yi8R1faZXwskN/BYLNTclKyIkarNt9lotXmc9kG0l02Zbr3WoGYtfMJPtqW+BH/S
qLvpPAaNDx+DT22Qp2cvj/fvoicmFzYFaeGAm4Pbpwu4Bz1GB/ori0m3ggEBvL1j
ZxY7BAXXGN3vlCiAlSW9c5RqFBHuWGZC5e3Y/WCwjTe2DwmjXnKq1/4cxRZpWeKA
9ZaTXIVvJt7Yjlpn2i9WyS1pWpdH/lqWARldATK0K+j29CmqJQaFvtZofbHKPTjj
DjH0SoBUMjuQ2joTMOrxn12dKsibvpV3/s0WdFO8CgiQDSESqupRpUPZlm//wGee
oSpPhLuVkCUQRhaZaIwBhuUUXclQBzD27VRr8pEvmtpJlXJls6hHDRuXGDyyjM6O
fKMrhN2oY3LqDVR0uXp0td0Bn5ljuJwW3GkBrku8bBgyAMNVkUIVgaHQXGnSgl9p
FscdyN1Ta3cuVNWDPSH76W5b55+Iy0zF1acRDPCNSjodDMtnoHvp9An+TDteSbTv
2vM4/bnPTnF96Bn2HlZE4VTY7L87vPEx5k3HIOfwcVdy9GB7qbFVNQyo3ELpu40E
7LNAeuujlLxtZ+mpzs3zRUOa34J4WEoqU3tvjOEHhP75lpCf8lW7Dxcj/0vfZxo7
dP2lFSd3gDdqnZymIo6wo7gC3ECmZczh39AsEjFIfW9fpu396SeAqEYyZlhy5HGp
ysRNMKHNB3M7JFAORARcXWX8rgg92iJVF7RgrN/1qdHEzDDldIWZwIqsBFlspXRX
xgLaZgoe4MSEl0rU/cDRbNVEctNfQw9yoaLrKpm0M3OePplutbeEDhMxf3QsX3I8
yYoVqrirT9mx3V/UwmJZ9PD196uvV7gjff9FOVB78bvCuWK1k7t59+YybIBUtPYA
gqLtpSfJ9KwLra/oPJX3QNakD2DsJBLZmf1eUJ2m2D3H4dzc0qiVNgCz0jaqTeEd
F/qR98olA02ioZCanO4gBP2Eju0DUqGdAp6E3xJOvo7BdfYFWG4okrsT4TTjM6bA
QnqzRuGm0lRke9IeUlOr1aLEJWOhOT+fffFUap0X9YFet0CJDAzjr4U89R34GniG
tj7C6/hMZO0r/pXBa66u5Gh2E/VDySX8R6VGoxE5k/4ZH8KaWNqzwv97/t1RExiE
zGNmI3LZ41F9uP5VPvAhWW9/12eW9oJPfMObWNgOqxIU2SOGZSj7ZD7HV80z8hlc
EO+tCyseQyAh+peeonpsyAUAVFVGMCZe77KV+ZQZi2vnbSjYqKxQqDwMVzmMupvn
XVHKbDJM15eMzkq1vPxAFBa7Fn+iGjmUEYPLWtMR0h1LYrrMqavI5lF0mqwyPeUE
gGWF8g+xs2eHQckyQKcgH9zsraGVlsDEVWYv53BZCGB44f7FSbQ4J+BMjWgPCaGT
x+ldD9Sw+tN2ZTeVTweskJ5UACwUNG0Czc1VNXhsoBjwxe6RNKDVWAt74xd4f9qB
eJSbT759N/fJebBQIb06+MSevqrPcsH3vTK88UiqdcoEiDnmUtFmel78CWUeStVZ
oNCihkIMQxqOHrTc4OiCOlXrZilCSibHTIGq57fTZjobgfDbhEdf7n028Xt6HzNy
k7NJp0Q+HnhJ8d3TTUQgo8cH5sp2dVGkQD899zQmYmpKpP5mQ4C27VwywPMoNrua
OhTMbLvcN+ROZ7zwPHVXl4OPiQEvcrZqWE8bR12FkrFqIMbjMqdVSlKfT+mndDJN
m4GWk/JJjy4o9/cZzq8rbJNN9JQHHRjQd4RBuvkaqGgWDzqvWCqmRJ1LgNaGZI2U
HltBaOSED9Br/QEIoPu8RfI2TX/jIwrAlNYTN2TWWA4b7h8O4vCYXDgltherokb0
aJppA48ukRnKUp/KrZRvCv1isY74IS7zEJTdXie85v4Jb+l+K8Tg+8No05eAEVJn
GvGgzyfE5vMrEhUQ17a5I4XHw6qVM8SJFewrOuJwUIuciq8SC/SP0kgRM2+mDLuN
vy7harEAkLs3jtvFEELjyGSXo3QMSbyXjfimzmZto1zut9AKuofQ2BgsO7Nv8otB
dWEb7nXPe8HF+DIWKKm5Rblt5QSEQm2fgsgjvhvTrNulrPfKvmHh7+14CCaYzqHy
OjMW2Oqvq96fLv87iGrgwU4OuaXFFeE55rqKayHA7Wpsx10quG/Wxh+AoLhRO3Kd
2vKEkGjm+J63qkvhuZbOBNHLHFadCdJbrkqBG1Lp3stij9RCGrTiKzXdQ0uKmqEW
t+Ohl/+2n2bG2+2+ypPRJ9DaH336LkecbFzLgCt5z9IvkUA6LKsUyQIhbfBxNJv2
R7LkyIQv+PqphAXfag8OQSa3ypYOs/QmAVuxsg29jvefW8x1lQJl+mCZnbOwpj6x
1YjGGz/jMG2YDkQQfrLcNcQpOQAZ4DULQG/8+P1ginpDncYLLFXVa4HHoGWrBm5p
kPSaIbD0ZeW7Cy88zWYqdnPAvmBbQeY7LO6GJM7m9Y3/m0Avn1PI0YU94zntRorN
ZQIr/FJrTB+gcDCO/6zx/PL/NqXOvPiRMp9T5dJeAH9SXEade2olDB+jkh5gD8RD
pN78hk6MXi5xfGOKjC0Vitk0pN0GSkKdj5kpTTdWcGFR3De6vHr5QuqY9g/jou1L
Y9k8ZDZr9xqfKMDpXjx8tcxiDw8/LKd3wxpqiVZquO5XuWfH2/c3sW3+v4yO4yeD
wEH9MG2CwvWfcMRh8BgjsDHW3qpApUYXA5BOS8Os9TMjSg1E5/ri4ulmmO961wRc
yCfgdS+0yN9uD+DMAMJ9nLNKivkwlW3yrOpT6Ic+YRAgx26qQAHitJhw/Lvr2roQ
5WwzzGgBjjf9HxJk+DM2kr5DXJFNappA/dnzBDlWD8gm3qQC53FF0GeriTM3pMtb
HVNmBzzzvzgGrG1XtuimZIjaK50hUc+HwZwwxYSXitYK0Yfkncu0eBddCKHeNxZQ
EKmQdSNeAdPktqD8nMpnnoubIPGP/WS0+R/8ipRC7d+60P1/oJyZ9rIHAZdKmS3m
7ODJRp+uVj4yd0UDSdfhnhpWFZ00aOPfiZpVgvHB4i/Gnq/W07HvP/l1tKmdnw25
p61yp6M3BHqjDDwC4ggCeAPrPjDKFLxAievgG9PO13xxYUmmcoDWqcQBNwcVirRT
RYeehT3e7YwW2iAd9cpbo+3bKn/xxOfZhEoX66ms/JGt4dpgZZ8E425tbsEVZ6cS
4SkDam3GSKYbhliDx+tPqRDWQyuUfSA1s1Q439d7Qtp/99fz0IF22GWl/oa9WceS
j1jriYyzkvyZH+xce9awwFXk02Md1qrxSjlPakAuAC2UAzpPRJ9QouyuKM1TOOtx
b7M/gXCKh6PKJlQAMvRP5NAvQ2lck/Y0nX/2SngKkgXgD5XZgolTR1w1+ViZXRr2
IbezdWh64kpWHBIxpLoysyhtudgSsehejx8PQBgflksPNRav1wpjBsBzP5LA5xOq
D2bwvJorsBZ8dZFypN4tre8mok1CrHyuQxp8ZKaYVgfSWq5NWexneU0gimV33MWx
ovfGyX29t/uXW+zOVVRSk5mAWnAkjenmC0oTM08/N/f30L20aA6BcsuzXMHAutEh
yxzfkF2Z2i1ZMeVhh5zSwJR+t5vyTXIq5hiKnwFpQn8EAHL6bPqIY8t0Y7RmdODt
H6G0Mqfxzd27wwbRpDrXVar/zArAznH/zqAhZ77MipvvgKJ2rN6Gmzm77L8ZWxiz
2Bw3aqOuu/IdtJ1mDGQQMB91c3BPhv1tNw+zK21eMpKi1T/OWWI3KoTPWkPexGCI
MHnVO+8uYG0hnOfJEJrnZOjP5HgWHXAzyCjC7S68orEzbJbX7GeTCon/QEQDSp+i
eSq4O9MAm7AqYSQmUrxicsISDVMEAslUbvpFwluCK37uYy3OJM/LQfTF4UY91Smu
y7NMcH/8ArMb0zEuTuqs79xdxp68iWW71T75r/uCM6dtfakOAxdQIm/rRK/F2gAn
ECIGtVj63i77XHVJmnRkb2nWDFKu8mhSf6dqrRCIMyY4UcmH7BhWZxkP4Rcu7Lgb
XTWGgNq6VHJ+w210NJTSmdjHtxOKUKw7dIa4PeVMP0JnwQ/xDGCI6RSzf20Cninv
RBn+GdHoeTsPbwIyatMh6dIDaje1Zn5OdgytLbtu61G3EXRU1pvOF0cxZtN1C2b2
wykyv6v2ynoOVO8/Te1U4VsCqBQVtecZ+TdyiejaOh4470TpRtn5sA3dMNrJV8Zf
OEd0JVko0fh9WjgSwECv95OF7xGGQcTYt/4FfkCvDyv5+YnmO6GLpYDnY9skt/bS
VC0a7bNhKZ7eEQwaFQc2wTaz3hP6qgSofLu4GEKFkchFKLUkh57EUD2nx2I3Y0h3
q03yqJsrPR89BA2lC4YMvOija/A+U/Pm2Bc9CuoopgL2kzqW0jO8NthY1sTMsFG5
O1+2sy3ZKx5KcyLrTqXEPP8M2PP0nM0ZTEyBGQ3lZeuyBw/Q7mGskr1WgoThPRqz
0GABnzyl2dp467DTsN+YwlglaP+qrbIGoUB7cdT+f6Q3Yob/Kb6Kxgw670tyK4/q
IKxf21EY1jkDSBadQD6zRVT5A0ueVJmL7t432BGcYlN9nimohnU2oBT7bln05v3t
GiW3cV177IkXUKPbbOCfbpOfyXAR7s5wgOukGmO5ShlmajNlIlRr2hFhIi3YoTAr
3hRdfQbQSBm1+aFmZs+cxKDhjeqKvJXKEqW9YqhGn3RNBpwrsbb/IjLOj5XI058w
DkxjEI2oclOGctwTjZe81vY9Ps2UPT87gCIJcmpKZQED6nEz6wBmRt3m0+nZnGJr
wKwJ+Gj8j76p/cuQaUXmdTxz1OW9wn3flAUv1/Ueknsg1pOu28WxvgPTZisp32BJ
q+/38P6lmB0wcw47F227fHWwfVGt3RU2vfqqFpIp8bPmsj2EUtqkh46lWqbgwl1s
VCAbr+EE7G0uLTKYy2g2Z6m5mRyiu2PyuslFUzHctn/FSocZ8mcfQ0LO3rCGyf4K
IX1enXP9NfHFhTuuRdfvzitOGTtEYRanzZm/hSngdYdm/m3USmoRAzYdfEjQgN/5
v6/wsNjvwKte/ESvqVzttgaJdepbccPM8yrh6cJQTnsPYhJJfCpzpxxQanF8jyVG
ee6CML97D+D4vFtVpicBeTlV8caRtxICT+ybFXR3pRP4Es+5uROFfrGooU75oaYc
9ZD+5Lh6ioaSCh/zj5+9VT8p6JSkIGKxlZM2by+omcUgo1dOnwzUbz7JkcYCamhx
TiqejcXRC9kC8cXpr7QVR9fUieZNb/ZQUD0o25dejZRnRlhb5YJTRvoDd7wPkcVK
0WlbpJjwcPxmNvZotApaP30hsAAi7zZcebA68MymDFu3zvOdwISRROO3E8C5YYVv
N1XroST+MjtvxtbJ5cLyJIEvtCXjQk1v2Wad+mkmNx9qSOQBLYZ3pVOw/ZQLKMsO
wkJhVP6K/07Xg6yLk+rdy2T8USRncgjQELoo2gtMr1KbTuadiu6FvFK0sBdc3czu
3Ao3xR2knYV0/ojMHdTxEtK65MyNiaEw/xqdsf2irbHlpYAhAoaYedNCzMWdwXU/
2Jw6lWlkBmH6qnPHc5kPFzTzp6dlnkcgZEATlDQnorlX0zHpB3ruh5W74pq/zDGz
BJM4xK6YAQNdDv9hnPhfNP1eoddPYToq1M0GDTu7BHDhEfifodgwCuwPAbL9YNmV
smlC/gQfHpA2EkCUZV0whZJ+rYXjCrjC+BHttjiI8my3N4VwM1Zeyfiud8aY5tVM
ni9URFqbypyTXvyv2zMm5O0IJCHBuSnUqIZH0ZNbNd0xxBCPZHzeGeFENh16I7/O
zPfbhh3yqhnAhHEFIcy5D8uK2eQc9Cc9jZlb23n+nRPgZLGk6WkDi76gTYbLwflz
JjQ8ppSTKRsAeNJyflnFpjto2zvcJp5FJm8JONm+zZDbxNv6UNgkxLSeV7Z5+cNO
G+yB8rM6LP3D4DjTWPNNSsBE4LNj0ovNtL04ECp20dieiOkOGFCXGUUTtmZQ4ous
5JKH0+L76WKJyuLOYp6I9hYW/wpYjUbtL3B3XBlxzxvi2tVRH47hu4GAoIEftcpL
YKLsrvTSwn1NdHPL+AluCM88zLCvl/CvGM4h5sU19wxjbuBt15ODadWoD6UBAke8
asJFMZOSgv/FsyZpPngzxsKzwgq54A+cgxYrQ0cuWXXQfTBw8UGUpAATb7eHWyHg
kwiHgLrhecNybYF6T/Z72cxIgPsumHesWDor1MsQPJjyUdNmlp4/QMTPhh/MqL9t
vCcG+zucylgDRaEYgHCTjuz83RT9aIQj+/vVqr7RzI8+5QyUc2gMva94MGQ32koG
SiOezKhg9LwStEsQsKKmY9auOzbpNUJ3bkMO9APswN8zFq2QQeaQtjBpiL9L+fkw
+uHT985utcAh4jaoUb5F9hUY+rQCQHuc0zfnMd+SLCzQQ8veDlkpTNnF87lKOm4V
IzK4m1uZw5gVQpHGBV43GhsDT6YgKQUIrXjluTjIUAGncqb4N2sscxXaX0lrlaWX
1I88Q2LHLR4kSmMrl0UTdHwm/bCGkXlx/9eRP56aflt4AZUCOPnjaNhqFlNUbWFy
grNGMB0Lmabv0UKySYpCVLXxnHlu/A3qOtQIfJO528LhyjsC2LzO9mS+Dq1scUrI
psKdRQuRFRobkXAO7XtIGHjVkAI7kP5cyuesT+jVsZITRX0w/228wX7bmryoXFul
VMONwTdTbZe54T8PVDFfNKCj4GLvsqLxr0aFH3O12sIJbGvh3Q20uKivSosvEuj+
iRjcGeWLbjWRQxnT75bxo5XKNLl5nWpF4qZlJNuFvprWZg0okdKsXCn5I+NRRgoh
4DPzcQrGZkiN3Yhg3wKfGQ4rsEDtVd3kU87tULCnLKOnUEQeBrJT37SLkBs/+loz
MMyPNU92L1MF19O8OpnYvyMvZ/SbdBIr0GnN3ftTKtQ/FABznftv8tEOawxrkzNB
zClF5caFYHG1ufJ70rYJgywa+acfZxSuFF+3DSUIE0cYJwFwvEW7+Ow2TCtsbuMA
zvyTdNJIB9QU6cWV0L9ZJXRqoHaSwLBrzESey+04tyLRwHpaHTOw7gAU+gcGSGX7
BbprQRJMk1W3tHgCiH8goL6COlamAojwY0Jkv4IWXRVJiSBc8VY1n9VUz4G9L9xn
V5YstyEz4dcJxqQ0Ao4ttsumnLUzZXCuUPauVSi0e/4bDazRC9c6IUllMfDG3AeP
LiQejcT1sRkWdW5MoSAUKq0rOmmXHr8sYeIqBHCbejfsw/jOJ9iFCjXkYWW+61cT
dx5PsSp0aLMQdkmSz3kb2LbJyhRfl/aEKEFUze3tQQrv3pgizdt90mf+jxwU4IIa
vuLp3FHNguTg3R96Gug6PACuHOa6MU8Nn+hwA/XTUQIjPkzpBfvdwDyxZ2WondFI
c90WfUpjaBwuu9sBE9Cunt8tLQ4lMeAAWWkcqGnfmWUW/KM9r/GGeoGnZiBeypBD
7gMgfH6FaVb20+lcQP4C6hdpTPgUPNN3VuDqKtkg5bk2QCYz0GeFvmDiWVVtYK/N
rz6sYnK8bCvjPoOpicQLMiZX3C9Qzllu61b5CJ2BdkR7Pw83ElZmB1oZbyUT3IMS
Bp7Hc5vucYA2CaeH55JIPrSE4viu9OMvtjPcdz44wpvMMyJUhFZ/oOxHg3MeZISb
XK4PNt6SjopZBFernYMu2M1VY1Bc/Ox1PwNyX76ONHzIGTL/DWzdwrioPQwmqQ4L
OvNlwX/KRCGIsh+C+i9Adj66Gf0KrfuoxZCUXwlw3oswgivq/ZtqOUn6XtQqViHe
/2l700Lm5YqYU3gPdVxOowjRBzDAB+kM0YKwCFtdwxYRsZHTC6KnuzOs9sPyrZ0Q
05f7qze+OdSt6OIHxYZ3q6d06u2/Pvof8W45N7bXEO6qPuJ6G/AxvZTXxwsOXHVb
SKnjXNnryoi9Od4FkU8I1YzRPr/rKnpxzSyPDqvAjO3SF8t6/pxxCcHaiPnv+SSY
fgw5nJXjvpu8PqOP9l+3UP2uVGjU2fVSuKl8LRnq7PYdPHtGAzveQce8N6H5u84a
b36KbWYkKonELY1mxk5uX8nzCST8zMekDS+xDrJ2M2c9jX5jQt7l9uF/qFCRb0J7
a4E9kuLgHt5lSdIIGTTH2T7jDTjEBP+vLlbOtwSDFFxmU/M7PQpHF/YJgpLQLil8
Za4nR6B4U/7hvuIadErpz7ElNXEBTMCwjTCCv3fUxF0vjJcGJIrZXBo+z0RJQuCj
xoqjIiO22Kc67Qap6JF8GnDXEhTIkOLwagJlxWxVzq7ATDowvUb76fq+qi37UBxF
iCothrGUDvbPe/g02I8rn9qZKgibEINNnNFAUmOKS7BlYOxqkHlfURCfSDtTD0aa
0gq5sD1hrRFyTY3rMbqMB89zCkcgW0gQd0q3dleGFtL0st7vVTKGcWSG2B9aYaMH
9gkz99xxZw+W3NU0HgWLAqgGb1j8Czi1nU3g+j1aWSVF6zF6BJNg3DzlN7Kdvajj
kw3DdbxjuPWBWhw2J6ybo8Hf+kfQYx8Gg63fmHNvXG8HCwGhQyy/A5S85tlhvPMp
vbsT7GKvyAlDYzynZNi3p0DiLAiaiCTH1IYvWKdLpwBBvlCmKeOyS2Rn3B3P5HmC
p+EYEXC8GAgIfdT+emvEBpSZjWjDRHz1RN5JAP7VptzL3RYRgNc6Ov1IjfV200Sz
Gd40q4rbhHFOofvULwwHTRGVNZ1Po2uIYycEbRe30SUy4IK/Hb27PAD4JBP81IKf
qlMgizUhEIa53O02lUTx5x8RNkvdVReR+ZRcVt9yVCJb65Fq4HU4wAZbn/oyVKVM
d4A7ZUJVTmek6uQZl5ZXp4DcX6AM79HY6nNjdjH8vp0IPmxka337noBqPmhsDHRx
rHjbaPHBVTyToFZjX3Fe6jjUfDLQrP/vQzkT4S1q5Y3shfX5B+90qhfc+DnRy9GT
s08K24ICIPltqKsa5/AlW8gzHH5lQVppRm+oy0daUzxqvB3gBnqujsO6eolXbXMx
DG4ksYR3w3UYY2S5/UfcZBP7uTS1M3+PH/p55YIjUuBBSPKuUyrv2R2+F0GaOBPP
yUF0Cti5qiZlmcC39mdXGoT/cGkFsfTwvyaA9/Dc6IvC36IujnyKKSsiAsrAYV6u
RxnLhH+Cyi2lgeqlTPlhpG6UC1VPxZfXRmj+1IHvSD1eT2zk0GNN++W3rDHSjZDI
xfXLlrqEkCM0C0qN0tPsHOG1ZaH7jSXABQyWTVG+ew4L2F4+q2v5SBYNv6hSc0um
978efnhfmNreiMix/lr/EHvDYPBt8bqwAipzIRjP65kZ2INoyEYFibm/8sYxb7xZ
WNt+AspCQQiq6nTjP//RxO+67kAboAr+NPUpH7wAEnsbO4niiBK518f7rVn3tvSL
lXcUVgmHhuqs1U93dPPUSIJsKmMTGknn99TaR7RXXQMicYUFj2jVdp15AjLtL8py
qv3folrvOVGcbQA4pvZ6SfGddDeoKivZ/lsZvDWMWJ96/E1ynDDqlJ4siQXCCN/k
GG8P+RZg1iFv2HiHVu0sudZzO4NKo5be7YAK19K5/jBjW7h2nKDXb2nccdfhV2E6
PH03O3GXFxda57TwIfD4TeH4lwcWG5LMAC+vV2/bJtehBeTVdZlRCvB/JV9x1CmC
8MpRT/yw+35p9uEMxRwxExt7vgCMlvxysYe85yDD/LMm0yoESZ4WHEPaKhJCxKX0
QOoUaL5s6nmh+okZeYjMYzE7rXi9262Rij6mg0fAmqkXEXq/loHqfjpXolQ3I6pc
LBZJ/RW4ZYoK1K5pKnn4P2bpxg5qxTBthmsLr6r+PGJn/ojdiAvkPH27xQ2uWdRH
WQvjHnbgh4P72P/i+JnDy3b98ZbRaq9IYFxk2K2T4sApAlP4710UAGzMTtsfYFEC
c7DOj23qArJUGgXXYV/4YyPJ//4BSFknoGlG5mXVORV7w+RgBBWyPInY7dI/xszG
uBwGYj5TZs9rXHJzFGKFGLiFByEYvUjWxIAXIelaWEnamNOr5VLLQr4O7LfwwPIX
5vNm025xNwtDxs2zs2cd0TwBf1EX1plTttJa7IHt1C4u1RNC/FuNQ4P0pOTZoD1k
iGLMrJM1KqmPOMXucSnpa3QnHv0Mbm5WUsh4KhuucDHE25kHpVB3W/M9ygNS1YWW
XWsFPNW9BjOEuZybKf9wkx6OfOI1Bm/C3akyc7KXYWcEgoQxePupFBz4+0mPIF0K
027rJjtU4ZRD/3jrtcSeCT0PpN0MF5FTZMKPjZM4K8q2sZEa2cJNnvwJt1i6phba
e6ennMxB5eTxAU2VKiC+tqCkG7PHbBwP83+lmis5xttngn65VzMAebJ2Tdm9fuEr
5p1JWno9sNFgW3GMXsyyomLmzgMfPBt7SLZS7BvU1J3GJMPSFSbLDycfna00d8Ga
wn4nrXi3IBtC2EwCG3r23mW76wghqvd0IPY0UhtnibdQuOIyuTjrZRFN4tj+JMm6
iW5UaygWi4i/X4gqKEJsxh+wrnUaG0ofNbqIjha6RVcMo5TNMgDoaSHvqdcfF+N9
zDmz1lXEUyU9jj6auviMNb7GdzTxu+BRPjiajA1sHAxN9jXYomT3c97VnlRWCjJ5
FL9Kpq0we5dRxKzW4GRYtJQiUsKTUAY6oIsX4pMDxx+fbVaSYFV5fKbFV2KdouH9
JCN7SDZ+vbIdrUdHlscJhrPsHu0Lyy89i5HR1kEtnL779LzsvTAVwOA1sz1Bm0xY
Sm2rlEt4SGjzo2wNQGzy4Vtv6LyfdUz1xDA1q0+Py1F8HaNVgpf44O6BzlHWvB46
eZLj6hAvzDOdkmNe/O4URqVtHTzIu9r+1BFnt5H/hvunhhMrg+n99eyy6CPaRtEg
vFrjXLwjlhpS2ZHWmy1cb8Eb9e/4GB9f/Gr6swjEKsMEH5mSujGfgxMO11h1Exv7
vcJBaTS4/Oli7Km1SslUbq/cgIv1Gkhjuh70pJxf365xthFQRJUGik7QbTDQHjFV
bmQL2qBsJQZMmYWteIeQoETIcc+6bQn+FvEKLnSJy6gsv1nFtQSQIZ4na4ru7HJX
cqB7gpPHYUCo2xDgaJ6ZZ0u94MFsvJEORztVJHLFMo2uReUJpFaLy4xNgEZ1I5Bk
7wX1AXYyFnci/LeYpTgVGQiQ/wAL94xlP8czeILLQRSR2p88M+7KwfUMmwjZKJ6E
b1oxSyF6GOulmI343b5WGleblWs6VGA0l+XJ2qi78XOmwUhR3pwD44fH4qDNWaed
kgSlhAO4a2chEiDlg3wzV7H64t/2G0p6yOhauIaDEAkuN/EMMgB74nd1YiFnMdQ7
iu2860UzQIPVvyyUsyv/NpW9nj5FZcE4Xsiu40i7WBfKP3hN0zpjyEMgasGay5ZI
hQlBbNhtjWN9YuGgNWRXBnJbmIosjD8fq08CP9ozZLGK3FNuqjHiCl8tAVBbgjTv
oX3C1TxoSdj3SVuzchvv3B4p10Bt/EM10/OdRhaQRoqJ6xi7uEcT4nSWoofWZlQz
ZzYL6AyG1cME/prHm9dps5Q1eC/fG+U9O1FgQKXWi7z/kRXSsw1iq+Unp+HGcGVH
n/FqAgnzQdAi3BR6xA2G5IOSNz1dSZoS6hEc7ygiQlajgAn3Peec55BWPbWNU64J
KAMssZsgktlbIb9maaSG4RANunmEDpoNQihDHroXhj7XCKrmhVUlqdGb2qbuN3Bc
awMBSbW4p6PsOY/xFD7Fiw3bnBAJvJhEuIEw5D8gElFAsHU+r5esDM5xvzxeKUcm
tP8W96yGz24BZQIP74MXeTG1LEgpW6OwBrzQB2McEhUKD0F5dtuRoWt4L4WuO2F9
2Nqm+VDlls2ojKzv5gmqsg4KM/BXFRA8/bzrZlnQXjoR4sQJykeXqIrpNZ+0uG8g
WYIr9Mqwnm1sWfaxDq/2hu2krD/zZ3L+EpNf+XE6bMmN/gG5Y7xjCRCDYuaH+XQm
7Nto8Xe3e4bIKLrIkWLJRZBii57vEtkHsnh8yY1iu70ztpcUieHuLtNm+/XcMPEw
hfl7RynOT7Vp9ICT7hWG12I5HPATBVU3ttWBocFaiYBg7kQnBfU/zHBAmJLrQSxj
mrEnf8FrPbLDYw2uRifO00WENJpDn+/UGAjFiiND6pP3MOKlTnMLE/fVMDSxCkjP
J5zodD9hbkvib1Oo+jNcJIohwlobUgoMeAiF/89pm8nXqZ5sGbvLSG7Cym5o1riZ
doKij+fj3XBg+p8rYICWFnJrAVGp7EZnQVz4uBjGLtjb9EMlDJ+E4XCBe8GFZT/T
VkzDeb3/dpbdpqoXt6L+dvhgmACGNxxa5nzy50M5Oa0fZNR27jx3yJcY/czecarP
96PiA52q+rhiu3GRwFnYwBOtLSGqs7bVCyqvYilgIc9+zMaeZLmCtNkcypnj4buQ
vVeA6rhpD5Xdtb7FPZ4Zo8J5tloz/j264LwdbbwOuFpUHA/fFfQ/kk4RAs2vpKlI
sGhcqCPkd/XtzKrcW2oSgS+wb1fkesG4SWuC0dYiBv2QH5Q44mKYqgG5J+4d0GI8
1Ixwn+XqsIEQFQprSfV4bnKyLHY1JUv8r/kQpoGrVI4vPa66bZL8MbhmW3LYiG7S
v/bvgjFRTqwJwTudXHTYgf+obUPSfhkkY9k1V2PqjXsLBWsJ2sOqdwmoytvEo9GB
D4VSS157A7WVcZtpeuN+KKYLF8GpUPcn8801QcOdvd+7SRQ35/mKvHHRklay6rJ4
E27k5WDx6FvY+KIsjVb+/eyl7D8F2T9eNm0TZyrZuYnBw0OPePaId+3cMTjqE4bb
1UllheI2HuCOSuSWAfP6NPuZgjH4xEG/HJ8dYXO1anMxE7mbvXXPg4SJNzge1zUx
Hc+7XqsaEQ+LsXUtRYcgETxTzV+O+EAQiymgCUA16L1tf+nAfwtUu0tPMV2npDwm
qGo1fH2Fh1zxV/H0nz8ZgyJQdrGctTxdfkb/XHO9M7sZhdOqKSj6jbxPMgCVDqgW
xJqYFApbHPU1CGypG1gRCcGggckPbn7ORTF1lTRyl/FooUBA1qbhmJJv0gsiSozX
DV6H5pBf9bF9NK3GcClp8RVq7GII1Bn9IOjoj8mn0H4w8+JYALm2zrrnk86aP1hE
woCGSXvnrvRUqybQTyqZwdCGykAw6ewMq9mR7htQEQef5Xd8X7Pa3DmSFBLw1MUa
TQyLWzuV8e7AamCQpVQDocFQQcqKxCkHFvQJBhQo87T1bQhUaDoWfIx14cZRnHVc
qcJlF256uCDiB9n6c0RnHU3Fnvco9g6lX4em9WwQ/JzPDqgRBMgyR47w8HxzY+4b
uk2WGBaGs3t88r41VMaUJ/g0rNmVUbAZTOdrZPVM36ei7dRrU1r9xbl0dY8Ba+QP
khXwtUJvDvJkF3yyiuqsJdFv54gaSmY5/RVOsXiHLxQ2Ly4LhGPkxsY+rfmJTCBh
cF5B4Lq49AQiaG0NvFV5QguoCr3lEoLk8oAQdGHTJKWkSIVTimFVvjMQrdFEAted
g8AOpgF/06cXqPuPMS2x1C4TL95V893SzT3FhWjDsipHMrpjXO94tgXXttfcJfZl
vbkx5tXpGCadcPf9g1ZVWHRxjvH+fIgf/wfuR6Wb7htyQ2tJTeAd5VlHsXQ1fDDp
XrLAFI2Lpvv3aWVfe4Z13siDkRFnPSEXvCnbGIAm7/d4FZ1e+SEKkzNZzH8BPIPy
UV/IVX5jU6Eqh0IvqsrQ9z/2iZEiBdJZ0Whw9wTWhWj9GIU/Eu6XfRsLdsfJ/0LY
TBzZseFbJa3dzW7jb+uHmwyC5ZvMBOfApIpf9bPX4DvCwlvCAqBHIhZF5mkUNYml
6fmYZj1e2M/krZ8ii/pH8AwUoiI9WqWxTngdx+VAiZx6DRUXBWrj1yO5Uic3Yz8O
713Bs5rhro1MeBTLXyElQSIFr1J5YaQZM6oscy4rPyzgMfV1pBxRxTqhiGO4VS32
ZbrMZYyYOgfU0OM9pVRWskntKHVfmSj43wxQ/r6LdCyZCvs4f5Iheil2Z28C1G/P
gxxRJuqtNgBCYKg3a6meDaTZGjwVaB3ttylYzKAztd1CZNASh/fmoexmL4dFrC9v
+qi1Oe/uDCU/+dNZedA1xcqxemOnWnSMH8bvzmIUcRKVnv1mACnBFdzZwAOloEFA
jLJbraEfaGRRDKk2afi31zwzFX+lbH7iScVi8MctZyXlx7ofnD4y1w/Z1FNbKWF8
oORa0be+Ujw7K6tkMrWdommiDi8Pz8qPkg635R3zv8WrXsoU7I9mF3BG1V0ttUY5
y9E9KSKdvfB4eIvYxwYr+T1LruX3VeyeuPapt7pivV4QIl3lx0DuzzxbWoKpJGm3
hr6wSLZC27tNu4o9DkR09mAwkKS4eLuUeUm+oOvTOQzRg5v4d6igQBYzGwXdhp6R
rrfxmvtgT9VGM+bZm73XGuUz9Hy6FOSwT2ODQD0a6WRS+H7zu5liAa34vezF6qNR
2Rxh5hWFIR7ifvA/FIOfLQDwDY3sAloSAO1sy5Nq97C5CPOePDBDNkbP8EsaN/7B
Vzx7ZssPB3IW9uPz8nOmmhYd9GUls95mi37idJnn+MN4PJXu8afJ8cqIIpzehSmy
iWlhFachV4hiMilPcZ2N9e4W32mWNumFujuJiPEKPi5QZ4XVx0DCP2EEbmqL9T0K
pyeK6tjlqcUwB4WFFAwgfY4PFbvuu9LaRfR3aWn+FVRr93EafxsDKEZP68D5LcVa
z4Qccvo1huzkJeihKnyXeRz3/eFKj2wsATXBzbeKHiebgiABVqcyM33BL9qcsaOW
5F1RsSfSI+QLt1g89QglRdqIMuCqEqOaOQseWyfykv1zJ3D1ODJYcFHYt2pTBVi1
4iO1apDAj6jGnnBzGQSSKwMvjAKhsk9y+XbWlwWXLM3LMJTAyNjEWP0uPF7oL/yP
/4U+eUcz25WA9dA65YDeXQwJit28OlX7NidIqdTMCet3iop2+eP/GsREHj//FnW1
dosK/5fNYfZdsdhXaEct4B19ftXq446zXM/narAd9MztUj6I2zbKf25sY3czB63H
v0FDvvtyOM8L78p6Pm87s4sIehw0BHDuL8J+Ep3a6zcTzrwNWcKerIa7yO9NefxM
GUDw+xjnFCk6Doljgw6TCGj8h1GXwEqizRDtrl6gosWCG9zTscXr3bW6HfEkN78/
Ls1Apc1EmhO5y0N1UDr3xkkdnwv6QQkS4ajZbjv2Dm1NQ/o1Je+YVI+CfjEdf6uL
d4kM8T8CarpXborTlenK5Ij3CnRaitG6D5uj1HLlyG/AfE73uBGY3I2rLXUK5MNX
SDtQ9XsHavRtWjBjJLlXO1V9o9Rwv4r1rbtvAQWKyyJ07ykkwxVp/5V3spwfzueL
2NMlA3utHodT+FTcC7V5NYa6d03E+VmG8pAf/ZMcnXoaKnvxX7XvmHn8visliERJ
kBjoC8smOM2H6PQmLInc6V01KKOO1BzcYCzwY78hCu7zBMmyhSpRsD60r5h614l5
wpEQIZ4ZSPhQvr/YHx8isJ4kOpLZ+7mqm4/mQTSp50Mr/oReFiXfNNYLhVWrME8l
gbgk+cqbt1ejuDj25uY+SYbm3/hbXT0l9OLbiWoP/A43bzUtBd9k4fRnqGt4JqVX
0YKJ0jFJQniSNwWT5Bx6PQOwYO9lv74XAV1q2wwlpfZGw9/TG0QUShWfzXfm2/ac
XJaT1k66A7V2T2iXXv/4dJeSV4R+LL1+nr/C9aFNDVv2T52+/8mlEMfZZJHwlzxA
8HNto3YCNV1wX7E/4TFe3MgYWi25op5g08DEePSR2kIWVBNnwQ06o1H8lyY+ruQb
yCLwIiqoXcSt2ncxHZU1/r5LzaH/fWorBBmHyqh3Y0PJBQ/QQ8uv4POv9L+itKk3
UxmfuihG3YDgfzCIZdmkdH0DWnFo6OAsxD1pQ4TzsPmmwXqn6xnkpLyZxbtHvoQn
UWy7PjjR7v4nFtV5DXDe+LsVaCISuPkOQANtRU8G1+gMCFRZ/09l/LcLQPuNu8ZM
odx0c0FagET/TOd/TJOFQGhG4Cl5bf21Hw1+fPHZt7TdwkXgEBXIs3Ms8q19st85
WAsDTHs3TZzIkP8cQD9epZgAl3peURfpy9MY8oyyjwYbMHNlljFWsH7FthDKw6sZ
LGF480z8uRpqyGE09N1Gj5WkHQty/xcKkLqoOxzGDDcHaAacOcVYrxqibQVuYnMF
DIsV90GYIN2B4dyAl/6KN0WlzA7wLF/W0zWJyC1D5/OvR697fyMissCc6U80PoMS
cqT9bTz8qvRZlqtJC2KfrH2cNmoauz4m2Vq9QAXnUyXK6IVu2D0suzB5aj6bN4wX
057OtkqNvV2rRRgiC90+nyuac13HC7h3To9QtMO9rARR/x/FlEWDPOqEKD1VO32u
ecUAD7GP+/WEQo2XZg9jiOHLn9JTPXCDV9DzgZgzF00KBk9zqb9nqic8yB4PGptu
33S5SSoWNGbMaqC7Dk/UIKb5biRE59yMU7XswPvF0iLY1jqIUKnwcqdJPYOtt7ue
K0yw+wQpFDP0Y+xLVCwiFOsssnGfSFp0DMJZ03YMVtdOmMVY+UHf62zrgJYLMSV0
RLXh331m5A2ZTM0UWg+lNklvgLTfLbl9Kn+cBNc1Sql0YxF3SCYmLZjmlZ6jXsyk
efwaXxzCAbY8FN9MV1axrlqULY2pkU9hLhJyclBFkmyLPKMzigpuYvQWJELWwtJs
ecB0we5PJWUpRG29+OJjJ9of0l4e61Bc06zayHEYJpfyCiXQs/SQbfCmGye4obtY
dHjt/edFFjS0mJMVG1v4z6SCholPKt1/O6OmGrowGDd1Ree3FHfulQOfoQMDuhih
d+Sr7l9RpdwZc/fl4pNEilKYYaCRsI16VFhtr4YasbmbKDPlIrslSIBr90Jv4e/C
1pUMEIUyvuE0Md09p9Fz6yxw/3+Mp/+rKdZImp7yLOv4d2x3B8W0w3DJjTRmFrOF
gz4xSbFMARsmrviOxtBSXDE/h7RwlK+EKFWwjb271ZlDkczmoF4HUMz4i8gQfAM9
LHHULp4IgEAGBGBUekWZJSKd8mPIIV8YyEfBqia20xG0n2pLbtvoLODJmTOl7QXM
IxMNoncceNU+IdjbdHywa1jFOE2PhYSkuwTJBAj1hUKyccLAkPPJKKH8Hy28HuDN
nlWrVOqEgK3gzIK2iMIYFZa93+UjY4YVfa7QkuKs5S0u1NCJLflQsInf/G6nkUH4
hnlU/S6sCN0YF3UwTt+UmTXOkOZIKfAaFOXv5OyNFR0xwq2u5YfmYQ2NFKiGAnVY
PmG2BLEmqoWSp74ka3WIEVsSZUdEp0LwTQNk94LhwESgvjBuFnVjRSN7q4e8/Zpv
3Lu1t3/D5+2bcDJHb6yF3ba2JVIVjI+gxMh5JRsUcwUY7Oz6hlczjthptOGlQCbA
MfQyMk70eoTO8BYITi5EYdT83u+Oh+iEs+kDjJhjgNNwh2B7hEqSO5WAQoBMGL+r
MDVODxBi0HClRH8cvidvrOE33vuTe7zqimJCdCy6tkwClXNIrmFdzAmOM6OkSz5Z
Fog09lgaXbcG3MCKG5MLWRt3CxDAL37ICB3YB9KsgXrY0vNV+j1f0L2nIy2MTwfV
7X78raMKbD9711//bphqvcf90QnmSLOWDH/gTnlykdiewdSI9JVtLPGujS+MIZ0J
dwXEgAYOn6TLCGtGgezjB0UUuTWz931aZLtw6oiv/33ZfYEVg+BDnUYdPg1+axse
im2XwDOd/ZxrXybrgqTMzshQGIFgAXL5rOhfqo+aaaCAGafjDgk4kRrZWtNIrJWQ
fzh/gKtgDJRtQI3lwv4nnQ8PTx/pjFNYA+SlOz/jGNOYvl2ZEcoiUK501GeWADmx
VTsjM6Ckk/5YdYQ2aU9v4Ww8xU81BUgJ8ljbE+qjw9CWHmkQp8sjgJzaH/eJFh+k
cb9RCCIpj//J0/JLItyCeGTSHFjIA+WypRSfN9HB2wSNQIjpQ3zt8CCluMBrw2Pr
uVBb38X5oiixudRYeU0vOjcqJ9I02DyvdwP9VMpFB+S1i50z27uSJgm8B4Mvu8h3
Qq2TT9qHRyDbIBFrP/fQP5A8+W0lTk378g+ZBxNwpsMXc5eLOmAolI4svcyLzWKW
jKM2qT0G4ESWeN8LHaG0tU/X0woGGT/jio/EhOx+MIyBwgiJKIBLLv0B/L0ox/6o
V+slG4bOrvyEQj2fVJJNmclWRU0hIW30ODRK8LSJ4pkD13AlPOZJJwGKTLBAlZam
6yPN++cV0NWCpeBKoI6Cc04oj1WnUq6Pw+PBfT3eHVez/T+05dggTDRdDDR7tBY4
ZWSo1ouRzb3xj+JOYIrL7SPg0z3WuGJuNY3IddagCZlCHsxaP/lzNgZlswQwKA9s
75kk8L6qFv4DzyYQFZvUloyimyQWwNUWt9LiJeoihqcXzTgdVg/PQjd5WcKZsJqN
vmNQGnqGBpsDM++pHbC1UZf/C9prx0iqBUYkywmkRBQ0GmiSvDMRyg6dpAW7iREP
F/6x9RfGU41Vjf3nDLrkp87/bKcln4jHiUQZMNrP97FFdNNMFEHtbCDhEVoG2Hc+
3LK8J1ytSYnqwnzTGKOO4UOe8lBjvicCL9oVftW5t60bhbfBjL9GZ19UZ6MP+Zg+
bAP4dAzrMLpsjSXBgzPxHcDynHIryNO/TdAWb03Yqx4QhFpnn/GW1aNgaNCVKSdn
zOyHYrQFnaFWU7EJDDneBvABXTQ54rrHFwYdgHO0OFyJG/yavetqoh9/6zSmjKqd
W+Eh229byNthIZT63ZrDGAyhWP5SqPYPvzs6Oxsva46NkeCO6qTgyx9OiYnEmOaU
ChT6whsNgbaA7SMS+gUa1VWCfa3tDCEqShYPAhdCztzxXw9b/FHrs/qG4Wgb79Cv
N4sAoXNnVQ7drkWIve2DkdtlkPryWeH1fG/0okT3yAxu1XQ9PUSPMegJ05VIABgX
o2H/yak26UwFRiqiIQktwvsnSD65D+PJnPJdrMtjumoR4iaPBnm3BmuJWmXrhNOb
qLz+4SwNrL0VtrUDyBRWO+EPN2HV1i9g1OOnH4Q6aNedfMrBiDHbXSN2nSGafvHi
lXnbWBG0w0ORfPTrbrZyd1f3FxLtJ2bG4ZeiPXi1C6C7AFvQB2cVNRcc0CkVYipT
37k503tUaCz+z8Q4bckQlE9MCsKGEHK/9R8JLXRcql0FdE7VKrVZJwkbhNPEzHnI
dAwshRGjUeeYV5SfHSS41QbHngcDQvWHi4b58hlIsHkgMHvdczNu3uXm+F/3QCO6
5ulB9uOVeMOJR244SC3RctXwwrFy6A6h6u2vbX7rEph6RY//A6S8vKLORbEjT6qI
POWAyeNy9uHKEB3c4nohDVbHlgDIFAQWCBFvDIzMaWWGfptZu3Q9cSPtV7BUnoCd
`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 = "2023.4"
`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
SZj6J8FtLe6cJ0AGj+KDow9C2ECmGxXMhFK3w8kOOiPB/9q8lgPgeBzDFA/kQvwt
OYDTJFd5zRv7gtXhFucJfuPQFKfoK/2Dg53kVRFK+pVlcatcAtwCryhgr07sNHSr
KMHU+1aO8khJO3fEK6r2T8OolUQ65f0OoCSJ1/WMdNlZH1bVV7RbvN64zWuwfoRg
XYEjk5LkVs8jAsJS252OCo9ELjbXL/R9aVMgStk2xFN+fqcyPaKD9lxC4Z5fpXXS
5hnIHY99pWllVzGmwIm9q5pGWm9jUnJLmmsg2ul3aPqKpFGJWO3w+7z7ljX4TmLd
0bhGvIZEMfMUuZBDz7lPyw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 36512 )
`pragma protect data_block
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
`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 = "2023.4"
`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
E2SFbCNaq0TEuS3fXmP6CZgrgGsaNpVBd2YIDkJPajyhmaVjofF/LBLYEQPPhK40
UkM62YEDHqDPX6ZGCwfRXP1Cso8ieIlLRbL6wj3Ab83bl7/EZEDjks1HbtKwIvUp
M+ryBC5DfH4Ix0SubIfAXdbkMyB6uw4O17ffOfub3aVJQpqhP9RvQqdE0FYdB/nu
DjIwQbzr0tJ2si/K7BGhb/b1159MacDc3/UlJ6YMk8PYOR6KpF1BN5CXJg9A3IzX
QH6gRP6807lSrjZn+pu3gHNENEF16FWiIApctPPdA17WgKCSw4VFu5EuYgv4riqr
QYD9+VIjURpbPE1HjHHuMQ==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 6832 )
`pragma protect data_block
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
gVfflHUiitigi+qYuOd18A==
`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 = "2023.4"
`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
CdzB9vrn96JT0IE6IbyMNorhPjPK1D6V9sWaj27tOIS63fCLLd3Fhdvi9U4TNSXM
q8Aby8b18QaGHXvwTCj1PhwfZee2liTibnFxiK8W4vCoXbMw9jTqRbsPO4lShdnP
AWGN2s+1g4cfEMemSoABngHvKt5l8/Qgitl8ePAWUnsIIBUZo2R3xRFsRn+N92il
oHNxpyevVhtVVhOdSgy7cDEeIHiByqsXmBrSBeDLKbk+3u3rOGP8eH9qSXVIII+3
SrA9wnnKrvVU/P3ugps2Evh+pPJ4AgvxeqRFdC7y6LU7iIX4P7HEhvLALIRt8emX
k6uJrX9IUEHTr/7EDHmkRw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 5664 )
`pragma protect data_block
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
`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 = "2023.4"
`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
SzhXiz0zdDjGadNr9/3NJb9f26Yal/c1yok2yhYa2l7w/1wi1Pyk/kz4XcjMPamc
+O5VYbIVSO9foPFV2GH0JLidIbOSshsjGoGUOBMc7ObMFmzJM7j4UZB36UARICG1
NstY6evrJSd4SebtwNn96dwrSQ7GTpYTYzmWGRO6ARJ26Q0G2/BphNu8Kt0oToCP
cIeA7dPO+6D9pJEQ7ALva09JRDpJLFnYV3Q4rQqPQTf6rOz6aFVjoreUAwJJuS0I
fQOth0AbIPM3M+Ru32rBli/HkaVx1mIB8qwdywD4K0hYw3zpmQ85q2mxK60Kqia5
X2aToGNImLAoWhi0MXx71Q==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 3504 )
`pragma protect data_block
A0aiANXgj4wY3Faum0K7V6wkV4xPYd0saXV4EUm5HQk81VANKhGvV603lS6Z9YT9
UsqtxJwvzT8jqvYdMILaKkls8shTxvCS7oz3BSXFSwEpb3/FR2HzBOTWUgXSM1pX
bZOPyVFEBAyfFi4ZPW4dyjv5P+Sj1VdJ7XshX6hP5mnTlZZyE+IrMSSRUWmzmIVy
ZxVRmydmAbHdbgjbw/TrgLsnVtsb9XwkGXSf5DCIVBfmMIdSySujs2VxYV0Ocx3j
cn0ozz899lsYgQecFpJT3JfKL1wW7pgL+y/ZLqqJEUBUwS5M+IXcjElo8Qp15eqL
MwjJorWUKVc6G0Ie4bYvz96OMtxz6NxU0+e6OvEtJ89ojLEaZrpIXJU0BCppVyo/
XG53rZlDsNyLgY068QuyC7x3L+HYBj/VZC6lwwgwYIYLJvHprYxm+bt8Onv6rHEF
VIzvrXzt0o0xFNO/DW2X/C97SF/gLCHv02cCtB0ExpP/2VxSYSdS0leAch05Lle1
BOLKd80w5dKalbuYgmVMofOm6p+yKRH9ca86alTSlnecZkLTm0igQuJPJkhP9aQ1
0rnhMCcEW6JKF/+ywEOUBseXfceQkR22u2JKs0/rbfDH/O/xrWiBqD1cLf+AGUv8
EjMZJpechivh89IajEq4o92hZS3sM3B/2QYbJ8KM9LBFypf83iOlwvn6qkdVM3ND
ycr/mWeUWN3WJwv0iC4eb3JQGeMnz/rqVPVRY/JKhDueQoUo3c768gadWLosKhJl
4IBDxFqFSKP85NXUMpLtelYRCS19HnmK3DmReg0w/pqamjf5M4mguuSAho6qd8Ke
LBz2OJzOaVZ88vSyiR6XtNHWFR43uyjP1MkZkgLu3toWcZksrW1NSXfemMVbSR+V
eYQ6p1tjBLKHbARGLPNteyY/y0LHEcwhiUfgzbl7SwkGNI0nQbLCgppA6FmRyDfl
BACAoT7w2hYyciksnXYbIaA2O96SSGIO5j2RqTltDJe2ojXdQgqehl0VEoRTeEQd
bgfCX4odBejXqYWwD8P0H9HT6eHLrkhHh5zHZXMSC2XnfeEW/ZYoFTtku/52mBiI
vbeH9oOHOrA5qy8OO+MvH8QvOnTGXcbJC6rgMmePsxBBllSXRzP74Gb2XlUaZJqQ
PqsTIVjto7B3KcgEtTk5bZhl1874Pj7hmmu2CyeOG+FX95Cgv+YAIA0WSDbFV6p8
lNzkiUYihE39g/m+ZX4vH2WNijwwypVUrx5cv2tpWizQMvXBtJJjQdnQ19Cuy1WL
l+mwjfmeSSxWz3leEgCTeBbA9YR7E1PHmi5moukcmk3cGxDUU4bNDQlVbzsYAlhk
9X+2/y4uOlFDj1PXZp7/RtixzzaADJ5dSRU7xbuDArss3IkwD0OjxOpJmzsUJq6s
NktlwRReuXc5oV6R/+KCGkXycRAxiEzK8ghBUzhyyU+Ty+9wqdH5603pcFHVkV+p
q6KTBq9YYWuQ9d08r9gzFjNFg9P3hYiwdNLQ9rB/ObDP8u0XWlUTfJBezKRrjcLT
OcnkpHZ4LnpY15BPWkvgUIOJ/7FHaHbxOC7hnQJZ0bxO+adPlmS40ehdgzijlywQ
R4K02+Pj/mrBTPBzSX8opHPDh3+rWa9qSpO812qvDxMcC+hzsBaFezcLG17ymGzS
PoIyFFUZ1l0Dq5jI8UIMdI06/uBRBsztIeBcwey3bTV6vsqQry+D+K97A2CDiCce
CxQB+5dYRT621ZQ6+OzAhi2OA57dWxP1KTniBkQRmPMoKXnWUkbtrSc3dyugWVai
f3t7YgRdshN6ssGW2OwhomAd/pfR+T5No/JD7jkPg2eoicXIcMwxoqEt+92kzQE9
jmgz4xqgkdP8x3zFiM2G4gpMAMUKBw+LQjwmlK2OBCZYwK8jSU4FA+txrSV1ug5H
8tFkRdWLN9yRmShwHGxcNxBiE7UwQTJC5ujEG4tqb1WL0SQ/1hcU7wcoeOSk0IT6
26f3b0Hz9nmziBqlwcBDNdVbHzy0MGKvXtUrhpntQ+jp/ALCmgV3VnKdw1+EIePr
GqyT1QBMuWjegmJDvgSYQuXof2fpnBvDh6Lf4Gjh8mJNjpylOeqG2GpWjrd1sbQt
VwjdXO/fyjnKLI8Y6LFxoYY5CIdg/69KgVvpSJ8iyJYliZfN3hAJrpFMlzVLt27G
sLv0qyOUcPxpbIw/ATdRaSVBU5FDKpwsN4VCV5tViJAGK6oU1x1OKhFen511jaQo
PiWt1/xeQYctWntS1A6u2GzVyB1Yzj1fZgRDG4hrXm8WQ2mGWe1w2dUQ4KWWnkZU
2KKtXdBaxFtm+VBgWN5jHfzIXwbWIr8BlquQD7NL2jH6D2Vn8R8j2iPvmTjjADgo
3wYZmpxrXTA+3JdHX8X+HXWXFOIzKwOH/sd/GZrX0fg0nWNVdQQUE5VNPK9iCAbt
ys4/Dn6a8XG1A6V6zgUAB+nWnvCFA8h7b9rX2fG9lv4ufp7UBdFlSqt8gBYpdGaj
LwO5XeWmVSAHNQ3OVmkwc9fDl6LYRUwJf9HIh+F1dPS52ZNxQTPvnwhpVatqPltN
4WyOaGqDKOflpI/+qcQdfwgmpe3Fwy+5RfL49aUtZhRCBWZ9D6ET6/AjwYM3JpDk
DNiMUw6/r2BS7wPejjnnd9exUi+ciufCtwGvZkGTdR+bHjxBHSE+hC4C8AjUvUNl
JeXmrsO0mcEbW/88DeDzA/pLiJ7u+r4w0oMwPRFY5sVQghN9qEXxNtYplUesvG/Q
eyMOln0szIu7xhBdq7opdxY1IqtSmZXHlq69QObXYg7rOdCpWPmp9UJ6KHuzaTFH
bYWfKlvQ3oYuef4sScYUsUz20NoRb+4bF6zz9QDB5jCjnQDr/YCl+biWDzfqe6H6
RRgvfN6EPUQ+yp7mcR4shYTfgpLLKkwmSiRSRrYPnwKpP4qpiQKQRgDnl8R+LmPd
4BJYK1COpUn6+/evpT7/yU+CFbjVhZjyKeubVrlN0wnfEEHYsO4DX3kF9Q4LamGR
uIbi+MDVb0afrGIb3KfMXcIuiObW+jnUWrfZ9Cs6pgpatqpp4ELO60OCvzdDpXem
GXXfIkr3nwnVrX7n19puX5JrXs3hnlPyVsGqr/1vF9wQTGxVL4foHfrZ2uxvNxAp
V9IcebBmQ5SDnT+N2EPRowXeK3eTJRkM1MwT46z2CX6NXUcIqMf+iBcGYJ1OSI/Q
Z5+nBimi6Z+TPqrh1ZRKms0YLPcELIjaiMrrOGo1Zy0ABDP5HgKp4OB9M44HAe3D
7G1VpYHq7oahVILfwNCG68hkrGaCju30EkDjspSAB7/2lgf84F3v/qdLNP9vMf6j
Z5bgt3UlSB0A1GUHIlpU/Zs0gnmBqDdqFWORIF7wVb1iPNdqAkNOH6JFfF7ixqbE
PWhMmqP5W7bKxVkyiPg0XyoCldopIDdW7MCJKr2Z10hDfB2TmQ8kmZDw0+QGvNqK
P2eDcGT7NLNLVxNGH3fYHStGpgXmlaxqkK4YQN8tn4GPvngfUM5zqW9XklUG/Lyw
cqaLSqXZ1xYtUuCwtm+1fCN20qvI+wJI3/xF7WwcpzTDXxkchQ2olGQWuht/lHoQ
CIgNDcKqCP3BiU9bjv1y0kIRtASBwBRsOCHd+pTGhrp6pCCM0zH178CbYzNRssuM
xDv1owcH38Oyg8JaQ/X0gwnRRdOmzwhkZu+5WZpUyM8Z9IGiNOfWcG5G5k/9uu2B
wFwC2cgXFIeFAgYiw/v/hqTSbm/b1hig9IP5wEqPEXcOQHhM4uHN8vBqxqrZb0Ur
xlY2tylWWrgTFGHyHQ0Y6yNrwULDyeuglM9kNSaQn4n4RV0FUBnNlzzBV9qewYi/
S0TgzqwtC0KqhDxZrPKYG64MouwOsTvxjkyVTN5Z7x2V/h6/b6PfkNFQG8fL7dMG
nI6tOmgB+l09k5Yp8gmh0z5+QHEnr24BR50QMSjYWU3Lju8YsAplveGalNGYm0zM
hyTVNKajfraTiQz+fsOh83DrA/DLkvoRSZp+u6VFgjau75VBBhQT1DzZBRQ+wqxB
6fd0XMN+NJoxvx3ibW4mRf4JDDukbvEsZSazOT/5xbFpMu95nBTr4sbcUZbWPe/V
HVKv05NHRaUf4dlGbZXRzVlTaGN44KtmJ/x8738820ud+A9QH8na969JKxD/r6dc
ZTn213x23IRKMeiq+cC6SEdrtgNeU2whAdADsGl2coNiiS5oIf4C0QZQXmHOag1j
UK8HBKsIMGG0fHsp4gIjvW+QvXokHfdXoh/dOT/lxrsmnBHT463dq/cDkVpZrPmE
Di/8Gh/eFkaYco5UgH0MLyBe1QFNjxw8CpIIIgAt0qEO7FgTtjRrSiP5iEjQVe29
3FSAfbwYDpvxy/pHIYLsobocM7IcjmJc3clXgEtQLoB2LqL7Pov4IqyKeRC81nnf
BfIKNJY3N2R0qECAz8Bkp3VONnxrUXagzm7+MyV5/s+PGJMY020vOWLkI/UTa+Og
9FmoBhOuC28ruMsRTydbQlkfjK0wNsTgqK4+8lpq4aEVlNmgson6bgLRR5UJQ2Ll
dgEsAqAHNuvm4YIiSYVMhc0maMyboYaXOQfr8nYcCXTJnQ8I8DKwtzVNJfNzYCvp
VQCgOVzV+D8maqebRHGAcpsK38XR2FqxHe4SbDNuPkIJP3HtHqWZTf0SpG5M5yU7
`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 = "2023.4"
`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
SCSoKCk2twpZ/XqldguMzShzGf717UuAFnxMW2zppYwt38fXo4wITcAjX0LpMd8j
uzfq9S0n/7qyFYgiH5eZ1IqF9adAH429mXd//VXHEVv3KM3mYadbFj3FOWadj42u
Q5TXIFdGIO0q4QbI0IUjM33F4oDrXceECtvEue6HWrbL008xluHyoNiafdO3bVOp
D9XyhOAPuGywEDRS7vc7XzNE2A4SIV6xuB7g10yBKBDGWLSwMkmgd5OrdfeTA5VY
8BdV2Kc4qrXzuxvt8I1PX715ZMdAEA+MjnUheF+rt+WpZeXxQyP9tBhQhqYGKl65
JO2HM4jcVqBVdH0h2IMwyw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 31840 )
`pragma protect data_block
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
ZdUoTcYAr4S0L7IS+7TL7A==
`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 = "2023.4"
`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
O7i5M8pYrQm+JQ0l5NqrBMWS2b2UssqPixYbS8eUEw7ILL4e6LjSj3SOVpEG0ULu
yAZh0AkCaG901algg6BBfFcEtJP0Hndzf2+sLpnv7PKjh5cT4ooroR8EhSrmWPdC
bA1K4Npa52M0XheVpZDqwoLU0KBho9h8r+m4NL6xmfDn9GQBXpwA3c1n3VUnHT1u
ZieFKdix/S7UjukvTCzdF0jXDufcdmFwmSW+5nBa6nE3kQhC+3nbc5b4GRBS/+pe
DdKi5crDQb8DO4ROwQEh9wtk5p/8px31bWKDiys3YM/ojVgoFZxqIp4FysoQJS6j
Bly1mbumtHuw6wk+dWz9CQ==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 29968 )
`pragma protect data_block
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
HNBGv9zuNYy/TFC/VG9qPw==
`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 = "2023.4"
`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
FTBEK5JPQERAuJEsQjL23p9J0qttLi73b3WuzfDhPf+IxVX47RLiJRGeN52CEc/5
u6CZJSqGAM3Jg85kgQmNuPYdj3luun2JYUFKX9j2YtWqby0dor9daQeoaCKF1ZWm
cS/qwlh98ApjcaB8q/czfIDKcpNRT34BUeTyPyAWoahz0D3YdXcnoc3oYTrDmVhM
9ooIEhfkyHPd12yQVTAY9nv4rEq/7U3/ymJbN44GnhD6jawsr1NzfhMD32tJFixd
OjzgmYS8Tli7BqTiieUS0+ocTzkqohIPIdPMLsp1vcDm0RWBlSJpDoa2ckNYbxPE
ge5nKUOOarrTYjfpOUaeGA==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 50592 )
`pragma protect data_block
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
`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 = "2023.4"
`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
h+15C3D2vNJXmQt4KKJyIMiVFAOGkQoAiniVA1UCZ2chDe6HY0xKRJJ81Lu8rUsv
Se18buUMb0xcWjLppKS41PxbNn8Fr7C4qjTBbVxwBROd5o8zBBGD53UxB77Tf6T3
dI8u0hMFMjsSIwABC2EyooRyBigBSE7ooqwjY2CKc8ionISglea8xB9S7hbOM84D
cvMggYg+KnnghbvXZvlRjrXtJBFUwGEWyvrOXcr05o6CcPUr0w55hVft7kpaTG6g
w8o3gb2NIX2uumKAHkqi350dfeSj9l35+mAYuR1KHnERd8hcDVeFG3swLuyGG8NQ
zq2BZ9X5CgnNEJy4IUNJsg==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 5088 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


module `IP_MODULE_NAME(mii_if) #(
   parameter NO_PREAMBLE = 0
) (
//Globle Signals
input                           tx_mac_aclk,
output  reg                     tx_mac_aclk_en,
input                           tx_reset,
output  wire                    rx_mac_aclk,
output  reg                     rx_mac_aclk_en,
input                           rx_reset,
//Configuration Signals
input           [2:0]           eth_speed,
//GMII Interface
output  reg     [7:0]           gm_rx_d,
output  reg                     gm_rx_dv,
output  reg                     gm_rx_err,
input           [7:0]           gm_tx_d,
input                           gm_tx_en,
input                           gm_tx_err,
//MII Interface
input                           mii_txc,
output  reg     [3:0]           mii_txd,
output  reg                     mii_tx_dv,
output  reg                     mii_tx_err,

input                           mii_rxc,
input           [3:0]           mii_rxd,
input                           mii_rx_dv,
input                           mii_rx_err

//Status and  Error Signals
);
// Parameter Define 
//localparam                      SPEED_100M_DIV = (TX_REFCLK == 125) ? 10 : 2;
//localparam                      SPEED_10M_DIV  = SPEED_100M_DIV*10;
//localparam                      SPEED_CLK_DIV = (TX_REFCLK == 125) ? SPEED_100M_DIV/2 + 1 : 0 ;
// Register Define 
reg     [6:0]                   aclk_en_cnt;
reg     [3:0]                   txd;
reg                             tx_en;
reg                             tx_er;
reg                             rx_dv_pre;
reg                             rx_dv_dl1;
reg     [3:0]                   rxd_pre;
reg     [3:0]                   rxd_dl1;
reg                             rx_odd_data_ptr;
reg     [3:0]                   rxd;
reg                             rx_dv;
reg                             rx_er;
reg     [3:0]                   gm_tx_d_h;
reg     [7:0]                   gm_tx_d_r;
reg                             gm_tx_en_r;
reg                             gm_tx_err_r;
reg                             preamble_flg;
reg     [1:0]                   cur_st;
reg     [1:0]                   nxt_st;
reg                             add_preamble;


// Wire Define
wire                            add_preamble_w;

assign add_preamble_w = mii_rxd == 4'hd && mii_rx_dv && !mii_rx_err && cur_st == 2'b01 && preamble_flg;

/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/

/*----------------------- Tx Region ----------------------------*/

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_mac_aclk_en <= 1'b0;
   else
      tx_mac_aclk_en <= ~tx_mac_aclk_en;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      gm_tx_d_r <= 8'h0;
   else if ((gm_tx_en == 1'b1) && (tx_mac_aclk_en == 1'b1))
      gm_tx_d_r <= gm_tx_d;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      gm_tx_en_r <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
      gm_tx_en_r <= gm_tx_en;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      gm_tx_err_r <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
      gm_tx_err_r <= gm_tx_err;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      txd <= 4'h0;
   else if (gm_tx_en_r == 1'b1) begin
      if (tx_mac_aclk_en == 1'b0)
          txd <= gm_tx_d_r[3:0];
      else
          txd <= gm_tx_d_r[7:4];
   end
   else;    
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       tx_en <= 1'b0;
   else 
       tx_en <= gm_tx_en_r;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       tx_er <= 1'b0;
   else 
       tx_er <= gm_tx_err_r;
end

always @ (posedge mii_txc or posedge tx_reset) begin 
   if (tx_reset == 1'b1) begin
      mii_tx_dv  <= 1'b0;
      mii_txd    <= 4'h0;
      mii_tx_err <= 1'b0;
   end
   else begin
      mii_tx_dv  <= tx_en;
      mii_txd    <= txd[3:0];
      mii_tx_err <= tx_er;
   end
end
/*----------------------- Rx Region ----------------------------*/
always @ (posedge mii_rxc or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      rxd   <= 4'h0;
      rx_dv <= 1'b0;
      rx_er <= 1'b0;
   end
   else if (add_preamble_w && NO_PREAMBLE != 1) begin
      rxd   <= 4'h5;
      rx_dv <= 1'b1;
      rx_er <= rx_er;
   end
   else if (add_preamble && NO_PREAMBLE != 1) begin
      rxd   <= rxd_pre;
      rx_dv <= rx_dv_pre;
      rx_er <= rx_er;
   end
   else begin
      rxd   <= mii_rxd;
      rx_dv <= mii_rx_dv;
      rx_er <= mii_rx_err;
   end
end

assign rx_mac_aclk = mii_rxc;

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      rxd_pre <= 4'h0;
      rx_dv_pre <= 1'b0;
   end
   else if (add_preamble_w || add_preamble) begin
      rxd_pre <= mii_rxd;
      rx_dv_pre <= mii_rx_dv;
   end
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
    if (rx_reset == 1'b1)
       add_preamble <= 1'b0;
    else if (add_preamble_w)
       add_preamble <= 1'b1;
    else if (!mii_rx_dv)
       add_preamble <= 1'b0;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_mac_aclk_en <= 1'b0;
   else
      rx_mac_aclk_en <= ~rx_mac_aclk_en;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      cur_st <= 2'b00;
   end
   else begin
      cur_st <= nxt_st;
   end
end

always @ (*) begin
   case (cur_st)
      2'b00: begin
         if (mii_rxd == 4'h5 && mii_rx_dv && !mii_rx_err)
            nxt_st = 2'b01;
         else
            nxt_st = 2'b00;
      end
      2'b01: begin
         if (mii_rxd == 4'hd && mii_rx_dv && !mii_rx_err)
            nxt_st = 2'b10;
         else if (mii_rxd == 4'h5 && mii_rx_dv && !mii_rx_err)
            nxt_st = 2'b01;
         else 
            nxt_st = 2'b00;
      end
      2'b10: begin
         if (mii_rx_dv) 
            nxt_st = 2'b10;
         else
            nxt_st = 2'b00;
         end
      default: nxt_st = 2'b00;
   endcase
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      preamble_flg <= 1'b0;
   end
   else if (mii_rxd == 4'h5 && mii_rx_dv && !mii_rx_err && cur_st == 2'b01) begin
      preamble_flg <= ~preamble_flg;
   end
   else begin
      preamble_flg <= 1'b0;
   end
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      rx_dv_dl1 <= 1'b0;
      rxd_dl1   <= 4'h0;
   end
   else begin
      rx_dv_dl1 <= rx_dv;
      rxd_dl1   <= rxd;
   end
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_dv <= 1'b0;
   else
      gm_rx_dv <= rx_dv_dl1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_odd_data_ptr <= 1'b0;
   else if (rx_dv == 1'b0)
      rx_odd_data_ptr <= 1'b0;
   else
      rx_odd_data_ptr <= ~rx_odd_data_ptr;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_d <= 8'h0;
   else if ((rx_dv == 1'b1) && (rx_odd_data_ptr == 1'b1))
      gm_rx_d <= {rxd[3:0], rxd_dl1[3:0]};
   else;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
       gm_rx_err <= 1'b0;
   else begin
      if (rx_er == 1'b1)               gm_rx_err <= 1'b1;
      else if (rx_mac_aclk_en == 1'b1) gm_rx_err <= 1'b0;
   end
end


endmodule



//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`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
k9tqoepDssa6U5WJoqOS9tgWB31ZsRZUTNA+uBlqqK4sYjYn5IQk423OuSrCt3DJ
QQIBNQeiuHujWzO/78gYEikwkd/l0vjo0F7MU3SE61prd3sroydFcjL3M6+IeQdT
P7Cs5ER6xxqXBNFAQjCE02LglYkvruSD6LXo/rEq7WmOWDOxQ9PJynpvBkZGN0gU
3blXkCaqz6yJqX6aqt7hTn7Spaoy28BsXHYDZNePtYBYNgB1/eu/SX33ydi1CQXt
X1aoa49Z3tymTM1jDePEPxzVC7g86GH9WovncycvpB+ig8RwxdUkw8JFz/eFwkJ5
KelIQbvR96Crn/O4wBCEGQ==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 22080 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   
//       / / .'     /    
//    __/ /.'      /     
//   __   \       /      
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

module `IP_MODULE_NAME(rgmii_if)#(
    parameter                       RGMII_SYNC_EN = 1
) (
   //Globle Signals
   input                           tx_mac_aclk,
   output  reg                     tx_mac_aclk_en,
   input                           tx_reset,
   output  wire                    rx_mac_aclk,
   output  reg                     rx_mac_aclk_en,
   input                           rx_reset,
   //Configuration Signals
   input           [2:0]           eth_speed,
   input                           rgmii_rxc_edge,//0:DDIO Rising Edge; 1:DDIO Falling Edge; 
   input                           rgmii_txc_dly,//0:rgmii tx clock delay disable; 1:rgmii tx clock delay enable;
   //GMII Interface
   output  reg     [7:0]           gm_rx_d,
   output  reg                     gm_rx_dv,
   output  reg                     gm_rx_err,
   input           [7:0]           gm_tx_d,
   input                           gm_tx_en,
   input                           gm_tx_err,
   //RGMII Interface
   output  wire    [3:0]           rgmii_txd_HI,
   output  wire    [3:0]           rgmii_txd_LO,
   output  wire                    rgmii_tx_ctl_HI,
   output  wire                    rgmii_tx_ctl_LO,
   output  wire                    rgmii_txc_HI,//if rgmii_txc_dly set 0, used clk_125m clock. if rgmii_txc_dly set 1, used clk_125m_90deg clock.
   output  wire                    rgmii_txc_LO,
   input           [3:0]           rgmii_rxd_HI,
   input           [3:0]           rgmii_rxd_LO,
   input                           rgmii_rx_ctl_HI,
   input                           rgmii_rx_ctl_LO,
   input                           rgmii_rxc
   //Status and  Error Signals
);

// Parameter Define 

// Register Define 
reg     [6:0]                   aclk_en_cnt;
reg     [7:0]                   txd;
reg                             tx_en;
reg                             tx_er;
reg     [1:0]                   txc;
reg                             rx_dv_dl1;
reg     [7:0]                   rxd_dl1;
reg                             rx_odd_data_ptr;

// Wire Define
wire                            rx_dv;
wire    [7:0]                   rxd;
wire                            rx_er;

/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/
/*----------------------- Tx Region ----------------------------*/
always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      aclk_en_cnt <= 7'd0;
   else if ((eth_speed == 3'h4) ||
           ((eth_speed == 3'h2) && (aclk_en_cnt == 7'd9)) ||
           ((eth_speed == 3'h1) && (aclk_en_cnt == 7'd99)))
      aclk_en_cnt <= 7'd0;
   else
      aclk_en_cnt <= aclk_en_cnt + 1'b1;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_mac_aclk_en <= 1'b0;
   else if (aclk_en_cnt == 7'd0)
      tx_mac_aclk_en <= 1'b1;
   else
      tx_mac_aclk_en <= 1'b0;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      txd[7:4] <= 4'h0;
   else if((gm_tx_en == 1'b1) && (tx_mac_aclk_en == 1'b1))
      txd[7:4] <= gm_tx_d[7:4];
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      txd[3:0] <= 4'h0;
   else if ((gm_tx_en == 1'b1) && (tx_mac_aclk_en == 1'b1))
      txd[3:0] <= gm_tx_d[3:0];
   else if (((eth_speed == 3'h2) && (aclk_en_cnt == 7'd6)) ||
            ((eth_speed == 3'h1) && (aclk_en_cnt == 7'd51)))
      txd[3:0] <= txd[7:4];
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_en <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
      tx_en <= gm_tx_en;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_er <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
      tx_er <= gm_tx_err;
end
/*
always @(posedge tx_mac_aclk or posedge tx_reset)
begin
    if(tx_reset == 1'b1)
        txc <= 2'b0;
    else
        case(eth_speed)
        3'h4 :
            txc <= 2'b01;
        3'h2 :
            case(rgmii_txc_dly)
            1'b0 ://rgmii tx clock delay disable.
                if((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd5))
                    txc <= 2'b11;
                else if((aclk_en_cnt == 7'd3) || (aclk_en_cnt == 7'd8))
                    txc <= 2'b00;
            1'b1 ://rgmii tx clock delay enable.
                if((aclk_en_cnt == 7'd2) || (aclk_en_cnt == 7'd7))
                    txc <= 2'b11;
                else if((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd5))
                    txc <= 2'b00;
            endcase
        3'h1 :
            case(rgmii_txc_dly)
            1'b0 ://rgmii tx clock delay disable.
                if((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd50))
                    txc <= 2'b11;
                else if((aclk_en_cnt == 7'd25) || (aclk_en_cnt == 7'd75))
                    txc <= 2'b00;
            1'b1 ://rgmii tx clock delay enable.
                if((aclk_en_cnt == 7'd13) || (aclk_en_cnt == 7'd63))
                    txc <= 2'b11;
                else if((aclk_en_cnt == 7'd38) || (aclk_en_cnt == 7'd88))
                    txc <= 2'b00;
            endcase
        default :
            txc <= 2'b0;
        endcase
end

*/
reg [1:0]    txc_100m_r;
reg [1:0]    txc_10m_r;

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       txc_100m_r <= 2'b0;
   else begin
       case(rgmii_txc_dly)
          1'b0 : //rgmii tx clock delay disable.
             if ((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd5))
                txc_100m_r <= 2'b11;
             else if ((aclk_en_cnt == 7'd3) || (aclk_en_cnt == 7'd8))
                txc_100m_r <= 2'b00;
          1'b1 ://rgmii tx clock delay enable.
             if ((aclk_en_cnt == 7'd2) || (aclk_en_cnt == 7'd7))
                txc_100m_r <= 2'b11;
             else if ((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd5))
                txc_100m_r <= 2'b00;
       endcase
   end
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       txc_10m_r <= 2'b0;
   else begin
       case(rgmii_txc_dly)
       1'b0 ://rgmii tx clock delay disable.
           if((aclk_en_cnt == 7'd0) || (aclk_en_cnt == 7'd50))
               txc_10m_r <= 2'b11;
           else if((aclk_en_cnt == 7'd25) || (aclk_en_cnt == 7'd75))
               txc_10m_r <= 2'b00;
       1'b1 ://rgmii tx clock delay enable.
           if((aclk_en_cnt == 7'd13) || (aclk_en_cnt == 7'd63))
               txc_10m_r <= 2'b11;
           else if((aclk_en_cnt == 7'd38) || (aclk_en_cnt == 7'd88))
               txc_10m_r <= 2'b00;
       endcase
   end
end

always @(posedge tx_mac_aclk or posedge tx_reset)
begin
    if(tx_reset == 1'b1)
        txc <= 2'b0;
    else
        case(eth_speed)
            3'h4 :
                txc <= 2'b01;
            3'h2 :
                txc <= txc_100m_r;
            3'h1 :
                txc <= txc_10m_r;
            default :
                txc <= 2'b0;
        endcase
end

/*----------------------- Rx Region ----------------------------*/
assign rx_mac_aclk = rgmii_rxc;

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        rx_mac_aclk_en <= 1'b0;
    else if(eth_speed[2] == 1'b1)
        rx_mac_aclk_en <= 1'b1;
    else
        rx_mac_aclk_en <= ~rx_mac_aclk_en;
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        begin
            rx_dv_dl1 <= 1'b0;
            rxd_dl1 <= 8'h0;
        end
    else
        begin
            rx_dv_dl1 <= rx_dv;
            rxd_dl1 <= rxd;
        end
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        gm_rx_dv <= 1'b0;
    else
        gm_rx_dv <= rx_dv_dl1;
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        rx_odd_data_ptr <= 1'b0;
    else if(rx_dv == 1'b0)
        rx_odd_data_ptr <= 1'b0;
    else
        rx_odd_data_ptr <= ~rx_odd_data_ptr;
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        gm_rx_d <= 8'h0;
    else
        begin
            if((eth_speed[2] == 1'b1) && (rx_dv_dl1 == 1'b1))
                gm_rx_d <= rxd_dl1;
            else if((rx_dv == 1'b1) && (rx_odd_data_ptr == 1'b1))
                gm_rx_d <= {rxd[3:0],rxd_dl1[3:0]};
        end
end

always @(posedge rx_mac_aclk or posedge rx_reset)
begin
    if(rx_reset == 1'b1)
        gm_rx_err <= 1'b0;
    else
        begin
            if(rx_er == 1'b1)
                gm_rx_err <= 1'b1;
            else if(rx_mac_aclk_en == 1'b1)
                gm_rx_err <= 1'b0;
        end
end

/*----------------------- PHY Interface ----------------------------*/
`IP_MODULE_NAME(rgmii) #(
    .RGMII_SYNC_EN                      (RGMII_SYNC_EN                      )
)
u_rgmii
(
//Globle Signals
    .tx_mac_aclk                        (tx_mac_aclk                        ),
    .tx_reset                           (tx_reset                           ),
    .rx_reset                           (rx_reset                           ),
//Configuration Signals
    .eth_speed                          (eth_speed                          ),
    .rgmii_rxc_edge                     (rgmii_rxc_edge                     ),
//Phy Interface
    .txd                                (txd                                ),
    .tx_en                              (tx_en                              ),
    .tx_er                              (tx_er                              ),
    .txc                                (txc                                ),
    .rxd                                (rxd                                ),
    .rx_dv                              (rx_dv                              ),
    .rx_er                              (rx_er                              ),
//RGMII Interface
    .rgmii_txd_HI                       (rgmii_txd_HI                       ),
    .rgmii_txd_LO                       (rgmii_txd_LO                       ),
    .rgmii_tx_ctl_HI                    (rgmii_tx_ctl_HI                    ),
    .rgmii_tx_ctl_LO                    (rgmii_tx_ctl_LO                    ),
    .rgmii_txc_HI                       (rgmii_txc_HI                       ),
    .rgmii_txc_LO                       (rgmii_txc_LO                       ),
    .rgmii_rxd_HI                       (rgmii_rxd_HI                       ),
    .rgmii_rxd_LO                       (rgmii_rxd_LO                       ),
    .rgmii_rx_ctl_HI                    (rgmii_rx_ctl_HI                    ),
    .rgmii_rx_ctl_LO                    (rgmii_rx_ctl_LO                    ),
    .rgmii_rxc                          (rgmii_rxc                          )
);

endmodule


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   
//       / / .'     /    
//    __/ /.'      /     
//   __   \       /      
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************
module `IP_MODULE_NAME(rgmii_sync)
(
//Globle Signals
input                           rgmii_rxc,
input                           rx_reset,
input           [2:0]           eth_speed,
//RGMII Rx Interface Input
input           [3:0]           rgmii_rxd_HI_i,
input           [3:0]           rgmii_rxd_LO_i,
input                           rgmii_rx_ctl_HI_i,
input                           rgmii_rx_ctl_LO_i,
//RGMII Rx Interface Output
output  reg     [3:0]           rgmii_rxd_HI_o,
output  reg     [3:0]           rgmii_rxd_LO_o,
output  reg                     rgmii_rx_ctl_HI_o,
output  reg                     rgmii_rx_ctl_LO_o
);


// Parameter Define 
parameter State_idle     = 2'd0;
parameter State_preamble = 2'd1;
parameter State_data_dl1 = 2'd2;
parameter State_data_dl2 = 2'd3;


// Register Define 
reg     [1:0]                   cur_state;
reg     [1:0]                   next_state;
reg                             preamble_odd;
reg     [3:0]                   rx_d_dl1;
reg                             rx_dv_dl1;
reg     [3:0]                   rx_d_dl2;
reg                             rx_dv_dl2;

// Wire Define

/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/

always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset) begin
      rx_d_dl1      <= 4'h0;
      rx_dv_dl1     <= 1'b0;
      rx_d_dl2      <= 4'h0;
      rx_dv_dl2     <= 1'b0;
   end
   else begin
      rx_d_dl1      <= rgmii_rxd_LO_i;
      rx_dv_dl1     <= rgmii_rx_ctl_HI_i;
      rx_d_dl2      <= rx_d_dl1;
      rx_dv_dl2     <= rx_dv_dl1;
   end
end

/*----------------------- FSM Region ----------------------------*/
always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset) cur_state <= State_idle;
	else          cur_state <= next_state;
end

always @ (*) begin
	case (cur_state)
      State_idle :
         if ((rx_dv_dl1 == 1'b1) && (rx_d_dl1 == 4'h5))
             next_state = State_preamble;
         else
             next_state = State_idle;

      State_preamble : 
         if (rx_dv_dl1 == 1'b0)
            next_state = State_idle;
         else if ((rx_d_dl1 == 4'hd) && (preamble_odd == 1'b0))
            next_state = State_data_dl1;
         else if ((rx_d_dl1 == 4'hd) && (preamble_odd == 1'b1))
            next_state = State_data_dl2;
         else if (rx_d_dl1 != 4'h5)
            next_state = State_idle;
         else
            next_state = State_preamble;
          
      State_data_dl1 :
         if (rx_dv_dl1 == 1'b0)
            next_state = State_idle;
         else
            next_state = State_data_dl1;

      State_data_dl2 :
         if (rx_dv_dl2 == 1'b0)
            next_state = State_idle;
         else
            next_state = State_data_dl2;

      default :
         next_state = State_idle;
    endcase
end

always @ (posedge rgmii_rxc or posedge rx_reset) begin
    if (rx_reset) 
       preamble_odd <= 1'b0;
    else if (cur_state == State_preamble)
       preamble_odd <= ~preamble_odd;
    else
       preamble_odd <= 1'b0;
end

/*----------------------- Sync Output Region ----------------------------*/

always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset)
      rgmii_rxd_LO_o <= 4'h0;
   else if (eth_speed[2] == 1'b1)
      rgmii_rxd_LO_o <= rgmii_rxd_LO_i;
   else if ((cur_state == State_preamble) && (rx_d_dl1 == 4'hd) && (preamble_odd == 1'b1))
      rgmii_rxd_LO_o <= 4'h5;
   else if (cur_state == State_data_dl2)
      rgmii_rxd_LO_o <= rx_d_dl2;
   else
      rgmii_rxd_LO_o <= rx_d_dl1;
end

always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset) 
      rgmii_rxd_HI_o <= 4'h0;
   else if (eth_speed[2] == 1'b1)
      rgmii_rxd_HI_o <= rgmii_rxd_HI_i;
   else
      rgmii_rxd_HI_o <= 4'h0;
end

always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset)
      rgmii_rx_ctl_HI_o <= 1'b0;
   else if (eth_speed[2] == 1'b1)
      rgmii_rx_ctl_HI_o <= rgmii_rx_ctl_HI_i;
   else if ((cur_state == State_preamble) && (rx_d_dl1 == 4'hd) && (preamble_odd == 1'b1))
      rgmii_rx_ctl_HI_o <= 1'b1;
   else if (cur_state == State_data_dl2)
      rgmii_rx_ctl_HI_o <= rx_dv_dl2;
   else
      rgmii_rx_ctl_HI_o <= rx_dv_dl1;
end

always @(posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset)
      rgmii_rx_ctl_LO_o <= 1'b0;
   else if (eth_speed[2] == 1'b1)
      rgmii_rx_ctl_LO_o <= rgmii_rx_ctl_LO_i;
   else if ((cur_state == State_preamble) && (rx_d_dl1 == 4'hd) && (preamble_odd == 1'b1))
      rgmii_rx_ctl_LO_o <= 1'b1;
   else if (cur_state == State_data_dl2)
      rgmii_rx_ctl_LO_o <= rx_dv_dl2;
   else
      rgmii_rx_ctl_LO_o <= rx_dv_dl1;
end

endmodule


/////////////////////////////////////////////////////////////////////////////
//           _____       
//          / _______    Copyright (C) 2013-2020 Efinix Inc. All rights reserved.
//         / /       \   
//        / /  ..    /   
//       / / .'     /    
//    __/ /.'      /     
//   __   \       /      
//  /_/ /\ \_____/ /     
// ____/  \_______/      
//
// *******************************
// Revisions:
// 1.0 Initial rev
//
// *******************************

module `IP_MODULE_NAME(rgmii) #(
    parameter                   RGMII_SYNC_EN = 1
) (
   //Globle Signals
   input                        tx_mac_aclk,
   input                        tx_reset,
   input                        rx_reset,
   //Configuration Signals
   input           [2:0]        eth_speed,
   input                        rgmii_rxc_edge, //0:DDIO Rising Edge; 1:DDIO Falling Edge; 
   //Phy Interface
   input           [7:0]        txd,
   input                        tx_en,
   input                        tx_er,
   input           [1:0]        txc, //if rgmii_txc_dly set 0, used clk_125m clock. if rgmii_txc_dly set 1, used clk_125m_90deg clock.
   output  reg     [7:0]        rxd,
   output  reg                  rx_dv,
   output  reg                  rx_er,
   //RGMII Interface
   output  reg     [3:0]        rgmii_txd_HI,
   output  reg     [3:0]        rgmii_txd_LO,
   output  reg                  rgmii_tx_ctl_HI,
   output  reg                  rgmii_tx_ctl_LO,
   output  reg                  rgmii_txc_HI,
   output  reg                  rgmii_txc_LO,
   input           [3:0]        rgmii_rxd_HI,
   input           [3:0]        rgmii_rxd_LO,
   input                        rgmii_rx_ctl_HI,
   input                        rgmii_rx_ctl_LO,
   input                        rgmii_rxc
   //Status and  Error Signals
);
// Parameter Define 

// Register Define 
reg     [3:0]                   rgmii_rxd_HI_d1;
reg                             rgmii_rx_ctl_HI_d1;
reg     [3:0]                   rgmii_txd_HI_r;
reg     [3:0]                   rgmii_txd_LO_r;
reg                             rgmii_tx_ctl_HI_r;
reg                             rgmii_tx_ctl_LO_r;
reg                             rgmii_txc_HI_r;
reg                             rgmii_txc_LO_r;
// Wire Define
wire                            tx_en_to_ddr;
wire                            rgmii_tx_ctl_int;
wire    [3:0]                   txd_falling;
/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/

/*----------------------- RGMII Tx Region ----------------------------*/
assign tx_en_to_ddr = (eth_speed[2] == 1'b1) ? tx_en : tx_en && (!tx_er);
assign rgmii_tx_ctl_int = tx_en ^ tx_er;

assign txd_falling = (eth_speed[2] == 1'b1) ? txd[7:4] : txd[3:0];

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset) begin
      rgmii_txc_HI_r    <= 1'b0;
      rgmii_txc_LO_r    <= 1'b0;
      rgmii_tx_ctl_HI_r <= 1'b0;
      rgmii_tx_ctl_LO_r <= 1'b0;
      rgmii_txd_HI_r    <= 4'b0;
      rgmii_txd_LO_r    <= 4'b0;
   end 
   else begin
      rgmii_txc_HI_r    <= txc[0];
      rgmii_txc_LO_r    <= txc[1];     
      rgmii_tx_ctl_HI_r <= tx_en_to_ddr;
      rgmii_tx_ctl_LO_r <= rgmii_tx_ctl_int;
      rgmii_txd_HI_r    <= txd[3:0];
      rgmii_txd_LO_r    <= txd_falling;
   end
end


always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset) begin
      rgmii_txc_HI    <= 1'b0;
      rgmii_txc_LO    <= 1'b0;
      rgmii_tx_ctl_HI <= 1'b0;
      rgmii_tx_ctl_LO <= 1'b0;
      rgmii_txd_HI    <= 4'b0;
      rgmii_txd_LO    <= 4'b0;
   end
   else begin
      rgmii_txc_HI    <= rgmii_txc_HI_r;
      rgmii_txc_LO    <= rgmii_txc_LO_r;
      rgmii_tx_ctl_HI <= rgmii_tx_ctl_HI_r;
      rgmii_tx_ctl_LO <= rgmii_tx_ctl_LO_r;
      rgmii_txd_HI    <= rgmii_txd_HI_r;
      rgmii_txd_LO    <= rgmii_txd_LO_r;
   end
end

/*----------------------- RGMII Rx Region ----------------------------*/
//rgmii_rxd & rgmii_rx_ctl
always @ (posedge rgmii_rxc or posedge rx_reset) begin
   if (rx_reset) begin
      rgmii_rxd_HI_d1    <= 4'h0;
      rgmii_rx_ctl_HI_d1 <= 1'b0;
   end 
   else begin
      rgmii_rxd_HI_d1    <= rgmii_rxd_HI;
      rgmii_rx_ctl_HI_d1 <= rgmii_rx_ctl_HI;
   end
end

generate
   if (RGMII_SYNC_EN == 0) begin
      always @ (posedge rgmii_rxc or posedge rx_reset) begin
         if (rx_reset) begin
            rxd[7:4] <= 4'h0;
            rxd[3:0] <= 4'h0;
            rx_dv    <= 1'b0;
            rx_er    <= 1'b0;
         end
         else if (eth_speed[2] == 1'b1) begin //1000M
            if (rgmii_rxc_edge == 1'b0) begin //0:DDIO Rising Edge
               rxd[7:4] <= rgmii_rxd_LO;
               rxd[3:0] <= rgmii_rxd_HI_d1;
               rx_dv    <= rgmii_rx_ctl_HI_d1;
               rx_er    <= rgmii_rx_ctl_HI_d1^rgmii_rx_ctl_LO;
            end
            else begin//1:DDIO Falling Edge
               rxd[7:4] <= rgmii_rxd_HI;
               rxd[3:0] <= rgmii_rxd_LO;
               rx_dv    <= rgmii_rx_ctl_LO;
               rx_er    <= rgmii_rx_ctl_LO^rgmii_rx_ctl_HI;
            end
        end
        else begin //100M or 10M
           rxd[7:4] <= 4'b0;
           rxd[3:0] <= rgmii_rxd_LO;
           rx_dv    <= rgmii_rx_ctl_LO;
           rx_er    <= rgmii_rx_ctl_LO^rgmii_rx_ctl_HI_d1;
        end
     end
   end
   else begin
      reg  [3:0]  rgmii_rxd_HI_i;
      reg  [3:0]  rgmii_rxd_LO_i;
      reg         rgmii_rx_ctl_HI_i;
      reg         rgmii_rx_ctl_LO_i;
      wire [3:0]  rgmii_rxd_HI_sync;
      wire [3:0]  rgmii_rxd_LO_sync;
      wire        rgmii_rx_ctl_HI_sync;
      wire        rgmii_rx_ctl_LO_sync;

      always @ (posedge rgmii_rxc or posedge rx_reset) begin
         if (rx_reset) begin
            rgmii_rxd_HI_i    <= 4'h0;
            rgmii_rxd_LO_i    <= 4'h0;
            rgmii_rx_ctl_HI_i <= 1'b0;
            rgmii_rx_ctl_LO_i <= 1'b0;
         end
         else if (eth_speed[2] == 1'b1) begin //1000M
            if (rgmii_rxc_edge == 1'b0) begin //0:DDIO Rising Edge
               rgmii_rxd_HI_i    <= rgmii_rxd_LO;
               rgmii_rxd_LO_i    <= rgmii_rxd_HI_d1;
               rgmii_rx_ctl_HI_i <= rgmii_rx_ctl_HI_d1;
               rgmii_rx_ctl_LO_i <= rgmii_rx_ctl_LO;
            end
            else begin //1:DDIO Falling Edge
               rgmii_rxd_HI_i    <= rgmii_rxd_HI;
               rgmii_rxd_LO_i    <= rgmii_rxd_LO;
               rgmii_rx_ctl_HI_i <= rgmii_rx_ctl_HI;
               rgmii_rx_ctl_LO_i <= rgmii_rx_ctl_LO;
            end
         end        
         else begin//100M or 10M
            rgmii_rxd_HI_i    <= rgmii_rxd_HI_d1;
            rgmii_rxd_LO_i    <= rgmii_rxd_LO;
            rgmii_rx_ctl_HI_i <= rgmii_rx_ctl_LO;
            rgmii_rx_ctl_LO_i <= rgmii_rx_ctl_HI_d1;
         end
      end

      always @ (posedge rgmii_rxc or posedge rx_reset) begin
         if (rx_reset) begin
            rxd[7:4] <= 4'h0;
            rxd[3:0] <= 4'h0;
            rx_dv    <= 1'b0;
            rx_er    <= 1'b0;
         end
         else begin
            rxd[7:4] <= rgmii_rxd_HI_sync;
            rxd[3:0] <= rgmii_rxd_LO_sync;
            rx_dv    <= rgmii_rx_ctl_HI_sync;
            rx_er    <= rgmii_rx_ctl_HI_sync^rgmii_rx_ctl_LO_sync;
         end
      end
      
      /*----------------------- RGMII Rx Sync Module -----------------------*/
      `IP_MODULE_NAME(rgmii_sync) u_rgmii_sync
      (
      //Globle Signals
          .rgmii_rxc                  (rgmii_rxc                  ),
          .rx_reset                   (rx_reset                   ),
          .eth_speed                  (eth_speed                  ),
      //RGMII Rx Interface Input
          .rgmii_rxd_HI_i             (rgmii_rxd_HI_i             ),
          .rgmii_rxd_LO_i             (rgmii_rxd_LO_i             ),
          .rgmii_rx_ctl_HI_i          (rgmii_rx_ctl_HI_i          ),
          .rgmii_rx_ctl_LO_i          (rgmii_rx_ctl_LO_i          ),
      //RGMII Rx Interface Output
          .rgmii_rxd_HI_o             (rgmii_rxd_HI_sync          ),
          .rgmii_rxd_LO_o             (rgmii_rxd_LO_sync          ),
          .rgmii_rx_ctl_HI_o          (rgmii_rx_ctl_HI_sync       ),
          .rgmii_rx_ctl_LO_o          (rgmii_rx_ctl_LO_sync       )
      );
   end
endgenerate


endmodule


module `IP_MODULE_NAME(rmii_if)
(
//Globle Signals
input                           tx_mac_aclk,
output  reg                     tx_mac_aclk_en,
input                           tx_reset,
output  wire                    rx_mac_aclk,
output  reg                     rx_mac_aclk_en,
input                           rx_reset,
//Configuration Signals
input           [2:0]           eth_speed,
//GMII Interface
output  reg     [7:0]           gm_rx_d,
output  reg                     gm_rx_dv,
output  reg                     gm_rx_err,
input           [7:0]           gm_tx_d,
input                           gm_tx_en,
input                           gm_tx_err,
//RGMII Interface
input                           rmii_clk_ref,
output  reg     [1:0]           rmii_txd,
output  reg                     rmii_tx_en,

input           [1:0]           rmii_rxd,
input                           rmii_crs_dv,
input                           rmii_rx_err

//Status and  Error Signals
);
// Parameter Define 

// Register Define 
reg     [6:0]                   aclk_en_cnt;
reg     [6:0]                   rx_aclk_en_cnt;
reg     [1:0]                   txd;
reg                             tx_en;
reg                             tx_er;
reg                             rx_err_dl1;
reg                             rx_dv_dl1;
reg     [7:0]                   rxd_dl1;
reg     [6:0]                   rx_odd_data_ptr;
reg     [1:0]                   rxd;
reg                             rx_dv;
reg                             rx_er;
reg     [7:0]                   gm_tx_d_temp;
reg                             tx_en_temp;
reg     [6:0]                   txbit_cnt;
reg                             rx_dv_compensate;
reg                             rx_err_compensate;
reg                             rx_err_latch;
reg     [7:0]                   rx_d_compensate;
reg     [6:0]                   rx_compensate_cnt;
// Wire Define

/*----------------------------------------------------------------------------------*\
                                 The main code
\*----------------------------------------------------------------------------------*/

/*----------------------- Tx Region ----------------------------*/
always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      aclk_en_cnt <= 7'd0;
   else if (((eth_speed == 3'h2) && (aclk_en_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (aclk_en_cnt == 7'd39)))
      aclk_en_cnt <= 7'd0;
   else
      aclk_en_cnt <= aclk_en_cnt + 1'b1;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_mac_aclk_en <= 1'b0;
   else if (aclk_en_cnt == 7'd0)
      tx_mac_aclk_en <= 1'b1;
   else
      tx_mac_aclk_en <= 1'b0;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      gm_tx_d_temp <= 8'h0;
   else if ((gm_tx_en == 1'b1) && (tx_mac_aclk_en == 1'b1))
      gm_tx_d_temp <= gm_tx_d;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_en_temp <= 1'b0;
   else if(tx_mac_aclk_en == 1'b1)
      tx_en_temp <= gm_tx_en;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      txbit_cnt <= 7'd0;
   else if (((eth_speed == 3'h2) && (txbit_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (txbit_cnt == 7'd39)))
      txbit_cnt <= 7'd0;
   else if (tx_en_temp == 1'b1)
      txbit_cnt <= txbit_cnt + 1'b1;
   else
      txbit_cnt <= 7'd0; 
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       txd <= 2'h0;
   else if (eth_speed == 3'h2) begin
      case(txbit_cnt[1:0])
         2'b00: txd <= gm_tx_d_temp[1:0];
         2'b01: txd <= gm_tx_d_temp[3:2];
         2'b10: txd <= gm_tx_d_temp[5:4];
         2'b11: txd <= gm_tx_d_temp[7:6];
         default; 
      endcase 
   end 
   else if (eth_speed == 3'h1) begin
      case(txbit_cnt[5:0])
         6'd00: txd <= gm_tx_d_temp[1:0];
         6'd10: txd <= gm_tx_d_temp[3:2];
         6'd20: txd <= gm_tx_d_temp[5:4];
         6'd30: txd <= gm_tx_d_temp[7:6];
         default; 
      endcase 
   end
   else;    
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
      tx_en <= 1'b0;
   else 
      tx_en <= tx_en_temp;
end

always @ (posedge tx_mac_aclk or posedge tx_reset) begin
   if (tx_reset == 1'b1)
       tx_er <= 1'b0;
   else if (tx_mac_aclk_en == 1'b1)
       tx_er <= gm_tx_err;
end

always @ (posedge rmii_clk_ref or posedge tx_reset) begin 
   if (tx_reset == 1'b1) begin
      rmii_tx_en <= 1'b0;
      rmii_txd   <= 2'b0;
   end
   else begin
      rmii_tx_en  <= tx_en;
      rmii_txd    <= txd[1:0];
   end
end

/*----------------------- Rx Region ----------------------------*/
always @(posedge rmii_clk_ref or posedge rx_reset) begin
   if (rx_reset == 1'b1) begin
      rxd   <= 2'b00;
      rx_dv <= 1'b0;
      rx_er <= 1'b0;
   end
   else begin
      rxd   <= rmii_rxd;
      rx_dv <= rmii_crs_dv;
      rx_er <= rmii_rx_err;
   end
end

assign rx_mac_aclk = rmii_clk_ref;

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_aclk_en_cnt <= 7'd0;
   else if (((eth_speed == 3'h2) && (rx_aclk_en_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_aclk_en_cnt == 7'd39)))
      rx_aclk_en_cnt <= 7'd0;
   else
      rx_aclk_en_cnt <= rx_aclk_en_cnt + 1'b1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_mac_aclk_en <= 1'b0;
   else if (rx_aclk_en_cnt == 7'd0)
      rx_mac_aclk_en <= 1'b1;
   else
      rx_mac_aclk_en <= 1'b0;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_odd_data_ptr <= 7'd0;
   else if (((eth_speed == 3'h2) && (rx_odd_data_ptr == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_odd_data_ptr == 7'd39)) || (rx_dv == 1'b0))
      rx_odd_data_ptr <= 7'd0;
   else 
      rx_odd_data_ptr <= rx_odd_data_ptr + 1'b1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_dv_dl1 <= 1'b0;
   else 
      rx_dv_dl1 <= rx_dv; 
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
       rx_err_dl1 <= 1'b0;
   else 
       rx_err_dl1 <= rx_er; 
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rxd_dl1 <= 8'h0;
   else if (eth_speed == 3'h2) begin
      case (rx_odd_data_ptr[1:0])
         2'b00: rxd_dl1[1:0] <= rxd;
         2'b01: rxd_dl1[3:2] <= rxd;
         2'b10: rxd_dl1[5:4] <= rxd;
         2'b11: rxd_dl1[7:6] <= rxd;
         default; 
      endcase 
   end 
   else if (eth_speed == 3'h1) begin
      case (rx_odd_data_ptr[5:0])
         6'd00: rxd_dl1[1:0] <= rxd;
         6'd10: rxd_dl1[3:2] <= rxd;
         6'd20: rxd_dl1[5:4] <= rxd;
         6'd30: rxd_dl1[7:6] <= rxd;
         default; 
      endcase 
   end
   else;    
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_compensate_cnt <= 7'b0;
   else if (rx_dv_dl1 == 1'b1)
      rx_compensate_cnt <= 7'b0;
   else if (((eth_speed == 3'h2) && (rx_compensate_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_compensate_cnt == 7'd39)))
      rx_compensate_cnt <= rx_compensate_cnt;
   else
      rx_compensate_cnt <= rx_compensate_cnt + 1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_dv_compensate <= 1'b0;
   else if (((eth_speed == 3'h2) && (rx_compensate_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_compensate_cnt == 7'd39)))
      rx_dv_compensate <= 1'b0;
   else if ((rx_dv_dl1 == 1'b1) && rx_odd_data_ptr == 7'd0)
      rx_dv_compensate <= 1'b1;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
       rx_err_latch <= 1'b0;
   else begin
      if (rx_dv & rx_er)                rx_err_latch <= 1'b1;
      else if (rx_odd_data_ptr == 7'd0) rx_err_latch <= 1'b0; 
      else                              rx_err_latch <= rx_err_latch;
   end
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_err_compensate <= 1'b0;
   else if (((eth_speed == 3'h2) && (rx_compensate_cnt == 7'd3)) ||
           ((eth_speed == 3'h1) && (rx_compensate_cnt == 7'd39)))
      rx_err_compensate <= 1'b0;
   else if (rx_odd_data_ptr == 7'd0)
      rx_err_compensate <= rx_err_latch;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      rx_d_compensate <= 8'h0;
   else if ((rx_dv_dl1 == 1'b1) && rx_odd_data_ptr == 7'd0)
      rx_d_compensate <= rxd_dl1;
   else;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_dv <= 1'b0;
   else if (rx_mac_aclk_en == 1'b1)
      gm_rx_dv <= rx_dv_compensate;
end


always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_d <= 8'h0;
   else if (rx_mac_aclk_en == 1'b1)
      gm_rx_d <= rx_d_compensate;
   else;
end

always @ (posedge rx_mac_aclk or posedge rx_reset) begin
   if (rx_reset == 1'b1)
      gm_rx_err <= 1'b0;
   else if (rx_mac_aclk_en == 1'b1)
      gm_rx_err <= rx_err_compensate;
end

endmodule



module `IP_MODULE_NAME(efx_mac1gbe) #(
   parameter FAMILY = "TRION",
   parameter VERSION = 32'h20,
   parameter RXFIFO_EN = 1,
   parameter RXFIFO_DTH = 2048,
   parameter TXFIFO_EN = 1,
   parameter TXFIFO_DTH = 2048,
   parameter PHY_INTF_MODE = 0,  
   parameter LOOPBACK_EN = 1'b0,
   parameter GMII_DW = PHY_INTF_MODE == 4 ? 16 : 8,
   parameter AXIS_DW = 8,  
   parameter APBIF = 0,
   parameter NO_PREAMBLE = 0,
   parameter INTER_PACKET_GAP = 6'd12,
   parameter MTU_FRAME_LENGTH = 16'd1518,
   parameter MAC_SOURCE_ADDRESS = 48'h0,
   parameter ENABLE_BROADCAST_FILTERING = 1'b1,
   parameter RGMII_RXC_EDGE = 1'b1,
   parameter RGMII_TXC_DLY = 1'b1,
   parameter PKT_CNT_MAX = 256, 
   parameter SIP600 = 0 
) (
   input                  tx_mac_aclk,
   output                 rx_mac_aclk,
   input                  mac_reset,   
   input                  proto_reset, 
   input                  tx_axis_clk,
   input [AXIS_DW-1:0]    tx_axis_mac_tdata,
   input                  tx_axis_mac_tvalid,
   input                  tx_axis_mac_tlast,
   input [AXIS_DW/8-1:0]  tx_axis_mac_tstrb,
   input                  tx_axis_mac_tuser,
   output                 tx_axis_mac_tready,
   input                  rx_axis_clk,
   output [AXIS_DW-1:0]   rx_axis_mac_tdata,
   output                 rx_axis_mac_tvalid,
   output                 rx_axis_mac_tlast,
   output [AXIS_DW/8-1:0] rx_axis_mac_tstrb,
   output                 rx_axis_mac_tuser,
   input                  rx_axis_mac_tready,
   input                  gm_rx_c,
   input  [GMII_DW-1:0]   gm_rx_d,
   input  [GMII_DW/8-1:0] gm_rx_dv,
   input  [GMII_DW/8-1:0] gm_rx_err,
   output                 gm_tx_c,
   output [GMII_DW-1:0]   gm_tx_d,
   output [GMII_DW/8-1:0] gm_tx_en,
   output [GMII_DW/8-1:0] gm_tx_err,
   output [3:0]           rgmii_txd_HI,
   output [3:0]           rgmii_txd_LO,
   output                 rgmii_tx_ctl_HI,
   output                 rgmii_tx_ctl_LO,
   output                 rgmii_txc_HI,
   output                 rgmii_txc_LO,
   input  [3:0]           rgmii_rxd_HI,
   input  [3:0]           rgmii_rxd_LO,
   input                  rgmii_rx_ctl_HI,
   input                  rgmii_rx_ctl_LO,
   input                  rgmii_rxc,
   input                  mii_txc,
   output [3:0]           mii_txd,
   output                 mii_tx_dv,
   output                 mii_tx_err,
   input                  mii_rxc,
   input  [3:0]           mii_rxd,
   input                  mii_rx_dv,
   input                  mii_rx_err,
   input                  rmii_clk_ref,
   output [1:0]           rmii_txd,
   output                 rmii_tx_en,
   input  [1:0]           rmii_rxd,
   input                  rmii_crs_dv,
   input                  rmii_rx_err,
   input  [9:0]           s_paddr,
   input  [31:0]          s_pwdata,
   input                  s_pwrite,
   input                  s_penable,
   input                  s_psel,
   output [31:0]          s_prdata,
   output                 s_pready,
   output                 s_perr,
   input                  s_axi_aclk,    
   input  [9:0]           s_axi_awaddr,  
   input                  s_axi_awvalid, 
   output                 s_axi_awready, 
   input  [31:0]          s_axi_wdata,   
   input                  s_axi_wvalid,  
   output                 s_axi_wready,  
   output [1:0]           s_axi_bresp,   
   output                 s_axi_bvalid,  
   input                  s_axi_bready,  
   input  [9:0]           s_axi_araddr,  
   input                  s_axi_arvalid, 
   output                 s_axi_arready, 
   output [1:0]           s_axi_rresp,   
   output [31:0]          s_axi_rdata,   
   output                 s_axi_rvalid,  
   input                  s_axi_rready,  
`ifdef ONCHIP_PHY
   input  logic           init_clk,
   input  logic           init_rst_n,
   input  logic           PMA_CMN_READY,
   input  logic           PMA_XCVR_PLLCLK_EN_ACK,
   input  logic [3:0]     PMA_XCVR_POWER_STATE_ACK,
   input  logic           PMA_RX_SIGNAL_DETECT,
   output logic           PMA_XCVR_PLLCLK_EN,
   output logic [3:0]     PMA_XCVR_POWER_STATE_REQ,
   output logic           phy_init_done,
`else
   output                 Mdo,   
   output                 MdoEn, 
   input                  Mdi,   
   output                 Mdc,   
`endif
   output [2:0]           eth_speed
);
`ifdef ONCHIP_PHY
//pragma protect
//pragma protect begin

/* Encryption Envelope */

`pragma protect begin_protected
`pragma protect version = 1
`pragma protect encrypt_agent = "QuestaSim" , encrypt_agent_info = "2023.4"
`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
H1QhdHwPCw4FTFVKfREEloX4Ul+jRhDrKdS6DAFqmR7d1Yc/YiaxRdFdhm/E6pG/
bVdqR9w77voWYg5JTKlSBfXgDWFAEUuMW/7WUzs6aQAC3Hx6XbXh9WZBIyadkXf0
dZnqlxxZSlaMuXnyEq5FKZB4a/mbzZotE0/jjDHZ48QsV7VxKpt2wPnrwHRzRwuZ
pFYg9SUPwbYS06jRoG4rGAnY9X8K2GIubhZbS5S2IAoSIw6Urykxl8J2raTBk7/Q
/kPv/d56MuDf+PqLWMWOtJLGu8FX4CyH3umRY6e9P5q0qJtv/0uUC21+xXvQbnWH
pV93YA7YL4/nAKB63762Lw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4864 )
`pragma protect data_block
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
m7eCK1ymdHqXLWqKpLfogg==
`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 = "2023.4"
`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
mVvgvhMnm94S863IKYifMrYJ8xfsornOKZDgbMsVgTTwruDWBKzXogBG9y5Jlj6b
XxPsSERWYj5leeHtTs+Jcc8niKtaytfMmB2wr0w7AGIFJPm4a6HRr2CgcMXA/EgF
Wr4stv2xlMfuBJ22zmBSZHvjew8HSBWdx+bxKETVlgs1uIPfR2PqreXod30MhUKX
6dztGRSMURXuvohxIZ0x8mhcKhFK6/rfG1UGcimNX12je9YQ4IRVtRoTs3crHEkf
OJC45+yDyUujE0emiPRnQQs456SRPWrZTFZD6wQfqjH45sKauM16wFyeUi18kseE
HZYJHNunZ3i9Y+/GIw2pcA==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 2992 )
`pragma protect data_block
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
8A70A61qnNcIErsfzPiyuw==
`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 = "2023.4"
`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
Y27KIRKJjtKKh8+JhaOdD1HnMIAg1vAy91sb3yHSrZFQan4hrYUVe/4SCk08lPaA
PXSdtIBtBRQob9ZOSyO3lWXXTf7VA1SuyO4smLBwKsVdJOpkfLkl1gUwN1mjEhOF
cbprpE2BqJo6CbKFweajrCBc99YqxRgKnoAI1L8K4otrr4N/DN5JZmawAEUyKcTe
2Hq0vo+1GqvWw/FcUEmaN0xyzectw1YN5gkEW+9fdtQ/3TbGPmIQcNZlztvxAFF9
/bg9GpoVg1wXW6EiStOJXjquDqW0f6BwtmMt4jHyWok+Ep7ra+kkmyMPjADxQ9fT
XJcvfySoe3fbipaNYrwf0g==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4640 )
`pragma protect data_block
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
`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 = "2023.4"
`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
a5V59/f/XBP/nAjarrsl/GQE8850CE8/fC9FKCy4HCDI+XK1qV8AJgmf5FwFbWkE
t45Zr7GI0Qj873B/LA+xlMjZPTl7Fsk9phWnOEFvFSj660Xz5NkKWd6uEyrc4ogU
dh17ioFf59d8S1h6kzq2FA7cTB9mh4VhJ+vi3DMLhYT0HGnL2tOAjQ+tSoPZNIfL
Eh3bbUOr39mLCZWK4W5jFYfYM/mBVryryNU5TJoaskxq2yi8b7W2mdTpHuwq/KhT
ZJsQXjxLm60Q6fplv0BsXxvFsgw9WG+JZ/fTZrODEz1MixxuM1QdPE93Nv6ct/9X
kVFYzxNo5gTVWvU5tCqF9w==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 4800 )
`pragma protect data_block
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
`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 = "2023.4"
`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
n0jqjnfqyF03TrdlGtL2vaRSLWRFaTNK0YPdtS5NLgMBZqaZppLQWa+9QocgYbSa
c5cdHxHlVdxBv0w2ht/Kl0AnnTa3zXpQwpzLm+QZYWERA6CPGQ2iCknciqjkTANl
w3ursi1XnXRnebWfdtyjWpIs4UEfytecbUyUvUD4Ou8xwEqHD82QUpgoF8S1VErM
TXlUFlA+KLqtSnjxLsCJWgZu93+NcfAIrMnyVTMIDYSvq9EdOIgJGV0Hy9Y6sNhU
R06ok2RfjzN0/k1pZoWUA11e4xpRLWuvboDVQRLS662Mr+qC7GUzJw4KP0STpRtl
4AFN5zfv8ZpmxOv7kLZMMw==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 3936 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end


// Module: efx_pulse_sync
// Description:
//   Safely transfers a single-cycle pulse from a source clock domain to a
//   destination clock domain using a toggle-based synchronization scheme.
//
// ==========================================================================

module `IP_MODULE_NAME(efx_pulse_sync) #(
   parameter ACTIVE_LOW = 1, // 0 - Active high reset, 1 - Active low reset
   parameter OFF_ASSERTION = 0
) (
   input  src_clk,      // Source clock (e.g., tx_axis_clk)
   input  src_reset,    // Reset for source domain
   input  pulse_in,     // Single-cycle pulse in src_clk domain

   input  dst_clk,      // Destination clock (e.g., tx_clk)
   input  dst_reset,    // Reset for destination domain
   output pulse_out     // Single-cycle pulse in dst_clk domain
);

// Toggle generation in source clock domain
reg toggle_src;

// Synchronizer flops in destination clock domain
wire toggle_sync;
reg  toggle_sync_r;

generate
   if (ACTIVE_LOW == 1) begin
      always @ (posedge src_clk or negedge src_reset) begin
         if (!src_reset)
            toggle_src <= 1'b0;
         else if (pulse_in)
            toggle_src <= ~toggle_src;
         else
            toggle_src <= toggle_src;
      end

     `IP_MODULE_NAME(efx_asyncreg) #(
        .WIDTH         (1),
        .OFF_ASSERTION (OFF_ASSERTION)
     ) efx_asyncreg_toggle_src (
        .clk     (dst_clk),
        .reset_n (dst_reset),
        .d_i     (toggle_src),
        .d_o     (toggle_sync)
     );
      
      always @ (posedge dst_clk or negedge dst_reset) begin
         if (!dst_reset) begin
            toggle_sync_r <= 1'b0;
         end 
         else begin
            toggle_sync_r <= toggle_sync;  // Delay for edge detect
         end
      end
   end
   else begin
      always @ (posedge src_clk or posedge src_reset) begin
         if (src_reset)
            toggle_src <= 1'b0;
         else if (pulse_in)
            toggle_src <= ~toggle_src;
         else
            toggle_src <= toggle_src;
      end

      `IP_MODULE_NAME(efx_asyncreg) #(
         .WIDTH         (1),
         .ACTIVE_HIGH   (0),
         .OFF_ASSERTION (OFF_ASSERTION)
      ) efx_asyncreg_toggle_src (
         .clk     (dst_clk),
         .reset_n (dst_reset),
         .d_i     (toggle_src),
         .d_o     (toggle_sync)
      );
      
      always @ (posedge dst_clk or posedge dst_reset) begin
         if (!dst_reset) begin
            toggle_sync_r <= 1'b0;
         end 
         else begin
            toggle_sync_r <= toggle_sync;  // Delay for edge detect
         end
      end
   end
endgenerate

// Generate one-cycle pulse in destination domain
assign pulse_out = toggle_sync ^ toggle_sync_r;

endmodule



module `IP_MODULE_NAME(efx_data_pipeline)  #(
    parameter HBP = 1,
    parameter DATA_WIDTH = 256,
    parameter MUX_IN = 1
)(
  input               upstream_valid_i,
  output              upstream_ready_o,
  input      [DATA_WIDTH-1:0]   upstream_data_i,
  output              downstream_valid_o,
  input               downstream_ready_i,
  output     [DATA_WIDTH-1:0]   downstream_data_o,
  input               clk,
  input               resetn
);
//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
Tbn82pu1TrLaH1marliQQwRv6gzQe4dLZbiaDdXI02ngU8GuXkrBXrMRr59b8z1W
VIDY04CDkib1XKwCnqKuOtwgLQ/IobuR8kVjPE6ORJsvRt7mgQZvd/BchqA7xGTe
USNNpjr8UPcpm4TNUTSau8V+9NUwFPyfZUDNuTfn9lcVyh1GKfhuCSdOBVUGzowg
Yo2JYOXIGIe/6FNi+6Idu7BDrgP6B/tqUcgYOnOYaioNvjCVcE9IXQULrsH7905T
hRKI25jvxMb2xnPR1/OvJwvf3vzIGlTkI0/MUkLFw4CYunwAwaCezIKHR2zeInPj
1mciaJyvntFSiQitqooJ/A==
`pragma protect data_method = "aes256-cbc"
`pragma protect encoding = ( enctype = "base64" , line_length = 64 , bytes = 2352 )
`pragma protect data_block
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
`pragma protect end_protected

//pragma protect end

`undef IP_UUID
`undef IP_NAME_CONCAT
`undef IP_MODULE_NAME
