![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_pattern.png)
![](https://electronix.ru/forum/uploads/set_resources_23/84c1e40ea0e759e3f1505eb1788ddf3c_default_photo.png)
v_mirgorodsky
Свой-
Постов
341 -
Зарегистрирован
-
Посещение
Репутация
0 ОбычныйИнформация о v_mirgorodsky
-
Звание
Местный
- День рождения 07.11.1973
Контакты
-
Сайт
Array
-
ICQ
Array
Посетители профиля
3 155 просмотров профиля
-
Печально, но спасибо и на этом. Пошел курить мануалы.
-
Shivers А вот тут и возникает вопрос - а как сделать характеризацию хотя-бы одной целы и как после этого получить готовый .LIB файл, годный к употреблению? Я очень хорошо знаю что есть симуляции и фулл-кастом, однако не знаю что ожидает увидеть DC и ICC. Можете показать пример на одном нанде, если не сильно сложно?
-
Доброго времени суток, Раньше пользовался готовыми библиотеками с ФАБа, а теперь вот назрела необходимость разработать свою специализированную библиотеку для ICC и охарактеризовать ее. Есть у меня некий список целов, для каждой есть СПАЙС-нетлист, сделан лейаут, извлечены паразиты. Требуется получить LIB-файл, который можно скормить DC и ICC в качестве библиотечного. В Инете встречал упоминание о магической тулзе SiliconSmart. По отзывам, сильно упрощает и облегчает процесс. Однако сразу приручить ее как-то не получилось. Да и не совсем понятно что она берет на вход и что выдаст на выходе. Может кто-то сможет подсказать приблизительный маршпут, или сможет показать пример характеризации одной ассинхронной и одной синхронной целы? Думаю, что многим здесь это было бы интересно.
-
С ошибками DRC по антеннам ни один ФАБ к изготовлению микросхему не примет. С точки зрения пробоя диэлектрика - да, процесс вероятностный, однако чем Вам лично будет хороша микросхема с выгоревшим каскадом ? И как Вам ФАБ будет гарантировать йилд ? По опыту многие ошибки по DRC обсуждаемы в том, или ином виде, однако антенные ошибки считаются одними из наиболее критических. Однако с антеннами не все так плохо. Если гейты одних транзисторов когда-то подключаются к диффузиям других, то этого уже в большинстве случаев достаточно. В Вашем случае я бы посоветовал в местах, где DRC ругается на площади попытаться сделать минимальную дублирующую разводку на более нижних слоях. Речь не идет о сколь-нибудь значащих токах. Важно чтобы между гейтом и любой диффузией достаточного размера был контакт.
-
Из моей практики NMOS и PMOS - названия транзисторов в CAD-ах по умолчанию. Потому как ФАБ дополнительно кодирует в названии модели тип транзистораи, версию модели и область применения - I/O, core, SRAM, etc.
-
Я своими глазами видел две TSMC либы под advanced nodes. По своему собственному личному опыту могу сказать следующее - стандартные либы TSMC выполнены неоптимально с точки зрения плотности. В моем случае практически каждую целу можно было "ужать" на 1-2 поли без ущерба для функциональности. Простая переразводка/перехарактеризация либов могла бы дать уже 5-10% экономии площади. Так что я думаю, что экономия за счет несколько более сильных транзисторов и чуть более прямых рук.
-
Самой логичной причиной деления клоков может быть часть дизайна, которая не успевает работать на основном клоке :) Я так думаю. Ну и перевод сколь-нибудь значительной части дизайна на более низкий клок очень положительно сказывается на потреблении. Теперь-то я уже знаю, что клоковое дерево может потреблять до 15-20% мощности и эту цифру практически нельзя уменьшить. З.Ы. Ну и в моем случае - неоптимально, это и есть неправильно. Потому как это значит, что дизайн мог бы потреблять меньше, или работать быстрее. Потому для меня и организаций, с которыми я сотрудничал, неоптимально и неправильно - синонимы. Хотя, строго говоря, неоптимально и неправильно действительно разные вещи.
-
Даже не знаю, возможно за последнее время Квартус вместе с ИСЕ серьезно добавили в интеллекте, или проект в котором возможна такая манипуляция клоками крайне далек от предела возможностей выбранного кристала. На сколько помню, при заполнении кристалла под 90% и на максимум по частоте одновременно у меня провернуть такой финт уже не получилось - проект просто перестал компилироваться на заданную частоту и сильно "распух" в размере. Теперь я уже понимаю, что тулза начинала фиксить холды в корнерах, но много лет назад ответа на тот вопрос я так и не нашел - пришлось переделать пару блоков и вставить синхронизаторы.
-
Сделал ма-а-а-ленький эксперимент в качестве тренировки. Взял свой кастомный DFF на UMC 28HLP, извлек из него паразиты почти без редукции, также обработал несколько "боевых" топологий своих инверторов. Прикинул клоковое дерево, в каждый клоковый домен поставил по одному DFF и соединил их в виде сдвигового регистра. Соединил все в спайсе. Тут уж извините, делать полный эксперимент в лейауте было лениво, да и результаты бы это не изменило. Как критерий успешности выбранной топологии использовалась локальная MC-симуляция со свипом в 1000 ранов. Если на 0.6V у моих триггеров в TT Tco составляет в районе 150ps, то при 0.8V Tco уменьшается до 60ps, а при 1.0V - до 30ps. Итого - разница в TT всего по одному параметру в моем диапазоне рабочих напряжений составила 120ps, а это надо как-то компенсировать. Как результат, систему можно сравнительно просто настроить на конкретное рабочее напряжение и локальные вариации в пределах одного корнера. Линия SS-TT-FF тербует почти 50% увеличения количества инверторов в "клоковом дереве" и пары последовательных буферов с выхода одного триггера до входа другого для фикса холдов. Расширение зоны работоспособности до SF и FS потребовало очень много усилий и до конца я его не довел. В глобальных корнерах работало, в тотальных - нет, в монте-карло ошибались 3 эксперимента в SF и 7 экспериментов в FS из 1000. Потом уменьшил рабочее напряжение с 0.8 вольт до 0.6 вольт и повторил эксперимент без изменения топологии. Как результат получил больше 1000 фейлов из 5000 ранов. Выводы. 1. Если делить клоки простыми триггерами, то нужно позаботиться о разнице фаз между активными фронтами клоков больше, чем Tco самого медленного триггера в системе во всем PVT диапазоне. Как самый простой вариант - поиграться с инверсиями клоков триггеров делителей. Если активные эджи клоков фиксированы на границахи все переходы известны, то решение найти, думаю, можно. 2. Если выполнить (1) не получается, то домены следует считать асинхронными и делать переходы между ними на синхронизаторах. 3. Если выполнять (1) и (2) не хочется, то лучше всего использовать триггера с клок-енейблами и отказаться от деления клоков в принципе. 4. Если все (1-3) выполнить не получилось, то следует быть готовым к абсолютно безобразному количеству инверторов в проекте и неэффективному использованию площади кремния. Безусловно, я не IC Compiler :) У него эта задача возможно получилась бы несколько лучше - все же он больше параметров учитывает и задачи оптимимизации топологии решает не перебором ;) Однако даже IC Compiler не в силах обойти физику процессов в кремнии.
-
Давно не заходил, а потому отвечу немного позже. Если коротко, то делить так клоки принципиально нельзя. Ни в ASIC, ни в FPGA. Эта система сильно подвержена нарушению холдов при переходе из одного клокового домена в другой. Можно, конечно, попытаться скомпенсировать холды путем удлиннения ассинхронных путей между триггерами (IC Compiler, к примеру, начинает на такие пути гадить инверторами), но работать это будет только в сравнительно узких диапазонах изменения температур и напряжений и, обычно, только в симметричных корнерах. Хорошим признаком такого рода ошибок является финальный репорт тулзы. Если количество инверторов или буферов в дизайне неоправданно большое, то где-то есть проблемы с клоком.
-
Для 28нм HKMG затворы исключительно прямые, с постоянным шагом и длинной транзисторов. Для поликремниевых затворов в зависимости от ФАБа затворы разрешается гнуть, или делать из них букву L. Практически все остальное в технологиях тоньше 40нм запрещено. Помню, что в проекте на 65нм мы использовали поликремний почти как металл для роутинга внутри целов, то в процессах тоньше 40нм о таких вольностях надо забыть. Еще в технологиях тоньше 40нм сильно проявляется влияние позиции транзистора на его максимальный ток. Отличие на низких напряжениях может достигать 30%. На напряжениях, близких к номиналу все получается не так печально, но это уже инженерная задача каждого конкретного места в лейауте. Т.е., одиноко стоящий транзистор приходится делать на 30% и больше процентов шире, чем такой же транзистор, выполняющий аналогичные функции но в группе транзисторов. Таким образом единственный более-менее подходящий подход к лейауту на технологиях ниже 40нм - это длинная непрерывная полоса диффузии, на ней много транзисторов с одинаковыой длинной канала с постоянным шагом. Если транзистор в этом конкретном месте не нужен, то его затвор просто сажается на соответствующий рейл питания, или, если чип большой и с ESD проблемы, то на близ лежащий tie-off или tie-on. Транзисторы могут иметь разную ширину канала, но и тут есть ограничения. В зависимости от ФАБа может сильно варьироваться конфигурация и требования к "выступающим", или утопленным частям диффузии. Короче, надо смотреть по ПДК - однозначного рецепта здесь нет. Еще огромную проблему на 28 и ниже представляет собой активное сопротивление металлов. 28 в этом смысле самый сложный процесс. Потребление схемы все еще высокое, геометрически транзисторы большие и получить значительный IR-drop на рейле питания сравнительно просто. Это приходится учитывать, делать более широкие рейлы питания, или выделять два металла на разводку питания. Особенностей в тонких техпроцессах много. Спрашивайте, что вспомню - расскажу, если не будет противоречить всяким NDA ;) Shivers, может этот вопрос будет уже неактуальным, но играться с длинной канала на тонких процессах будет совсем напряжно по площади. Посмотрите в сторону такого элемента, как мажорити. Если коротнуть ему выход на один из входов получается очень даже хороший C-элемент. На 28 нм у меня такая штука заняла "всего" 7 полосок поли на два входа.
-
Не проводите чемпионат по рисованию на технологических нормах ниже 28 нанометров :) Правильный виртуозовод даст вам 100 очков вперед на плотных целах среднего и большого размера. Практически гарантированно. Рисует не тул, а человек. Тул только помогает. Однако для некоторых тонких процессов наличие тула за лям становится обязательным. Я тоже некоторое время назад считал, что все можно нарисовать в бесплатном электрике. Теперь знаю - хороший тул для тонкого процесса увеличивает производительность лейаут-инженера на порядки. Одно время я недоумевал - почему у моих подрядчиков не получается решать эфффективно проблемы с дабл-паттернингом. Там ведь все просто - красная дорожка, зеленая дорожка, просты понятные технологические правила и ограничения. А оказалось, что работают они в Lakers, а Lakers не поддерживает дабл-паттернинг, потому и лейаут у них получается "рыхлый". Единственное, что могут они сделать с ошибками дабл-паттернинга - это раздвинуть дорожки более чем на 81нм, потому как раздебажить кольцо из 30-40 геометрий в уме уже очень сложно. Еще скажу из собственного опыта - все дело в рефлексахи мотороной памяти. Действительно, в каденсе рисовать немного медленее, чем в электрике, или пайксисе, но только в начале. Дальше руки привыкают нажимать нужные связанные клавиши автоматически и процесс значительно ускоряется. Все дело в прямых руках и желании сделать свою работу качественно и быстро. А тул может быть более подходящим, или менее подходящим под конкретную задачу.
-
Нашел как запускать XA с VCS. Как оказалось, надо в командной строке указать файлик конфигурации с достаточно простой структурой. На днях попробую, если все получится - выложу какой-нибудь примерчик.
-
Доброго времени суток, Вопрос простой - есть ли у кого опыт использования Спектры и APS из командной строки? На сетап простого теста уходитт минут 10-15. Результаты симуляций смотрятся местной тулзой VIVA, которая не умеет как WaveView от Синопсиса сохранять настройки текущей сессии, вернее умеет, но с привязкой к абсолютным путям, если захотеть этой же сессией воспользоваться еще раз, то надо поменять кучу путей в XML файлике, что несколько раздражает. Каждая новая симуляция создает свой новый огромной длинны путь. Так, на вскидку, уровней 10-12 вложений - может оно и оправдано для систематизации результатов, но ходить по этому пути за файлами очень напрягает. Как-то нашел минут 30 свободного времени и изучил структуру того, что создает ГУИ перед запуском. Выглядит так, что это хозяйство можно переместить в более приемлемое место с более коротким путем и потом перезапускать по необходимости. Однако остается большой вопрос с перегенерацией cdl-нетлиста перед запуском и опоисанием того, что хотелось бы получить от симулятора - какие напряжения дампить, какие источники и куда подключены, параметы моделей ну и все остальные приятные мелочи. Для HSPICE прямо в дереве инсталла есть примеры и валом документации. Доков на спектру и APS я в дереве не нашел - может просто плохо искал. Вопрос в том, что Каденс я использую для работы всего три месяца. Со мной работают очень неплохие IC дизайнеры, но многие мои вопросы ставят их в тупик. Основная отговорка - тулза слишком большая, чтобы знать ее досконально во всех аспектах. Официальная поддержка умеет ходить только по менюшкам в ГУИ, а любые варианты нестандартного использования отметает даже без рассмотрения. Много информации есть в хелпах, но учить тул по хелпам удовольствие не быстрое и сильно ниже среднего. Может у кого-то есть опыт более прогрессивного использования тулзов из командной строки? А может кто знает где заныкана документация на все это хозяйство?
-
На eetop.cn говорят, что CustmSIm - это и есть XA. Самая новая версия XA доступная от Синопсис всего на один релиз младше той, что есть в закромах. Еще ко-симуляцию умеет FineSim Pro двухлетней давности - тоже лежит в закромах. Однако у него серьезные проблемы с лицензиями. Как бы во всех случаях смущают сравнительно старые версии продуктов, а новых как-то не появляется.