Jump to content

    

Nick_K

Свой
  • Content Count

    588
  • Joined

  • Last visited

Community Reputation

0 Обычный

1 Follower

About Nick_K

  • Rank
    Знающий
  • Birthday 08/31/1988

Контакты

  • Сайт
    Array
  • ICQ
    Array

Информация

  • Город
    Array

Recent Profile Visitors

2099 profile views
  1. Сразу извиняюсь за возможные неточности или кустарные обьяснения. Я только учу данную область и ещё не владею всеми премудростями/терминами/понятиями. Не совсем так. Такие танци нужны для проверки работы флопа на его рабочей частоте и отсечении от возможных сбоев при CDC от соседнего домена. Как понятно - такая схема делается для первого флопа в цепи одной частоты. Если все остальные можно проверить записывая инверсные/рассчётные для ATPG значения, то у первого значительное влияние появляется из соседнего клокового домена, который может быть и быстрее (что хорошо), а может быть медленнее или просто асинхронный, что не позволит нормально протестировать работу этого флип-флопа (исключаем ошибки проектирования, если неправильное CDC - отбивать руки нужно фронт-енду). Как раз дело в том, что в режиме сканирования это не играет роли. А вот когда производится тестирование (execution) в режиме LOS (Launch on Shift) домены будут работать на своей рабочей частоте и изолировать вервый флоп нужно по ряду причин. Да, в проекте присутствует как минимум 3 клока. И все 3 клока не являются тестовыми, а обычными рабочими. Тестовый клок как не сложно докадаться один (для скана и для тестирования в большинстве режимов) Тут я категорически согласен. Но увы на текущей версии Genus'а (v18.1) и/или с таким подходом это реализовать не получилось. До меня этим вопросом занимался другой инженер и официальный ответ от Каденс саппорта был "это сделать невозможно, но вы держитесь". Повторюсь, возможно используя некий стандартный набор это реально сделать без особых усилий, но мне этот набор команд не известен. А экспериментировать нет времени - Тейпаут не за горами. По этой причине я тут и создал тему - может кто-то в курсе и поделится советом/подскажет
  2. Для синтеза никак точно. Может есть способ сделать подобную структуру для моделирования и тогда получится вытащить. Но Вам правильно сказали - никак. Нужно просто подойти с другой стороны - задавать в тайпдеф какие-то параметры и константы, тогда через эти значения можно вытащить позицию
  3. Не знаю как Вы привыкли. Но все "разные" версии в моём случае, покоятся в недрах истории GIT. А что касается тестов и тестбенчей - это не исходники и для них отдельная папка, не пересекающаяся с RTL дизайном. Ну и запускать оттуда что нужно уже и смотреть. Всё просто - папка RTL с актальными исходниками проекта и ничего лишнего А вот с подключаемыми IP - там немного сложнее, но тоже идеология приблизительно такая же.
  4. Собственно вот картинка, на которую мы ориентировались: По документации там всё привязано к OPCG макро и собственно к моменту генерации оного. Мы у себя сделали на скриптах вставку Toggle Mux: create_inst -name $my_mux [get_db lib_cells *MUX2X1] $my_module if {![llength [get_db $my_FF_invertion .pins *QN]]} { set inverter_name "my_si_inv$num" create_inst -name $inverter_name [get_db lib_cells */INVX1] $my_module connect [get_db $my_FF_invertion .pins *QP] [get_db [get_db $my_inst_name .insts */$inverter_name] .pins *A] connect [get_db [get_db $my_inst_name .insts */$inverter_name] .pins *Y] [get_db [get_db $my_inst_name .insts */$my_mux] .pins *D0] } else { connect [get_db $my_FF_invertion .pins *QN] [get_db [get_db $my_inst_name .insts */$my_mux] .pins *D0] } Но это "неофициальная" подтяжка. И когда происходит DFT reordering, может всё завалиться, если указанные Mux+FF не заблокировать от реордера. К чему это всё: Возможно обьявив домены (а не группы как у нас) и используя команды автогенерации из Genus'а можно получить "официальные" Toggle Mux и не бояться, что дальше их испортят. Но такое у нас не получилось с нашим проектом. А в официальном RAK немного не тот подход... Ну и там, конечно всё получается
  5. А что мешает запихнуть все исходники в одну папку и подключать их через wildcard как было сказано выше? Мы, правда, сейчас используем одну папку для массы проектов, посему пришлось создавать специальные filelist (проприетарный формат, поддерживаемый тулзом) и подключаться к исходникам через него. Ну и к нему парсер на Пайтоне сделали, чтобы относительные пути в абсолютные парсить + исключить подпапки для другого менее умного тулза. Но это всё проза. Обычно add *.v спасает ситуацию :)
  6. А какими командами (для уточнения) и как обьявлены домены? Просто в разных группах или всё-таки как отдельные домены. Уже спать собрался, а завтра постараюсь не забыть и скинуть какими командами что выполняется у нас
  7. Увы ввиду исторического развития и длинной запутанной истории конкуренции Xilinx/Altera на рынке СНГ, я (как и многие другие) очень сомневаюсь, что Альтера/Интел когда-либо сможет пробиться в привлекательный сегмент. А если учесть, что я писал слово Интел, а у них и так мегапроблемы начались, то иподавно У Квартуса нет симулятора. Единственная вещь превосходящая на голову Xilinx и категорически правильное решение - использование Modelsim в качестве встроенного симулятора.
  8. Я не сильно мастер в таких вопросах, на форуме явно есть люди с бОльшим опытом в сфере синхронизации отдельных "девайсов". Из опыта могу посоветовать поднять разного рода SPI/I2C если пропускной способности хватит. При чём именно компоненты интерфейса должны иметь возможность работать асинхронно и распределённо. Если нужно прям очень много обмениваться, тогда стоит посмотреть на разного рода Wishbone/AXI. В любом случае это не такая тривиальная задача и требует определённых усилий для разработки.
  9. Если Вы ругаете Квартус, тогда не быть Вам инженером ПЛИС. Увы наши будни состоят на 15% из разработки, 35% дебаг того что "разработали" и где-то 50% война с интерфейсом/IDE/EDA. И хорошо если есть документация, или техподдержка, или вот такой форум. Да я согласен, что у Ква не самый приятный интерфейс. За то у нах лучшая документация (пишут прям как для дэбилов - детально и внятно). Да у Xilinx получше IDE, но упаси Элон начать там симулировать... Это не говоря про другой софт типа Synopsys или Cadence. Где иногда нельзя выходить за рамки консоли ибо можно глаза/руки/голову сломать. А по поводу имён - для начала стоит ознакомиться со сводом общих правил. Многое перекочевало из программирования (т.к. весь софт пишут программисты). И называть числовыми названиями переменные/порты/неты/т.д. нельзя, ровно как нельзя, чтобы название начиналось с числа/символа. Только хардкор, только буквы.
  10. Разводке. Очепятка. Да будут, но лучше это сделать изначально и использовать соответствующие меры синхронизации, если нужно обмениваться какими-то данными. Чем потом ломать голову как синхронизировать все составляющие из-за нестыковок в PCB или разных элементов
  11. Ещё раз. 120 по разведке нормально. Я бы вообще уменьшил на порядок и прикрутил качественный кварц. А частоту можно и нужно поднять внутри кристалла. Так проще и надёжнее
  12. Вот поступает на все ПЛИС 120MHz, так пусть и остаётся. Не нужно изобретать велосипед и потом разруливать проблемы. А частоту в каждой ПЛИСине можно поднять встроенным PLL, благо в замом худом MAX10 их аж 2.
  13. По-идее, тогда висячий стейт как null и интерпретируется.
  14. Ну это ведь не висячее обьявление? Нельзя пустым оставлять - это точно. Или дефолтный стейт вносить или вообще убрать. А вообще лучше проверять результат синтеза
  15. Ок, может это ещё зависит от синтезатора/IDE. Я точно помню, что в какой-то из последних версий ISE/PlanAhead нельзя было без others.