Помощь - Поиск - Пользователи - Календарь
Полная версия этой страницы: Timing constraints not met
Форум разработчиков электроники ELECTRONIX.ru > Программируемая логика ПЛИС (FPGA,CPLD, PLD) > Работаем с ПЛИС, области применения, выбор
BlackOps
У меня DCM_0 стандартно созданный в проекте EDK автоматически. А в одном из своих модулей я использую другой DCM чтобы получить два разных клока. Тот который я сам добавил находится внутри сгенерированной оболочки со своими BUFG итд. В чем же может быть причина того что у меня такая проблема с таймингом?

Вот репорт из лога:
Код
------------------------------------------------------------------------------------------------------
  Constraint                                |  Check  | Worst Case |  Best Case | Timing |   Timing  
                                            |         |    Slack   | Achievable | Errors |    Score  
------------------------------------------------------------------------------------------------------
* TS_dcm_0_dcm_0_CLK0_BUF = PERIOD TIMEGRP  | SETUP   |    -3.709ns|    58.168ns|      28|       88648
  "dcm_0_dcm_0_CLK0_BUF" TS_sys_clk_pin     | HOLD    |     0.123ns|            |       0|           0
       HIGH 50%                             |         |            |            |        |            
------------------------------------------------------------------------------------------------------
* TS_vga_ctrl_0_vga_ctrl_0_dcm_0_clkfx_buf  | SETUP   |    -3.203ns|    79.460ns|      26|       70224
  = PERIOD TIMEGRP         "vga_ctrl_0_vga_ | HOLD    |     0.558ns|            |       0|           0
  ctrl_0_dcm_0_clkfx_buf" TS_dcm_0_dcm_0_CL |         |            |            |        |            
  K0_BUF / 0.65         HIGH 50%            |         |            |            |        |



Я вот сейчас подумал, может ето из-за того что я использовал выход клока из основного ДЦМ как вход в другой который я добавил сам? Основной модуль выдает 100Мгц, и етот клок я веду в другой который из него делает 65МГц.. ?
des00
Цитата(BlackOps @ Sep 20 2010, 02:03) *
В чем же может быть причина того что у меня такая проблема с таймингом?

какое отношение имеет ДСМ к строчкам со слаками, без указания крайних точек слаков ? Лечить времянку с помощью телепатии еще не научились.
BlackOps
Цитата(des00 @ Sep 20 2010, 12:37) *
какое отношение имеет ДСМ к строчкам со слаками, без указания крайних точек слаков ? Лечить времянку с помощью телепатии еще не научились.


Извините, могли бы Вы указать что именно имели ввиду? И где в случае с ЕДК получить ету инфу? Или Вы имели ввиду подробное описание пинов моих модулей?
Я сейчас открыл тайминг репорт синтеза тоже, и вот что сейчас заметил:
Код
IBUFG
dcm_0/Using_Virtex.DCM_INST:CLK0+vga_ctrl_0/dcm_0/dcm_inst:CLKFX    
BUFG(*)(vga_ctrl_0/vga_ctrl_0/data_realignment_engine/reg0_in_0)  
BUFG(*)(vga_ctrl_0/vga_ctrl_0/data_realignment_engine/reg1_in_0)
BUFG
NONE(*)(vga_ctrl_0/vga_ctrl_0/vga_block/v_current_FSM_FFd3)
BUFG
NONE(chipscope_icon_0/chipscope_icon_0/i_chipscope_icon_0/U0/U_ICON/U_iDATA_CMD)
NONE(bp_0/bp_0/dataread_module/ifft_block/blk00000003/blk00000006)  

(*) These 3 clock signal(s) are generated by combinatorial logic,
and XST is not able to identify which are the primary clock signals.
Please use the CLOCK_SIGNAL constraint to specify the clock signal(s) generated by combinatorial logic.
INFO:Xst:2169 - HDL ADVISOR - Some clock signals were not automatically buffered by XST with BUFG/BUFR resources.
Please use the buffer_type constraint in order to insert these buffers to the clock signals to help prevent skew problems.


