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

    

Запрет на размещение стд ячеек под страйпами питания в Innovus

Как запретить размещать стандартные ячейки под страйпами питания? Использую Innovus.

Сейчас просто ставлю блокедж, хочется узнать есть ли какой крыжик в настройках.

Причиной сего вопроса являются DRV: ParallelRunLength Spacing которые исчезают, если я не размещаю стд ячейки под страйпами.

Заранее спасибо за ответ) 

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


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

А вы туда веллтапы с филлерами просто наставьте скриптом. Больше веллтапов - меньше ликедж, да и все равно место не используете.

А вообще, все размещают селлы под питанием, без проблем. Поднимайте сетку повыше, высчитывайте треки, чтобы разводке не мешать, и все будет гуд.

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


Ссылка на сообщение
Поделиться на другие сайты
14 часов назад, Aleх сказал:

А вы туда веллтапы с филлерами просто наставьте скриптом. Больше веллтапов - меньше ликедж, да и все равно место не используете.

А вообще, все размещают селлы под питанием, без проблем. Поднимайте сетку повыше, высчитывайте треки, чтобы разводке не мешать, и все будет гуд.

Сетку поднимать пробовал - не помогло. Разводка в принципе не очень плотная. Тут что-то другое... Можете поподробнее про "высчитавайте треки" ?

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


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

Ошибка, про которую Вы пишете,  относится к расстоянию между металлами (конфликт со страйпом как я понял), поэтому к плейсу это может иметь отношение лишь косвенно. Скорее всего у Вас страйпы сделаны так, что роутинг по соседним трекам приводит к  указанной ошибке, а плейс вообще не причем. Чтобы этого избежать, тщательно планируйте  шаг, ширину страйпов, и оффсет. Шаг страйпа должен быть кратен размеру трека, а оффсет и ширина должны быть такие, чтобы стандартный роутинг  по соседним трекам получался не ближе, чем указано в руле ParallelRunLenght Spacing. Не надо провоцировать тул делать нарушения )

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


Ссылка на сообщение
Поделиться на другие сайты
В 18.01.2019 в 23:44, Aleх сказал:

Ошибка, про которую Вы пишете,  относится к расстоянию между металлами (конфликт со страйпом как я понял), поэтому к плейсу это может иметь отношение лишь косвенно. Скорее всего у Вас страйпы сделаны так, что роутинг по соседним трекам приводит к  указанной ошибке, а плейс вообще не причем. Чтобы этого избежать, тщательно планируйте  шаг, ширину страйпов, и оффсет. Шаг страйпа должен быть кратен размеру трека, а оффсет и ширина должны быть такие, чтобы стандартный роутинг  по соседним трекам получался не ближе, чем указано в руле ParallelRunLenght Spacing. Не надо провоцировать тул делать нарушения )

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

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


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

Видимо, подстройка происходит при работе через меню, поскольку у консольного AddStripe  я автоподстройки не наблюдал. В консоли сколько укажешь, так тул и сделает, с заданной точностью. Гайда не знаю, но это совершенно логично, делать привязку к трекам. Ведь треки и придуманы для роутера. И если Вы заложили дистанцию от края страйпа до ближайшего трека (за вычетом половины ширины вайра) больше чем ParallelRunLength, то виолейшн не образуется. Итого,  если работаете чем через gui, то попробуйте консольные команды, там больше возможностей. Может и проблему свою вылечите.

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


Ссылка на сообщение
Поделиться на другие сайты
В 21.01.2019 в 23:11, Aleх сказал:

Видимо, подстройка происходит при работе через меню, поскольку у консольного AddStripe  я автоподстройки не наблюдал. В консоли сколько укажешь, так тул и сделает, с заданной точностью. Гайда не знаю, но это совершенно логично, делать привязку к трекам. Ведь треки и придуманы для роутера. И если Вы заложили дистанцию от края страйпа до ближайшего трека (за вычетом половины ширины вайра) больше чем ParallelRunLength, то виолейшн не образуется. Итого,  если работаете чем через gui, то попробуйте консольные команды, там больше возможностей. Может и проблему свою вылечите.

Во-первых спасибо за комментарий. Во-вторых: у меня питч по всем трекам маталла 100нм кроме второго - у него 135нм.  Плэйсмент грид тоже 135. Подобрал все ширины и офсеты таким образом чтобы страйпы четко ложились в сетку М2(и соответственно в сетку плейсмента со смещением). Все равно ошибки. Пробовал делать дополнительный офсет 5, 15, 20нм и тд в результате та же история но в разных местах возле страйпов. Может ли быть проблема связана с начальной подстройкой офсетов при флурплане? В гайде сказано, что при флурплане автоматически проводится команда create_tracks. У меня все питчи совпадают с тех. лефом но есть похоже несоответствие офсетов.

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


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

