|
|
  |
Правильное использование locked у PLL |
|
|
|
Feb 6 2015, 05:55
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(SM @ Feb 6 2015, 13:44)  Вот, кстати, именно в данном случае, в проекте из одного триггера, это логике и не поддается. По разводке оба варианта одинаковы (какая разница, завести enable на LAB CE, или на LUT, все равно куда-то заводить, конкуренции между этими сигналами в данной схеме нет), а вот лишний LUT занят (кол-во LUT - вроде как один из критериев оптимизации). Немного не корректно. В случае использования clkena для одного LE из LAB, у вас "убивается" весь LAB. Т.е. вы уже не можете использовать триггеры других 15 ти LE. А LUT можете использовать либо для многолютовой комбинаторики либо для нагрузки триггеров из другого LAB. И в общем случае это приведет к перерасходу ресурсов разводки и не возможности register packing. Тоже самое касается сигналов sclr и sload. А то что ква делает так, ну вот такой у него оптимизатор. Даже в проекте из одного триггера на миллионный чип. Кстати LAB в первых сыклонах был 10LE и там чудно делались сложные (с использованием сигналов clear/load/enable) 40 бит аккумуляторы. В старших, пришлось кое где уйти на 32 бита. Цитата И, кстати, это далеко не всех ПЛИС и сред касается: Как я понимаю это ячейка латекса, подскажите что за чип, посмотрю даташит, вполне возможно что у них в аналоге LAB есть дополнительные ключи на отключение clkena части триггеров от общего управления UPD. В стратиксе 5 ом, в LAB 10ALM, в каждом 4 ре триггера. И там, цена желания что бы на счетчике был именно clkena (ручная вставка dffeas примитивов) еще выше. UPD2. Посмотрел на вашу картинку внимательнее. Судя по всему верхняя половина LE не задействована. Вам повезло, "убийство" верхнего триггера вы не заметили. Вот будет у вас более плотный дизайн, тогда думаю обратите на это внимание
--------------------
|
|
|
|
|
Feb 6 2015, 06:09
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(des00 @ Feb 6 2015, 08:55)  И в общем случае это приведет к перерасходу ресурсов разводки А причем тут "общий случай" и какие-то гипотетические триггеры и сигналы, которые могут быть нужны и которых нет? У нас случай вполне себе частный, и конкретный, от автора: Код module test(output reg Q, input D, En, input Clk); always @(posedge Clk) begin if(En) begin Q = D; end end endmodule 1) В части разводки конкуренции нет, больше цепей нет в принципе, следовательно, критерий отпадает (умножается на коэфф. конкуренции = 0). 2) В части нужности других CE - тоже нет, тоже критерий отпадает (умножается на коэфф. конкуренции = 0). 3) В части нужности других триггеров в LAB - опять, конкуренции нет, опять, критерий отпадает (умножается на коэфф. конкуренции = 0). 4) А вот LUT - он и ток кушает, и место (area) занимает, так что критерий имеет вес. Вот его и следует соптимизировать, заведя сигнал на CE. Цитата(des00 @ Feb 6 2015, 08:55)  Как я понимаю это ячейка латекса, подскажите что за чип, посмотрю даташит, вполне возможно что у них в аналоге LAB есть дополнительные ключи на отключение clkena части триггеров от общего управления Нет там таких ключей, CE тоже общий. Любой смотрите на выбор, разводится одинаково (я проверил на XO2, XO3, XP, XP2, ECP2, ECP3). Просто, там, оптимизатор делает свою работу более логично, нежели квартус. PS А когда количество enable-ов от одного сигнала возрастает, так, тем более, есть прямой смысл их объединять в кучу и заводить на CE, и не только на LAB/SLICE CE, но и в более глобальные ресурсы разводки.
|
|
|
|
|
Feb 6 2015, 06:16
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(SM @ Feb 6 2015, 14:09)  А причем тут "общий случай"? У нас случай вполне себе частный, и конкретный, от автора: Код module test(output reg Q, input D, En, input Clk); always @(posedge Clk) begin if(En) begin Q = D; end end endmodule 1) В части разводки конкуренции нет, больше цепей нет в принципе, следовательно, критерий отпадает (умножается на коэфф. конкуренции = 0). 2) В части нужности других CE - тоже нет, тоже критерий отпадает (умножается на коэфф. конкуренции = 0). 3) В части нужности других триггеров в LAB - опять, конкуренции нет, опять, критерий отпадает (умножается на коэфф. конкуренции = 0). 4) А вот LUT - он и ток кушает, и место (area) занимает, так что критерий имеет вес. Вот его и следует соптимизировать, заведя сигнал на CE. Нет там таких ключей, CE тоже общий. Любой смотрите на выбор, разводится одинаково (я проверил на XO2, XO3, XP, XP2, ECP2, ECP3). Просто, там, оптимизатор делает свою работу более логично, нежели квартус. Это все софистика при решении задачи о сферическом коне в вакууме. Вы гуру вам виднее и опыта у вас больше. Мои результаты по утаптыванию проектов в чипы от альтер приводил на форуме кучу раз. 99.5-99.8 % занятого дспешным кодом третьего сыклона, хлопающего на частоте 192МГц (у него триггерная 250). Всё после изучения даташитов и логических выводов о работе квартуса.
--------------------
|
|
|
|
|
Feb 6 2015, 06:18
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(des00 @ Feb 6 2015, 09:16)  Это все софистика при решении задачи о сферическом коне в вакууме. А Вы вернитесь в мир реальный, к реальному элементарному исходнику из одного триггера, о котором речь в теме идет, и который неоптимально укладывается квартусом. А не о забитии 99% кристалла. PS Может, если ему дать больше приоритета на Area, и заведет? Я сейчас посмотрел, в моей среде по умолчанию стоит и Area, и Timing driven. UPD: Убрал "Area", ничего не поменялось...
|
|
|
|
|
Feb 6 2015, 06:39
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(des00 @ Feb 6 2015, 11:55)  В случае использования clkena для одного LE из LAB, у вас "убивается" весь LAB Ну значит я правильно подозревал причину. В Xilinx это называется, кажется, control set. Цитата(ViKo @ Feb 6 2015, 11:52)  Видимо, потому, что правильнее управлять данными, а не тактами. О чем я выше намекал. Тактами управлять правильнее с точки зрения энергопотребления. А какие преимущества имеет управление данными? Цитата(SM @ Feb 6 2015, 11:44)  И, кстати, это далеко не всех ПЛИС и сред касается: Xilinx этим тоже грешит.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Feb 6 2015, 06:41
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(Krys @ Feb 6 2015, 09:37)  А какие преимущества имеет управление данными? Простоту алгоритма коррекции таймингов между разными клок-доменами. Короче говоря, мозгов много не надо, чтобы развести такой проект. Меньше энергии расходуется на разводку  - экономим газ! (правда потом жжем его жрущими девайсами) Цитата(Krys @ Feb 6 2015, 09:39)  Xilinx этим тоже грешит. Не грешит, а показывает взвешенный подход, где один триггер, там одно, где кристалл под завязку - там другое.
|
|
|
|
|
Feb 6 2015, 06:49
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(SM @ Feb 6 2015, 12:18)  А Вы вернитесь в мир реальный, к реальному элементарному исходнику из одного триггера, о котором речь в теме идет, и который неоптимально укладывается квартусом. А не о забитии 99% кристалла Про сферического коня - это правильно. Пример тривиальный. Зачем ругать синтезатор из-за ошибки на тривиальных примерах? Да, формально это ошибка, но ругать надо, когда будет неоптимально синтезить нормальные проекты. Предлагаю засинтезить проект по защёлкиванию шины данных (размером с количество "теряемых" триггеров) по клоку, стробируемому по CE. В этом случае хотя бы синтезатору будет видно, что совершенно все триггеры имеют CE, и ничего не потеряется, если подать CE прямо на соответствующий выделенный аппаратный вход триггера. Можно ещё дополнительно усложнить задачу, подобрав на входе триггера такую комбинационную функцию, которая бы занимала все входы LUT'а. В этом случае добавление к этой функции ещё одного сигнала приводит к необходимости ещё одного лута, а это уж точно неоптимально (просто в тривиальном примере от добавления сигнала CE к LUT'у ничего страшного не происходит, т.к. ещё есть свободные входы). Цитата(SM @ Feb 6 2015, 12:41)  Не грешит, а показывает взвешенный подход, где один триггер, там одно, где кристалл под завязку - там другое. Да я пробовал и на неплотных проектах. Да вообще где ни пробовал - там это везде наблюдалось. Из чего я сделал для себя эмпирический вывод, что с этим надо смириться, CE он добавляет не на аппаратный выделенный вход триггера, а замешивает в LUT. Цитата(SM @ Feb 6 2015, 12:41)  Простоту алгоритма коррекции таймингов между разными клок-доменами А если домен один - то нет преимуществ?
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Feb 6 2015, 06:57
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(Krys @ Feb 6 2015, 09:49)  А если домен один - то нет преимуществ? Ну это, смотря как этот enable делать. Я имел в виду нечто вроде DCS/BUFGCE/Gated_clock - таким образом, каждый enable создает свой домен, экономя потребление (отключается целый сегмент дерева тактовых сигналов). Но затраты на разводку увеличиваются - так как начинаются проблемы с коррекцией HOLD-ов на междоменных переходах. А подача на CE с точки зрения затратности ресурсов на разводку идентична мультиплексору данных. Цитата(Krys @ Feb 6 2015, 09:49)  Зачем ругать синтезатор из-за ошибки на тривиальных примерах? Из соображений логики. Раз на тривиальном сделал неоптимально, значит и на нетривиальном где-то лажанется по этой же причине....
|
|
|
|
|
Feb 6 2015, 07:01
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(SM @ Feb 6 2015, 13:18)  А Вы вернитесь в мир реальный, к реальному элементарному исходнику из одного триггера, о котором речь в теме идет, и который неоптимально укладывается квартусом. А не о забитии 99% кристалла. Вот именно что пример высосан из пальца и все вот это: Цитата 1) В части разводки конкуренции нет, больше цепей нет в принципе, следовательно, критерий отпадает (умножается на коэфф. конкуренции = 0). 2) В части нужности других CE - тоже нет, тоже критерий отпадает (умножается на коэфф. конкуренции = 0). 3) В части нужности других триггеров в LAB - опять, конкуренции нет, опять, критерий отпадает (умножается на коэфф. конкуренции = 0). 4) А вот LUT - он и ток кушает, и место (area) занимает, так что критерий имеет вес. Вот его и следует соптимизировать, заведя сигнал на CE. Именно софистика. ответы на 1-3 дал постом выше : "А то что ква делает так, ну вот такой у него оптимизатор". а по пункту 4 ре вы сами вчитайтесь в вашу фразу с точки зрения ПЛИСа и в котором 5к лютов и а фоне потребления этого чипа в статике этот LUT как мертвому припарка. Понимаю что вам, как асикостроителю, все это чуждо и вызывает бурю негодования. Но, как уже писал, на настоящих реальных проектах поголовное использование сигналов разрешения в качестве clkena триггеров приведет к результату более низкого качества, чем результат полученный со взвешенным использованием того самого clkena (квартус тоже это делает).
--------------------
|
|
|
|
|
Feb 6 2015, 07:06
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(des00 @ Feb 6 2015, 10:01)  а фоне потребления этого чипа в статике этот LUT как мертвому припарка. Вот это, как раз, голимая демагогия. Для оптимизатора есть лишь больше, или меньше, даже если на 1 LSB числа, используемого в расчетах. Цитата(des00 @ Feb 6 2015, 10:01)  поголовное использование сигналов разрешения в качестве clkena Оно должно быть не поголовное, а оптимальное, на любых проектах. Зачем искать оправдания для банального глюка оптимизатора?
|
|
|
|
|
Feb 6 2015, 07:12
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата(SM @ Feb 6 2015, 14:06)  Вот это, как раз, голимая демагогия. Для оптимизатора есть лишь больше, или меньше, даже если на 1 LSB числа, используемого в расчетах.
Оно должно быть не поголовное, а оптимальное, на любых проектах. Зачем искать оправдания для банального глюка оптимизатора? для вас это глюк, для меня это изученная фича, имеющая под собой логические обоснования. задали вопрос - объяснил логику такого поступка, остальные вопросы www.altera.com.
--------------------
|
|
|
|
|
Feb 6 2015, 07:47
|

