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

Mikhail241

Участник
  • Постов

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

  • Посещение

Сообщения, опубликованные Mikhail241


  1. как вариант посмотри в UG: define_leafcell

     

    define_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. Сделай нетлист / список цепей. Смотри какая модель грузится. А потом в папке смотри наличие моделей в 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. Во всех ПЛИС GTP, GTH, GTX похожи. По сути все довольно просто. Вам в FPGA нужно собрать мультиплексор, и отправлять на выход. Вообще я я слышал что есть миросхемы выскоскоростных мультиплексоров, которые просто будут прозрачно повторять сигнал на выходе с одного из входов. Зависит от вашего стандарта передачи данных.

    Это ничего не меняет. Все равно входы и выходы этого мукса должны быть как в GT(такая задача стоит). А в чистом виде их в ПЛИС нет, только с логикой PISO/SIPO. Использовать просто диф порты тоже не подойдет т.к. нужны функции эквалайзера и имфазиса.

    По поводу микросхем: у меня ведь эта проблема и возникла, т.к. нужно сделать прототип такой схемы(DS25MB100).

  6. Стало понятно чего вы хотите. Не выйдет. Loopback только внутри трансивера, чтобы мультиплексировать - надо сперва полностью принять данные, потом отдать их на нужный передатчик. Так что без полного трансивера никак. На самом деле не так страшно, если использовать Transceiver Wizard IP, то очень много настраивается в gui.

    Да, похоже без пакетной передачи тут не обойтись... Я попробую муксить пакеты по 16 бит с двух Rx и отправлять их в Tx.

    bumps, говоря про много выводов, я имел ввиду, что их слишком много для одноразрядного мукса. Управление внешнее.

    А вопрос еще остается, есть ли какие-то решения в других ПЛИС или контроллерах с возможностью GT буфферов? Мне там собственно нужен эквалайзер и преимфазис.

  7. ..а что у вас не получается? Плата самодельная или эвалюшен какой-нить?

    Спасибо за отклик)

    Плата от производителя(AC701). Не получается выделить отдельно буферы Rx и Tx. Вернее сделать тракт между ними без PISO и SISO и т.д.(см рис).

    Пока все, что я нарыл это использовать loopback. Но даже если получится, то как в этом случае сделать мультиплексор?

    Возможно есть какое-то более простое решения без использования GTP, ведь там под сто выводов...

     

    image.png

  8. Всем привет!

    Оч нужна помощь... Есть задача реализовать простой мультиплексор для гигабитных посл данных. В Artix7 есть GTP интерфейсы в которых есть необходимый компонент(входные и выходные буфферы Rx Tx), но настроить эту махину не получается.

    Имел ли кто-то опыт работы с GTP или может быть подскажете другой вариант решения?

  9. Народ! Давно интересует вопрос кто круче ? Каденс или синопсис ?

    Предлагаю сравнивать физический и логический синтез цифры.

    Может есть какие-то ссылки на исследования, сравнения...

     

  10. Т.е. это путь reg2cgate? Я замечал, что CCOPT плохо правит reg2cgate, если есть нарушения сетап/холд в путях, которые находятся в дереве с выхода этого клок-гейта. Как только исправляете тайминг в дереве (к примеру, ослаблением констрейнтов, если нарушения в in2reg или reg2out), только тогда тул начинает сам править reg2cgate. На мой взгляд, это баг. Тулы кэденса вообще дико забагованы, как известно.

    Сам слэк по пути reg2latch, но как я уже сказал если в качестве соурса для gen clock использовать обычный флип-флоп(вместо гейта) - тот же результат, с тем же constraint=0.

    Хорошо, попробую еще ослабить sdc, хотя там уже кроме частоты все выключено...

  11. Посмотрите тайминг до передающего триггера и после принимающего, есть ли там запас по сетапу. Тул ведь сводит всю микросхему/блок, а не один выделенный путь. Если где то совсем плохо с таймингом, тулл попытается вытащить эти места за счет хороших путей. А если все же надо вытащить именно один путь или группу путей на фоне проблем в остальной части дизайна - выделите это в отдельную группу (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). В общем беда!

    image.png

     

  12. Так а в чем проблема, если тайминг нормальный?

    Все группы и деревья, которые создает CCOPT, можно редактировать/удалять/создавать новые. Не доверяете машине - делайте свои спецификации. Или на крайняк в инновусе до сих пор остается поддержка CKsynthesis

    Почему Вы так решили?) WNS по сетапу -0,4. Период 1нс. Понимаете, все, что Вы предлагаете я уже перепробовал(и вручную редактировал файл)... С CKsyn WNS = -0,6. Во всех вариантах результат плавает от -0,4 до -0,9 и всегда одно и тоже место возле gen clock.

    Самое для меня странное, что EcoAddRepeater помогает сбросить около 0,2 без нарушений по холд. Думаю можно и до нуля сбросить, но это долго и нудно. У меня Иновус 15. Спасибо)

  13. Если "путь к приемнику меньше чем к источнику" значит в этом пути холд нарушен. Сделайте репорт по холду и по сетапу. Если по сетапу есть запас, то холд лечится. Если запаса нет, то холд лечится только в ущерб сетапу.

     

    p.s. немного базовых вещей про сетап и холд

    https://habrahabr.ru/post/302806/

    Дело не в ходде. Я специально задаю запас по WNS на холд и синтезирую с CU = 0 и в режиме setAnalysisMode -analysisType single. И по отчетам видно что это не проблемное место для холдов.

    Проблема именно с регистрами соседними к источнику, CCOPT создает отдельную skew_group с rank 1 в которой: регистр генератора(РГ) и самый ближайший к нему регистр(БР). В результате эта группа сбалансирована а между БР и другим регистром(картинка) слэк.

    PS: дизайн очень критичный по быстродействию

  14. CCOPT по всей видимости посчитал, что путь между регистрами больше требуемого периода, отсюда и skew. Це не баг, а фича. Если не нравится, запретите вообще скьюить клок setOptMode -usefulSkewCCOpt none

     

    Спасибо за ответ. Так в этом и суть... Возникает отрицательный slack между регистрами, т.к. путь к приемнику меньше чем к источнику(одна из причин). UsfulSkew должен исправлять эту проблему. Я даже проверил, с помощью EcoAddRepeater, вставить буфер в дерево приемника и WNS уменьшился... Перепробовал кучу опций ничего не помогает! Без UsefulSkew тоже печально все.

     

     

     

  15. Добрый день.

     

    Имеется дизайн с одним клоком и несколькими сгенерированными клоками(generated clock).

    При выполнении CCOPT в Innovus получается большой skew между регистром источника generated clock и примыкающими к нему регистрами.

    Поясняющая картинка:

    image.png

     

  16. Добрый день!

    Подскажите, как можно избавиться от диодов в схеме? На них падает 0.3 вольта и чуток недостает напряжения. Тупо поднять уровень напряжения не могу.

     

    А вариант с другой схемой рассматривать имеет смысл?

  17. Возможно преамбула - это и рудимент, но раз в стандарте про нее написано, значит надо ее формировать. Верно ведь? Тем более в том же 10-и гигабитном Ethernet она тоже есть. Во всяком случае с ней вроде разобрался.

     

    Еще вопросик небольшой есть по поводу управления PHY через MDIO интерфейс. Не нашел даташит Марвелла с описанием внутренних регистров микросхемы 88e1111. Понимаю, что все они стандартные и описаны в спецификации на Etherent. Но все же, может кто то подскажет, какая последовательность записи данных в эти регистры? Кто это уже делал, и кому не жалко поделиться такой информацией.

    Заранее спасибо!

    http://www.alldatasheet.com/datasheet-pdf/...ll/88e1111.html вот же даташит

  18. Для начала нужно определить что ваша система достаточно линейна.

    Иначе от PID регулирования не будет никакого толка и вся теория коту под хвост.

    Удивительно, но никто по предыдущим ссылкам об этом даже не намекнул.

    Большинство этих авторов наверно полагает что если система с обратной связью не возбуждается, то она регулирует.

    Поясните пожалуйста, что Вы имеете в виду под системой? Само устройство? А определение линейности? Провести n итераций по нагреву и охлаждению с замером температуры и последующим построением графиков?

  19. Приветствую!

    Сдох намертво :) дисплей UMSH-8376MD-1T

    http://www.datasheetspdf.com/datasheet/UMSH-8376MD-1T.html

    Подскажите, в какую сторону рыть?

    Там какой-то стандартный интерфейс и можно подобрать дисплей другого производителя?

    Если еще актуально, то вот вариант TCG057VGLCA-G00. Интерфейс 18 бит RGB, 5,7 диагональ. Ссылка на шитодат http://www.datasheet4u.com/datasheet-pdf/K...f.php?id=707859. Я поверхностно сравнивал

  20. Добрый день

     

    Подскажите инструменты для расчета (а лучше - моделирования :) ) радиатора из полигонов меди платы

     

    Есть в LTSpice штука с названием SOAtherm-PCB, но там или я не нашел как несколько слоев указать, или только 1 верхний слой под полигон теплоотводный используется. Да и стек нельзя поменять, например 1oz-2oz-2oz-1oz

    И, как ни грустно, переходные отверстия также не учитываются никак

     

    В ANSYS точно можно промоделировать. Мы на парах расчет теплового потока на сенсоре моделировали. Только разбираться в ней надо много.

  21. Слово "WIDTH" для программных инструментов- это только набор букв. Им все равно какие буквы... И сколько и каких параметров применить - это решать Вам...

    А что касается "другое значение" - это тоже решать Вам. Значение разрядности выбирается из времени задержки. Напишите функцию и в ней формулу, которая из времени задержки таймера вычислит разрядность... И потом никогда об этом заморачиваться не будете. Один раз зададите задержку, а все остальное программные инструменты сделают сами...

    С функцией помогло, спасибо

×
×
  • Создать...