Jump to content

    

Моделирование цифровой схемы с задержками

Добрый день!

Хочу разобраться с маршрутом цифрового моделирования в среде Cadence. Вопрос в следующем. Имеется схема, представленная verilog нетлистом. Я ее промоделировал в NC-Verilog с использованием verilog библиотеки без учета задержек.

Создал lib и tlf формат вентильной библиотеки. Подскажите, использование какого тула Cadence позволит опредилить количество входов вентилей, подключенных к каждому выходу и создать sdf файл задержек. Аналогичный вопрос, как получить sdf файл с RC задержками после создания топологии в Encounter. Сalibre позволяет получить SPEF и DSPF нетлист с паразитами. Как от него перейти к sdf. Может есть какой-либо туториал по моделированию с учетом задержек?

 

И еще один вопрос. Чтобы не плодить темы, спрошу его здесь. Это отдельная вспомогательная задача. Может кто подскажет с чего начать обучение основам, если нужно разработать отдельную тестовую микросхему памяти СОЗУ (например 64к). Сам вопрос касается больше процесса моделирования. Как моделируют такие схемы? Делают ли verilog описание шеститранзисторной ячейки СОЗУ либо используют какой-либо другой подход? Интересует как совет\ответ прямо на форуме, так и ссылка на литературу.

 

Share this post


Link to post
Share on other sites

По первой части.

 

Обычно делаем как-то так (Encounter).

 

[Физические библиотеки не рассматриваю, очень крупными шагами]

Загружается синтезированный нетлист + .lib (tlf) на все используемые библиотеки.

Делается P&R.

Экстрагируются паразиты.

Считается тайминг (например, командой timeDesign), выгружается sdf (write_sdf).

 

Далее этот post-P&R нетлист с sdf загружается в логический симулятор (IUS).

Share this post


Link to post
Share on other sites

Для особо сложных случаев можно выгрузить из Encounter топологию в формате GDS и подать на вход к тулу паразитной экстракции (мы используем Calibre xRC). Экстрагируем данные по самым критичным цепям (клоки, сигналы) в формате SPEF, их подаём в логический симулятор.

Share this post


Link to post
Share on other sites
Добрый день!

Хочу разобраться с маршрутом цифрового моделирования в среде Cadence. Вопрос в следующем. Имеется схема, представленная verilog нетлистом. Я ее промоделировал в NC-Verilog с использованием verilog библиотеки без учета задержек.

Создал lib и tlf формат вентильной библиотеки. Подскажите, использование какого тула Cadence позволит опредилить количество входов вентилей, подключенных к каждому выходу и создать sdf файл задержек. Аналогичный вопрос, как получить sdf файл с RC задержками после создания топологии в Encounter. Сalibre позволяет получить SPEF и DSPF нетлист с паразитами. Как от него перейти к sdf. Может есть какой-либо туториал по моделированию с учетом задержек?

 

И еще один вопрос. Чтобы не плодить темы, спрошу его здесь. Это отдельная вспомогательная задача. Может кто подскажет с чего начать обучение основам, если нужно разработать отдельную тестовую микросхему памяти СОЗУ (например 64к). Сам вопрос касается больше процесса моделирования. Как моделируют такие схемы? Делают ли verilog описание шеститранзисторной ячейки СОЗУ либо используют какой-либо другой подход? Интересует как совет\ответ прямо на форуме, так и ссылка на литературу.

"Хочу разобраться с маршрутом цифрового моделирования в среде Cadence. Вопрос в следующем. Имеется схема, представленная verilog нетлистом. Я ее промоделировал в NC-Verilog с использованием verilog библиотеки без учета задержек."

Ну если есть verilog библилтека с 0 задержками то можно и промоделировать....

 

"Создал lib и tlf формат вентильной библиотеки" - круто. И синтез с ними сработал?

Обычно правда ни входят в комплект DesignKit для целевой технологии.

 

