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

    

Mikhail241

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Частый гость

Контакты

  • Сайт
    http://
  • ICQ
    0

Информация

  • Город
    Msk
  1. Цитата(vermut.42 @ Feb 14 2018, 17:25) как вариант посмотри в UG: define_leafcell CODEdefine_leafcell -type nmos -pin_position { 0 1 2 3 } -extsim_model nch_mac можно поподробнее? из текущего описания мне кажется что достаточно постобработки нетлиста небольшим шелл скриптом.. Я сейчас так и делаю. Автозаменой. Но как-то странно: в описании tsmc сказано, что макро должны начинаться с "X", но все их же spi-нетлисты на стд ячейки с транзисторами на "М" ! define_leafcell пробовал, не помню с какими ключами, завтра еще раз запущу... Спасибо за ответы! Еще вопрос. Как в liberate констрейнить входные данные которые тактируются внутренним клоком? Внутренний клок генерируется с помощью входного опорного клока.
  2. Частично решил проблему: названия инстанций макро транзисторов(*ch_mac) должны начинаться с буквы X. Но как быть с нетлистом у которого при генерации буква M?
  3. Цитата(baumanets @ Feb 14 2018, 06:15) Сделай нетлист / список цепей. Смотри какая модель грузится. А потом в папке смотри наличие моделей в scs-подобных файлах. Я ведь с этого и начал. Сделал нетлист вентиля прочитал его и спайс модели. У меня не scs у меня L(hspice). Я итак знаю, что не грузится - nch_mac и pch_mac. Мне кажется это связано с тем, что *_mac это не модели, а subckt а сами модели находятся в нем и тулу нужно как-то это объяснить
  4. Всем привет. Сталкивался ли кто с такой проблемой. Подключаю простой нетлист с транзисторами типа nch_mac и pch_mac и спайс модели на эти мопы. Запускаю char_library но: ERROR (LIB-508): (char_library): Unable to identify the device type for 'nch_mac' because no global or local NMOS or PMOS model has been loaded using 'read_spice' and no 'define_leafcell' command has been specified. Load the model using 'read_spice' or specify a 'define_leafcell' command and rerun. The 'define_leafcell' commands must precede 'read_spice' command. If the netlist has elements, also specify the '-element' argument with the 'define_leafcell' command. ERROR (LIB-507): (char_library): Failed to process the model based element inst: 'MM73', model: 'MOS' in the cell DFD. This cell will be skipped. Check the model uses standard parameter names and the define_leafcell command options are used properly. Update the Tcl and rerun. Пробовал на другом примере где мопы не pch_mac а просто pch, там все ок.
  5. Цитата(bambr @ Dec 7 2017, 19:15) Во всех ПЛИС GTP, GTH, GTX похожи. По сути все довольно просто. Вам в FPGA нужно собрать мультиплексор, и отправлять на выход. Вообще я я слышал что есть миросхемы выскоскоростных мультиплексоров, которые просто будут прозрачно повторять сигнал на выходе с одного из входов. Зависит от вашего стандарта передачи данных. Это ничего не меняет. Все равно входы и выходы этого мукса должны быть как в GT(такая задача стоит). А в чистом виде их в ПЛИС нет, только с логикой PISO/SIPO. Использовать просто диф порты тоже не подойдет т.к. нужны функции эквалайзера и имфазиса. По поводу микросхем: у меня ведь эта проблема и возникла, т.к. нужно сделать прототип такой схемы(DS25MB100).
  6. Цитата(alexadmin @ Dec 6 2017, 20:36) Стало понятно чего вы хотите. Не выйдет. Loopback только внутри трансивера, чтобы мультиплексировать - надо сперва полностью принять данные, потом отдать их на нужный передатчик. Так что без полного трансивера никак. На самом деле не так страшно, если использовать Transceiver Wizard IP, то очень много настраивается в gui. Да, похоже без пакетной передачи тут не обойтись... Я попробую муксить пакеты по 16 бит с двух Rx и отправлять их в Tx. bumps, говоря про много выводов, я имел ввиду, что их слишком много для одноразрядного мукса. Управление внешнее. А вопрос еще остается, есть ли какие-то решения в других ПЛИС или контроллерах с возможностью GT буфферов? Мне там собственно нужен эквалайзер и преимфазис.
  7. Цитата(Lmx2315 @ Dec 5 2017, 19:10) ..а что у вас не получается? Плата самодельная или эвалюшен какой-нить? Спасибо за отклик) Плата от производителя(AC701). Не получается выделить отдельно буферы Rx и Tx. Вернее сделать тракт между ними без PISO и SISO и т.д.(см рис). Пока все, что я нарыл это использовать loopback. Но даже если получится, то как в этом случае сделать мультиплексор? Возможно есть какое-то более простое решения без использования GTP, ведь там под сто выводов...
  8. Всем привет! Оч нужна помощь... Есть задача реализовать простой мультиплексор для гигабитных посл данных. В Artix7 есть GTP интерфейсы в которых есть необходимый компонент(входные и выходные буфферы Rx Tx), но настроить эту махину не получается. Имел ли кто-то опыт работы с GTP или может быть подскажете другой вариант решения?
  9. Да, DC лучше чем RTL compiler, много раз слышал и сам согласен(Genus вроде ближе). А вот, что насчет IC vs Innovus ?
  10. Народ! Давно интересует вопрос кто круче ? Каденс или синопсис ? Предлагаю сравнивать физический и логический синтез цифры. Может есть какие-то ссылки на исследования, сравнения...
  11. Цитата(Shivers @ Nov 17 2017, 16:09) Т.е. это путь reg2cgate? Я замечал, что CCOPT плохо правит reg2cgate, если есть нарушения сетап/холд в путях, которые находятся в дереве с выхода этого клок-гейта. Как только исправляете тайминг в дереве (к примеру, ослаблением констрейнтов, если нарушения в in2reg или reg2out), только тогда тул начинает сам править reg2cgate. На мой взгляд, это баг. Тулы кэденса вообще дико забагованы, как известно. Сам слэк по пути reg2latch, но как я уже сказал если в качестве соурса для gen clock использовать обычный флип-флоп(вместо гейта) - тот же результат, с тем же constraint=0. Хорошо, попробую еще ослабить sdc, хотя там уже кроме частоты все выключено...
  12. Цитата(Shivers @ Nov 17 2017, 12:54) Посмотрите тайминг до передающего триггера и после принимающего, есть ли там запас по сетапу. Тул ведь сводит всю микросхему/блок, а не один выделенный путь. Если где то совсем плохо с таймингом, тулл попытается вытащить эти места за счет хороших путей. А если все же надо вытащить именно один путь или группу путей на фоне проблем в остальной части дизайна - выделите это в отдельную группу (group_path), и повысьте на ней приоритет (setPathGroupOptions). Я смотрел worst chain в отчетах ccopt и там все сводится к тому, что нет временного окна для usful skew(constaraint = 0!) Т.е. он не может добавить задержку в регистр gen clock(в данном случае это латч) --> choosen = 0. Тут используется gating clock для генерации, но в классической ситуации где gen clock описывается сразу с выхода делителя аналогичные проблемы. В UG ничего не нашел по этому поводу, кроме увеличения auto_limit_insertion_delay_factor. Т.е. проблема в том, что изначально ccopt задает временное окно равное нулю. Хотя добавление задержки не вызовет ухудшения WNS(EcoAddRepeater). В общем беда!
  13. Цитата(Shivers @ Nov 16 2017, 19:37) Так а в чем проблема, если тайминг нормальный? Все группы и деревья, которые создает CCOPT, можно редактировать/удалять/создавать новые. Не доверяете машине - делайте свои спецификации. Или на крайняк в инновусе до сих пор остается поддержка CKsynthesis Почему Вы так решили?) WNS по сетапу -0,4. Период 1нс. Понимаете, все, что Вы предлагаете я уже перепробовал(и вручную редактировал файл)... С CKsyn WNS = -0,6. Во всех вариантах результат плавает от -0,4 до -0,9 и всегда одно и тоже место возле gen clock. Самое для меня странное, что EcoAddRepeater помогает сбросить около 0,2 без нарушений по холд. Думаю можно и до нуля сбросить, но это долго и нудно. У меня Иновус 15. Спасибо)
  14. Цитата(Shivers @ Nov 16 2017, 14:47) Если "путь к приемнику меньше чем к источнику" значит в этом пути холд нарушен. Сделайте репорт по холду и по сетапу. Если по сетапу есть запас, то холд лечится. Если запаса нет, то холд лечится только в ущерб сетапу. p.s. немного базовых вещей про сетап и холд https://habrahabr.ru/post/302806/ Дело не в ходде. Я специально задаю запас по WNS на холд и синтезирую с CU = 0 и в режиме setAnalysisMode -analysisType single. И по отчетам видно что это не проблемное место для холдов. Проблема именно с регистрами соседними к источнику, CCOPT создает отдельную skew_group с rank 1 в которой: регистр генератора(РГ) и самый ближайший к нему регистр(БР). В результате эта группа сбалансирована а между БР и другим регистром(картинка) слэк. PS: дизайн очень критичный по быстродействию
  15. Цитата(Shivers @ Nov 16 2017, 13:38) CCOPT по всей видимости посчитал, что путь между регистрами больше требуемого периода, отсюда и skew. Це не баг, а фича. Если не нравится, запретите вообще скьюить клок setOptMode -usefulSkewCCOpt none Спасибо за ответ. Так в этом и суть... Возникает отрицательный slack между регистрами, т.к. путь к приемнику меньше чем к источнику(одна из причин). UsfulSkew должен исправлять эту проблему. Я даже проверил, с помощью EcoAddRepeater, вставить буфер в дерево приемника и WNS уменьшился... Перепробовал кучу опций ничего не помогает! Без UsefulSkew тоже печально все.