Jump to content

    

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

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

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

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

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

Share this post


Link to post
Share on other sites

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

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

Share this post


Link to post
Share on other sites
14 часов назад, Aleх сказал:

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

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 18.01.2019 в 23:44, Aleх сказал:

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

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

Share this post


Link to post
Share on other sites

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

Share this post


Link to post
Share on other sites
В 21.01.2019 в 23:11, Aleх сказал:

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

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

Share this post


Link to post
Share on other sites

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

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

 

p.s.

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

Edited by Aleх

Share this post


Link to post
Share on other sites
2 hours ago, Aleх said:

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

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

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

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

Share this post


Link to post
Share on other sites
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

Share this post


Link to post
Share on other sites

MickeyMouse     

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

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

Edited by Aleх

Share this post


Link to post
Share on other sites

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

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

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

Share this post


Link to post
Share on other sites
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

Edited by MickeyMouse

Share this post


Link to post
Share on other sites

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

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

Edited by Aleх

Share this post


Link to post
Share on other sites
В 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 малтикат пробовал, но все-равно полигон остается прежний, хоть сами виа и их кол-во внутри него меняется. Возможно термин полигон здесь не уместен, ну да ладно.

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