"использование какого тула Cadence позволит опредилить количество входов вентилей, подключенных к каждому выходу" - ну как минимум синтезатор (RC Compiler) и роутер (Encounter) имеют встроенные команды типа fanout\report_fanout...

А зачем это и как оно с SDF связано?

 

"создать sdf файл задержек" можно как в RC Compiler так и Encounter (команда write_sdf).

В Encounter можно это сделать построут с большой точностью (используя capTabl & GDS для SPEF екстракта с последующей конвертацией в SDF (всё таже команда write_sdf))

 

"с чего начать обучение основам, если нужно разработать отдельную тестовую микросхему памяти СОЗУ (например 64к)" - начать изучать аналоговую микросхемотехнику :)

 

"Как моделируют такие схемы?"

Это смотря для чего моделируют....

Аналоговый дизайнер моделирует аналоговую схему на транзисторном уровне.

RTL цифровой дизайнер использует Verilog поведенческую модель (без задержек)

Моделирование с SDF использует Verilog модель с задержками

Для Синтеза и Роута нужно также LEF & LIB модели

Share this post


Link to post
Share on other sites

Спасибо, Torpeda, за подробный ответ. Экстрагировал из топологии SPEF калиброй и импортировал в Encounter, получил SDF. Таким образом вопрос с проведением post-layout моделирования цифровой схемы решился.

Тогда может быть подскажите, зачем в цифровых библиотеках Design Kits от, скажем, XFAB или др. фабрик в каждом вентиле указана задержка, причем одинаковая. У XFAB и Микрона 0,1. Ведь, наверно, логичней иметь библиотеку с нулевыми задержками, к которой подключать полученный SDF файл и проводить моделирование. А так, задержка 0,1 суммируется с задержкой элемента из SDF файла.

Share this post


Link to post
Share on other sites
Спасибо, Torpeda, за подробный ответ. Экстрагировал из топологии SPEF калиброй и импортировал в Encounter, получил SDF. Таким образом вопрос с проведением post-layout моделирования цифровой схемы решился.

Тогда может быть подскажите, зачем в цифровых библиотеках Design Kits от, скажем, XFAB или др. фабрик в каждом вентиле указана задержка, причем одинаковая. У XFAB и Микрона 0,1. Ведь, наверно, логичней иметь библиотеку с нулевыми задержками, к которой подключать полученный SDF файл и проводить моделирование. А так, задержка 0,1 суммируется с задержкой элемента из SDF файла.

 

 

Добавлено, что бы вы помнили, что они есть, если, например, вставляете в чистый RTL вентили из библиотеки.

При затягивании SDF эти задержки вентилей заменяются на задержки из SDF, а не суммируются.

Share this post


Link to post
Share on other sites
Спасибо, Torpeda, за подробный ответ. Экстрагировал из топологии SPEF калиброй и импортировал в Encounter, получил SDF. Таким образом вопрос с проведением post-layout моделирования цифровой схемы решился.

Тогда может быть подскажите, зачем в цифровых библиотеках Design Kits от, скажем, XFAB или др. фабрик в каждом вентиле указана задержка, причем одинаковая. У XFAB и Микрона 0,1. Ведь, наверно, логичней иметь библиотеку с нулевыми задержками, к которой подключать полученный SDF файл и проводить моделирование. А так, задержка 0,1 суммируется с задержкой элемента из SDF файла.

И Encounter может SPEF екстрагировать... Лишние тулзы за отдельные деньги необязательны....

 

" в цифровых библиотеках Design Kits" похоже имеются ввиду Verilog модели вентилей для симуляции....

"в каждом вентиле указана задержка, причем одинаковая." - Ну то что указана одинаковая - это вопрос к создателю библиотеки..это от лени с одной стороны :)

А с другой - именно эта библиотека не содержит реальных задержек. Выбрано какое-то средне-худшее значение. Точные задержки имеются только в LIB.

С учётом того, что применение этой Verilog модели без SDF практического смысла особо не имеет, то фаб и не особо утруждался.

