Jump to content

    
Dr.Alex

Потребление клокового дерева

Recommended Posts

Кто-нибудь знает, насколько будут отличаться по потреблению два случая:

а) Большой кусок логики или БлокРАМ отключен от клока

б) Тот же кусок логики или БлокРАМ тактируется по полной, но все сигналы в нём статичны (то есть он в ресете)

 

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

Share this post


Link to post
Share on other sites

у меня не ответ, скорее коментарий, на основе АЗИКов (но цифр не помню, тактовые деревья в бэкенде появляются, нету репорта под рукой) - если большой кусок логики, то значит большой кусок тактового дерева, а жрет оно неплохо.

в библиотечных ячейках (lib описании), например, памяти есть потребление на переключение тактового сигнала, даже когда СS не активен. 

Share this post


Link to post
Share on other sites
10 hours ago, Dr.Alex said:

а) Большой кусок логики или БлокРАМ отключен от клока

б) Тот же кусок логики или БлокРАМ тактируется по полной, но все сигналы в нём статичны (то есть он в ресете)

Само дерево клока потребляет очень много, в разы больше чем эквивалентное число элементов и проводов в обычной логике. Поэтому - вариант а) намного предпочтительнее. А если бы речь шла об эсике, то можно еще и питание снять с памяти - так будет еще лучше.

Share this post


Link to post
Share on other sites
12 часов назад, Dr.Alex сказал:

БлокРАМ тактируется по полной, но все сигналы в нём статичны (то есть он в ресете)

Не то есть. У блочной памяти сброса нет.

И какое отношение вопрос имеет  к разделу форума "Языки проектирования"?

 

Share this post


Link to post
Share on other sites

так как работаете с ПЛИС, то там клок-гейтинг вообще бесплатно - зачем от него отказываться?

но для большого циклона 5 (А9 или как там, самый большой в линейке) с двумя опциями квартуса о клокгейтинге не было заметного изменения потребления (четыре варианта).

и возникло подозрение, что там не труЪ гейтеры вставляются в тактовое дерево, а под клок-гейтингом подразумевается использование ножки СЕ (клок-енабле) у синхронных элементов. дальше не разбирался.

 

 

Share this post


Link to post
Share on other sites
5 hours ago, andrew_b said:

Не то есть. У блочной памяти сброса нет.

И какое отношение вопрос имеет  к разделу форума "Языки проектирования"?

У неё есть энейбл.

А с разделом я промахнулся случайно.

 

 

10 minutes ago, yes said:

так как работаете с ПЛИС, то там клок-гейтинг вообще бесплатно - зачем от него отказываться?

Его неудобно кодить, в этом смысле он не такой уж бесплатный.

Но всё равно придётся проверять, когда руки дойдут. Просто хотел к этому времени уже иметь какое-то мнение, чего ждать.

 

 

10 minutes ago, yes said:

и возникло подозрение

Вот я и думаю что буфера придётся исключительно руками в код вставлять.

Share this post


Link to post
Share on other sites
Just now, Dr.Alex said:

Его неудобно кодить, в этом смысле он не такой уж бесплатный.

опция синтеза - как у "больших"

вроде как отловить общий сигнал на CE для группы триггеров и заменить его клок-гейтером на дереве CLK для этой группы, не сложно для синтез-тула... но что там в железе?

для ПЛИС возникает вопрос к квантованию :) этой группы - то есть для дробления на маленькие группы в дерево должны быть заложено много гейтеров, с точки зрения кремния, наверно, без разницы, но с точки зрения конфигурации, то есть соединения GATE гейтеров с фабрик - хз. может и нет такого - я не видел явно в описании, только у stratix 10 что-то такое есть, но опять же правда это или нет - хз.

честные гейтеры в ПЛИС (соответствующий библиотечный элемент), как я понимаю, отрезают большую часть дерева (квадрант (?)) - то есть их немного и ценный ресурс

  

Share this post


Link to post
Share on other sites

Приветствую!

25 minutes ago, yes said:

вроде как отловить общий сигнал на CE для группы триггеров и заменить его клок-гейтером на дереве CLK для этой группы,

Обычно clock-gate для плис  работает в другую сторону -  гейт на клоке заменяется на  CE в триггерах.  

25 minutes ago, yes said:

... но что там в железе?

Что получается  в железе можно увидеть в нетлисте после синтеза/P&R. 


По поводу дерева клока в FPGA в последних оно похоже на ASIC по структуре - строится динамически из малых веток и даже с выравнивание skew по возможности (во всяком случае у Xilinx). 
Но для оптимизации по клоку есть нюанс - если вы не контролируете расположение логики на кристалле то  выигрыша от обрезки неиспользуемого части дерева клока может быть мало если логика будет "размазана" по всему кристаллу. Все же  размер "веток" не столь мал.  Для оптимизации надо собирать логику относящуюся к клоку в компактную группу. 

 

Удачи! Rob.

Share this post


