v_mirgorodsky
Apr 10 2015, 15:25
Доброго времени суток,
Ищется простое решение для симуляции спайс-нетлиста совместно с тест-бенчем на Верилог. Точно знаю, что подобная штука есть в Каденсе. Там Verilog-NC запускается совместно со Спектрой и получается автоматический тестовый стенд с очень хорошим покрытием. Верилог генерирует входные вейв-формы и проверяет результаты из Спайса. Получается очень приличное покрытие, практически неограниченная гибкость, авоматические тесты и много других полезностей. Недостатком этого всего является большой прицеп в виде самого Каденса и его слабо вменяемых настроечных файлов.
Еще знаю, что подобное решение запускалось с Наносимом, однако он уж сильно устарел и для "свежих" библиотек его использовать как-то сильно рисковано. Был вариант, когда Наносим был интегратором, а в качестве спайс-симулятора предлагались на выбор xa & hsim. Однако этот маршрут выглядит тоже немного рискованным по причине отсутствия "свежих" версий вышеупомянутых симуляторов.
Недавно прочитал, что есть подобное решение от Синопсиса - VCS-AMS. Сразу пошел искать его в закрома, однако ничего похожего на аббревиатуру VCS-AMS там не нашел.
Соответственно, вопрос. Использовал ли кто-то в работе связки Верилог-Спайс? Если да, то какие програмные продукты использовались, получалось ли у кого в качестве Спайс-симулятора запускать HSPICE?
Есть ли у кого опыт использования VCS-AMS? На сколько сложно увязать нетлисты?
И знает ли кто как скоро он может появиться в закромах?
Цитата(v_mirgorodsky @ Apr 10 2015, 18:25)

Однако этот маршрут выглядит тоже немного рискованным по причине отсутствия "свежих" версий вышеупомянутых симуляторов.
Вообще, оно вроде хорошо считало и тогда, за это время ничего в математике не изменилось. Так что nanosim C-2009.06 вполне себе решение.
А из современного - совместная ко-симуляция XA + VCS MX - поищите лабы по части XA-VCS mixed-signal simulation
v_mirgorodsky
Apr 11 2015, 02:12
Был у меня опыт использования Наносим для динамических гейтов на UMC 65нм. Наносим симулировал быстро и неправильно. По какой-то причине он разряжал динамические ноды намного быстрее, чем это предполагалось. Пришлось выбросить в топку. HSPICE, XA, HSIM симулировали нормально, результаты немного отличались между собой, но не критично. Как показала практика, ближе всего к правильному ответу был HSPICE, дальше всех лежали результаты XA, HSIM довольно точно повторял поведение HSPICE с некоторыми особенностями. Ну и как не странно, HSPICE практически без проблем поднял post-layout extracted нетлист на 200000 транзисторов и выдал результаты симуляции часов через 20, тогда как HSIM просто "упал" с ошибкой по памяти. Симуляция проводилась на 48 процессорном сервере с 384GB памяти.
Сейчас надо симулировать "всего" тысяч 50 транзисторов, но техпроцесс сильно тоньше. Фактически, производительно рисовать full-custom под этот тех-процесс можно только в честно купленном Каденсе. Все остальное, что имеется на рынке или плохо поддерживает дабл-паттернинг, или никак его не поддерживает. Вместе с рисовалкой были честно куплены очень ограниченное количество лицензий под Спектру и APS. Там и получилось запустить миксед моде симуляцию с Верилогом, однако меня не устраивает гибкость полученного решения, его точность и скорость. Вот и ищу варианты "улучшения" ситуации.
Цитата
А из современного - совместная ко-симуляция XA + VCS MX - поищите лабы по части XA-VCS mixed-signal simulation
На сайте Synopsis новостей об обновлении XA я не нашел. В закромах есть версия за 2013 год. Если правильно помню, то для проекта с 65нм использовал все же что-то более ранее. Можно попытаться запустить эту связку. А у вас нет какого-нибудь простого примера на эту тему?
Все же очень хотелось бы научиться использовать HSPICE в связке с VCS, потому как оба продукта регулярно обновляются в закромах и дают необходимую точность и скорость работы. По идее, VCS-AMS предоставляет необходимые возможности. Потому ищется этот подукт, или другое решение, позволяющее организовать ко-симуляцию любого из доступных Верилогов с HSPICE.
вся тройка - Nanosim, XA и HSIM плавно переросли в продукт под названием "CustomSim", который интегрируется с VCS. В закромах не встречал его. Поэтому новостей и нету. Искать надо этот новый продукт.
v_mirgorodsky
Apr 11 2015, 15:07
На eetop.cn говорят, что CustmSIm - это и есть XA. Самая новая версия XA доступная от Синопсис всего на один релиз младше той, что есть в закромах.
Еще ко-симуляцию умеет FineSim Pro двухлетней давности - тоже лежит в закромах. Однако у него серьезные проблемы с лицензиями.
Как бы во всех случаях смущают сравнительно старые версии продуктов, а новых как-то не появляется.
Цитата(v_mirgorodsky @ Apr 11 2015, 18:07)

