|
|
  |
Почему не хватает родных САПР для ПЛИС?, Зачем нужны Active-HDL, Riviera, ModelSym, Synplify, Identify... |
|
|
|
May 30 2006, 13:47
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972

|
Цитата(druzhin @ May 30 2006, 16:47)  Вы вообще-то делали БОЛЬШИЕ проекты? Вы пробовали понять почему схематик почти вымер? В схематике сидит одно тупое старичьё с второстепенными проектами, у них всегда на готове обоснование почему надо сидеть в схематике третьего фоундейшена. Когда я что-то проектирую, я придумываю КАК что-либо должно работать и пишу это на верилоге. Если бы я сидел на схематике, тоя должен был бы: 1) придумать КАК должно работать нечто, 2) понимание КАК должно работать перевести в примитивы схематика, то есть сделать лишнее действие. Если Вы писали вообще про схематик, то это уже избитая тема... А вот если про схематик КА (что менее вероятно), то я думаю уже многие согласились, что в графическом описании КА больше преимуществ, чем недостатков. Мое ИМХО я бы вообще всё писал на Verilog'e (комментить проще) + если проект большой - разделение на "глобальные" функциональными блоки. Но получается удобней (и продуктивней!) КА оформлять в графике.
--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
|
|
|
|
|
May 30 2006, 13:52
|

Частый гость
 
Группа: Свой
Сообщений: 141
Регистрация: 16-06-05
Из: Нижний Новгород
Пользователь №: 6 065

|
Цитата(vetal @ May 30 2006, 17:27)  А как иначе-то? Что написано, то и делают(работа у них такая). Ну еслиб я мог написать "Уважаемый верилог поставь триггер", и он бы ставил, я б согласился Как сказал уважаемый druzhin, выигрыш HDL состоит в том, что можно не отвлекать на то, как реализовывать на основе примитивов. Набросал поведение, а синтезатор сам пусть думает, как это воплотить в жизнь. Здесь и всатет вопрос, а то ли он делает, что имелось в виду.
|
|
|
|
|
May 30 2006, 14:03
|
Местный
  
Группа: Свой
Сообщений: 244
Регистрация: 2-10-04
Из: Мухосранска
Пользователь №: 763

|
Цитата Здесь и всатет вопрос, а то ли он делает, что имелось в виду. Конечно то. А если не то,то всегда можно посмотреть,что он там насинтезил.На крайняк замоделировать то,что насинтезил.Ну,или самое тупое- сделать прошивку,залить в железо и искать причины почему не работает.Благо встоенные логические анализаторы облегчают такую отладку.
|
|
|
|
|
May 30 2006, 15:20
|

Гуру
     
Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553

|
Цитата "Уважаемый верилог поставь триггер" Я примерно так и делаю :"Уважаемый вхдл поставь триггер" и он появляется. Цитата Я имел в виду, всегда ли синтезаторы адекватно синтезируют HDL описание. А то может так ссинтезируют, что после разводки шедевра по кристаллу схема не будет работать и на 30 МГц, хотя планировалось 50. Синтезаторы синтезируют на столько корректно, на сколько корректно описана схема. Шутка: можно сходить к хирургу и выпрямить руки, тогда и rtl, прямой будет  (всерьез не воспринимать) От синтезатора мало что зависит. Все упирается в человека. Если вы в квартусе(схема) поставите триггер на вход D подадите '1', на clk тактовую, а выход q податите на выход, то квартус просто посадит q на '1'.
|
|
|
|
|
May 30 2006, 15:45
|

Частый гость
 
Группа: Свой
Сообщений: 141
Регистрация: 16-06-05
Из: Нижний Новгород
Пользователь №: 6 065

|
Цитата(vetal @ May 30 2006, 19:20)  Я примерно так и делаю :"Уважаемый вхдл поставь триггер" и он появляется. Прям одной строчкой? Прям по русски? Фантастика!!! Цитата Синтезаторы синтезируют на столько корректно, на сколько корректно описана схема. Шутка: можно сходить к хирургу и выпрямить руки, тогда и rtl, прямой будет  (всерьез не воспринимать) От синтезатора мало что зависит. Все упирается в человека. Если вы в квартусе(схема) поставите триггер на вход D подадите '1', на clk тактовую, а выход q податите на выход, то квартус просто посадит q на '1'. Я не говорю о коде, который написан неправильно. Я говорю о коде, который синтезиться в принципе правильно, но при этом либо схема занимает слишком много ресурсов, либо с максимальной тактовой частотой проблемы. В данной теме выше приводился пример того как синтезатор ISE при разводке схемы на кристале затратил на 20% больше ресурсов, чем синтезатор Sinplify. То есть синтезаторы все-таки делают какие-то ошибки, не оптимально что-то синтезируют. Вот я о чем говорю.
|
|
|
|
|
May 30 2006, 16:00
|
Вечный ламер
     
