<?xml version="1.0"?>
<lsccip:ip version="1.0"
    xmlns:lsccip="http://www.latticesemi.com/XMLSchema/Radiant/ip"
    xmlns:xi="http://www.w3.org/2001/XInclude">

  <lsccip:general>
    <lsccip:vendor>latticesemi.com</lsccip:vendor>
    <lsccip:library>ip</lsccip:library>
    <lsccip:name>xaui</lsccip:name>
    <lsccip:display_name>XAUI</lsccip:display_name>
    <lsccip:version>1.2.0</lsccip:version>
    <lsccip:category>Connectivity</lsccip:category>
    <lsccip:min_radiant_version>3.0</lsccip:min_radiant_version>
    <lsccip:supported_products>
      <lsccip:supported_family name="LFCPNX">
			<lsccip:supported_device name="LFCPNX-100"/>
			<lsccip:supported_device name="LFCPNX-50"/>
	  </lsccip:supported_family>
	  <lsccip:supported_family name="LAV-AT">
		    <lsccip:supported_device name="LAV-AT-X30"/>
		    <lsccip:supported_device name="LAV-AT-G30"/>
		    <lsccip:supported_device name="LAV-AT-X50"/>
		    <lsccip:supported_device name="LAV-AT-G50"/>
		    <lsccip:supported_device name="LAV-AT-X70"/>
		    <lsccip:supported_device name="LAV-AT-G70"/>
	  </lsccip:supported_family>
          <lsccip:supported_family name="LN2-MH">
		    <lsccip:supported_device name="LN2-MH-16"/>
		    <lsccip:supported_device name="LN2-MH-20"/>
          </lsccip:supported_family>
          <lsccip:supported_family name="LN2-CT">
		    <lsccip:supported_device name="LN2-CT-16"/>
		    <lsccip:supported_device name="LN2-CT-20"/>
          </lsccip:supported_family>
    </lsccip:supported_products>
	<lsccip:supported_platforms>
            <lsccip:supported_platform name="radiant"/>
            <lsccip:supported_platform name="esi"/>
        </lsccip:supported_platforms>
  </lsccip:general>

  <lsccip:settings>
    <lsccip:setting id                 = "FAMILY"
                    type               = "param"
                    conn_mod           = "lscc_xaui"
                    value_type         = "string"
                    title              = "Fam"
                    value_expr         = "runtime_info.device_info.architecture(1)"
                    editable           = "False"
                    hidden             = "True"
                    group1             = "General"
    />
    <lsccip:setting id                 = "DEVICE"
                    type               = "param"
                    conn_mod           = "lscc_xaui"
                    value_type         = "string"
                    title              = "Fam"
                    value_expr         = "runtime_info.device_info.device(1)"
                    editable           = "False"
                    hidden             = "True"
                    group1             = "General"
    />
    <lsccip:setting id                 = "CTRL_EN"
                    type               = "param"
                    conn_mod           = "lscc_xaui"
                    value_type         = "bool"
                    title              = "Enable Control signals"
                    default            = "False"
                    group1             = "General"
    />

	<lsccip:setting id                 = "DATA_INTERFACE"
					type               = "param"
					conn_mod           = "lscc_ten_gbe_phy_mac"
					value_type         = "string"
					title              = "Host Interface"
                    value_expr         = "'APB' if FAMILY == 'LFCPNX' else 'AXI4-lite'"
					options            = "[('AXI4-lite'), ('APB')] if (FAMILY == 'LAV-AT') else [('APB')]" 
                    hidden             = "(FAMILY == 'LFCPNX')"
                    editable           = "(FAMILY == 'LAV-AT')"
					group1             = "General"
	 />
	 <lsccip:setting
                     id                 = "LANE_ID_MPPHY"
                     type               = "param"
                     conn_mod           = "lscc_ten_gbe_phy_mac"
                     value_type         = "string"
                     title              = "PCS Lane ID"
                     options            = "['AUTO', '0', '4'] if ((DEVICE == 'LN2-CT-16') or (DEVICE == 'LN2-CT-20')) else 
										 ['AUTO','0','4','8'] if ((DEVICE == 'LAV-AT-X30') or (DEVICE == 'LAV-AT-G30')) else
										 ['AUTO','0','4','8','12'] if ((DEVICE == 'LAV-AT-X50') or (DEVICE == 'LAV-AT-G50')) else
										 ['AUTO','0','4','8','12','16','20','24']"
                     default            = "AUTO"
					 editable           = "(FAMILY == 'LAV-AT')"
					 hidden             = "(FAMILY == 'LFCPNX')"
					 group1             = "General"
	 />
	 <lsccip:setting
                     id                 = "LANE_ID"
                     type               = "param"
                     conn_mod           = "lscc_ten_gbe_phy_mac"
                     value_type         = "string"
                     title              = "PCS Lane ID"
                     options            = "['0', '4'] if DEVICE == 'LFCPNX-100' else ['0']"
                     default            = "0"
					 editable           = "(FAMILY == 'LFCPNX')"
					 hidden             = "(FAMILY == 'LAV-AT')"
					 group1             = "General"
	 />
	 <lsccip:setting id                 = "APB_EN"
                    type               = "param"
                    conn_mod           = "lscc_xaui"
                    value_type         = "bool"
                    title              = "Enable APB IF signals"
                    default            = "True"
                    hidden             = "True"
                    group1             = "General"
    />
    <lsccip:setting id                 = "TX_SLIP_BUF"
                    type               = "param"
                    conn_mod           = "lscc_xaui"
                    value_type         = "bool"
                    title              = "Enable TX CTC"
                    default            = "False"
                    hidden             = "True"
                    group1             = "General"
    />
	<lsccip:setting id                 = "RX_SLIP_BUF"
                    type               = "param"
                    conn_mod           = "lscc_xaui"
                    value_type         = "bool"
                    title              = "Enable RX CTC"
                    default            = "False"
                    hidden             = "True"
                    group1             = "General"
    />
  </lsccip:settings>

  <lsccip:ports>
    <!-- Clock and reset -->
    <lsccip:port name       = "reset_n_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "reset_n_i"
    />

    <lsccip:port name       = "clk_156_rx_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "clk_156_rx_i"
				 stick_low  = "FAMILY =='LAV-AT'"
    />

    <lsccip:port name       = "clk_156_tx_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "clk_156_tx_i"
				 stick_low  = "FAMILY =='LAV-AT'"
    />

    <lsccip:port name       = "clk_xgmii_tx_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "clk_xgmii_tx_o"
    />

    <lsccip:port name       = "clk_xgmii_rx_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "clk_xgmii_rx_o"
    />
    <!-- Serdes -->
    <lsccip:port name       = "refclkp_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "refclkp_i"
    />

    <lsccip:port name       = "refclkn_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "refclkn_i"
    />

    <lsccip:port name       = "hdinp0_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdinp0_i"
    />

    <lsccip:port name       = "hdinn0_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdinn0_i"
    />

    <lsccip:port name       = "hdinp1_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdinp1_i"
    />

    <lsccip:port name       = "hdinn1_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdinn1_i"
    />

    <lsccip:port name       = "hdinp2_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdinp2_i"
    />

    <lsccip:port name       = "hdinn2_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdinn2_i"
    />

    <lsccip:port name       = "hdinp3_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdinp3_i"
    />

    <lsccip:port name       = "hdinn3_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdinn3_i"
    />

    <lsccip:port name       = "hdoutp0_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdoutp0_o"
    />

    <lsccip:port name       = "hdoutn0_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdoutn0_o"
    />

    <lsccip:port name       = "hdoutp1_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdoutp1_o"
    />

    <lsccip:port name       = "hdoutn1_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdoutn1_o"
    />

    <lsccip:port name       = "hdoutp2_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdoutp2_o"
    />

    <lsccip:port name       = "hdoutn2_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdoutn2_o"
    />

    <lsccip:port name       = "hdoutp3_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdoutp3_o"
    />

    <lsccip:port name       = "hdoutn3_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "hdoutn3_o"
    />


    <!-- XGMII IF -->
    <lsccip:port name       = "xgmii_txd_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "xgmii_txd_i"
                 range      = "(63, 0)"
    />

    <lsccip:port name       = "xgmii_txc_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "xgmii_txc_i"
                 range      = "(7, 0)"
    />

    <lsccip:port name       = "xgmii_rxd_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "xgmii_rxd_o"
                 range      = "(63, 0)"
    />

    <lsccip:port name       = "xgmii_rxc_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "xgmii_rxc_o"
                 range      = "(7, 0)"
    />

    <!-- MISC IF -->
    <lsccip:port name       = "ready_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "ready_o"
    />

    <!-- CRTL IF -->
    <lsccip:port name       = "mca_resync_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "mca_resync_i"
                 stick_low  = "CTRL_EN != True"
    />

    <lsccip:port name       = "mca_auto_resync_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "mca_auto_resync_i"
                 stick_high  = "CTRL_EN != True"
    />

    <lsccip:port name       = "mca_sync_status_o"
                 dir        = "out"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "mca_sync_status_o"
                 dangling   = "CTRL_EN != True"
    />
	
	<lsccip:port name       = "sysbus_clk_i"
                 dir        = "in"
                 conn_mod   = "lscc_xaui"
                 conn_port  = "sysbus_clk_i"
    />
