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

Аппаратные ускорители моделирования

При больших проектах моделирование превращается в безделье в ожидании результата, а если допустил ошибку, начинаеш все сначала. Увеличение мощности машини к ощутимому результату не приводит. Какие варианты ускорения моделирования? Слышал, что у Альдека есть плата для аппаратного ускорения моделирования с программной поддержкой, но просят за нее как за "рідну маму" :blink: Как кто выходит из ситуации?

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


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

В свое время тоже очень интересовался, но запросили 130 тыс $ и желание сразу пропало :) Как я понял в этих платах от Aldec стоят Virtex-ы и ту часть проекта которую вы отладили в симуляторе синтезируется (кстати необходим ISE) и загоняется в железку. Оставшийся проект в симуляторе общаеться с этим модулем через PCI (т.е. он уже не моделируеться симулятором).

Выходим из ситуации очень просто ChipScope :(

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


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

В свое время тоже очень интересовался, но запросили 130 тыс $ и желание сразу пропало :) Как я понял в этих платах от Aldec стоят Virtex-ы и ту часть проекта которую вы отладили в симуляторе синтезируется (кстати необходим ISE) и загоняется в железку. Оставшийся проект в симуляторе общаеться с этим модулем через PCI (т.е. он уже не моделируеться симулятором).

 

Это получается что-то похожее на Synplicity Identify, т.е. RTL debuger, только завернутый в красивую упаковку и со всеми приятными дополнениями в виде платы. Дело, конечно хорошее, но не совсем то, о чем был первоначальный вопрос.

 

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

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


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

Согласен с makc, я тоже стараюсь разбивать проект на отъемлимые части, которые можно тестировать независимо. Но, как показывает практика, и с ними приходится "долго пить чай". Поэтому в последнее время приглядывался к Наноборд от Альтиум, но она гадость дороговата ($1200 в Москве). Потом остановился на облегченной версии за $100 (с доставкой вышло чуть дороже). Там варианты либо Циклон либо Спартан-3. Хотя не все так гладко, как хотелось бы, но все-таки на железе проверяешься.

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


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

to one_man_show

 

Посмотрел на НаноБорд... Итересный инструмент, но я не очень понял, чем она может сильно помочь в реальной разработке. Да, на ней можно реально попробовать свой проект для FPGA, но ведь все-равно этот проект будет работать в другом окружении на реальной плате... Так может быть на этой плате развести разъем под JTAG и пользоваться инструментами типа ChipScope и Identify? Ведь в этом случае будет возможность отлаживать проект в реальных условиях, которые к в конце концов и являются целью.

 

Понимаю, что развести JTAG не всегда возможно и/или хочется. Но без него, как без последовательного порта при отладке микроконтроллера - никакой отладочной информации, отладка "вслепую". :glare:

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


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

to maks

Я правильно понял. Вы предлагаете оставлять в проекте нужные модули и симулировать. Если так, оно конечно логично, но не учитывает специфики физического размещения, иными словами годится только для функционального моделирования. А само функциональное моделирование и без разделения шустро считается.

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


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

To makc

ПЛИС, установленную на Наноборд, можно иногда использовать как имитатор платы, на котороц будут Ваши компоненты, в том числе и другие ПЛИС. То есть Вы как бы в проекте ПЛИС рисуете будущую плату, в качестве обрамления используете не только необходимые для проекта компоненты, но и виртуальные измерительные инструменты: типа анализатора, генератора и т.п. Таким образом можно обкатать фрагмент большого проекта.

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


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

to maks

Я правильно понял. Вы предлагаете оставлять в проекте нужные модули и симулировать. Если так, оно конечно логично, но не учитывает специфики физического размещения, иными словами годится только для функционального моделирования. А само функциональное моделирование и без разделения шустро считается.

 

А если модули закрепить? ;)

 

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

 

2 one_man_show

 

ПЛИС, установленную на Наноборд, можно иногда использовать как имитатор платы, на котороц будут Ваши компоненты, в том числе и другие ПЛИС.

 

Не только можно, но и нужно. Только в определенных случаях может возникнуть проблема, что создание имитатора само по себе является по сложности такой же задачей, что и создание отлаживаемого устройства. А это тупик, т.к. становится непонятно, кто кого проверяет и как. :) К тому же все равно остается проблема репрезентативности полученных результатов... :huh:

 

