MickeyMouse 0 Posted January 17, 2019 · Report post Как запретить размещать стандартные ячейки под страйпами питания? Использую Innovus. Сейчас просто ставлю блокедж, хочется узнать есть ли какой крыжик в настройках. Причиной сего вопроса являются DRV: ParallelRunLength Spacing которые исчезают, если я не размещаю стд ячейки под страйпами. Заранее спасибо за ответ) Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Aleх 0 Posted January 17, 2019 · Report post А вы туда веллтапы с филлерами просто наставьте скриптом. Больше веллтапов - меньше ликедж, да и все равно место не используете. А вообще, все размещают селлы под питанием, без проблем. Поднимайте сетку повыше, высчитывайте треки, чтобы разводке не мешать, и все будет гуд. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MickeyMouse 0 Posted January 18, 2019 · Report post 14 часов назад, Aleх сказал: А вы туда веллтапы с филлерами просто наставьте скриптом. Больше веллтапов - меньше ликедж, да и все равно место не используете. А вообще, все размещают селлы под питанием, без проблем. Поднимайте сетку повыше, высчитывайте треки, чтобы разводке не мешать, и все будет гуд. Сетку поднимать пробовал - не помогло. Разводка в принципе не очень плотная. Тут что-то другое... Можете поподробнее про "высчитавайте треки" ? Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Aleх 0 Posted January 18, 2019 · Report post Ошибка, про которую Вы пишете, относится к расстоянию между металлами (конфликт со страйпом как я понял), поэтому к плейсу это может иметь отношение лишь косвенно. Скорее всего у Вас страйпы сделаны так, что роутинг по соседним трекам приводит к указанной ошибке, а плейс вообще не причем. Чтобы этого избежать, тщательно планируйте шаг, ширину страйпов, и оффсет. Шаг страйпа должен быть кратен размеру трека, а оффсет и ширина должны быть такие, чтобы стандартный роутинг по соседним трекам получался не ближе, чем указано в руле ParallelRunLenght Spacing. Не надо провоцировать тул делать нарушения ) Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MickeyMouse 0 Posted January 21, 2019 · Report post В 18.01.2019 в 23:44, Aleх сказал: Ошибка, про которую Вы пишете, относится к расстоянию между металлами (конфликт со страйпом как я понял), поэтому к плейсу это может иметь отношение лишь косвенно. Скорее всего у Вас страйпы сделаны так, что роутинг по соседним трекам приводит к указанной ошибке, а плейс вообще не причем. Чтобы этого избежать, тщательно планируйте шаг, ширину страйпов, и оффсет. Шаг страйпа должен быть кратен размеру трека, а оффсет и ширина должны быть такие, чтобы стандартный роутинг по соседним трекам получался не ближе, чем указано в руле ParallelRunLenght Spacing. Не надо провоцировать тул делать нарушения ) Скажите а нет ли какого-либо нормального гайда по вопросам связанным с сеткой? Ведь при размещении страйпов и всего прочего происходит автоподстройка под сетку, что и сообщается в логах. Спасибо) Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Aleх 0 Posted January 21, 2019 · Report post Видимо, подстройка происходит при работе через меню, поскольку у консольного AddStripe я автоподстройки не наблюдал. В консоли сколько укажешь, так тул и сделает, с заданной точностью. Гайда не знаю, но это совершенно логично, делать привязку к трекам. Ведь треки и придуманы для роутера. И если Вы заложили дистанцию от края страйпа до ближайшего трека (за вычетом половины ширины вайра) больше чем ParallelRunLength, то виолейшн не образуется. Итого, если работаете чем через gui, то попробуйте консольные команды, там больше возможностей. Может и проблему свою вылечите. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MickeyMouse 0 Posted January 23, 2019 · Report post В 21.01.2019 в 23:11, Aleх сказал: Видимо, подстройка происходит при работе через меню, поскольку у консольного AddStripe я автоподстройки не наблюдал. В консоли сколько укажешь, так тул и сделает, с заданной точностью. Гайда не знаю, но это совершенно логично, делать привязку к трекам. Ведь треки и придуманы для роутера. И если Вы заложили дистанцию от края страйпа до ближайшего трека (за вычетом половины ширины вайра) больше чем ParallelRunLength, то виолейшн не образуется. Итого, если работаете чем через gui, то попробуйте консольные команды, там больше возможностей. Может и проблему свою вылечите. Во-первых спасибо за комментарий. Во-вторых: у меня питч по всем трекам маталла 100нм кроме второго - у него 135нм. Плэйсмент грид тоже 135. Подобрал все ширины и офсеты таким образом чтобы страйпы четко ложились в сетку М2(и соответственно в сетку плейсмента со смещением). Все равно ошибки. Пробовал делать дополнительный офсет 5, 15, 20нм и тд в результате та же история но в разных местах возле страйпов. Может ли быть проблема связана с начальной подстройкой офсетов при флурплане? В гайде сказано, что при флурплане автоматически проводится команда create_tracks. У меня все питчи совпадают с тех. лефом но есть похоже несоответствие офсетов. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Aleх 0 Posted January 23, 2019 (edited) · Report post Я сталкивался с тем, что в теч. лефе некорректно прописаны треки. Если процесс новый, это вероятно, а если старый, то сомневаюсь - сотни кастомеров до Вас уже выявили все баги. Но если хочется, то треки можно генерить вручную, под себя. Самое главное - чтобы треки проходили через центры пинов селлов (с учетом направления металла). Т.е. к примеру, если пины селлов в М1, и М2 вертикальный, то треки М1 должны проходить четко через пин, и должно быть пересечение с треком М2, где тул будет ставить переходное при контакте с пином. Если все это соблюдается, значит треки -ок. Далее, касательно ошибки. Разберитесь, как так вышло, измерьте линейкой - действительно ли есть нарушение. Все зазоры металлов есть в доке DRM в таблицах, надите это место ParallelRunLength spacing для данного металла. Если страйп наложен с запасом - отступом от трека, то нарушения не должно быть. Исключение - если тул вдруг начал роутить не по треку. Если так, то надо разбираться с какого перепугу роутер перестал соблюдать треки - баг это или фича. Еще возможно, что тул использовал другую, не стандартную, ширину вайра. Тогда просто еще увеличьте отступ страйпа от трека. Т.е. в условиях, когда все роутится по трекам, стандартной шириной вайра, и соблюден отступ - нарушению не откуда взяться. p.s. как смотреть отступы страйпа - оставьте только один металл, включите треки, а потом посмотрите отступы от страйпа до соседних треков, причем в нескольких местах - бывает что один страйп правильный, а соседний со сдвигом, поскольку шаг страйпа был не кратен питчу. Или, с одной стороны зазор ок, а с другой с нарушением. Edited January 23, 2019 by Aleх Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Егоров 0 Posted January 23, 2019 · Report post 2 hours ago, Aleх said: в теч. лефе некорректно прописаны треки. - сотни кастомеров до Вас уже выявили все баги. главное - чтобы треки проходили через центры пинов селлов и должно быть пересечение с треком М2, где тул будет ставить переходное при контакте с пином. Вы эту белиберду переведите на русский. Все-таки это русскоязычный ресурс. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MickeyMouse 0 Posted January 24, 2019 · Report post 16 часов назад, Aleх сказал: Я сталкивался с тем, что в теч. лефе некорректно прописаны треки. Если процесс новый, это вероятно, а если старый, то сомневаюсь - сотни кастомеров до Вас уже выявили все баги. Но если хочется, то треки можно генерить вручную, под себя. Самое главное - чтобы треки проходили через центры пинов селлов (с учетом направления металла). Т.е. к примеру, если пины селлов в М1, и М2 вертикальный, то треки М1 должны проходить четко через пин, и должно быть пересечение с треком М2, где тул будет ставить переходное при контакте с пином. Если все это соблюдается, значит треки -ок. Далее, касательно ошибки. Разберитесь, как так вышло, измерьте линейкой - действительно ли есть нарушение. Все зазоры металлов есть в доке DRM в таблицах, надите это место ParallelRunLength spacing для данного металла. Если страйп наложен с запасом - отступом от трека, то нарушения не должно быть. Исключение - если тул вдруг начал роутить не по треку. Если так, то надо разбираться с какого перепугу роутер перестал соблюдать треки - баг это или фича. Еще возможно, что тул использовал другую, не стандартную, ширину вайра. Тогда просто еще увеличьте отступ страйпа от трека. Т.е. в условиях, когда все роутится по трекам, стандартной шириной вайра, и соблюден отступ - нарушению не откуда взяться. p.s. как смотреть отступы страйпа - оставьте только один металл, включите треки, а потом посмотрите отступы от страйпа до соседних треков, причем в нескольких местах - бывает что один страйп правильный, а соседний со сдвигом, поскольку шаг страйпа был не кратен питчу. Или, с одной стороны зазор ок, а с другой с нарушением. У меня 28нм TSMC. Вот как я понимаю эту проблему... Ошибки возникают между М2(пины ячеек) и М5(страйп). Назовем расстояние между границей пина стд ячейки и питчем М2 как РТ, а фабричную сетку как ФС. Пины ячеек привязаны к трекам М2, но РТ по различным ячейкам имеет разброс. В результате как бы я не двигал страйпы по сетке все равно находятся места где край пина какой-нибудь ячейки слишком близко к страйпу. Конечно я начал с того, что разместил край страйпа в середине трека М2, затем начал двигать его с шагом ФС, так вот, пройдя таким образом весь питч я не нашел точку без ошибок(в одном месте правлю в другом вылазит). Как и писал ранее ширины и отступы страйпов сделал кратными питчам(делал кратность и по М2 и по М5). Короче... Разброс РТ по библиотеке > (питч/2 - ParallelRunLengthSpacing). Поэтому в общем случае ошибка возможна. Привел картинку. B2 - пин по М2. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Aleх 0 Posted January 24, 2019 (edited) · Report post MickeyMouse Судя по скрину, проблема не в страйпе, поскольку страйп находится в металле 5, а пин в металле 2 - они не могут конфликтовать, поскольку в разных слоях. Кстати, а где находится ошибка? Запостите текст ошибки. Скорее всего, проблема в металле 2 между пином и объектом, которого нет на скрине. Алгоритм действий - читаете описание ошибки, особенно - в каком она металле, а потом выводите все объекты в этом металле. К примеру, для ошибки в М2 это: смежные виа (V12, V23), сам М2: пины и блокеджи селлов (включить всю группу), вся группа роутинга (земли, питания, сигналы, аналог и т.д.). Остальные металлы - выключите. Как результат - DRC маркер должен быть между двумя объектами. А у Вас на скрине маркер - не между, а сбоку. Т.е. не хватает обьектов. Edited January 24, 2019 by Aleх Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
baumanets 0 Posted January 24, 2019 · Report post Результаты DRC в Calibre выложи. Или PVS? Так DK в открытом доступе на 28 нм не лежат. Поэтому, мало кто может помочь. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MickeyMouse 0 Posted January 25, 2019 (edited) · Report post 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. Но все-равно не ясно как ее решить. Edited January 25, 2019 by MickeyMouse Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
Aleх 0 Posted January 25, 2019 (edited) · Report post Привет! Проблема известная - чем меньше нанометры, тем сложнее делать сетку питания. С 28нм не работал, но почти наверняка Вы используете неправильные виа. Должны быть более узкие, чтобы не было конфликтов с пинами селлов. Советую внимательно почитать гайд производителя селлов (если это не tsmc), раздел сетки питания - там должны подробно описать, какими виа надо подсоединять сетку к первому металлу, с каким шагом их ставить, каким отступом и т.д. Есть небольшая вероятность, что виа все же правильные. В этом случае роутер (при определенных настройках, которые я так не вспомню) может кромсать малтикат виа сетки питания в местах конфликтов. Т.е. в результате , после роута, сетка получится рваная, и надо будет обязательно делать пауер анализ (ай-эр дроп). На финфетах рваная сетка - вообще обычное дело. Edited January 25, 2019 by Aleх Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...
MickeyMouse 0 Posted January 29, 2019 · Report post В 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 малтикат пробовал, но все-равно полигон остается прежний, хоть сами виа и их кол-во внутри него меняется. Возможно термин полигон здесь не уместен, ну да ладно. Quote Ответить с цитированием Share this post Link to post Share on other sites More sharing options...