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