реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Multi-Cycle Paths Assignments (XILINX) не проходят
lim
сообщение Jul 21 2009, 11:45
Сообщение #1


Частый гость
**

Группа: Участник
Сообщений: 101
Регистрация: 27-05-05
Пользователь №: 5 486



Здравствуйте!
Вот решил в ISE10.1 применить constraints: Multi-Cycle Paths Assignments.

1. Есть шина данных Microblaze: MB_DATA, тактирующаяся SYS_CLK.
Она подаётся для управления на несколько других модулей, работающих в различных тактовых доменах.
Вопросы, связанные с синхронизаторами решены.
Раньше я просто объявлял данные сигналы как False Path:
TIMESPEC TS_SYSCLK_2_GENCLK = FROM "SYS_CLK" TO "GEN_CLK" TIG;

Сейчас решил сделать по другому - как Multi-Cycle Paths Assignments.

NET "MB_DATA<*>" TNM_NET = MB_DATA;
TIMESPEC TS_MB_DATA = FROM "MB_DATA" TO "FFS" TS_GEN_CLK * 2;

Здесь TS_GEN_CLK = 3.333ns


Вообщем после Implementation смотрю ошибки в Static Timing Analyzer (см. в конце).
Получается, что не проходит данное constraint: Хоть и задан timing=TS_GEN_CLK * 2, т.е. в два раза больший,
а Timing Analyzer берёт почему-то единичный.

Что неправильно задано в Constraint ?


2. И ещё сопутствующий вопрос по Multi-Cycle Paths Assignments.
Допустим хочу организовать группу по "clk_enable".
NET "clk_enable" TNM_NET = clk_enable;

а дальше - как использовать "FROM TO" constraints ? Пока видится только такой способ:

TIMESPEC TS_clk_enable= FROM "clk_enable" TO "FFS" TS_ANY_CLK * 3;

Если кто-то сбросит пару примеров, как в реалии пользовать Multi-Cycle Paths Assignments
буду очень признателен !

С Уважением,
Игорь
-----------------------------------------------------------------------------------------------------------------------

Slack: -0.527ns (requirement - (data path - clock path skew + uncertainty))
Source: my_microblaze/GPIO_DATA/GPIO_DATA/gpio_core_1/gpio_Data_Out_7 (FF)
Destination: my_tstgen/data_reg_24 (FF)
Requirement: 3.333ns
Data Path Delay: 3.473ns (Levels of Logic = 0)
Clock Path Skew: -0.194ns (2.920 - 3.114)
Source Clock: SYS_CLK rising at 0.000ns
Destination Clock: GEN_CLK rising at 3.333ns
Clock Uncertainty: 0.193ns

Maximum Data Path: my_microblaze/GPIO_DATA/GPIO_DATA/gpio_core_1/gpio_Data_Out_7 to my_tstgen/data_reg_24
Delay type Delay(ns) Logical Resource(s)
---------------------------- -------------------
Tcko 0.441 my_microblaze/GPIO_DATA/GPIO_DATA/gpio_core_1/gpio_Data_Out_7
net (fanout=5) 3.044 MB_DATA<24>
Tdick -0.012 my_tstgen/data_reg_24
---------------------------- ---------------------------
Total 3.473ns (0.429ns logic, 3.044ns route)
(12.4% logic, 87.6% route)
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Jul 21 2009, 13:40
Сообщение #2


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Цитата(lim @ Jul 21 2009, 15:45) *
NET "MB_DATA<*>" TNM_NET = MB_DATA;
-----------------------------------------------------------------------------------------------------------------------
Source: my_microblaze/GPIO_DATA/GPIO_DATA/gpio_core_1/gpio_Data_Out_7 (FF)
Destination: my_tstgen/data_reg_24 (FF)


не вижу связи между названиями сигналов в констрейнах и отчете STA,
Go to the top of the page
 
+Quote Post
lim
сообщение Jul 21 2009, 18:28
Сообщение #3


Частый гость
**

Группа: Участник
Сообщений: 101
Регистрация: 27-05-05
Пользователь №: 5 486



Цитата(Shtirlits @ Jul 21 2009, 16:40) *
не вижу связи между названиями сигналов в констрейнах и отчете STA,


А Вы чуть ниже посмотрите отчёт: net (fanout=5) 3.044 MB_DATA<24>

То что вы упомянули - это выходной "FF" порта MICROBLAZE ( тактовый домен SYS_CLK ) и далее через цепь MB_DATA<24> приходит на "FF" в тактовом домене GEN_CLK.

Вообщем тут я похоже разобрался - группу "MB_DATA" надо поставить после TO:

TIMESPEC TS_MB_DATA = FROM "SYS_CLK" TO "MB_DATA" TS_GEN_CLK * 2;

А вот за примеры по второму пункту вопроса - буду очень признателен !
Go to the top of the page
 
+Quote Post
Shtirlits
сообщение Jul 21 2009, 21:00
Сообщение #4


Знающий
****

Группа: Свой
Сообщений: 845
Регистрация: 18-10-04
Из: Pereslavl-Zalessky, Russian Federation
Пользователь №: 905



Цитата(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.
Go to the top of the page
 
+Quote Post
lim
сообщение Jul 22 2009, 10:03
Сообщение #5


Частый гость
**

Группа: Участник
Сообщений: 101
Регистрация: 27-05-05
Пользователь №: 5 486



Цитата(Shtirlits @ Jul 22 2009, 00:00) *
Это я видел, но не понял, так как ожидал отчета c нарушением setup time, в котором сигнал MB_DATA будет source.

В принципе, констрейны xilinx не очень приятная вещь, не знаю почему. Делается по Constraints Guide, но примеров при этом хочется.

Вот кусок UCF-файла:

Тут, собственно, новых для меня слов было немного:
priority
except
phase

Попробуйте применить TIMEGRP.


Спасибо за пример ! Посмотрю
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 17:49
Рейтинг@Mail.ru


Страница сгенерированна за 0.01382 секунд с 7
ELECTRONIX ©2004-2016