Jump to content

    
Sign in to follow this  
Koluchiy

? по констрейнам для Xilinx

Recommended Posts

Здравствуйте, уважаемые гуру.

 

Работая с Альтерой, обнаружил пробел в знаниях на тему Xilinx, который не удалось с ходу разрешить через хелп и доки.

 

Вот есть входные и выходные сигналы, временные характеристики которых не нужно анализировать.

Светодиоды всякие и прочие кнопки.

Альтера требует, чтобы для таких сигналов в явном виде было задано false path, иначе ругается в отчете Time Quest'а и вообще работает криво, если есть необконстрейненные пути.

 

По Xilinx cкладывается впечатление, что оно по умолчанию эти сигналы не анализирует, если на них не задано ограничений.

Так ли это, и где про это в явном виде написано?

 

ISE 12.3.

 

Всем заранее спасибо за ответы.

Share this post


Link to post
Share on other sites

Спасибо за ответ. Что такое 45 в выражении 34/45?

 

Я в общем в курсе, что такое TIG.

Но в упомянутом Вами документе он рассматривается применительно к путям между регистрами, а не между регистрами и пинами.

 

Соответственно, есть 2 вопроса:

1) Применяется ли TIG для обозначения False Path между триггерами и пинами.

2) Нужно ли это делать в явном виде, т.е. прописывать TIG для каждого пина. Или среда сама считает, что если этих констрейнов нет, то оно без разницы?

Share this post


Link to post
Share on other sites

2 Koluchiy

Касательно 34/45 - опечатался - имелось ввиду страницы 34 и 35 (в количестве 2х штук :laughing: )

 

Касательно вопроса№1 - да, вам никто не мешает сделать так:

TIMESPEC TS_GFalsePath_0 = FROM PADS TO FFS TIG;
TIMESPEC TS_GFalsePath_1 = FROM FFS TO PADS TIG;

В данном конкретном примере сказано что не нужно анализировать все пути от лап до FF-ов и от FF-ов до лап. Чтобы выбрать какую т оконкретную группу лап или FF-ов нужно сделать свою группу. Примерчик можете глянуть вот тут на странице 29.

 

Касательно вопроса№2 - вы можете использовать * и другие методы чтобы не писать всё ручками.

На сколько я понял главное отличие временного анализа у хилых от альтеры - если ты не задал какой-то констрейн - это твои личные проблемы - никто тебе об этом в отдельной табличке не скажет(если это не частота конечно :) ).

Share this post


Link to post
Share on other sites

То есть, правильно - делать

TIMESPEC TS_GFalsePath_0 = FROM PADS TO FFS TIG;
TIMESPEC TS_GFalsePath_1 = FROM FFS TO PADS TIG;

,

а для тех ног, которые не без разницы, задавать дополнительные констрейны?

 

На сколько я понял главное отличие временного анализа у хилых от альтеры - если ты не задал какой-то констрейн - это твои личные проблемы - никто тебе об этом в отдельной табличке не скажет

Не, сделать репорт необконстрейненных путей можно :).

Share this post


Link to post
Share on other sites

Касательно

То есть, правильно - делать

TIMESPEC TS_GFalsePath_0 = FROM PADS TO FFS TIG;
TIMESPEC TS_GFalsePath_1 = FROM FFS TO PADS TIG;

,

а для тех ног, которые не без разницы, задавать дополнительные констрейны?...

нет, так будет много крика на счёт constraint resolve - как он сделает этот самый constraint resolve утверждать не берусь (для примера, делал макетный дизайн недавно для V7 на ISE 14.1 - не указал там что у меня exclusive clock-и и он мне начал писать что "от я ща отрезолвлю тебе это всё дело", так как железа нет под рукой - хз что она там может нарезолвить, потому указал стандартно:

# define SYS/ADC clocks like exclusive - NO constraint interactions
TIMESPEC TS_sys_adc_clk_false_path = FROM sys_clk     TO adc_a_clk_0 TIG;
TIMESPEC TS_adc_sys_clk_false_path = FROM adc_a_clk_0 TO sys_clk     TIG;

желание "отрезолвить" пропало :biggrin: ). Правильно будет создать группы сигналов на которые хочется наложить разные false_path и с ними работать. Или же просто не констрейнте те лапы которые должны быть TIG.

 