Еще вот что: NOTE: THESE TIMING NUMBERS ARE ONLY A SYNTHESIS ESTIMATE.
FOR ACCURATE TIMING INFORMATION PLEASE REFER TO THE TRACE REPORT
GENERATED AFTER PLACE-and-ROUTE.

Смотрю сейчас файлы в папке ЕДК проекта, так где же этот trace report хранится в случае с ЕДК?

А вообще пытаюсь сейчас найти хороший мануал по таймингу для Хилинкс, но нахожу только короткие статейки где показывают как это графически сделать под ISE. Не могли бы дать линк где у них хранится мануал с подробным описанием?
des00
Цитата(BlackOps @ Sep 20 2010, 08:49) *
Извините, могли бы Вы указать что именно имели ввиду?

у вас в отчетах приведены слаки по сетапу и холду, они связаны с разнице реальных и требуемых путей между источниками и приемниками сигналов, работающих от определенных частот. Разговор имеет смысл вести только в том случае, если вы укажете источники/приемники и покажете расклад на пути сигнала между ними.
Цитата
И где в случае с ЕДК получить ету инфу?

Нигде, времянка появляется на этапе разводки плис, т.е. используется после EDK
Цитата
Я сейчас открыл тайминг репорт синтеза тоже, и вот что сейчас заметил:...

асинхры понаделали, нюню
Цитата
Не могли бы дать линк где у них хранится мануал с подробным описанием?

работаю с альтерой, не ко мне вопрос %) Но вообще задание времянок в хилых, до тех пор пока не сделают поддержку SDC как то не айс.
Kuzmi4
2 BlackOps
а полный лог или критический пас выложить можно ? Потому что не понятно собсно где именно завалилась времянка..
Koluchiy
В Place & Route есть инструментик что-то натипа "посмотреть проблемы с времянками".
Если его запустить, он список проблем и выдаст.
Дальше смотрите, чего переделать, чтобы всё могло работать шустрее...
BlackOps
Всем спaсибо за советы.

Кузми4:

Прикрепляю два файла с логами. Еще прикрепляю простую диаграмму того что из себя моя система представляыет. Вобщем это контроллер, внутри которого есть логика которая на 100МГц и на 65МГц работает. 100Мгц я получаю от внешнего ДЦМ который генерируется ЕДК по умолчанию. Затем, внутри контроллера я инстанциирую второй ДЦМ, который использует выходной клок первого как вход, и на выходе дает 65мгц.

Что интерестно, все работает в реале так как надо... и данные получаю правильные итд итп. Но просто хотелось бы конечно убрать эти ошибки и разобраться в чем же дело. И еще раз повторю это все в ЕДК, а не ИСЕ.
Kuzmi4
2 BlackOps
оба репорта бесполезны, нужно смотреть в "Design Summary-Static Timing" ( это будет *.twr в директории проекта, только обёрнутый красиво laughing.gif )
вот там как раз написано кто именно нагадил, что то типа такого
Цитата
Slack: 41.524ns (requirement - (data path - clock path skew + uncertainty))
Source: core/fp_count[7] (FF)
Destination: core/o_tbus_fp_j0ref (FF)
Requirement: 51.440ns
Data Path Delay: 9.916ns (Levels of Logic = 2)
Clock Path Skew: 0.000ns
Source Clock: s_temux_sbi_clk_bufg rising at 0.000ns
Destination Clock: s_temux_sbi_clk_bufg rising at 51.440ns
Clock Uncertainty: 0.000ns

Только у вас отрицательны слак будет
BlackOps

Нашел эти файлы, сейчас сам тоже просмотрю. Вот они, прикрепил. Спасибо опять за совет!
Kuzmi4
2 BlackOps:
Навскидку видно что у вас похоже на клоковый вход чипскопового слайса заведена комбинаторика - тут мега криминала конечно нет, но естественно что орёт..
Далее, вас не смущает такое заявление :
Цитата
Slack: -3.203ns (requirement - (data path - clock path skew + uncertainty))
Source: vga_ctrl_0/vga_ctrl_0/data_realignment_engine/reg0/q_44 (FF)
Destination: vga_ctrl_0/vga_ctrl_0/blue_registration/q_4 (FF)
Requirement: 0.769ns
Data Path Delay: 3.972ns (Levels of Logic = 2)
Clock Path Skew: 0.000ns
Source Clock: plb_bram_if_cntlr_1_port_BRAM_Clk rising at 30.000ns
Destination Clock: vga_ctrl_0/vga_ctrl_0/clk65 rising at 30.769ns
Clock Uncertainty: 0.000ns

