реклама на сайте
подробности

 
 
 
Reply to this topicStart new topic
> Принципы оптимизации по времени, ресурсам, пропускной способности
Goose
сообщение Feb 26 2013, 15:06
Сообщение #1


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 26-02-10
Из: Москва
Пользователь №: 55 683



Всем доброго времени суток,
недавно увидел в одной из вакансий такие требования, и хотелось бы четко понимать, что имеется в виду:
-понимание принципов оптимизации по времени, ресурсам, пропускной способности;
-опыт разработки высокоскоростных схем (от 100 MHz), timing constraints;

так вот, что это за принципы, и что нужно понимать? (надеюсь на развернутый ответ)

и я уже задавал какой-то подобный вопрос: но когда приходится применять какие-либо тайминг констрейны, кроме указания частоты клоков?
только в асинхронных дизайнах? и чем конкретно отличается разработка схем с тактовой от 100мгц от меньших? - тем что проект может не собраться из-за больших задержек в цепях? каждый раз видя такие формулировки, я чувствую что мне ничего не понятно, поясните пожалуйста.
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 26 2013, 16:03
Сообщение #2


Вечный ламер
******

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



Цитата(Goose @ Feb 26 2013, 10:06) *
-понимание принципов оптимизации по времени, ресурсам, пропускной способности;

осознание на этапе написания кода, как то что вы пишете ляжет на целевую платформу, с учетом ее архитектуры. Ну например полного использования возможности LCELL/ALM в альтере или SLICE у хилых.

Цитата
-опыт разработки высокоскоростных схем (от 100 MHz), timing constraints;

осознание на этапе проектирования системы, как ее нужно строить исходя из требований к производительности на целевой платформе. Ну например, если вас просят сделать устройство с эквивалентной тактовой частотой 1ГГц на плис класса сыклон 3, то вы должны понимать что это выльется в мегадикий ресурс (хотя это и возможно). А вот на каком нить стратиксе или виртексе ляжет с приемлемыми затратами.


--------------------
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Feb 26 2013, 19:42
Сообщение #3


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Goose @ Feb 26 2013, 18:06) *
и чем конкретно отличается разработка схем с тактовой от 100мгц от меньших? - тем что проект может не собраться из-за больших задержек в цепях? каждый раз видя такие формулировки, я чувствую что мне ничего не понятно, поясните пожалуйста.

Я, честно говоря, с меньшими частотамми за 7 лет и не сталкивался. Основные проблемы с частотой касаемо синхронной логики:
1. Схемы с обратными связями, типа БИХ фильтрами или CRC, где результат предыдущей операции должен быть доступен к следующему такту и алгоритм заменить нельзя. Тут требуется знание целевой ПЛИС и осознание каким образом все это уложится - сколько слоев логики будет.
2. Знание самих алгоритмов. Если, скажем, простейший многоразрядный счетчик не проходит по частоте, то его можно просто разбить на несколько более простых счетчиков или вообще при необходимости заменить на сдвиговый регистр. Сюда же отнесу и мультиплексоры - когда из-за незнания схемоты описывается вместо одного case куча последовательных if-else.
3. Знание настроек компилятора и понятие конвейерности, дублирование логики.
4. Ошибки по холдам. Скажем, создается контроллер памяти, но частота на приеме приходит позже данных - требуется полный анализ и ручное размещение регистров - дальше/ближе от пинов.
5. Иногда возникают ситуации, что отдельный кусок дизайна по частоте проходит, но при большой заполненности в топовом модуле все сыплется имеено из-за временных ошибок - приходится отдельно закреплять и вставлять разведенные нетлисты.
Go to the top of the page
 
+Quote Post
Goose
сообщение Feb 27 2013, 08:04
Сообщение #4


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 26-02-10
Из: Москва
Пользователь №: 55 683



Цитата(des00 @ Feb 26 2013, 19:03) *
осознание на этапе написания кода, как то что вы пишете ляжет на целевую платформу, с учетом ее архитектуры. Ну например полного использования возможности LCELL/ALM в альтере или SLICE у хилых.

Можете привести пример как учитывать при проектировании структуру Slice?
Цитата(des00 @ Feb 26 2013, 19:03) *
осознание на этапе проектирования системы, как ее нужно строить исходя из требований к производительности на целевой платформе. Ну например, если вас просят сделать устройство с эквивалентной тактовой частотой 1ГГц на плис класса сыклон 3, то вы должны понимать что это выльется в мегадикий ресурс (хотя это и возможно). А вот на каком нить стратиксе или виртексе ляжет с приемлемыми затратами.

Вот, каким образом я могу это понимать? (для этого конкретного примера)