На eetop.cn говорят, что CustmSIm - это и есть XA.
Сомнительно, так как первый ответ фака говорит, что это гибрид HSIM, XA и Nanosim -
http://www.synopsys.com/Tools/Verification...tomSim-faq.aspxХотя, точной информацией не обладаю...
v_mirgorodsky
Apr 11 2015, 17:10
Нашел как запускать XA с VCS. Как оказалось, надо в командной строке указать файлик конфигурации с достаточно простой структурой. На днях попробую, если все получится - выложу какой-нибудь примерчик.
Цитата(v_mirgorodsky @ Apr 11 2015, 20:10)

Нашел как запускать XA с VCS. Как оказалось, надо в командной строке указать файлик конфигурации с достаточно простой структурой. На днях попробую, если все получится - выложу какой-нибудь примерчик.
О! Это интересно, и очень полезно будет. Я только наносимом в древности симулировался...
kleverd
Apr 14 2015, 19:50
Объединение спайс нетлистов с верилогом по слухам существует в Tanner EDA. Там верилогом можно описать ячейку и симулировать все вместе с обвязкой в спайс симуляторе T-Spice.
Shivers
Nov 2 2015, 11:06
А в кэденсе кто нибудь моделировал спайс с верилогом? Я так понимаю, Virtuoso-AMS (бывший ultrasim?) позволяет такое делать.
Poluektovich
Nov 2 2015, 12:02
В cadence Virtuoso ADE есть симулятор ams. Ultrasim - это fast spice симулятор. AMS симулятор базируется на:
analog engine - spectre
digital engine - ncverilog
Shivers
Nov 2 2015, 12:48
AMS позволяет behavioral verilog моделировать? Потому что в доке на ultrasim я вычитал, что он только structural verilog понимает. А у меня сейчас задача - хочу написать тестбенч на поведенческом верилоге, при том что тестируемая схема - спайс-нетлист.
И еще вопрос - AMS какой консольной командой вызывается? У меня пакет MMSIM установлен, но я там пока только спектру и ультрасим вижу. Virtuoso ADE, это другой пакет тулов?
Для смешанного моделирования вам понадобится среда virtuoso и симулятор AMS из пакета INCISIVE, без первого можно обойтись, если у вас есть уже готовый спайс нетлист.
посмотрите примеры в INCISIV/tools.lnx86/amsd/samples если есть готовый спайс нетлист или в
IC6/tools.lnx86/dfII/samples/tutorials/AMS если схема в базе даных кэденса.
UPD: по "behavioral verilog ", AMS позволяет а ultrasim нет. считайте что ultrasim это обычный аналоговый спайс симулятор, без поддержки цифры.
AMS позволяет выбирать аналоговый симулятор, spectre или ultrasim.
MMSIM содержит только аналоговые симуляторы, вам нужен пакет INCISIVE.
Shivers
Nov 2 2015, 13:24
Я так понимаю, если пакет INCISIVE, то используется команда irun с соответствующими ключами, и среда SimVision. Это здорово, меньше разбираться. Спасибо!
Цитата(Shivers @ Nov 2 2015, 16:24)