Касательно

...сделать репорт необконстрейненных путей можно :)
что то не припоминаю сходу, может подскажете?

Share this post


Link to post
Share on other sites
Или же просто не констрейнте те лапы которые должны быть TIG

И чего она с ними сделает, с необконстрейненными лапами?

Это ж главный вопрос всей темы :).

 

что то не припоминаю сходу, может подскажете?

В Generate Post P&R Static Timing - настройка "Unconstrained Paths" должна содержать максимальное число путей.

Сам отчет - в Plan Ahead.

По крайней мере, в 12.3 так.

 

недавно для V7 на ISE 14.1

Пользуясь случаем, как в 14.1 с глюками? :)

Share this post


Link to post
Share on other sites
И чего она с ними сделает, с необконстрейненными лапами?

Это ж главный вопрос всей темы :).

Хилые с необконстрейнеными лапами делают то же самое что и альтеры - ничего. В принципе эту ситуацию можно рассматривать как некоторый виртуальный TIG :laughing: на все необконстрейненые лапы.

 

Касательно "Unconstrained Paths" (определился с ключиком, инфа для последующих жаждущих инфы) - ключик -u для trce. Отчёт можно глянуть и в ISE. (2 Koluchiy - Спасибо)

 

А вот на счёт глюков 14.1 - как для меня, так работает всё так же, только медленней (засекал относительно одного и того же проекта в 14.1 и 13.2 для S6). Довольно неплохой "с той же канистры" Vivado - у меня на тачке он правда собирает дизайн медленней чем в ISE и for 7-Series only, но за то есть XDC - это большой плюс, можно делать финты ушами :biggrin:

Share this post


Link to post
Share on other sites
Касательно "Unconstrained Paths" (определился с ключиком, инфа для последующих жаждущих инфы) - ключик -u для trce. Отчёт можно глянуть и в ISE.

А как отчет глянуть в ISE?

Я не нашел, полез в грузящийся полчаса PlanAhead.

 

А вот на счёт глюков 14.1 - как для меня, так работает всё так же, только медленней (засекал относительно одного и того же проекта в 14.1 и 13.2 для S6). Довольно неплохой "с той же канистры" Vivado - у меня на тачке он правда собирает дизайн медленней чем в ISE и for 7-Series only, но за то есть XDC - это большой плюс, можно делать финты ушами

Мне без разницы, дольше или быстрее.

Финты ушами тоже непринципиальны.

Мне важно, чтобы ничего не висло в самый неподходящий момент, чтобы были правильные модели, и чтобы для всего этого не надо было ставить 10000 патчей :).

Как с этим в 14.1? 13е версии не пробовал, не знаю как там.

Share this post


Link to post
Share on other sites

2 Koluchiy

 

Касательно ISE и репорта - там после генерации отчёта имеем всё наше хозяйство в текстовом виде в *.twr - там и смотреть можно.

Но гораздо удобнее через xml и ISE - это будет файло *.twx. Смотреть через Design Summary - Static Timing - Timing Constrained - Unconstrained ...

 

Касательно 14.1 и вяческих падений - те дизайны что собирал и симулировал с использованием евойных либ - работали нормально. Правда это 3-4 дизайна для S3/S6 и V5. Касательно V6 - не подскажу, не было реального железа на проверку. Касательно же симуляции для V6 - симулил DS_DMA проект для V6(с либами от 14.1) - полёт нормальный :laughing:

 

Share this post


Link to post
Share on other sites

Продолжим воспоминания Xilinxовых констрейнов и борьбы с ними :).

 

Имеем Virtex 6.

 

В этом самом Virtex 6 есть FIFO, запись в которое осуществляется на частоте Clk320, чтение - Clk311 (цифра - частота в мегагерцах).

 

Частоты, понятное дело, несинхронные, соответственно написаны констрейны:

TIMESPEC TS_C30 = FROM "Clk311" TO "Clk320" TIG;

TIMESPEC TS_C40 = FROM "Clk320" TO "Clk311" TIG;

 

Translate к констрейнам претензий не имеет.

