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

    

MickeyMouse

Участник
  • Публикаций

    22
  • Зарегистрирован

  • Посещение

Репутация

0 Обычный

Информация о MickeyMouse

  • Звание
    Участник

Посетители профиля

Блок последних пользователей отключён и не показывается другим пользователям.

  1. Соглашусь с комментариями, лучше с падами. Вы и тайминги сразу закроете на весь дизайн и анализ потребления проведете. Я обычно функциональные пады добавляю на уровне rtl, а силовые уже на бэкэнде. Но вам все-равно нужно указывать констрейны описывающие внешние задержки и нагрузки(по крайней мере для синхронных портов чипа). Ну представьте что у вас имеется путь данных "внешний флоп - пад - внутренний флоп" а вы его не законстрейнили...
  2. Да не, это не то. Не хочется дополнительный маршрут и макро делать, у меня их и так уже больше чем звезд на небе. Сейчас нащупал вариант, синтезировать все а потом выполнять change_link(меняет модуль инстанции), но нужны видимо доп констрейны из-за разных нагрузок на порты клонов.
  3. Всем привет! Кто-нибудь сталкивался с такой проблемой? В дизайне есть N-штук одинаковых модулей, как указать генусу рассматривать их как один модуль инстанцируемый N-раз? По умолчанию генус делает uniquify, в результате имеем N разных модулей - для каждой инстанции свой модуль, а хотелось бы N-инстанций и один модуль( конечно с осознанием того что нетлист уже не уникальный). Есть крыжик minimize_uniquify но он не работает, кроме того по описанию не должен работать на 100%. По сути задача крайне стандартная. Исходя из принципа сквозного маршрута каденса, должен быть какой-то способ делать нормальный партишининг для модулей-клонов в генусе чтобы передать это в инновус.
  4. А можно поподробнее немного?) Как именно это сделать? Я ведь работаю в интерактивном режиме, так то я могу и через grep пропустить текст...
  5. Добрый день, всем! Проблема такая: имеется терминал bash, в нем запускается некая программа(тул) которая перехватывает управление терминалом, далее ведется работа с этой программой через терминал в интерактивном режиме(т.е. ввел команду, получил ответ и т.д. до выхода из программы). Внимание вопрос! Как подсветить определенные слова в терминале в режиме работы с этой программой? Например нужно подсветить слово warning: запускаем программу $ > program запускаем внутренние команды программы $ program> cmd1 "вывод в консоль ответа с подсветкой слова warning " $ program> cmd2 "вывод в консоль ответа с подсветкой слова warning "
  6. Добрый день! На рисунке если я не ошибаюсь ширина = 1мкн, расстояние = 0,4мкн. Но всяческие эксперименты с изменением этих величин не к чему не привели. Использую 6 слоев, HVH. Страйпы в 6 металле. Сама библиотека 10-слойная.
  7. Спасибо за ответ) Про бондпады я как-раз и имел ввиду,что для них есть процедура(из хелпа каденса) заканчивающаяся спец командой staggerBondPad.
  8. Всем привет! Есть ли отдельная команда для привязки клампа к паду питания в иновусе ? Так же как это делается например для бонд падов. Или используете обычные констрейны через io - файл?
  9. Поняли верно. В данном случае N фаз - это просто 1 тактовый сигнал с задержками 100ps * i, где i-номер фазы. Т.е. при захвате данных(фаз) некоторым клоком на синхронизаторе получается снапшот текущего состояния фаз(например 0000001111111, по позиции бит 01 я определяю оптимальный индекс фазы...) В целом метастабильность допустима и неизбежна из-за асинхронности. Сейчас я добиваюсь скью на синхронизаторе около 15ps что в сравнении с 100ps и вполне допустимо. Но еще ведь нужно выбрать из этих фаз оптимальную по полученному индексу. Т.е. фазы должны проходить через мукс с равными задержками. Выбранная фаза тактирует флоп на который поступают некоторые данные(DI)(синхронные выбранной фазе). Задачу выравнивания задержек в муксе удалось решить очень тупым путем, я просто сделал структурный rtl из элементов "или", заставив, таким образом, генус сделать пути для всех фаз одинаковыми. Иначе генус во-первых начинает вставлять 4-х входовые вентили сильно искажающие скважность, во-вторых задержки по отдельным фазам сильно разнятся. Задачу выравнивания DI и выбранной фазы решаю путем ecoAddRepeater. Как видите имеется сразу несколько мест в дизайне с требованиями к одинаковым задержкам и по идее команда set_data_check подходит идеально, но не работает, поэтому приходиться шаманить тулом. Еще по поводу H-tree... Был опыт небольшой совсем и результаты по скью получились хуже. Кроме того, как-то читал статью cadence про ccopt где утверждалось, что на глубоких технологиях от 65нм(если не ошибаюсь) лучшие результаты дает unconstrained tree, там правда речь шла именно про слэк, а не про скью.
  10. Формально set_data_check работает и с сигналами в разных ячейках. Дело в том, что у меня задача clock data recovery и нужно выровнять N фаз идущих с макро на входы N флопов которые тактируются общим клоком. В общем-то я так и делаю минимизирую скью на приемниках и размещаю их ровным столбиком возле макро. Однако здесь нужно отметить, что если жестко фиксить положение приемных флопов, то скью получается хуже т.к. меньше свободы действий в этом случае(возможно стоит поиграться со свободных падингом возле этих ячеек) Варианты с skew_group для самих фаз не дают результатов(видимо потому что у этих N тактов нет нагрузок в виде тактовых пинов). Кстати не подскажете какой командой можно поставить флопы рядом?)
  11. У кого-нибудь есть положительный опыт использования команды set_data_check либо ее альтернативы в innovus/genus ? Вообще интересует задача выравнивания задержки не связанных между собой сигналов. Не в первый раз столкнулся с проблемой в иновусе, что команда вроде есть, по описанию что надо, а по факту... Ничего не делает. Есть еще пара set_max_delay.set_min_delay, но set_min_delay работает плохо.
  12. Добрый день! Речь идет про обычные многоступенчатые триггерные синхронизаторы(несколько последовательно-включенных флопов). Какими способами их можно оптимально размещать/разводить? Т.е. максимально близко друг к другу. Скажем в том же Vivado при работе с ПЛИС можно указать атрибут типа async_reg для таких случаев. Есть ли что-то подобное(простое и лаконичное) в Innovus. Сразу скажу, что такие варианты знаю: - просто констрейнить путь - далать отдельный макро(слишком гиморойно) - использовать specifyNetWeight(плохо работает) - делать Fence для синхронизатора - их не обязательно максимально близко размещать(не вдаваясь в подробности, в моем случае желательно)
  13. Вынос башки... В общем сначала почитал про виа для 28нм, есть рекомендация использовать bar via - примерно в 2 раза шире обычных. Потом попробовал сузить область виа до самих виа(см картину) в итоге те ошибки ушли, но появились новые: Special Wire of Net VDD & Blockage of Cell x_inst/x_signal Actual: 0.0920 Required: 0.0850 Type: Cut EolSpacing
  14. Хм... Спасибо за ответ) Ячейки от 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 малтикат пробовал, но все-равно полигон остается прежний, хоть сами виа и их кол-во внутри него меняется. Возможно термин полигон здесь не уместен, ну да ладно.