А вообще больше интересует то, что есть в ваших статьях про "Synopsys Design Constraint — язык задания временных ограничений на примере Altera TimeQuest". Собственно это то, что я искал, только если бы это было для хилых я был бы вообще безгранично счастлив 08.gif , а так пока узнал много нового, а как можно перенести новые знания на xilinx? Timing Analyzer хилых аналогичен TimeQuest'y альтеры? sdc файл можно прикрутить к ISE?

Цитата(bogaev_roman @ Feb 26 2013, 22:42) *
Я, честно говоря, с меньшими частотамми за 7 лет и не сталкивался. Основные проблемы с частотой касаемо синхронной логики:
1. Схемы с обратными связями, типа БИХ фильтрами или CRC, где результат предыдущей операции должен быть доступен к следующему такту и алгоритм заменить нельзя. Тут требуется знание целевой ПЛИС и осознание каким образом все это уложится - сколько слоев логики будет.
2. Знание самих алгоритмов. Если, скажем, простейший многоразрядный счетчик не проходит по частоте, то его можно просто разбить на несколько более простых счетчиков или вообще при необходимости заменить на сдвиговый регистр. Сюда же отнесу и мультиплексоры - когда из-за незнания схемоты описывается вместо одного case куча последовательных if-else.
3. Знание настроек компилятора и понятие конвейерности, дублирование логики.
4. Ошибки по холдам. Скажем, создается контроллер памяти, но частота на приеме приходит позже данных - требуется полный анализ и ручное размещение регистров - дальше/ближе от пинов.
5. Иногда возникают ситуации, что отдельный кусок дизайна по частоте проходит, но при большой заполненности в топовом модуле все сыплется имеено из-за временных ошибок - приходится отдельно закреплять и вставлять разведенные нетлисты.

1. Как узнать сколько используется слоев логики? в отчете PAR? и как количественно тогда оценить сколько слоев много, а сколько приемлемо?
2. это прочитал в статье, тут понятно
3. под компиллятором вы понимаете синтезатор?
4. тоже примерно понятно
5. это круто, никогда не представлял, что такое бывает, спасибо
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 27 2013, 10:05
Сообщение #5


Вечный ламер
******

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



Цитата(Goose @ Feb 27 2013, 02:04) *
Можете привести пример как учитывать при проектировании структуру Slice?

под хилых давно ничего не делал, а вот под альтеровский LCELL
Код
  wire   acc_noverflow            = acc[cACC_W-1];
  wire   acc_poverflow            = (acc.exp >= pPOW_W);

  assign acc_overflow_value.sign  = 1'b0;
  assign acc_overflow_value.exp   = pPOW_W-1;
  assign acc_overflow_value.mant  = '1;

  assign acc_next                 = acc + (err2acc >>> cERR_SCALE);

  always_ff @(posedge iclk) begin
      acc_val <= err2acc_val;
      if (acc_noverflow | acc_poverflow | err2acc_val) begin
        if (acc_noverflow)
          acc <= '0;
        else if (acc_poverflow)
          acc <= acc_overflow_value;
        else
          acc <= acc_next;
      end
  end


Вот такое описание позволяет поднять быстродействие аккумулятора с ограничителем до частот ~220 МГц (32 бита) на сыклоне 7ке. Если взять классическое описание типа
Код
  always_ff @(posedge iclk) begin
      acc_val <= err2acc_val;
      if (acc_noverflow)
        acc <= '0;
      else if (acc_poverflow)
        acc <= acc_overflow_value;
      else if (err2acc_val)
        acc <= acc_next;
      end
  end

то 150-160 МГц предел. Объяснение почему лучше смотреть в хендбуке на сыклон

Цитата
Вот, каким образом я могу это понимать? (для этого конкретного примера)

Вопрос не до совсем понял. Тут понимание очень просто, если требуется тактовая в 1ГГЦ, то можно сделать как 2*500, 4*250, 8*125. Если брать среднюю логику, то для того же сыклона надо закладывать 8ми фазную обработку, со всеми вытекающими. Если взять какой нить 6 ой виртекс, то можно уложиться в 4 фазы или постараться втиснуться в 2 %)

Цитата
как можно перенести новые знания на xilinx? Timing Analyzer хилых аналогичен TimeQuest'y альтеры? sdc файл можно прикрутить к ISE?

ИМХО главное понять физику процесса, а платформа это уже вторично


--------------------
Go to the top of the page
 
+Quote Post
bogaev_roman
сообщение Feb 27 2013, 19:38
Сообщение #6


Профессионал
*****

Группа: Свой
Сообщений: 1 088
Регистрация: 20-10-09
Из: Химки
Пользователь №: 53 082