То есть Вы как бы в проекте ПЛИС рисуете будущую плату, в качестве обрамления используете не только необходимые для проекта компоненты, но и виртуальные измерительные инструменты: типа анализатора, генератора и т.п. Таким образом можно обкатать фрагмент большого проекта.

 

Это-то все как раз понятно... :)

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


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

to maks

<А если модули закрепить? ;) >

Я уже высказывался по этому поводу (думаю именно по этому смайлик).

 

<Что касается быстродействия функционального моделирования, если я правильно понят, то именно о проблеме с ним и был первоначальный вопрос по этой теме.>

Уш не знаю что это за проект, у которого функциональное моделирование занимает десятки минут, во всяком случае о моделировании его с PAR точно не имеет смысла (на пару порядков ввремя моделирования увеличится). Посему уверен на 99.99% что вопрос как раз о моделировании с PAR.

 

Теперь соображение по поводу аппаратных ускорителей.

Интересно, как там дела обстаят с "$task" типа "setup" "hold"?

Склонен думать, что они просто "херятся", а это ОЧЕЬ ВЕРИ БЕД!!!

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


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

Недавно читал:

А.Г. ЕРМОШКИН. Методы повышения быстродействия низкоуровневых моделей вычислительных комплексов, проектируемых с использованием ПЛИС. - "Высокопроизводительные вычислительные системы и микропроцессоры" - сборник научных трудов ИМВС РАН, 2003 г., стр. 111-118. (pdf - 183 KБ).

 

http://www.imvs.ru/imvs/collect/2003/111_118.pdf

Ссылка со страницы: http://www.mcst.ru/mcst/pub.shtml

 

Удачи.

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


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

Ух ты! :w00t: И не ожидал такого оживленного обсуждения :)

Теперь уточню по сути. Плату от Альдека мне правда предлагали не 130к$, а за 25к$. Обещали увеличение скорости моделирования в 7-10 раз.

ChipScope и ему подобные я еще использовал, возможно оно и поможет сути дела.

А теперь по сути.

Делаем мы сейчас разработку. В ней на нескольких платах 13 300-х Виртексов(меньше нельзя) + SDRAM(пару десятков) + SRAM+LVDS+кабеля и т.д. Процессоров только нет. Слава Богу :)

Понятно, что каждый проект откатывается на модели отдельно, более того каждый модуль моделируется. НО! Когда начинаеш собирать все вместе в проекте, начинаеш ловить нестыковки.А после этого хотелось бы и еще всю схемищу отмоделировать, между Виртексами тоже куча обратных связей, тем более что разработчик не один.

Речь не идет даже об временном моделировании(это предел мечтаний), хотя LVDS-ы и кабеля(5нс на 1м) я учитываю при моделировании, хотя-бы функционалка проходила побыстрее.

Теоретически такую разработку можно было бы сделать до изготовления плат.

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

 

Теперь соображение по поводу аппаратных ускорителей.

Интересно, как там дела обстаят с "$task" типа "setup" "hold"?

Склонен думать, что они просто "херятся", а это ОЧЕЬ ВЕРИ БЕД!!!

OOPS :wacko: А что это такое :blush:

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


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

2 one_man_show

 

 

Не только можно, но и нужно. Только в определенных случаях может возникнуть проблема, что создание имитатора само по себе является по сложности такой же задачей, что и создание отлаживаемого устройства. А это тупик, т.к. становится непонятно, кто кого проверяет и как. :) К тому же все равно остается проблема репрезентативности полученных результатов... :huh:

К тому же сам такой имитатор также подлежит верификации и (возможно) метрологической аттестации.

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


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

to irum4 и maks

Мда, никак не свыкнусь с мыслью, что люди все разные :), а так же их задачи и методы. Мне и в голову не приходило, что для FPGA кто то функциональный анализ делает (искренне каюсь) :).

 

to irum4

А в деталях. На чем и как симулируете?

Я так полагаю прикрутили в ModelSim (ActiveHDL) модельки периферии и крутите?

 

<OOPS А что это такое >