Я сталкивался с тем, что в теч. лефе некорректно прописаны треки. Если процесс новый, это вероятно,  а если старый, то сомневаюсь - сотни кастомеров до Вас уже выявили все баги. Но если хочется, то треки можно генерить вручную, под себя. Самое главное - чтобы треки проходили через центры пинов селлов (с учетом направления металла). Т.е. к примеру, если пины селлов в М1,  и М2 вертикальный, то треки М1 должны проходить четко через пин, и должно быть пересечение с треком М2, где тул будет ставить переходное при контакте с пином. Если все это соблюдается, значит треки -ок.

Далее, касательно ошибки. Разберитесь, как так вышло, измерьте линейкой - действительно ли есть нарушение. Все зазоры металлов есть в доке DRM в таблицах, надите это место ParallelRunLength spacing для данного  металла. Если страйп наложен с запасом - отступом от трека, то нарушения не должно быть. Исключение - если тул вдруг начал роутить не по треку. Если так, то надо разбираться с какого перепугу роутер перестал соблюдать треки - баг это или фича. Еще возможно, что тул использовал другую, не стандартную, ширину вайра. Тогда просто еще увеличьте отступ страйпа от трека. Т.е. в условиях, когда все роутится по трекам, стандартной шириной вайра, и соблюден отступ - нарушению не откуда взяться. 

 

p.s.

как смотреть отступы страйпа - оставьте только один металл, включите треки, а потом посмотрите отступы от страйпа до  соседних треков, причем в нескольких местах - бывает что один страйп правильный, а соседний со сдвигом, поскольку шаг страйпа был не кратен питчу. Или, с одной стороны зазор ок, а с другой с нарушением.

Изменено пользователем Aleх

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


Ссылка на сообщение
Поделиться на другие сайты
2 hours ago, Aleх said:

 в теч. лефе некорректно прописаны треки.

- сотни кастомеров до Вас уже выявили все баги. 

главное - чтобы треки проходили через центры пинов селлов
и должно быть пересечение с треком М2, где тул будет ставить переходное при контакте с пином.

Вы эту белиберду переведите на русский. Все-таки это русскоязычный ресурс.

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


Ссылка на сообщение
Поделиться на другие сайты
16 часов назад, Aleх сказал:

Я сталкивался с тем, что в теч. лефе некорректно прописаны треки. Если процесс новый, это вероятно,  а если старый, то сомневаюсь - сотни кастомеров до Вас уже выявили все баги. Но если хочется, то треки можно генерить вручную, под себя. Самое главное - чтобы треки проходили через центры пинов селлов (с учетом направления металла). Т.е. к примеру, если пины селлов в М1,  и М2 вертикальный, то треки М1 должны проходить четко через пин, и должно быть пересечение с треком М2, где тул будет ставить переходное при контакте с пином. Если все это соблюдается, значит треки -ок.

Далее, касательно ошибки. Разберитесь, как так вышло, измерьте линейкой - действительно ли есть нарушение. Все зазоры металлов есть в доке DRM в таблицах, надите это место ParallelRunLength spacing для данного  металла. Если страйп наложен с запасом - отступом от трека, то нарушения не должно быть. Исключение - если тул вдруг начал роутить не по треку. Если так, то надо разбираться с какого перепугу роутер перестал соблюдать треки - баг это или фича. Еще возможно, что тул использовал другую, не стандартную, ширину вайра. Тогда просто еще увеличьте отступ страйпа от трека. Т.е. в условиях, когда все роутится по трекам, стандартной шириной вайра, и соблюден отступ - нарушению не откуда взяться. 

 

p.s.

как смотреть отступы страйпа - оставьте только один металл, включите треки, а потом посмотрите отступы от страйпа до  соседних треков, причем в нескольких местах - бывает что один страйп правильный, а соседний со сдвигом, поскольку шаг страйпа был не кратен питчу. Или, с одной стороны зазор ок, а с другой с нарушением.

 

У меня 28нм TSMC. Вот как я понимаю эту проблему... Ошибки возникают между М2(пины ячеек) и М5(страйп). Назовем расстояние между границей пина стд ячейки и питчем М2 как РТ, а фабричную сетку как ФС. Пины ячеек привязаны к трекам М2, но РТ по различным ячейкам имеет разброс. В результате как бы я не двигал страйпы по сетке все равно находятся места где край пина какой-нибудь ячейки слишком близко к страйпу. Конечно я начал с того, что разместил край страйпа в середине трека М2, затем начал двигать его с шагом ФС, так вот, пройдя таким образом весь питч я не нашел точку без ошибок(в одном месте правлю в другом вылазит). Как и писал ранее ширины и отступы страйпов сделал кратными питчам(делал кратность и по М2 и по М5).

Короче... Разброс РТ по библиотеке > (питч/2 - ParallelRunLengthSpacing). Поэтому в общем случае ошибка возможна.

Привел картинку. B2 - пин по М2.

1.png

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


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

MickeyMouse     