Цитата(Goose @ Feb 27 2013, 11:04) *
1. Как узнать сколько используется слоев логики? в отчете PAR? и как количественно тогда оценить сколько слоев много, а сколько приемлемо?
3. под компиллятором вы понимаете синтезатор?

1. Полностью расписывается путь сигнала от точки A до точкти B (в пределах одного клокового домена ) - тут нужно смотреть какая задержка сигнала на логике LCELL (задержка на элементе логики - ее изменить нельзя) и IC (задержка на соединениях), обычно производители пишут, что 50% хороший с лучай, но в реальности грамотный дизайнер может уменьшить IC в разы.
3. Проблема часто именно в fan out. Есть, скажем, у Вас управляющий сигнал, о готовности устройства, и этот единственный сигнал готовности в чистом виде подается как сигнал разрешение работы на всю логику ПЛИС, временная гонка в данном случае обеспечена.
Go to the top of the page
 
+Quote Post
Goose
сообщение Feb 28 2013, 05:06
Сообщение #7


Частый гость
**

Группа: Свой
Сообщений: 165
Регистрация: 26-02-10
Из: Москва
Пользователь №: 55 683



Цитата(des00 @ Feb 27 2013, 13:05) *

Правильно ли я понимаю, что в стандартном примере за один такт проверяется 3 условия по очереди, а у Вас всего 2 и поэтому можно увеличить частоту? это что-то вроде слоев логики и нужно стараться уменьшить их количество?
Я правда сначала думал, что Вы имеете ввиду учитывание количества входов lut'a разных микросхем или что-то в этом духе

Цитата(bogaev_roman @ Feb 27 2013, 22:38) *
1. Полностью расписывается путь сигнала от точки A до точкти B (в пределах одного клокового домена ) - тут нужно смотреть какая задержка сигнала на логике LCELL (задержка на элементе логики - ее изменить нельзя) и IC (задержка на соединениях), обычно производители пишут, что 50% хороший с лучай, но в реальности грамотный дизайнер может уменьшить IC в разы.
3. Проблема часто именно в fan out. Есть, скажем, у Вас управляющий сигнал, о готовности устройства, и этот единственный сигнал готовности в чистом виде подается как сигнал разрешение работы на всю логику ПЛИС, временная гонка в данном случае обеспечена.

1. А где он расписывается? во временном анализаторе?
3. А избежать гонки можно каким образом? если пропустить его через триггер на входе?
Go to the top of the page
 
+Quote Post
des00
сообщение Feb 28 2013, 05:50
Сообщение #8


Вечный ламер
******

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



Цитата(Goose @ Feb 28 2013, 00:06) *
Правильно ли я понимаю, что в стандартном примере за один такт проверяется 3 условия по очереди, а у Вас всего 2 и поэтому можно увеличить частоту? это что-то вроде слоев логики и нужно стараться уменьшить их количество?

нет неправильно. вам лучше всего посмотреть хендбук на сыклон 3, из рисунка что такое LCELL видно объснение.
Цитата
Я правда сначала думал, что Вы имеете ввиду учитывание количества входов lut'a разных микросхем или что-то в этом духе

есть и такая оптимизация, иногда приходится не только учитывать кол-во входов но и доп.функции входов


--------------------
Go to the top of the page
 
+Quote Post
yes
сообщение Feb 28 2013, 13:57
Сообщение #9


Гуру
******

Группа: Свой
Сообщений: 2 198
Регистрация: 23-12-04
Пользователь №: 1 640



выскажу ортогональную точку зрения - все эти LCELLы SLICEы и прочие VersaTile нужны в малом кол-ве проектов.

если возникают часто, то что-то не так в методологии разработки sm.gif

у меня, например, больше проблем вызывают задержки в трассировке, чем в логике, и это не только в АЗИКах но и в ПЛИС современных

---------

то есть разработчик прежде всего должен понимать констрейны, настройки тулов, уметь пользоваться тулзами типа Planehead-а, для удовлетворения timing closure

а знание SLICE-ов это конечно не недостаток, но указание как требования свидетельствует о недостаточном понимании самим работадателем процедуры разработки дизайнов

---------

у Xilinx-а свой, не sdc формат констрейнов, в последних версиях они вроде бы сделали конвертор, но я им еще не пользовался
Go to the top of the page
 
+Quote Post

Reply to this topicStart new topic
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0

 


RSS Текстовая версия Сейчас: 18th July 2025 - 12:54
Рейтинг@Mail.ru


Страница сгенерированна за 0.01457 секунд с 7
ELECTRONIX ©2004-2016