|
Как сделать reset_path в Vivado? |
|
|
|
Dec 14 2016, 10:51
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 2-08-07
Из: Москва
Пользователь №: 29 534

|
Да, парсить умеет. Только выдаёт кучу ворнингов наподобие Код WARNING: [Constraints 18-401] set_false_path: 'decoders_inst/ldpc_0/ldpc_graph_inst/pnp_gen[8].pnp__58_i_5/S[1]' is not a valid endpoint. [/my_prj/sim/fpga/gnss_dsp_impl.xdc:51] Resolution: A valid end point is a data pin of a sequential cell or a primary output or inout port. Please validate that all the objects returned by your query belong to this list. Проект огромный, таких невалидных endpoint, наверное, сотни тысяч. Поскольку мне надо сделать false path на ресет к регистрам, то все "не регистры" выдают этот ворнинг. Лог конечно затыкается на 100 ворнингов, но это же не дело.
|
|
|
|
|
Dec 14 2016, 11:13
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Vascom @ Dec 14 2016, 13:51)  Проект огромный, таких невалидных endpoint, наверное, сотни тысяч. Поскольку мне надо сделать false path на ресет к регистрам, то все "не регистры" выдают этот ворнинг. А что Вы хотите сделать в общем случае? Закрыть пути для анализа от локального сброса до асинхронного сброса регистров? Если локальный сброс регистр - то банальным: set_false_path -from [get_registers {soft_rst*}] Или Вы используете сброс еще в какой-то комбинационной логике? Если так, то в общем случае я такого лично нигде не видел.
|
|
|
|
|
Dec 14 2016, 12:47
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Vascom @ Dec 14 2016, 15:42)  В том-то и дело, что мне надо не задать false path по маске, а задать на всё, но исключить часть путей. Каким образом в вивадо это сделать конкретно я Вам ответить не могу. А вообще похоже на какое-то шаманство - сброс по срезу, работа по фронту. Цитата Нет, клоки реальные и идут дальше на логику. Идут они извне или на одном DCM формируются (или как клок визард в последних версиях называется)?
|
|
|
|
|
Dec 14 2016, 12:53
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 2-08-07
Из: Москва
Пользователь №: 29 534

|
Сброс по срезу, работа по фронту - это нормальный асинхронный ресет, а не шаманство. Код always @(posedge clk or negedge rstn) if (!rstn) reg0 <= 1'b0; else ... Клоки формируются на одном PLL. Не надо на этом зацикливаться. Дизайн правильный, отличный, проверенный, соответствует стандартам и гайдлайнам.
|
|
|
|
|
Dec 14 2016, 12:58
|
Частый гость
 
Группа: Участник
Сообщений: 135
Регистрация: 19-10-13
Пользователь №: 78 795

|
Кстати, вот. -reset_path - (Optional) Reset the timing path before setting false path. This clears all exception-based timing constraints from the defined timing path. Это ключик к set_false_path. Цитата Идут они извне или на одном DCM формируются (или как клок визард в последних версиях называется)? Корка так и называется - ClockWizard, а в результате получается MMCM или PLL
|
|
|
|
|
Dec 14 2016, 13:16
|
Профессионал
    
Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082

|
Цитата(Vascom @ Dec 14 2016, 15:53)  Сброс по срезу, работа по фронту - это нормальный асинхронный ресет, а не шаманство. Я применительно к этой фразе про шаманство Цитата Ресет снимается по negedge clk_1 изнутри при определённом положении этих клоков - когда clk_2 и clk_4 в единице Ну т.е. я понял так - есть клоки, которые идут по глобальным шинам, а потом они же используются в комбинационной логике, просто нигде такого не встречал.
|
|
|
|
|
Dec 14 2016, 13:44
|
Местный
  
Группа: Свой
Сообщений: 232
Регистрация: 2-08-07
Из: Москва
Пользователь №: 29 534

|
Цитата(Tausinov @ Dec 14 2016, 15:58)  Кстати, вот. -reset_path - (Optional) Reset the timing path before setting false path. This clears all exception-based timing constraints from the defined timing path. Это ключик к set_false_path. Да, только мне надо не до set_false_path, а после него. Чтобы отменить его действие. Цитата(bogaev_roman @ Dec 14 2016, 16:16)  Я применительно к этой фразе про шаманство
Ну т.е. я понял так - есть клоки, которые идут по глобальным шинам, а потом они же используются в комбинационной логике, просто нигде такого не встречал. Да, это грязный хак. Обычно так делать не следует в FPGA, но если очень хочется, то можно с небольшим количеством логики  Это самое простое чтобы выставить ресет в нужный мне момент. Тут всё успевает по таймингам, проблем нет.
|
|
|
|
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|