Link to post
Share on other sites
17 minutes ago, yes said:

вроде как отловить общий сигнал на CE для группы триггеров и заменить его клок-гейтером на дереве CLK для этой группы, не сложно для синтез-тула...

Как-то фантастично, хотя это только моё мнение "навскидку".

Я бы ожидал скорее обратного - вот реально есть опция синтеза, которая избавляется от гейтеров в пользу енейблов :-)))

https://forums.xilinx.com/t5/Design-and-Debug-Techniques-Blog/Gated-Clock-Conversion-in-Vivado-Synthesis/ba-p/982650

Типа, это нужно для прототипирования асиков - код менять нельзя принципиально, а гейтеры (которые наверняка есть в асике), в фпга для простоты нужно выкинуть.

 

 

  

25 minutes ago, yes said:

честные гейтеры в ПЛИС (соответствующий библиотечный элемент), как я понимаю, отрезают большую часть дерева (квадрант (?)) - то есть их немного и ценный ресурс

Само собой, но всё же в артиксе-200 BUFHCE 120 шт - хватит, отрезать-то хочется бОльшую часть прожекта, а мелкие кусочки резать какой смысл....

Share this post


Link to post
Share on other sites
1 hour ago, RobFPGA said:

По поводу дерева клока в FPGA в последних оно похоже на ASIC по структуре - строится динамически из малых веток и даже с выравнивание skew по возможности (во всяком случае у Xilinx). 

Вот вообще нет от слова совсем. В ПЛИСах все клоковые деревья построены по типу H-дерева. Да у них есть возможность обрезать ненужные ветки, но на этом сходство заканчивается. И skew в ПЛИСах одинаковая всегда и везде, потому что одинаковое количество точек разветвления к каждому FF. Для памятей/DSP может как-то хитрее, но думаю тоже самое будет.

В АЗИКах же синтез clock-tree это скил на уровне синтеза или place&root. Тут может быть и полезная skew и выборка значений фанаута и инверсные промежутки дерева (когда по falling_edge). Та даже понятие hold violation, которое для FPGA  вообще неизвестно, встречается сплошь и рядом... А это эще тот гемор.

Относительно отключения частоты на элементы, для ПЛИС не так просто. Если мне не изменяет память, то в FPGA стоит ровно один клок буфер (который, кажется, CBUF у Xilinx) на банк. Он даёт лучшую времянку в пределах ПЛИС. Соответственно если получится запихнуть нужную логику в отдельный банк - тогда проблем не будет. Есть ещё возможность пропустить клок через HBUF (тоже для Xilinx), их больше - порядка 12 на банку, но и времянка страдает у них значительнее.

Share this post


Link to post
Share on other sites

Приветствую!

1 hour ago, Nick_K said:

Вот вообще нет от слова совсем. В ПЛИСах все клоковые деревья построены по типу H-дерева. Да у них есть возможность обрезать ненужные ветки, но на этом сходство заканчивается. И skew в ПЛИСах одинаковая всегда и везде, потому что одинаковое количество точек разветвления к каждому FF. Для памятей/DSP может как-то хитрее, но думаю тоже самое будет.

Xilinx  с этим утверждением несколько не согласен page 6.

Ну  или UltraScale Architecture Clocking Resources User Guide UG572  Chapter 2: Clocking Resources:

Quote

The purpose of the clock routing resources is to route a clock from the global clock buffers to a central point from where it is connected to the loads via the distribution resources. This central point of the clock network is called a clock root in the UltraScale architecture. The root can be in any CR in a device from where it is routed to the loads via the clock distribution resources. This architecture optimized clock skew. Routing and distribution resources can either connect to adjacent CRs or disconnect (isolated) at the border of the CR as needed. This concept extends to SSI devices as well. 

Можете в этом убедится  посмотрев роутинг клока  тяжелого по клокам проекта.

 

Удачи Rob.

P.S.  Популярно с картинками

 

 

 

 

Share this post


Link to post
Share on other sites
3 hours ago, RobFPGA said:

Xilinx  с этим утверждением несколько не согласен page 6.

Ну  или UltraScale Architecture Clocking Resources User Guide UG572  Chapter 2: Clocking Resources:

 

Если взять Артикс и поделить некий клок частотой выше 400МГц триггером или пропустить через BUFGCE - запаришся потом объяснять вивадо  констрейнами упоминая falsepath multucicle  и перенося все данные на новый (хоть и синхронный) клок через регистры...

Share this post


Link to post
Share on other sites

Приветствую!

8 minutes ago, _4afc_ said:

Если взять Артикс и поделить некий клок частотой выше 400МГц триггером или пропустить через BUFGCE - запаришся потом объяснять вивадо  констрейнами упоминая falsepath multucicle  и перенося все данные на новый (хоть и синхронный) клок через регистры...

Эээ ... как бы не вижу связи одного с другим :scratch_one-s_head: При чем тут  структура клоков  и "неаккуратность" разработчика?  

 

Удачи! Rob.

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.