<!-- APB -->    
	 <lsccip:port
		 name                 = "apb_psel_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "apb_psel_i "
		 stick_low            = "DATA_INTERFACE=='AXI4-lite'"
		 bus_interface        = "APB_S0"
	 />
	 <lsccip:port
		 name                 = "apb_paddr_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "apb_paddr_i"
		 range                = "(31, 0)"
		 stick_low            = "DATA_INTERFACE=='AXI4-lite' "
		 bus_interface        = "APB_S0"
	 />
	 <lsccip:port
		 name                 = "apb_pwdata_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "apb_pwdata_i "
		 range                = "(31, 0)"
		 stick_low            = "DATA_INTERFACE=='AXI4-lite'"
		 bus_interface        = "APB_S0"
	 />
	 <lsccip:port
		 name                 = "apb_pwrite_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "apb_pwrite_i "
		 stick_low            = "DATA_INTERFACE=='AXI4-lite'"
		 bus_interface        = "APB_S0"
	 />
	 <lsccip:port
		 name                 = "apb_penable_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "apb_penable_i "
		 stick_low            = "DATA_INTERFACE=='AXI4-lite'"
		 bus_interface        = "APB_S0"
	 />
	 <lsccip:port
		 name                 = "apb_pready_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "apb_pready_o"
		 dangling             = "DATA_INTERFACE=='AXI4-lite'"
		 bus_interface        = "APB_S0"
	 />
	 <lsccip:port
		 name                 = "apb_prdata_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "apb_prdata_o"
		 range                = "(31, 0)"
		 dangling             = "DATA_INTERFACE=='AXI4-lite'"
		 bus_interface        = "APB_S0"
	/>
	 <lsccip:port
		 name                 = "apb_pslverr_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "apb_pslverr_o"
		 dangling             = "DATA_INTERFACE=='AXI4-lite'"
		 bus_interface        = "APB_S0"
	 />
