Полная версия этой страницы:
Вопросы сходимости в HSPICE
Всем привет.
Не подскажете ли, какие методы используются для обеспечения сходимости в сложных случаях?
Дано: сложная схема с частью блоков, описанных на Verilog A.
Надо: посчитать длинную времянку.
Что делал:
.option runlvl=5 - более точный метод (аналог .option accurate)
.option method=bdf/gear - использовал разные численные методы
.option imax=40
.option itl4=40 - увеличивал количество итераций в ходе вычисления каждой точки анализа (по умолчанию - 8)
.option reltol=5e-3 - расслаблял условия сходимости
.option gshunt=1e-12 - шунтировал узлы небольшими проводимостями и ёмкостями (команда ниже)
.option cshunt=1e-14
Результаты одни и те же - схема считается до определённого момента (3-5%), а потом останавливается с ошибкой:
sweep: tran tran0 begin, stop_t= 1E-03 #sweeps=**** cpu clock= 4.51E+01
**error** internal timestep too small in transient analysis
sweep: tran tran0 end, cpu clock= 3.52E+02 memory= 3683 kb
>error ***** hspice job aborted
Сталкивался ли кто-нибудь с подобной проблемой и как она решалась?
Заранее спасибо.
BarsMonster
Dec 18 2010, 06:00
Лично я такую ошибку видел при моделировании "некорректных" схем (в моём случае - когда транзисторы во время переходного периода в нестабильном состоянии) ,
и точно также уменьшение шага и прочих параметров не помогало.
Поэтому, выделяйте минимальную под-схему на котором еще повторяется ошибка, и - в студию :-)
(впрочем, в процессе выделения может и так найдете)
Стандартными способами победить так и не удалось.
Воспользовался trannoise анализом (Монте-Карло).
Результат получился в пределах ожидаемого.
Но всё же хотелось бы услышать кого-нибудь ещё, кто сталкивался с подобным...
"trannoise анализом (Монте-Карло)." ???
Было дело, сталкивался с подобным поведением. Проблему решал исправлением схемы.
Как вариант - могут быть кривые модели.
cdsinit
Apr 4 2011, 12:21
В моей практике такие ситуации с несходимостью при Transient-анализе
часто встречаются при моделировании блоков статической памяти, содержащих
большое количество непроинициализированных запоминающих элементов.
Проблему решаю, задавая начальные условия (IC - initial conditions) для всех триггеров.
Maybe you could try to limit the values inside VerilogA models, with an if statement.
Для просмотра полной версии этой страницы, пожалуйста,
пройдите по ссылке.