Цитата(lim @ Jul 21 2009, 22:28)

А Вы чуть ниже посмотрите отчёт: net (fanout=5) 3.044 MB_DATA<24>
Это я видел, но не понял, так как ожидал отчета c нарушением setup time, в котором сигнал MB_DATA будет source.
В принципе, констрейны xilinx не очень приятная вещь, не знаю почему. Делается по Constraints Guide, но примеров при этом хочется.
Вот кусок UCF-файла:
Код
# XC2VP50-7FF1152C
net "CLKHT_TX_P0" tnm_net = "CLKHT_TX_P0";
timespec "ts_CLKHT_TX_P0" = period "CLKHT_TX_P0" 400 MHz HIGH 50% priority 5;
net "CLK_125MHZ_TOP_P" tnm_net = "CLK_125MHZ_TOP";
timespec "ts_CLK_125MHZ_TOP" = period "CLK_125MHZ_TOP" 125 MHz HIGH 50%;
net "CLKREF200_HTX_P" tnm_net = "CLK_200MHZ_TOP";
timespec "ts_CLK_200MHZ_TOP" = period "CLK_200MHZ_TOP" 200 MHz HIGH 50% priority 4;
NET "phy/rc0" TNM_NET="rx_clk_0";
timespec "ts_rx_clk_0" = period "rx_clk_0" 400 MHz HIGH 50% priority 6;
NET "phy/rc1" TNM_NET="rx_clk_1";
timespec "ts_rx_clk_1" = period "rx_clk_1" "ts_rx_clk_0" * 1 phase -1.1 ns;
NET "phy/tc" TNM_NET="tx_clk";
timespec "ts_tx_clk" = period "tx_clk" "ts_rx_clk_0" * 1 phase +1.25 ns;
TIMEGRP "tg_phy_rx0" = "rx_clk_0";
TIMEGRP "tg_phy_rx1" = "rx_clk_1" except "rx_clk_0";
TIMESPEC "ts_phy_rx"=FROM "tg_phy_rx1" TO "tg_phy_rx0" 1.25 nS priority 1;
# TX CRC Multicycle
NET "*/crc_calc/data_ce" TNM_NET="tx_crc_data_ce";
NET "*/crc_calc/reg_ce" TNM_NET="tx_crc_reg_ce";
NET "*/crc_calc/start" TNM_NET="tx_crc_start";
NET "*/crc_calc/stop" TNM_NET="tx_crc_stop";
TIMEGRP "tg_tx_crc" = "tx_crc_data_ce" "tx_crc_reg_ce" "tx_crc_start" "tx_crc_stop";
TIMESPEC "TS_tx_crc" = FROM "tg_tx_crc" TO "tg_tx_crc" ts_rx_clk_0 / 2 priority 1;
# RX CRC Multicycle
NET "*/crc_check/data_ce" TNM_NET="rx_crc_data_ce";
NET "*/crc_check/reg_ce" TNM_NET="rx_crc_reg_ce";
NET "*/crc_check/start" TNM_NET="rx_crc_start";
NET "*/crc_check/stop" TNM_NET="rx_crc_stop";
NET "*/crc_check/injection_ce" TNM_NET="rx_crc_injection";
TIMEGRP "tg_rx_crc" = "rx_crc_data_ce" "rx_crc_reg_ce" "rx_crc_start" "rx_crc_stop" "rx_crc_injection";
TIMESPEC "TS_rx_crc" = FROM "tg_rx_crc" TO "tg_rx_crc" ts_rx_clk_0 / 2 priority 1;
Тут, собственно, новых для меня слов было немного:
priority
except
phase
Попробуйте применить TIMEGRP.