<!-- AXI4-lite -->

	 <lsccip:port
		 name                 = "axi4l_awaddr_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_awaddr_i"
		 range                = "(31, 0)"
		 stick_low            = "DATA_INTERFACE=='APB' "
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_awvalid_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_awvalid_i"
		 stick_low            = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_awready_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_awready_o"
		 dangling             = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <!--lsccip:port
		 name                 = "axi4l_awprot_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_awprot_i"
		 range                = "(2, 0)"
		 stick_low            = "DATA_INTERFACE=='APB' or DATA_INTERFACE=='MDIO'"
		 bus_interface        = "AXI4L_S0"
	 /-->
	 <lsccip:port
		 name                 = "axi4l_wdata_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_wdata_i"
		 range                = "(31, 0)"
		 stick_low            = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_wstrb_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_wstrb_i"
		 range                = "(3, 0)"
		 stick_low            = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_wvalid_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_wvalid_i"
		 stick_low            = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_wready_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_wready_o"
		 dangling             = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_bresp_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_bresp_o"
		 range                = "(1, 0)"
		 dangling             = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	/>
	<lsccip:port
		 name                 = "axi4l_bvalid_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_bvalid_o"
		 dangling             = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_bready_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_bready_i"
		 stick_low            = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_araddr_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_araddr_i"
		 range                = "(31, 0)"
		 stick_low            = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_arvalid_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_arvalid_i"
		 stick_low            = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_arready_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_arready_o"
		 dangling             = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <!--lsccip:port
		 name                 = "axi4l_arprot_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_arprot_i"
		 range                = "(2, 0)"
		 stick_low            = "DATA_INTERFACE=='APB' or DATA_INTERFACE=='MDIO'"
		 bus_interface        = "AXI4L_S0"
	 /-->
	 <lsccip:port
		 name                 = "axi4l_rdata_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_rdata_o"
		 range                = "(31, 0)"
		 dangling             = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_rresp_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_rresp_o"
		 range                = "(1, 0)"
		 dangling             = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_rvalid_o"
		 dir                  = "out"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_rvalid_o"
		 dangling             = "DATA_INTERFACE=='APB'"
		bus_interface        = "AXI4L_S0"
	 />
	 <lsccip:port
		 name                 = "axi4l_rready_i"
		 dir                  = "in"
		 conn_mod             = "lscc_xaui"
		 conn_port            = "axi4l_rready_i"
		 stick_low            = "DATA_INTERFACE=='APB'"
		 bus_interface        = "AXI4L_S0"
	 />
  </lsccip:ports>
    <lsccip:outFileConfigs>
    <lsccip:fileConfig name="wrapper" file_suffix="sv" file_description="top_level_system_verilog"></lsccip:fileConfig>
  </lsccip:outFileConfigs> 
  <xi:include href="bus_interface.xml" parse="xml" />
  <xi:include href="memory_map.xml" parse="xml" />
</lsccip:ip>