Тем не менее, после P&R мне пишет, что "1 constraint not met".

 

Ну, нот мет и нот мет, чего тут такого.

Но дальше интереснее.

В табличке мне рисует:

----------------------------------------------------------------------------------------------------------
  Constraint                                |    Check    | Worst Case |  Best Case | Timing |   Timing   
                                            |             |    Slack   | Achievable | Errors |    Score   
----------------------------------------------------------------------------------------------------------
* TS_PLL_IntClocksPLL_clkout0 = PERIOD TIME | SETUP       |    -0.863ns|     3.980ns|      53|       16108
  GRP "PLL_IntClocksPLL_clkout0"         TS | HOLD        |     0.015ns|            |       0|           0
  _GenClkP / 4.125 HIGH 50%                 |             |            |            |        |

TS_PLL_IntClocksPLL_clkout0 - это Clk320.

 

Открываю отчет .twx, а там картина совсем другая:

Paths for end point STMx_PortBlocks.STMx_PortBlocks[0].STMx_PortBlock/STM4_TXBlock/RX_STM4_Receiving/STM_InFIFO/BU2/U0.gconvfifo.rf.grf.rf.gcx.clkx.rd_pntr_gc_asreg_9 (SLICE_X143Y190.BX), 1 path 
-------------------------------------------------------------------------------- 
Slack (hold path):      -3.640ns (requirement - (clock path skew + uncertainty - data path)) 
   Source:               STMx_PortBlocks.STMx_PortBlocks[0].STMx_PortBlock/STM4_TXBlock/RX_STM4_Receiving/STM_InFIFO/BU2/U0.gconvfifo.rf.grf.rf.gcx.clkx.rd_pntr_gc_9 (FF) 
   Destination:          STMx_PortBlocks.STMx_PortBlocks[0].STMx_PortBlock/STM4_TXBlock/RX_STM4_Receiving/STM_InFIFO/BU2/U0.gconvfifo.rf.grf.rf.gcx.clkx.rd_pntr_gc_asreg_9 (FF) 
   Requirement:          0.000ns 
   Data Path Delay:      0.376ns (Levels of Logic = 0) 
   Clock Path Skew:      4.016ns (3.908 - -0.108) 
   Source Clock:         Clk320 rising 
   Destination Clock:    Clk311 rising

В общем, ругается на несоблюдение hold'ов как раз между доменами Clk320 и Clk311.

Несмотря на то, что заданы констрейны, чтобы эти пути не анализировать.

 

Что не так?

Share this post


Link to post
Share on other sites

Как заданы Clk311 Clk320? Должны быть через TIMESPEC. Если через NET, то такой констрейн не продет через ПЛЛ.

Посмотрите отчет транслятора, там анализ ucf идет, и если ise кладет на констрейны, то там это должно быть.

Share this post


Link to post
Share on other sites
Как заданы Clk311 Clk320?

 

Вот так:

 

NET "Clk320" TNM_NET = "Clk320";
TIMESPEC TS_Clk320 = PERIOD "Clk320" 3.117 ns;

NET "Clk311" TNM_NET = "Clk311";
TIMESPEC TS_Clk311 = PERIOD "Clk311" 3.215 ns;

 

Ну а вообще, Clk320 - выход PLL, Clk311 - выход опорного клока GTX'а (REFCLKOUT).

 

Посмотрите отчет транслятора, там анализ ucf идет, и если ise кладет на констрейны, то там это должно быть.

Не кладет.

Более того, про них есть в табличке:

----------------------------------------------------------------------------------------------------------
  Constraint                                |    Check    | Worst Case |  Best Case | Timing |   Timing   
                                            |             |    Slack   | Achievable | Errors |    Score   
----------------------------------------------------------------------------------------------------------
...
  PATH "TS_C30_path" TIG                    | SETUP       |         N/A|     5.031ns|     N/A|           0
----------------------------------------------------------------------------------------------------------
  PATH "TS_C40_path" TIG                    | SETUP       |         N/A|    -1.586ns|     N/A|           0
----------------------------------------------------------------------------------------------------------

 

P.S. Ах да, ISE 12.3.

Share this post


Link to post
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Sign in to follow this