Группа: Модераторы
Сообщений: 7 248
Регистрация: 18-03-05
Из: Томск
Пользователь №: 3 453

|
Цитата Я не говорю о коде, который написан неправильно. Я говорю о коде, который синтезиться в принципе правильно, но при этом либо схема занимает слишком много ресурсов, либо с максимальной тактовой частотой проблемы. Очень интересно, а чем это отличается от рисования схем ? то, что вы попросили от синтезатора, то он и собрал, так как вы указали. И проблема максимальной тактовой это проблема в первую очередь разработчика, т.к. синтезировался его код. Согласитесь что ждать от pipa(31 downto 0) <= pipaA(31 downto 0) when (signed(pipaA) < signed(pipaB)) else pipab(31 downto 0); 500 МГЦ на virtex4 это просто смещно и виноват в этом не синтезатор, а человек, который вот это написал. Цитата В данной теме выше приводился пример того как синтезатор ISE при разводке схемы на кристале затратил на 20% больше ресурсов, чем синтезатор Sinplify. То есть синтезаторы все-таки делают какие-то ошибки, не оптимально что-то синтезируют. Вот я о чем говорю. В данном конкретном примере они не делают ошибки, они понимают описание таким образом, каким понимают + у симплифая большая площадь охвата алгоритма минимизации. И не факт что схематичное описание, переведеное в вхдл и скормленое симлифаю даст такой же выйгрышь (ах какой плохой симплифай). А по сабжу ИМХО через написание кода, должны пройдти все, это так сказать школа жизни. И только потом переходить на пакеты граф. проектирования, и если уж пошла такая пьянка так давайте еще расмотрим цикл разработки как снизу в верх, так и сверху вниз (вот тут как раз на высоком уровне иерархии граф. отображение благо).
--------------------
|
|
|
|
|
May 30 2006, 16:32
|

Гуру
     
Группа: Модераторы
Сообщений: 2 095
Регистрация: 27-08-04
Из: Россия, СПб
Пользователь №: 553

|
Цитата Я не говорю о коде, который написан неправильно. Я говорю о коде, который синтезиться в принципе правильно, но при этом либо схема занимает слишком много ресурсов, либо с максимальной тактовой частотой проблемы. Уж ответили. Но я повторю - какой rtl, такой и результат. Схема - структурное описание алгоритма. RTL - описание алгоритма на уровне регистровых передач. Разница - в подходе.
|
|
|
|
|
May 31 2006, 04:18
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(kst @ May 30 2006, 20:52)  Цитата(vetal @ May 30 2006, 17:27)  А как иначе-то? Что написано, то и делают(работа у них такая). Ну еслиб я мог написать "Уважаемый верилог поставь триггер", и он бы ставил, я б согласился Фраза "Уважаемый верилог поставь триггер" переводится на Верилог следующим образом: reg trigger; always @(posedge clk) trigger <= ...; Но я на другом хотел заострить внимание. При проектировании логики на HDL нужно уйти от понятий "триггер", "счетчик (простой, реверсивный, по модулю эн и т.д.)", "сдвиговый регистр" и т.д. Цель проектирования - получить работоспособный результат. И при вводе описания мне нужен-то (и всегда был нужен), скажем, не счетчик, как таковой, а некое устройство, которое будет выполнять функцию счета. Во времена рассыпухи таких устройств универсальных не было и делали это на триггерах, потом появилсь ИМС счетчиков, из которых лепили более сложные счетчики. Потом возникли ПЛИСы, где появилась возможность исползовать параметризованные блоки - например, lpm_counter, и казалось, что вот это и есть то, что надо - универсальный счетчик на все случаи жизни подходит, другого нечего и желать. И сам факт, что нужен-то не счетчик, а функция счета, как-то остался в стороне. А между тем, именно HDL'ные конструкции и дают возможность описывать именно функциональность. Например, мне нужно подсчитывать что-то, пишу (упрощено, почти псевдокод  ): Код ... input event; reg [N-1:0] Count;
always @(posedge clk) if(event) Count <= Count + 1; Конечно, это будет счетчик, точно такой, какой бы я сам сваял. Но в этом случае мне об этом даже думать не надо - мне нужен подсчет, я его получил. Безо всяких явных указаний про счетчики и прочее. Аналогично и со всем остальным. Когда работал еще с AHDL'ем, использовал в полный рост библиотеку LPM, казалось, клевая вещь. Пересевши на Verilog, тоже пытался по привычке использовать LPM, испытал большое неудобство в использовании - все-таки способ инстанцирования объектов в AHDL, имхо, на порядок удобнее и читабельнее, чем в Верилоге. Но скоро понял, что занимаюсь ерундой, что нет никакой необходимости в этих модулях. В итоге, в проектах нет ни одного LPM модуля, в качестве готовых альтеровских модулей использую только блоки памяти, ФАПЧ и умножители - то, что является специализированными аппаратными устройствами ПЛИС. Я не утверждаю, что надо абстрагироваться от железа - ни в коем случае этого делать нельзя, иначе ничего хорошего после синтеза не выйдет - всегда надо представлять, во что выльется та или иная языковая конструкция. Но не нужно делать акцента на конкретных устройствах - как триггеры, счетчики. Ведь при проектировании всегда есть над чем подумать - на это и концентрировать усилия.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
May 31 2006, 06:34
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972

