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

    

AVR

Свой
  • Публикаций

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    фанат Linux'а

Контакты

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

Информация

  • Город
    SPB.RU

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

6 851 просмотр профиля
  1. Что может быть хуже чем, недооценка трудозатрат? Вы оптимист 80-го уровня.
  2. Какие и где видели? 8b10b это для pci-e 1.x и 2.0, вот меня такие реализации интересуют. Вы говорите, что такие существуют без привязки к вендорам?
  3. Что Вы планируете использовать для работы с физикой, да еще с открытым кодом? У меня есть потребность в некоей корке, которая бы работала с внешней фишкой (PHY) через PIPE. Если есть что-то не привязанное к вендору типа корок xilinx/altera/lattice/etc - было бы здорово!
  4. Некропостинг? В любом случае, тот Quartus был очень плохо портирован на Linux, и на ОС Ubuntu падал на каждый чих. Но это можно побороть, если поставить в виртуальную машину версию CentOS, которая соответствует поддерживаемой RedHatELinux для той версии Quartus. Либо, можно ограничиться лишь командной строкой для этих всех утилит и всё будет хорошо.
  5. Спасибо! Вот теперь я всерьез это всё выучу. Пришел к пониманию, что достаточно сложные проекты без понимания таких вещей делать можно, но работать они не будут... :)
  6. Всем добрый день! Последнюю неделю я возился с некоторыми проектами, вся проблема которых, как в последствии выяснилось, с таймингами... Я осознал, что хочу постичь искусство написания таймингов на полном серьезе, максимально глубоко. Не хочу выдать горбатый корявый продукт, который при первых же испытаниях будет давать сбои. Пока что я тайминги прописал без особого осмысления, но это помогло. Пожалуйста, посоветуйте какое-нибудь руководство, где бы не просто описывалось все это, но и пояснялась глубинная суть результатов тех или иных правил. Как видно по названию темы, меня интересуют новомодные форматы правил XDC/SDC. Такие руководства мне попадались, но там было в основном без картинок и графиков, был не очевиден результат.
  7. Вот только недавно у меня была похожая задачка. Делал wrapper для FIFO и многих других модулей, которые должны были быть портабельными между ПЛИС разных вендоров. Вот у Altera я такого не нашел. Поэтому решил если нет дефайна то значит Altera, а если есть то это Xilinx. В Vivado это Project Settings -> General -> Verilog Options и просто "плюсируем" туда нужные define. Более того, у Vivado есть аналогичные Verilog Options, куда можно ляпнуть SIM. И таким образом код может автоматом модифицироваться когда он для симулятора (меньше задержки, другие инит состояния), и когда для железа. У Modelsim, что я использую для Altera, можно так: vlog +define+SIM my_sweet_module.v Таким образом, у меня есть глобальные define, о которых я не думаю и не парюсь, которые всегда актуальны в своей среде своего вендора, и актуальны для симуляции. Удобно, просто то, о чем я мечтал как раз.
  8. Я и сейчас продолжаю так считать. Эта тема про независимые клоки и пересечение доменов между ними, но когда они вылезают из одного PLL с кратными соотношениями, то не вижу тут опасности. Да, будет наверное некий расколбас (jitter) между выходами одного PLL, но каждый новый такт всё будет приходить вовремя ИМХО
  9. Я дилетант и не увидел в тексте статьи "марсохода", что нужно что-то там прописывать, чтобы успокоить тайминг-анализатор. Стало быть, просто насыпать кучу регистров недостаточно? Надо еще и set_false_path прописать? Там 8 независимых линий, это не байт, там лишь один бит на тысячу тактов меняется, так что плюс-минус один такт изменения одного из них - не трагедия. Понятно, и про это тоже не написано в статье "марсохода". Если в самом деле в схеме с этими регистрами задержка может быть произвольно большой, то это что-то объясняет. Почему не пойдет? А какая тогда пойдет? Мне бы просто сделать один какой-то модуль и констрейны к нему, чтобы везде где я его влеплю - было безопасное пересечение клок-доменов у отдельных битов, и чтобы анализатор не ругался.
  10. Есть прошивка на базе Virtex-7 и она не работает. При компиляции жалуется на множество не выполняющихся требований таймингов. Я создал новый top-модуль и стал постепенно подключать всё новые свои модули. И столкнулся с тем, что нужно правильно перенести регистр, который к слову меняется раз в сотни тактов а не на каждый такт, между доменами тактовых сигналов. В исходных кодах обвязки GTX-трансивера видел схему синхронизации на основе примитива FD с аттрибутами (* shreg_extract = "no", ASYNC_REG = "TRUE" *). Исходный код моей версии, расширенной до многоразрядной версии (для удобства), прилагаю в файле sync.v Юмор в том, что на то место, где один FS тактируется clki (входной) а следующий clko - оно жалуется что вот тут не выполняются тайминги, negative slack и тому подобное. Перемещаю дальше момент перехода - там уже жалуется. Так как же регистр перекинуть, да хоть однобитный, между доменами, чтобы оно не рычало что неверны тайминги? Вот всё же как тут сделал: https://marsohod.org/11-blog/190-meta1 sync.v
  11. Коллеги мне как-то сказали, что далеко не все регистры универсальны, и максимальная частота может быть разной. Протокол один, но всё же.
  12. На правах просто идеи: прикрутить через симулятор, тот же DPI, некую обертку, которая будет работать в живой сети через некую прослойку. Ну а тестов для обычного программного TCP/IP навалом должно быть. Единственное что, задержки будут сильно беспокоить, но в остальном на соответствие проверить можно, каждое поле, каждый пакет и так далее. Не смотрите что я фанатик, но в Linux задача заворота сетевого порта в симулятор решается гораздо проще.
  13. А читать как? Я очень рекомендую не только сделать запись, но и ЧТЕНИЕ всех регистров, чтобы раз в 5 секунд получать состояние всех регистров PHY. Уверяю, вылезет куча проблем, которые можно будет устранить лишь видя состояние всех 32-х например регистров. Так что не только пишем, но и читаем. У Вас в статусе значится "Профессионал", значит не составит труда сделать такую элементарную схему :) А я не профессионал, но на языке Verilog мог бы помочь ;) Какая у Вас PHY конкретно и как подключена?
  14. А должны быть какие-то проблемы? Даже целый Microblaze симулится, но долго. По теме: почему "мы все" сразу не догадались попросить автора темы собственно схему его балалайки?
  15. Хотелось бы добавить к своим словам следующее соображение: даже если что-то не симулится, что-то крупное, или данные ему задать проблематично, всегда на помощь могут прийти эмуляторы, врапперы и пустышки. Я так PCI-E ядро отлаживал - сделал имитацию его интерфейса, и удивительно - помогло отлаживать проект. Или например, подключить какой-то датчик или что-то сложнее - все равно эмулятор собственной разработки всегда помогает тестировать глубже. Я к тому клоню, что нет барьера, когда симуляция невозможна. Вечером тупо выложу тестбенч, показывающий что работает а что не работает сабжевом модуле. А то больно много текстов и вопросов вокруг пяти строк кода.