问题描述
Virtex-II Pro设计需要哪些限制?
解决/修复方法
EDK 10.1sp3中的Virtex-II Pro设计需要以下约束,并且它们必须附加到顶级UCF文件。
################################################## ##########
#重置路径约束#
#这些约束增加了对#的保护措施
#重置网络中的亚稳态和偏斜。 #
################################################## ##########
NET“* / I_TRIMAC_INST / I_TRIMAC_INST / RXRSTGENNOEN.I_SYNC_RX_RESET_I / RESET_OUT”MAXDELAY = 6100 ps;
NET“* / I_TRIMAC_INST / I_TRIMAC_INST / TXRSTGENNOEN.I_SYNC_TX_RESET_I / RESET_OUT”MAXDELAY = 6100 ps;
NET“* / I_TRIMAC_INST / I_TRIMAC_INST / INT_GMII_MII_RX_RST”MAXDELAY = 6100 ps;
NET“* / I_TRIMAC_INST / I_TRIMAC_INST / I_SYNC_GMII_MII_TX_RESET_I / RESET_OUT”MAXDELAY = 6100 ps;
NET“* / I_TRIMAC_INST / I_TRIMAC_INST / G_SYNC_MGMT_RESET.I_SYNC_MGMT_RESET_HOST_I / RESET_OUT”MAXDELAY = 6100 ps;
################################################## ##########
#RX时钟周期约束#
################################################## ##########
NET“* rx_gmii_mii_clk_int *”TNM_NET =“clk_rx_int”;
TIMEGRP“rx_clock”=“clk_rx_int”;
NET“* gmii_rx_clk *”TNM_NET =“clk_rx_core”;
TIMEGRP“rx_clock_core”=“clk_rx_core”;
TIMESPEC“TS_rx_clk_core”= PERIOD“rx_clock_core”7990 ps HIGH 50%;
################################################## ##########
#TX时钟周期约束#
################################################## ##########
NET“* tx_gmii_mii_clk *”TNM_NET =“clk_tx_gmii”;
TIMEGRP“tx_clock_gmii”=“clk_tx_gmii”;
TIMESPEC“TS_tx_clk_gmii”= PERIOD“tx_clock_gmii”8000 ps HIGH 50%;
NET“* mii_tx_clk *”TNM_NET =“clk_tx_core”;
TIMEGRP“tx_clock_core”=“clk_tx_core”;
TIMESPEC“TS_tx_clk_core”= PERIOD“tx_clock_core”7990 ps HIGH 50%;
################################################## ##########
#时钟域约束的交叉:请不要编辑#
################################################## ##########
#流控制逻辑重新计时
INST“* I_TRIMAC_INST / I_FLOW / I_RX_PAUSE / GOOD_FRAME_TO_TX”TNM =“flow_rx_to_tx”;
INST“* I_TRIMAC_INST / I_FLOW / I_RX_PAUSE / PAUSE_REQ_TO_TX”TNM =“flow_rx_to_tx”;
INST“* I_TRIMAC_INST / I_FLOW / I_RX_PAUSE / PAUSE_VALUE_TO_TX *”TNM =“flow_rx_to_tx”;
TIMESPEC“TS_flow_rx_to_tx”=从“flow_rx_to_tx”到“tx_clock_core”8000 ps DATAPATHONLY;
#配置注册重新计时
INST“* I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_CONF / RX0_OUT *”TNM =“config_to_rx”;
INST“* I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_CONF / RX1_OUT *”TNM =“config_to_rx”;
INST“* I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_CONF / FC_OUT_29”TNM =“config_to_rx”;
TIMESPEC“TS_config_to_rx”=从“config_to_rx”到“rx_clock_core”TIG;
TIMESPEC“TS_rxconfig_to_tx”=从“config_to_rx”到“tx_clock_core”TIG;
INST“* I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_CONF / TX_OUT *”TNM =“config_to_tx”;
INST“* I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_CONF / CNFG_OUT_31”TNM =“config_to_tx”;
INST“* I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_CONF / FC_OUT_30”TNM =“config_to_tx”;
TIMESPEC“TS_config_to_tx”=从“config_to_tx”到“tx_clock_core”TIG;
#speed change config
INST“* I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_CONF / CNFG_OUT_31”TNM =“config_to_gmii”;
INST“* I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_CONF / CNFG_OUT_30”TNM =“config_to_gmii”;
TIMESPEC“TS_config_to_tx_gmii”=从“config_to_gmii”到“tx_clock_gmii”TIG;
TIMESPEC“TS_config_to_rx_gmii”=从“config_to_gmii”到“rx_clock”TIG;
NET sys_clk_s TNM_NET = sys_clk;
TIMEGRP“sys_clk_grp”=“sys_clk”除了“mdio_logic”;
TIMESPEC“TS_host_clk_to_rx_clk”=从“sys_clk_grp”到“rx_clock”TIG;
TIMESPEC“TS_host_clk_to_tx_clk”=从“sys_clk_grp”到“tx_clock_gmii”TIG;
TIMESPEC“TS_host_clk_to_tx_clk_core”=从“sys_clk_grp”到“tx_clock_core”TIG;
TIMESPEC“TS_host_clk_to_rx_clk_core”=从“sys_clk_grp”到“rx_clock_core”TIG;
#地址过滤器特定的交叉时钟
INST“* I_TRIMAC_INST / I_ADDR_FILTER_TOP / dynamic_af_gen.I_DYNAMIC_CONFIG / unicast_addr_ *”TNM =“addr_config_to_rx”;
TIMESPEC“TS_addr_config_to_rx”= FROM“addr_config_to_rx”TO“rx_clock_core”TIG;
################################################## ##########
#MDIO限制:请不要编辑#
################################################## ##########
#将MDIO逻辑放入其自己的时序组中
INST“* / I_TRIMAC_INST / I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_PHY / ENABLE_REG”TNM =“mdc_falling”;
INST“* / I_TRIMAC_INST / I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_PHY / READY_INT”TNM =“mdc_rising”;
INST“* / I_TRIMAC_INST / I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_PHY / STATE_COUNT *”TNM = FFS“mdc_rising”;
INST“* / I_TRIMAC_INST / I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_PHY / MDIO_TRISTATE”TNM =“mdc_falling”;
INST“* / I_TRIMAC_INST / I_TRIMAC_INST / MANIFGEN.I_MANAGEN / I_PHY / MDIO_OUT”TNM =“mdc_falling”;
TIMEGRP“mdio_logic”=“mdc_rising”“mdc_falling”;
TIMESPEC“TS_mdio1”= PERIOD“mdio_logic”400 ns;
TIMESPEC“TS_mdio2”=从“mdc_rising”到“mdc_falling”200 ns;
TIMESPEC“TS_mdio3”=从“mdio_logic”到“sys_clk_grp”“TS_sys_clk_pin”;
TIMESPEC“TS_mdio4”=从“sys_clk_grp”到“mdio_logic”“TS_sys_clk_pin”;
#删除弹性缓冲区中域之间的路径
INST“* WAG_READSYNC *”TNM =“tx_async_reg”;
INST“* INT_CRS”TNM =“tx_async_reg”;
INST“* COL_REG1”TNM =“tx_async_reg”;
INST“* RAG_WRITESYNC *”TNM =“rx_async_reg”;
TIMESPEC“ts_tx_async_regs”= TO“tx_async_reg”TIG;
TIMESPEC“ts_rx_async_regs”= TO“rx_async_reg”TIG;
#需要在LocalLink时钟和rx_client和tx_client时钟之间进行TIG
NET“* / LlinkTemac0_CLK *”TNM_NET =“LLCLK”;
NET“* / RxClientClk_0 *”TNM_NET =“clk_client_rx0”;
NET“* / TxClientClk_0 *”TNM_NET =“clk_client_tx0”;
TIMESPEC“TS_LL_CLK_2_RX_CLIENT_CLK”=从LLCLK到clk_client_rx0 7800 ps DATAPATHONLY;
TIMESPEC“TS_LL_CLK_2_TX_CLIENT_CLK”=从LLCLK到clk_client_tx0 7800 ps DATAPATHONLY;
TIMESPEC“TS_RX_CLIENT_CLK_2_LL_CLK”= FROM clk_client_rx0至LLCLK 7800 ps DATAPATHONLY;
TIMESPEC“TS_TX_CLIENT_CLK_2_LL_CLK”=从clk_client_tx0到LLCLK 7800 ps DATAPATHONLY;
#从BRAM添加到ClientClks
TIMESPEC“TS_BRAM_CLK_2_RX_CLIENT_CLK”=从sys_clk_grp到clk_client_rx0 7800 ps DATAPATHONLY;
TIMESPEC“TS_BRAM_CLK_2_TX_CLIENT_CLK”=从sys_clk_grp到clk_client_tx0 7800 ps DATAPATHONLY;
TIMESPEC“TS_RX_CLIENT_CLK_2_BRAM_CLK”= FROM clk_client_rx0至sys_clk_grp 7800 ps DATAPATHONLY;
TIMESPEC“TS_TX_CLIENT_CLK_2_BRAM_CLK”=从clk_client_tx0到sys_clk_grp 7800 ps DATAPATHONLY;
INST“* WR_ENABLE *”TNM =“tx_async_reg”;
INST“* REG_TX_EN_IN”TNM =“tx_async_reg”;
INST“* REG_TX_ER_IN”TNM =“tx_async_reg”;
NET“* / GMII_TX_E * _TO_PHY”TNM_NET = TX_PHY_ENR;
NET“* / REG_TX_E * _IN”TNM_NET = REG_TX_PHY_ENR;
TIMESPEC“TS_TX_ER_2_TX_REG”=从“TX_PHY_ENR”到“REG_TX_PHY_ENR”TIG;
INST“* / I_TRIMAC_INST / I_TRIMAC_INST / MANIFGEN.I_MANAGEN * OP_INT *”TNM =“hosttomdc”;
INST“* / I_TRIMAC_INST / I_TRIMAC_INST / MANIFGEN.I_MANAGEN * PHY_AD_INT *”TNM =“hosttomdc”;
INST“* / I_TRIMAC_INST / I_TRIMAC_INST / MANIFGEN.I_MANAGEN * REG_AD_INT *”TNM =“hosttomdc”;
INST“* / I_TRIMAC_INST / I_TRIMAC_INST / MANIFGEN.I_MANAGEN * WR_DATA_INT *”TNM =“hosttomdc”;
TIMESPEC“TS_hosttomdc”= FROM“hosttomdc”TIG;
没有回复内容