Перейти к содержанию
    

Физический смысл частоты в ПЛИС

Вообще, set_min_delay проверяется вместе с холдами, а set_max_delay - с сетапами. Поэтому, они не должны (а по моему опыту и не могут) игнорироваться - они проверяются и оптимизируются на разных этапах.

set_min_delay\set_max_delay с сетап\холдами не связан.

Это отдельный констрейн.

если оба сразу заданы на одну цепь, то тулзе труно их выполнить, изза расброса задержек буферов итд...

Вот и игнорит иногда... просто говорит что не выполнено...

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

set_min_delay\set_max_delay с сетап\холдами не связан.

Это отдельный констрейн.

 

Да, отдельный. НО!!! С холдами связан! Синтезатор на него вообще плюет с высокой колокольни (если его не пнуть специально, но, в общем случае, это обычно не делают, оставляя холды и min_delay на роутер), а вот разводчик занимается оптимизацией на тему min_delay именно во время этапа коррекции холдов, а в остальном процессе игнорирует. По крайней мере, так работают Synopsys DC в связке с IC Compiler или Astro. Да и FPGA-тулы работают точно так же. Да и анализируется он всегда вместе с холдами, на fast корнере.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

ВЫВОД:

set_min_delay - игнорируется :(

 

Вывод почти неверный. Он не игнорируется роутером, когда ему дать команду коррекции холдов (а это процесс отдельный, делается после разводки, когда слаки по сетапам и max_delay уже положительные)! Вот тогда он поправит и холды, и ошибки по min_delay (при этом, если вилка слишком жесткая, может испортить max_delay, этот процесс его не проверяет). А на почти всех других этапах таки да, игнорируется, но я об этом сразу сказал.

 

Почему "почти" - потому, что Synopsys DC делает вот так (цитата из dcug):

If fix_hold is not specified on any clocks, the minimum delay cost is not considered during compilation. If fix_hold or min_delay is specified, the minimum delay cost is a secondary optimization cost.

 

То есть, как бы это не было странным, но если не указан синтезатору set_fix_hold хотя бы одному клоку, то и все set_min_delay будут проигнорированы.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Я таки ошибся свыводами....

 

При

set_max_delay 10.0 -from in1 -to Q

set_min_delay 5.0 -from in1 -to Q

 

мы имеем:

#  Command:           report_timing -early -from in1 -to Q -view worst > res
###############################################################
Path 1: VIOLATED Path Delay Check
Endpoint:   Q   (v)
Beginpoint: in1 (v) triggered by  leading edge of '@'
Analysis View: worst
- External Delay                0.000
+ Path Delay                    5.000
= Required Time                 5.000
  Arrival Time                  2.153
  Slack Time                   -2.847
     Clock Rise Edge                      0.000
     + Input Delay                        0.000
     + Drive Adjustment                   0.128
     = Beginpoint Arrival Time            0.128
     +--------------------------------------------------------------------------------------------------------+ 
     |        Pin|  Cell   |    Net  |    Arc     |  Delay  |  Load   |  Slew   | Fanout | Arrival | Required | 
     |           |         |         |            |         |         |         |        |  Time   |   Time   | 
     |-----------+---------+---------+------------+---------+---------+---------+--------+---------+----------| 
     | in1 ->    |         | in1     | in1 v      |         |   0.019 |   0.204 |      1 |   0.128 |    2.975 | 
     | i_24/Q    | AO211X4 | Q       | A v -> Q v |   2.014 |   1.007 |   1.843 |      1 |   2.142 |    4.989 | 
     | Q ->      |         |         | Q v        |   0.011 |   1.007 |   1.843 |        |   2.153 |    5.000 | 
     +--------------------------------------------------------------------------------------------------------+

#  Command:           report_timing -late -from in1 -to Q -view worst > res
###############################################################
Path 1: MET Path Delay Check
Endpoint:   Q   (^)
Beginpoint: in1 (^) triggered by  leading edge of '@'
Analysis View: worst
- External Delay                0.000
+ Path Delay                   10.000
= Required Time                10.000
- Arrival Time                  2.396
= Slack Time                    7.604
     Clock Rise Edge                      0.000
     + Input Delay                        0.000
     + Drive Adjustment                   0.170
     = Beginpoint Arrival Time            0.170
     +-----------------------------------------------------------------------------------------------------+ 
     |       Pin|  Cell   |    Net|    Arc     |  Delay  |  Load   |  Slew   | Fanout | Arrival | Required | 
     |          |         |       |            |         |         |         |        |  Time   |   Time   | 
     |----------+---------+-------+------------+---------+---------+---------+--------+---------+----------| 
     | in1 ->   |         | in1   | in1 ^      |         |   0.025 |   0.299 |      1 |   0.170 |    7.774 | 
     | i_24/Q   | AO211X4 | Q     | A ^ -> Q ^ |   2.215 |   1.007 |   2.340 |      1 |   2.385 |    9.989 | 
     | Q ->     |         |       | Q ^        |   0.011 |   1.007 |   2.340 |        |   2.396 |   10.000 | 
     +-----------------------------------------------------------------------------------------------------+

 

Роутер видит все минимальные задержки и репортит.

 

---------------------------------

Задаём только set_min_delay 5.0 -from in1 -to Q

 

path   1:

Pin      Type     Fanout  Load  Slew Delay Arrival   
                           (fF)  (ps)  (ps)   (ps)    
------------------------------------------------------
in1      in port        1   35.6  397  +229     229 R 
i_25/A                                   +1     229   
i_25/Q   AO211X4        1 1016.8 2357 +2259    2489 R 
Q        out port                       +15    2504 R 
------------------------------------------------------
Timing slack :  UNCONSTRAINED
Start-point  : in1
End-point    : Q

МАХ задержка UNCONSTRAINED

 

Теперь роутер:

 

Видит МІN

#  Command:           report_timing -early -from in1 -to Q -view worst > res
###############################################################
Path 1: VIOLATED Path Delay Check
Endpoint:   Q   (v)
Beginpoint: in1 (v) triggered by  leading edge of '@'
Analysis View: worst
- External Delay                0.000
+ Path Delay                    5.000
= Required Time                 5.000
  Arrival Time                  2.093
  Slack Time                   -2.907
     Clock Rise Edge                      0.000
     + Input Delay                        0.000
     + Drive Adjustment                   0.092
     = Beginpoint Arrival Time            0.092
     +------------------------------------------------------------------------------------------------------+ 
     |        Pin|  Cell   |    Net|    Arc     |  Delay  |  Load   |  Slew   | Fanout | Arrival | Required | 
     |           |         |       |            |         |         |         |        |  Time   |   Time   | 
     |-----------+---------+-------+------------+---------+---------+---------+--------+---------+----------| 
     | in1 ->    |         | in1   | in1 v      |         |   0.013 |   0.161 |      1 |   0.092 |    2.998 | 
     | i_25/Q    | AO211X4 | Q     | A v -> Q v |   2.002 |   1.000 |   1.824 |      1 |   2.093 |    5.000 | 
     | Q ->      |         |       | Q v        |   0.000 |   1.000 |   1.824 |        |   2.093 |    5.000 | 
     +------------------------------------------------------------------------------------------------------+

и МАХ (как unconstrained):

#  Command:           report_timing -late -from in1 -to Q -view worst > res
###############################################################
No constrained timing paths with given description found.
Paths may be unconstrained (try '-unconstrained' option) or may not exist.

 

Надо учится репорты получать :)

Задав таки только set_min_delay или set_min_delay\set_max_delay без задания клоков - мы получим что хотели

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

интересно.... в случае простой комбинаторики холда нету...как нет и клоков...

 

Да вообще, на этапе синтеза нет никакого смысла ни в fix_hold, и в min_delay, так как эти проблемы решаются именно роутером, специальным проходом с удлинением разводки и вставлением буферов.

Поделиться сообщением


Ссылка на сообщение
Поделиться на другие сайты

Присоединяйтесь к обсуждению

Вы можете написать сейчас и зарегистрироваться позже. Если у вас есть аккаунт, авторизуйтесь, чтобы опубликовать от имени своего аккаунта.

Гость
Ответить в этой теме...

×   Вставлено с форматированием.   Вставить как обычный текст

  Разрешено использовать не более 75 эмодзи.

×   Ваша ссылка была автоматически встроена.   Отображать как обычную ссылку

×   Ваш предыдущий контент был восстановлен.   Очистить редактор

×   Вы не можете вставлять изображения напрямую. Загружайте или вставляйте изображения по ссылке.

×
×
  • Создать...