From 890f743f1a8cdbc804a0a49e8dbc45813edf6e1f Mon Sep 17 00:00:00 2001 From: Rejeesh Kutty Date: Fri, 14 Aug 2015 15:34:30 -0400 Subject: [PATCH] util_jesd_gt-- gt interfaces --- library/util_jesd_gt/util_jesd_gt_ip.tcl | 183 +++++++++++++++-------- 1 file changed, 121 insertions(+), 62 deletions(-) diff --git a/library/util_jesd_gt/util_jesd_gt_ip.tcl b/library/util_jesd_gt/util_jesd_gt_ip.tcl index d49ec7767..f1314199d 100644 --- a/library/util_jesd_gt/util_jesd_gt_ip.tcl +++ b/library/util_jesd_gt/util_jesd_gt_ip.tcl @@ -9,35 +9,73 @@ adi_ip_files util_jesd_gt [list \ adi_ip_properties_lite util_jesd_gt -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.QPLL0_ENABLE')) == 1} \ - [ipx::get_ports qpll0_* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.QPLL1_ENABLE')) == 1} \ - [ipx::get_ports qpll1_* -of_objects [ipx::current_core]] +ipx::remove_all_bus_interface [ipx::current_core] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 0} \ - [ipx::get_ports pll_*_0* -of_objects [ipx::current_core]] \ - [ipx::get_ports cpll_*_0* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 1} \ - [ipx::get_ports pll_*_1* -of_objects [ipx::current_core]] \ - [ipx::get_ports cpll_*_1* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 2} \ - [ipx::get_ports pll_*_2* -of_objects [ipx::current_core]] \ - [ipx::get_ports cpll_*_2* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 3} \ - [ipx::get_ports pll_*_3* -of_objects [ipx::current_core]] \ - [ipx::get_ports cpll_*_3* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 4} \ - [ipx::get_ports pll_*_4* -of_objects [ipx::current_core]] \ - [ipx::get_ports cpll_*_4* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 5} \ - [ipx::get_ports pll_*_5* -of_objects [ipx::current_core]] \ - [ipx::get_ports cpll_*_5* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 6} \ - [ipx::get_ports pll_*_6* -of_objects [ipx::current_core]] \ - [ipx::get_ports cpll_*_6* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 7} \ - [ipx::get_ports pll_*_7* -of_objects [ipx::current_core]] \ - [ipx::get_ports cpll_*_7* -of_objects [ipx::current_core]] +adi_if_infer_bus ADI:user:if_gt_qpll master gt_qpll_0 [list \ + "qpll_rst qpll0_rst "\ + "qpll_ref_clk qpll0_ref_clk_in "] + +adi_if_infer_bus ADI:user:if_gt_qpll master gt_qpll_1 [list \ + "qpll_rst qpll1_rst "\ + "qpll_ref_clk qpll1_ref_clk_in "] + +for {set n 0} {$n < 8} {incr n} { + + adi_if_infer_bus ADI:user:if_gt_pll master gt_pll_${n} [list \ + "pll_rst pll_rst_${n} "\ + "cpll_rst_m cpll_rst_m_${n} "\ + "cpll_ref_clk_in cpll_ref_clk_in_${n} "] + + adi_if_infer_bus ADI:user:if_gt_rx master gt_rx_${n} [list \ + "rx_p rx_${n}_p "\ + "rx_n rx_${n}_n "\ + "rx_rst rx_rst_${n} "\ + "rx_rst_m rx_rst_m_${n} "\ + "rx_gt_rst rx_gt_rst_${n} "\ + "rx_gt_rst_m rx_gt_rst_m_${n} "\ + "rx_pll_locked rx_pll_locked_${n} "\ + "rx_pll_locked_m rx_pll_locked_m_${n} "\ + "rx_user_ready rx_user_ready_${n} "\ + "rx_user_ready_m rx_user_ready_m_${n} "\ + "rx_rst_done rx_rst_done_${n} "\ + "rx_rst_done_m rx_rst_done_m_${n} "\ + "rx_out_clk rx_out_clk_${n} "\ + "rx_clk rx_clk_${n} "\ + "rx_sysref rx_sysref_${n} "\ + "rx_sync rx_sync_${n} "\ + "rx_sof rx_sof_${n} "\ + "rx_data rx_data_${n} "\ + "rx_ip_rst rx_ip_rst_${n} "\ + "rx_ip_sof rx_ip_sof_${n} "\ + "rx_ip_data rx_ip_data_${n} "\ + "rx_ip_sysref rx_ip_sysref_${n} "\ + "rx_ip_sync rx_ip_sync_${n} "\ + "rx_ip_rst_done rx_ip_rst_done_${n} "] + + adi_if_infer_bus ADI:user:if_gt_tx master gt_tx_${n} [list \ + "tx_p tx_${n}_p "\ + "tx_n tx_${n}_n "\ + "tx_rst tx_rst_${n} "\ + "tx_rst_m tx_rst_m_${n} "\ + "tx_gt_rst tx_gt_rst_${n} "\ + "tx_gt_rst_m tx_gt_rst_m_${n} "\ + "tx_pll_locked tx_pll_locked_${n} "\ + "tx_pll_locked_m tx_pll_locked_m_${n} "\ + "tx_user_ready tx_user_ready_${n} "\ + "tx_user_ready_m tx_user_ready_m_${n} "\ + "tx_rst_done tx_rst_done_${n} "\ + "tx_rst_done_m tx_rst_done_m_${n} "\ + "tx_out_clk tx_out_clk_${n} "\ + "tx_clk tx_clk_${n} "\ + "tx_sysref tx_sysref_${n} "\ + "tx_sync tx_sync_${n} "\ + "tx_data tx_data_${n} "\ + "tx_ip_rst tx_ip_rst_${n} "\ + "tx_ip_data tx_ip_data_${n} "\ + "tx_ip_sysref tx_ip_sysref_${n} "\ + "tx_ip_sync tx_ip_sync_${n} "\ + "tx_ip_rst_done tx_ip_rst_done_${n} "] +} set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ [ipx::get_ports rx_p -of_objects [ipx::current_core]] \ @@ -56,31 +94,6 @@ set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE [ipx::get_ports rx_ip_sof -of_objects [ipx::current_core]] \ [ipx::get_ports rx_ip_data -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 0 and \ - spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ - [ipx::get_ports *rx_*0* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 1 and \ - spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ - [ipx::get_ports *rx_*1* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 2 and \ - spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ - [ipx::get_ports *rx_*2* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 3 and \ - spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ - [ipx::get_ports *rx_*3* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 4 and \ - spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ - [ipx::get_ports *rx_*4* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 5 and \ - spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ - [ipx::get_ports *rx_*5* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 6 and \ - spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ - [ipx::get_ports *rx_*6* -of_objects [ipx::current_core]] -set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 7 and \ - spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ - [ipx::get_ports *rx_*7* -of_objects [ipx::current_core]] - set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE')) == 1} \ [ipx::get_ports tx_p -of_objects [ipx::current_core]] \ [ipx::get_ports tx_n -of_objects [ipx::current_core]] \ @@ -96,33 +109,79 @@ set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE [ipx::get_ports tx_ip_sync -of_objects [ipx::current_core]] \ [ipx::get_ports tx_ip_data -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.QPLL0_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_qpll_0 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.QPLL1_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_qpll_1 -of_objects [ipx::current_core]] + +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 0} \ + [ipx::get_bus_interfaces gt_pll_0 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 1} \ + [ipx::get_bus_interfaces gt_pll_1 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 2} \ + [ipx::get_bus_interfaces gt_pll_2 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 3} \ + [ipx::get_bus_interfaces gt_pll_3 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 4} \ + [ipx::get_bus_interfaces gt_pll_4 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 5} \ + [ipx::get_bus_interfaces gt_pll_5 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 6} \ + [ipx::get_bus_interfaces gt_pll_6 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.NUM_OF_LANES')) > 7} \ + [ipx::get_bus_interfaces gt_pll_7 -of_objects [ipx::current_core]] + +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 0 and \ + spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_rx_0 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 1 and \ + spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_rx_1 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 2 and \ + spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_rx_2 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 3 and \ + spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_rx_3 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 4 and \ + spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_rx_4 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 5 and \ + spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_rx_5 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 6 and \ + spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_rx_6 -of_objects [ipx::current_core]] +set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.RX_NUM_OF_LANES')) > 7 and \ + spirit:decode(id('MODELPARAM_VALUE.RX_ENABLE')) == 1} \ + [ipx::get_bus_interfaces gt_rx_7 -of_objects [ipx::current_core]] + set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_NUM_OF_LANES')) > 0 and \ spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE')) == 1} \ - [ipx::get_ports *tx_*0* -of_objects [ipx::current_core]] + [ipx::get_bus_interfaces gt_tx_0 -of_objects [ipx::current_core]] set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_NUM_OF_LANES')) > 1 and \ spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE')) == 1} \ - [ipx::get_ports *tx_*1* -of_objects [ipx::current_core]] + [ipx::get_bus_interfaces gt_tx_1 -of_objects [ipx::current_core]] set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_NUM_OF_LANES')) > 2 and \ spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE')) == 1} \ - [ipx::get_ports *tx_*2* -of_objects [ipx::current_core]] + [ipx::get_bus_interfaces gt_tx_2 -of_objects [ipx::current_core]] set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_NUM_OF_LANES')) > 3 and \ spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE')) == 1} \ - [ipx::get_ports *tx_*3* -of_objects [ipx::current_core]] + [ipx::get_bus_interfaces gt_tx_3 -of_objects [ipx::current_core]] set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_NUM_OF_LANES')) > 4 and \ spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE')) == 1} \ - [ipx::get_ports *tx_*4* -of_objects [ipx::current_core]] + [ipx::get_bus_interfaces gt_tx_4 -of_objects [ipx::current_core]] set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_NUM_OF_LANES')) > 5 and \ spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE')) == 1} \ - [ipx::get_ports *tx_*5* -of_objects [ipx::current_core]] + [ipx::get_bus_interfaces gt_tx_5 -of_objects [ipx::current_core]] set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_NUM_OF_LANES')) > 6 and \ spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE')) == 1} \ - [ipx::get_ports *tx_*6* -of_objects [ipx::current_core]] + [ipx::get_bus_interfaces gt_tx_6 -of_objects [ipx::current_core]] set_property enablement_dependency {spirit:decode(id('MODELPARAM_VALUE.TX_NUM_OF_LANES')) > 7 and \ spirit:decode(id('MODELPARAM_VALUE.TX_ENABLE')) == 1} \ - [ipx::get_ports *tx_*7* -of_objects [ipx::current_core]] + [ipx::get_bus_interfaces gt_tx_7 -of_objects [ipx::current_core]] set_property driver_value 0 [ipx::get_ports -filter "direction==in" -of_objects [ipx::current_core]] -ipx::remove_all_bus_interface [ipx::current_core] ipx::save_core [ipx::current_core]