В Verilog модели (конечно это есть и в VHDL) есть часть задающая ограничения на время установления данных перед тактовым сигналом, время удержания данных после прихода тактового, и т.п. При работе, симулятор проверяет истинность этих ограничений и в случае нарушения подставляет "Х" (в простонародье метастабильность) , чем иногда усложняет жизнь (просто так "синхронизатор" не описать) ;), ну и соответственно в лог файле то же будут присутствовать ошибки и варнинги.

 

Продолжая тему "железячного" моделирования.

Я не представляю посредством чего возможен детектор метастабильности. Ведь в реальном устройстве нет "Х", разве что статистику собирать, но это совсем не просто да и долго. Потом, симуляция осуществляется для наихудшего случая (наименьшее напряжение питания, наибольшая температура), а заменяя симулируемую логику на моделируемую, мы избавляем себя от сего блага, еще присутствует технологический разброс...

Я даже не говорю о том, что в Виртексной логике мало смысла моделировать Спартановскую, в силу следующего соображения.

Все это говорит в пользу того, что подобные платы предназначены для ускорения функционального анализа, извините меня за такой вывод, если сам производитель пишет это здоровыми черными буквами.

 

Теперь о своей "близкотелой" рубашке ;)

У меня другая загвоздка при симуляции.

Мы даже и не пытаемся симулировать работу блока, проще проверить на опытном образце (это я не к тому, что они такие сложные, просто такой уклад проектирования). Но собственные модули я стараюсь тестировать. Тлько всегда приходится выбирать, тратить время на нормальный тест или просто проверять в железе. В настоящее время выходит примерно так. Во время интенсивной работы над модулем, тестбенчами практически не пользуюсь, очень долго выходит (не считая времени создания заковыристого теста) симуляция на уровне PAR-а, проще тестировать "на месте". А вот когда все близко к устаканиванию, тогда следует погонять на тестбенчах для успокоения.

Наверняка Вы и сами пробовали такие эксперименты:

Смотриш по отчету PAR, такой то модуль (например умножитель) в "PERIOD" не вписывается % на 10-30. В железе как правило все ОК. Ради эксперимента создаеш тестик, пропускаеш тестовые значения, в моем случае, подставляемые в ручную 10 значений сосчитались правильно, а вот если подавать большую последовательность случайных чисел, тогда ошибки появятся. Вышеописанный пример я привел в пользу того, что нормальный тест - совсем не простое занятие и времени на его создание зачастую уходит гораздо больше. Вы, я думаю и сами знаете, просто наболело ;).

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


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

Раз уж уже затронули тематику HES'ов от Алдека.

Работал я с нимим, приятная штучка, должен заметить. Для малых проектов, конечно, смысла брать ее нет, да и, в принципе, зачем (25 тонн денюжек для баловства мало кто выделит), а вот на больших, очень даже ничего. В особенности после выпуска нового ДВМ с новой же дотебоард, поддерживается до 6 Гиг реальных моделей памяти (в железе). Попробуйте ка промоделить 6 Гиг сдрама, да симулятор просто загнется. И опять же возможность переходить на хард клок и прогонять весь проект не в режиме симуляции, а в режиме реальной работы (до 66 МГц) тоже приятный довесок. Получаешь a La девелопинг боард неотходя от кассы :)

В общем, как говорится, кусочек счастья, за ваши деньги ;)

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


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

Раз уж уже затронули тематику HES'ов от Алдека.

Работал я с нимим, приятная штучка, должен заметить. Для малых проектов, конечно, смысла брать ее нет, да и, в принципе, зачем (25 тонн денюжек для баловства мало кто выделит), а вот на больших, очень даже ничего. В особенности после выпуска нового ДВМ с новой же дотебоард, поддерживается до 6 Гиг реальных моделей памяти (в железе). Попробуйте ка промоделить 6 Гиг сдрама, да симулятор просто загнется. И опять же возможность переходить на хард клок и прогонять весь проект не в режиме симуляции, а в режиме реальной работы (до 66 МГц) тоже приятный довесок. Получаешь a La девелопинг боард неотходя от кассы :)

В общем, как говорится, кусочек счастья, за ваши деньги ;)

А можно поподробней описать технологию работы с платой. Насколько я знаю для нее необходим синтезатор и ISE (для Xilinx). Т.е. типа весь проект надо странслировать в эту плату. А сигналы, которые хочеш смотреть? Для каждого изменения нужна также перетрансляция или как?

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


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

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

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

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

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

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

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

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

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

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