Гуру
     
Группа: Свой
Сообщений: 2 002
Регистрация: 17-01-06
Из: Томск, Россия
Пользователь №: 13 271

|
Цитата(des00 @ Feb 6 2015, 13:12)  задали вопрос - объяснил логику такого поступка Не-не-не ))) Объяснения "ну вот такой вот синтезатор, хоть убейте" не годятся ))) Цитата(des00 @ Feb 6 2015, 13:12)  имеющая под собой логические обоснования Объяснили логику поступка Вы только при рассмотрении реальных больших нормальных проектов. На маленьких и тривиальных проектах такое поведение логике не подчиняется. Ну пожалуй за исключением того, что увеличение потребления на маленьких проектах неощутимо, поэтому до звезды, как поступить. Цитата(des00 @ Feb 6 2015, 13:12)  для вас это глюк, для меня это изученная фича Я бы всё же называл это стандартным термином " known bugs and issues" )) Всё же надо признать, что формально для тривиального проекта это бага. Пусть и ни на что не влияющая. Цитата(SM @ Feb 6 2015, 12:57)  Из соображений логики. Раз на тривиальном сделал неоптимально, значит и на нетривиальном где-то лажанется по этой же причине.... А если на тривиальном не сделал неоптимально, то всё равно может лажануться на крупном ))) Не застрахуешься. Это как к людям, "отбывшим в местах не столь отдалённых", относятся с недоверием, скажем, при приёме на работу: один раз оступился, значит обязательно ещё раз оступится.
--------------------
Зная себе цену, нужно ещё и пользоваться спросом...
|
|
|
|
|
Feb 6 2015, 09:04
|
Гуру
     