Я так понимаю, если пакет INCISIVE, то используется команда irun с соответствующими ключами, и среда SimVision. Это здорово, меньше разбираться. Спасибо!
Да, все верно.
Shivers
Nov 2 2015, 16:28
Losik
Заработало, спасибо!
И еще два вопроса.
1. Можно ли в INCISIVE выводить на вейвформу ток питания, и результаты функций калькулятора как в Virtuoso, - интегрировать ток, считать мощность, и т.д.?
2. Как реализовано управление питанием? Если я хочу его повысить/понизить, задать синусоидой и т.д.
Poluektovich
Nov 3 2015, 06:48
1. Такие функции в simvision недоступны.
2. Можно описать и подключить источник питания на VerilogA. Например, синус
http://www.eda.org/verilog-ams/models/V_sine_generator.va
Shivers
Nov 3 2015, 08:00
Цитата(Poluektovich @ Nov 3 2015, 09:48)

Можно описать и подключить источник питания на VerilogA. Например, синус
Спасибо!
У меня питание долго не работало, пока я в amscf.scs не добавил следующие строки:
Код
simulator lang=spice
.global vdd! gnd!
V0 gnd! 0 0
V1 vdd! 0 1
Я правильно понимаю, что источник питания на Verilog-A надо подключать как любой другой модуль, и цепи питания/земли не надо объявлять глобальными?
На Verilog-A я ни разу не писал, поэтому еще вопрос:
Если я включу источник напряжения, за ним нулевой резистор
http://www.eda.org/verilog-ams/models/resistor.va , то смогу на verilog-A снимать ток с выводов резистора как I(p,n). И мне для дальнейшего использования надо будет только преобразовать ток в формат real, и можно считать мощность?
Цитата(Shivers @ Nov 2 2015, 19:28)

Losik
Заработало, спасибо!
И еще два вопроса.
1. Можно ли в INCISIVE выводить на вейвформу ток питания, и результаты функций калькулятора как в Virtuoso, - интегрировать ток, считать мощность, и т.д.?
2. Как реализовано управление питанием? Если я хочу его повысить/понизить, задать синусоидой и т.д.
по первому вопросу я бы не был столь категоричен, выводить вы можете и токи и напряжения. симвизион имеет калькулятор и там есть вкладка analog для манипуляции аналоговыми сигналами.
питание чего? аналога? задаете сами источниками. между цифрой и аналогом стоят интерфейсные элементы(преобразователи написанные на верилог-а) они транслируют аналог в цифру и цифру в аналог.
или вы хотите менять питание на цифре?
на верилоге-а не обязательно писать, все должно измеряться для аналоговой части в тесте. нужно использовать probe.
что-то в виде probe -create -flow -shm -ports top.V0.PLUS
ключи в команде могут быть другие, почитайте мануал
Shivers
Nov 3 2015, 09:19
Спасибо!
Интегрировать я пока не научился (в SimVision калькуляторе такой опции не нашел), но стало понятно, куда копать дальше. Мне нужно считать удельное потребление на операцию в цифро-аналоговом блоке (тестовое окружение на поведенческом верилоге не считается). Думаю, в разрыв питания можно вставить токосъемный резистор 0 Ом, а дальше уже можно что то придумать. Источник на verilog-a я прикрутил - все работает.
drozel
Jan 19 2016, 15:09
А можно ли для этих целей использовать Modelsim? Скармливать ему sdf и нетлист из design compiler?
Уступает ли этот метод тому же vcs?
Shivers
Jan 19 2016, 17:10
Меня здесь интересовало немного другое - аналогово-цифровое моделирование. А Вы про цифровое спрашиваете.
Для цифрового, конечно - менторовский Modelsim/Questa вполне подойдут. Тормознее чем vcs или irun, но для небольших проектов - вполне годятся.
Shivers
Mar 16 2016, 18:55
Ай нид хелп. Опыта совсем мало, столкнулся с проблемой: схема на ~10k транзисторов моделируется 4-6 часов. Использую ключ -fastspice, шаг 1ps/1ns. Как ускорить процесс? Может, минимальный шаг увеличить?
Может быть, можно как то задействовать многоядерность (моделирую в CDS irun/simvision)? Сейчас одно ядро только работает.
И еще вопрос. Если перейти с AMS на просто спайс - быстрее будет моделироваться? Мне бы этого очень не хотелось, поскольку тестбенч написан на верилоге, но ради существенного ускорения я готов пойти на жертвы.
Цитата
схема на ~10k транзисторов моделируется 4-6 часов
это post-layout ?
вобщем-то, альтернатива - это Mentor Analog FastSPICE, но мы его не покупали, поэтому не подскажу.
Shivers
Mar 16 2016, 19:17
Цитата(krux @ Mar 16 2016, 22:11)