|
Цитата(dxp @ May 31 2006, 08:18)  Когда работал еще с AHDL'ем, использовал в полный рост библиотеку LPM, казалось, клевая вещь. Пересевши на Verilog, тоже пытался по привычке использовать LPM, испытал большое неудобство в использовании - все-таки способ инстанцирования объектов в AHDL, имхо, на порядок удобнее и читабельнее, чем в Верилоге. Но скоро понял, что занимаюсь ерундой, что нет никакой необходимости в этих модулях. В итоге, в проектах нет ни одного LPM модуля, в качестве готовых альтеровских модулей использую только блоки памяти, ФАПЧ и умножители - то, что является специализированными аппаратными устройствами ПЛИС. Навеяло воспоминания  Я также подпишусь под каждым словом этого абзаца Думаю, для всех кто работал с AHDL, это типичный путь перехода. Может оформить как краткая инструкция к переходу с языка AHDL
--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
|
|
|
|
|
May 31 2006, 06:54
|

Знающий
   
Группа: Свой
Сообщений: 601
Регистрация: 1-03-05
Из: Spb
Пользователь №: 2 972

|
Цитата(vetal @ May 31 2006, 10:37)  Все, кроме pll, можно без проблемм реализовать на языке. У altera целый раздел посвящен этому в "настольной книге". хочу уточнить: что синтезаторы уже стали понимать поведенческое описания блоков памяти??? (для Altera?) Или просто забыли дописать в посте "Все, кроме pll, блоков памяти и специализированых блоков ПЛИС" как у dxp
--------------------
Насколько проще была бы жизнь, если бы она была в исходниках
|
|
|
|
|
May 31 2006, 07:14
|

Adept
     
Группа: Свой
Сообщений: 3 469
Регистрация: 6-12-04
Из: Novosibirsk
Пользователь №: 1 343

|
Цитата(vetal @ May 31 2006, 13:37)  Все, кроме pll, можно без проблемм реализовать на языке. Это да, только вот эксперименты с той же памятью не принесли (мне) удовлетворения. Для того, чтобы синтезатор (Синплифай) правильно инферил память, надо соблюдать ряд требований. Например, оно хотело (версия 7.5 или 7.6, что-ли, в общем, какая-то из этих, с более новыми не проверял), чтобы выход памяти обязательно пропущен через регистр - это в доке было описано. Но ведь не всегда это надо, иногда достаточно взять просто с выхода памяти. Короче, по предсказуемости и устойчивости результата использование блока, сгенеренного в мегавизарде, оказалось лучше. С умножителем похожая история вышла. Пока использовались умножения на константу, синтезатор генерил прекрасный код. Но при попытке использовать полноценный (переменную на переменную) умножитель, синтезатор нагенерил кучу предупреждение о том, что, дескать, такой-то регистр с офигенно длинным и запутанным именем - это он сам все это сгенерил, нечеловеческое название было, pruned because его выход не используется. Спрашивается, зачем об этом вопить? Сам сгенерил, сам удалил, малацца, хороший мальчик, возьми с полки конфетку, зачем об этом сообщать? И таких предупреждений оно выдало несколько сотен - умножитель-то немаленькая штучка. Потыкался, потыкался, не понял, что ему надо, сгенерил блок lpm_mult и удовлетворился. В общем, нет никаких принципиальных противопоказаний к хорошей генерации и памяти, и умножителей, но на тот момент реализация мне не понравилась. Возможно, в будущем ситуация улучшится. М.б. она уже улучшилась в том же Синплифае 8.5, пока не проверял. Цитата(NiOS @ May 31 2006, 13:54)  Цитата(vetal @ May 31 2006, 10:37)  Все, кроме pll, можно без проблемм реализовать на языке. У altera целый раздел посвящен этому в "настольной книге".
хочу уточнить: что синтезаторы уже стали понимать поведенческое описания блоков памяти??? (для Altera?) Понимать-то уже давно понимают. И даже иногда генерят то, что нужно. Но только для этого надо ряд условий соблюдать. В доке на синтезатор это, как правило, описано.
--------------------
«Отыщи всему начало, и ты многое поймёшь» К. Прутков
|
|
|
|
|
  |
1 чел. читают эту тему (гостей: 1, скрытых пользователей: 0)
Пользователей: 0
|
|
|