нужное выделил laughing.gif
BlackOps

Ну reg0 это один из регистров который я использую на частоте 100мгц. у меня там еще два таких, reg1 и reg2... и их использую аналогично, т.е. они записываются на частоте 100мгц. тогда ппочему не выдается сообщение о рег1 и рег2?

а blue_register это один из регистров который я использую перед тем как послать сигнал из чипа наружу. у меня остальные тоже так работают. опять же..странно почему тогда на остальные регистры работающие в таком же режиме он не ругается?
des00
Цитата(Kuzmi4 @ Sep 20 2010, 16:50) *
нужное выделил laughing.gif

а я немного добавил выделения нужного
Цитата
Slack: -3.203ns (requirement - (data path - clock path skew + uncertainty))
Source: vga_ctrl_0/vga_ctrl_0/data_realignment_engine/reg0/q_44 (FF)
Destination: vga_ctrl_0/vga_ctrl_0/blue_registration/q_4 (FF)
Requirement: 0.769ns
Data Path Delay: 3.972ns (Levels of Logic = 2)
Clock Path Skew: 0.000ns
Source Clock: plb_bram_if_cntlr_1_port_BRAM_Clk rising at 30.000ns
Destination Clock: vga_ctrl_0/vga_ctrl_0/clk65 rising at 30.769ns

Clock Uncertainty: 0.000ns


вот откуда ноги растут
BlackOps
Да...но.. не понимаю. Этот БРАМ блок у меня стоит сам по себе отдельно от моего модуля, он 128К БРАМ где хранится программа которая ППС405 процессором исполняется. И етот блок к моему модулю не имеет отношения. В моем модуле я тоже инстанциировал БРАМ, но тот и читается и записывается на 100Мгц и к указанному блоку отношения не имеет.

Так.. странно, в чем же дело? Или я чтото не так понимаю?
des00
Цитата(BlackOps @ Sep 20 2010, 23:31) *
Да...но.. не понимаю.

дык написано же регистр vga_ctrl_0/vga_ctrl_0/data_realignment_engine/reg0/q_44 (FF) работает на частоте plb_bram_if_cntlr_1_port_BRAM_Clk rising at 30.000ns с него передаются данные на регистр
vga_ctrl_0/vga_ctrl_0/blue_registration/q_4 (FF) работающий на частоте vga_ctrl_0/vga_ctrl_0/clk65 rising at 30.769ns. Частоты хоть и синхронные, но не кратные. Поэтому при временном анализе и берется наихудший случай (передача между регистрами каждый такт). А если у вас есть какая либо логика, которая определяет моменты передачи данных, то временной анализатор он про нее не знает до тех пор, пока вы ему об этом не сообщите.
BlackOps
ок пересмотрю. Только одно странно, у меня в таком виде рег0, рег1, рег2.. А он ругается тока на рег0 и рег1.. Чтоже тогда он аналогично по рег2 не выдает ошибки.. странно.
des00
Цитата(BlackOps @ Sep 21 2010, 00:49) *
ок пересмотрю. Только одно странно, у меня в таком виде рег0, рег1, рег2.. А он ругается тока на рег0 и рег1.. Чтоже тогда он аналогично по рег2 не выдает ошибки.. странно.

используя телепатию, исходы из названия, предполагаю что reg1/reg2 находятся в одном тактовом домене, потому и ошибки нет %)
Kuzmi4
Цитата(des00 @ Sep 21 2010, 04:25) *
а я немного добавил выделения нужного
...
вот откуда ноги растут

Вот всё вам нужно разжевать biggrin.gif и в рот положить
Для просмотра полной версии этой страницы, пожалуйста, пройдите по ссылке.
Invision Power Board © 2001-2025 Invision Power Services, Inc.