Судя по скрину, проблема не в страйпе, поскольку страйп находится в металле 5, а пин в металле 2 - они не могут конфликтовать, поскольку в разных слоях. Кстати, а где находится ошибка? Запостите текст ошибки. Скорее всего, проблема в металле 2 между пином и объектом, которого нет на скрине.

Алгоритм действий - читаете описание ошибки, особенно - в каком она металле, а потом выводите все объекты в этом металле. К примеру, для ошибки в М2 это: смежные виа (V12, V23), сам М2: пины и блокеджи селлов (включить всю группу), вся группа роутинга (земли, питания, сигналы, аналог и т.д.). Остальные металлы - выключите. Как результат - DRC маркер должен быть между двумя объектами. А у Вас на скрине маркер - не между, а сбоку. Т.е. не хватает обьектов.

Изменено пользователем Aleх

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


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

Результаты DRC в Calibre выложи. Или PVS?

Так DK в открытом доступе на 28 нм не лежат.

Поэтому, мало кто может помочь.

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


Ссылка на сообщение
Поделиться на другие сайты
18 часов назад, Aleх сказал:

MickeyMouse     

Судя по скрину, проблема не в страйпе, поскольку страйп находится в металле 5, а пин в металле 2 - они не могут конфликтовать, поскольку в разных слоях. Кстати, а где находится ошибка? Запостите текст ошибки. Скорее всего, проблема в металле 2 между пином и объектом, которого нет на скрине. 

Алгоритм действий - читаете описание ошибки, особенно - в каком она металле, а потом выводите все объекты в этом металле. К примеру, для ошибки в М2 это: смежные виа (V12, V23), сам М2: пины и блокеджи селлов (включить всю группу), вся группа роутинга (земли, питания, сигналы, аналог и т.д.). Остальные металлы - выключите. Как результат - DRC маркер должен быть между двумя объектами. А у Вас на скрине маркер - не между, а сбоку. Т.е. не хватает обьектов.

 

Текст ошибки.

Special Wire of Net VSS & Pin of Cell x_inst/y_inst/g5156

Actual: 0.0250 Required: 0.0500 Type: ParallelRunLength Spacing

bbox = (250.655, 29.025) (250.690, 29.050)

 

Да, не туда смотрел... Похоже ошибка между пином М2 и VIA12 который соединяет страйп на M6. Но все-равно не ясно как ее решить.

2.png3.png

Изменено пользователем MickeyMouse

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


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

Привет! Проблема известная - чем меньше нанометры, тем сложнее делать сетку питания. С 28нм не работал, но почти наверняка Вы используете неправильные виа. Должны быть более узкие, чтобы не было конфликтов с пинами селлов. Советую внимательно почитать гайд производителя селлов (если это не tsmc), раздел сетки питания - там должны подробно описать, какими виа надо подсоединять сетку к первому металлу, с каким шагом их ставить, каким отступом и т.д.

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

Изменено пользователем Aleх

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


Ссылка на сообщение
Поделиться на другие сайты
В 25.01.2019 в 23:32, Aleх сказал:

Привет! Проблема известная - чем меньше нанометры, тем сложнее делать сетку питания. С 28нм не работал, но почти наверняка Вы используете неправильные виа. Должны быть более узкие, чтобы не было конфликтов с пинами селлов. Советую внимательно почитать гайд производителя селлов (если это не tsmc), раздел сетки питания - там должны подробно описать, какими виа надо подсоединять сетку к первому металлу, с каким шагом их ставить, каким отступом и т.д.

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

 

Хм... Спасибо за ответ)

Ячейки от TSMC. Там из рекомендаций по виа только как делать их double.

Я не совсем понял вот что... А как повлияет форма и размер виа на нарушение? Ведь нарушение между пином и полигоном виа который не зависит от формы и размеров самих виа, а определяется площадью пересечения металлов между которыми делается виа. Или не так?

Вот правило из лефа для М2 из-за которого нарушение:

...............................................................................................................

    SPACINGTABLE
    PARALLELRUNLENGTH  0.000000  0.220000  0.470000  0.630000  1.500000
      WIDTH  0.000000  0.050000  0.050000  0.050000  0.050000  0.050000
      WIDTH  0.090000  0.050000  0.060000  0.060000  0.060000  0.060000

.............................................................................................................

Т.е. маркер нарушение ни между виа а между доп. областью виа(которая кстати видна только если включены виа2 и М2 одновременно). Это видно на рисунке выше.

PS малтикат пробовал, но все-равно полигон остается прежний, хоть сами виа и их кол-во внутри него меняется. Возможно термин полигон здесь не уместен, ну да ладно.

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


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

Для публикации сообщений создайте учётную запись или авторизуйтесь

Вы должны быть пользователем, чтобы оставить комментарий

Создать учетную запись

Зарегистрируйте новую учётную запись в нашем сообществе. Это очень просто!

Регистрация нового пользователя

Войти

Уже есть аккаунт? Войти в систему.

Войти