это post-layout ?
Нет, это голая транзисторная схема, без паразитов.
Большинство фич для ускорения поддерживаются только в новых версиях INCESIV(например с 13.1)
AMS обычно медленнее чем AS.
Для ускорение моделирования аналоговой части посредством спектры нужно ей передать пару ключей
+aps и +mt=8 это подключит более быстрое ядро для расчетов и распределит на 8 процессоров(можно больше, если позволяют лицензии)
+errpreset= liberal установит низкую точность моделирования, если не хватит то нужно установить moderate или conservative
ncsim -analogControl ./amsControlSpectre.scs -simcompat spectre -spectre_args +aps +errpreset= liberal -spectre_args +mt=8
также точность можно установить передав параметры аналоговому ядру через файл amsControlSpectre.scs
simulator lang=spectre
simulatorOptions options reltol=1e-3 vabstol=1e-6 iabstol=1e-12
или же ввести их в консоли:
ncsim> analog -reltol 0.001
ncsim> analog -vabstol 1m
ncsim> analog -iabstol 1e-12
они влияют на точность моделирования. можно делать так, запустить схему с низкой точностью
ncsim> analog -reltol 0.01
ncsim> run 100 ns
потом, когда в ней все установится, переключиться на большую точность
ncsim> analog -reltol 0.002
ncsim> run 100 ns
можно также использовать UltraSim симулятор(он включен в пакет INCESIV), он позволяет более быстро моделировать смешанные схемы посредством указания точности моделирования для каждого блока в отдельности, также поддерживает в новых версиях опцию +mt.
Shivers
Mar 17 2016, 10:59
Это просто праздник какой то, спасибо!
К многоядерностью не получилось (возможно, лицензия такая, надо выяснить), а вот
ncsim> analog -reltol 0.01
ncsim> run 100 ns
ncsim> analog -reltol 0.002
ncsim> run 100 ns
Это очень мощно помогло!
Скажите, а можно эти команды (analog -reltol, run) вставлять прямо в тестбенч в конструкцию initial begin .. end?
>>К многоядерностью не получилось
тут проблема или в лицензии(посмотрите лог лиц сервера) или в версии программы.
>>Скажите, а можно эти команды (analog -reltol, run) вставлять прямо в тестбенч в конструкцию initial begin .. end?
этого не знаю, задавал только через файл или через консоль.
Shivers
Mar 17 2016, 15:17
Еще вопрос.
Питание я задаю в amscf.scs с помощью конструкции
amsd{
ie vsup=1
}
А как задать температуру? И можно ли как то менять Process?
psygash
Mar 17 2016, 15:44
В amsControlSpectre.scs задается:
simulatorOptions options temp=27.0 tnom=27 scale=1.0 scalem=1.0 \
reltol=100e-6 vabstol=1e-6 iabstol=1e-12 homotopy=all limit=delta \
gmin=1e-12 rforce=1 maxnotes=5 maxwarns=5 digits=5 pivrel=1e-3 \
checklimitdest=psf
Process в смысле модели?
как include их делайте
Shivers
Mar 17 2016, 16:45
Цитата(psygash @ Mar 17 2016, 18:44)

simulatorOptions options temp=27.0 tnom=27
Здорово, спасибо! Помогло.
Про Process ерунду спросил, сорри. Забыл, что модели для разных углов есть.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.