Группа: Свой
Сообщений: 7 946
Регистрация: 25-02-05
Из: Moscow, Russia
Пользователь №: 2 881

|
Цитата(des00 @ Feb 6 2015, 10:12)  для вас это глюк, Это не "для меня" глюк. Ничего личного. Это просто глюк, и все тут. Суть его я объяснил - если ресурс (свободные триггеры, LUT CE, и т.п.) не занят, то и нечего его "зажимать" непонятно для чего. Я даже предполагаю, для чего он это делает - вероятно, для упрощения себе жизни при инкрементальных размещении и разводке, так как он (глюк) появился как раз примерно в одно время с этими инкрементальными фичами... С инкрементальной точки зрения, конечно, зажопить 7 триггеров про запас выгоднее, чем освободить 1 LUT. Но это никак не оптимально с точки зрения размещения конкретного проекта. Совсем старые версии более эффективно задействовали CE в простых проектах. Да и вообще за квартусом замечено, чем новее версия, тем менее эффективно использование ресурсов ПЛИС (может, чтобы более толстые кристаллы покупали... а может из-за ленивости программистов...). У меня даже был конкретный случай, когда я активно пользовался альтерой, где-то в районе 8-9-х версий квартуса, что после очередного обновления перестал влезать проект, отлично влезавший и работавший ранее и с квартусом, и даже с Max+plus... А уж увеличение area на ровном месте с увеличением версии квартуса, так это вообще, норма жизни.
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|