Как уже и сказано было - задержки с SDF перебивают задержки Verilog модели вентилей.

-----

А зачем вам вообще симуляция с SDF?

Share this post


Link to post
Share on other sites
А зачем вам вообще симуляция с SDF?

Вообще мы для одного КМОП процесса экстрагируем SPICE-параметры девайсов, а также разрабатываем правлиа DRC, LVS и правила экстракции паразитных элементов для Calibre и Assura. Целью было проверить моделирование с паразитами. Так как у меня только опыт разработки аналоговых схем, то проведение post-layout моделирования для аналоговой схемы не оказалось сложной задачей. А вот c post-layout для цифры я не сталкивался. Мы создали вентильную библиотеку на ~80 элементов. Создали LEF, lib форматы. Был проведен синтез простейшей схемы для примера. В Encounter создали топлогию. И нужно было с использованием наших правил экстракции паразитных элементов провести моделирование с учетом задержек. CapTbl я создавать не умею, как понимаю для этого нужен ICT файл, но что это я не знаю. Поэтому выход получается следующий: получение SPEF в Calibre, Assura, либо как Вы сказали сам Encounter это может сделать.

P.S. Проводил моделирование с задержками в NC-Verilog. Задержки из sdf файла не заменили задержки в verilog представлении вентилей (как Вы написали), а просуммировались. Вероятно причина в моих кривых руках и чего-то я не знаю.

Share this post


Link to post
Share on other sites
Проводил моделирование с задержками в NC-Verilog. Задержки из sdf файла не заменили задержки в verilog представлении вентилей (как Вы написали), а просуммировались. Вероятно причина в моих кривых руках и чего-то я не знаю.

Ни разу не видел, чтобы суммировались. Просмотрите внимательно лог nc-verilog, строку sdf annotate и ниже - были ли ошибки при аннотации? Если были, то скорее всего верилог вентильной библиотеки не соответствует файлу liberty, т.е. криво охарактеризовали. Если же аннотация прошла без ошибок, задержки должны соответствовать. Можете вручную менять дефолтные задержки в верилог моделях элементов - при моделировании с SDF разницы не увидите.

 

И еще обязательно глазами посмотрите SDF, что там арки соответствует аркам в liberty, и ничего не пропущено. А то часто бывает, что энкаунтер через задницу выписывает SDF с только половиной из необходимых арок, после чего моделирование на верилоге работает без единой ошибки. А копнешь поглубже - половина задержек оказывается нулевая, поскольку в SDF информация о них отсутствует. Особенно часто это случается для триггеров с асинхронными портами. И особенно часто этим грешат российские фабрики, поскольку библиотеки характеризуют через левую пятку.

Share this post


Link to post
Share on other sites
P.S. Проводил моделирование с задержками в NC-Verilog. Задержки из sdf файла не заменили задержки в verilog представлении вентилей (как Вы написали), а просуммировались. Вероятно причина в моих кривых руках и чего-то я не знаю.

SDF переписывает то что в Verilog модели описано при помощи специальных конструкций типа (забыл как называются):

      (SN +=> QN) = (0.02, 0.02);
      (negedge RN => (QN -: RN)) = (0.02, 0.02);
      (posedge C => (QN -: QN)) = (0.02, 0.02);

      $setuphold (posedge C &&& c_SH_D, posedge D, 0.02, 0.02, NOTIFY_REG,,,
                   delay_C, delay_D);

если библиотека описана так - то должно работать.

Также в вашем SDF должны быть аналогичные пути и чеки описаны (они берутся с LIB - т.е. LIB должен соответствовать Verilog модели).

Ну и правильность загрузки SDF в симулятор по репортам проверьте.

Share this post


Link to post
Share on other sites

Create an account or sign in to comment

You need to be a member in order to leave a comment

Create an account

Sign up for a new account in our community. It's easy!

Register a new account

Sign in

Already have an account? Sign in here.

Sign In Now
Sign in to follow this