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

    

hdl_student

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

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

  • Посещение

Репутация

0 Обычный

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

  • Звание
    Частый гость
  • День рождения 13.09.1987

Информация

  • Город
    Москва

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

2 832 просмотра профиля
  1. Тема стара, как мир, тем не менее, однозначного решения найти не удалось. Прототипируем фрагмент дизайна ASIC на самой большой UltraScale. Около 5000 ног интерконнекта висит в воздухе внутри FPGA, поэтому Vivada выбрасывает все, что не завязано на физические выводы, после чего часть дизайна перестает отзываться на запросы по интерфейсу, торчащему из FPGA. В Quartus есть замечательный неинвазивный инструмент как раз для такого случая - Virtual Pin, который позволяет сохранить возможность эффективного синтеза/раскладки и сохранить нужную логику от выбрасывания. Полный дизайн ASIC-а (включая подсистему, которую мучаю я) собирается и работает без проблем (т.к. в нем все ноги моей подсистемы подключены). Стоит задача собрать автономный дизайн с подсистемой, чтобы не ждать 1,5 дня на пересборку общего дизайна. Что испробовано на данный момент: 1. (* keep = "true" *) на сигналы, висящие в воздухе Как оказалось, это не уберегает логику, привязанную к этому сигналу от оптимизации. Через интерфейс видится только часть дизайна. 2. (* dont_touch = "true" *) на сигналы, висящие в воздухе Эта директива работает "рекурсивно" ко всей подключенной логике, запрещая какую-либо оптимизацию вообще, из-за чего на пустом месте растет resource optimization и появляются большие слаки. Через интерфейс все равно видится только часть дизайна. 3. (* mark_debug = "true" *) на сигналы, висящие в воздухе Какого-либо эффекта (в т.ч. автоматического создания ILA) не замечено. Через интерфейс видится только часть дизайна. 4. Выделение всей подсистемы в обертку в режиме Out-of-context. OOC, как я понял, работает только для синтеза, если входы подсистемы болтаются в воздухе, то на этапе implementation Vivado выдает ошибку - входы LUT должны быть подключены. Если на входы подсистемы повесить константу, implementation видит "constant propagation" и выбрасывает еще больше логики. На сайте Xilinx и нашем форуме поискал, в основном предлагаются перечисленные способы. Есть ли еще какие-либо человеческие способы, которые можно попробовать до того, как возиться с сдвиговыми регистрами на входах и выходах?
  2. Добрый день. Ищу работу в качестве разработчика проектов ПЛИС (в идеале) для радилокационных, SDR- или телеком-приложений. Имею 8-летний опыт работы в сфере радиолокации (2-, 3-х координатные РЛС/РЛСУ корабельного базирования в диапазонах S-, X-, Ка; самолетные РЛСУ). Разрабатывал модули (ЦОС, управления, сопряжения) на МК и ПЛИС; приборы; работал на системном уровне. В части ПЛИС, в основном, занимался задачами ЦОС, управления ВЧ-блоками, сопряжением. FPGA: Работал реимущественно с Intel/Altera: Cyclone IV E, Arria II GX, Startix IV GX. Имею ограниченный опыт работы с Xilinx в ISE 14.1 (Spartan 6), ActiveHDL + PlanAhead (Virtex 6 LX). HDL: Verilog/SystemVerilog (пишу); VHDL (читаю). Симулятор: ModelSim. Интерфейсы IP: Avalon-MM/ST, Avalon Verification Suite (BFM). Soft-CPU: Nios II (без MMU и внешней памяти). Опыт работы с синтезом RTL из Matlab (DSPBuilder) для трактов ЦОС РЛС в режиме Super-sample. Имеется начальный опыт работы с трансиверами до 6,25 Gbps и PCIe HIP Gen 1 на Arria II GX. Опыт разработки интерфейсов управления модулями в Quartus SystemConsole (с помощью Dashboard). MATLAB: Разработка BSP для обеспечения доступа разработчиков алгоритмов к аппаратной части модулей ЦОС (захват сигнала, управление режимами) с помощью Instrument Control Toolbox (через TCP/UDP), FPGA Verification Toolbox (FPGA Data Capture, aximaster). Управление измерительными приборами (генераторы СВЧ-сигналов, источники питания, электронные нагрузки) через SCPI/LAN для автоматизации измерений ОС: Опытный пользователь Linux (основной дистрибутив с 2006 г. – Gentoo). Опыт работы в QNX. Опыт программирования в среде Linux на C (file I/O, сокеты, pthread, GTK+, libftdi, примитивные драйверы PCI). Опыт работы в Cygwin. Контроль версий, планирование: SVN, Redmine, Microsoft Project Микроконтроллеры: AVR, ARM M0-M4 (STM32F4, Миландр). GNU Toolchain (AVR, ARM), OpenOCD. САПР ПП: PCAD-2006, Altium Designer Измерительное оборудование: широкополосные осциллографы (до 2,5 ГГц), в т.ч. с активными дифпробниками, логические анализаторы, активные нагрузки, СВЧ КИП Rohde&Schwarz, Agilent/Keysight, Anritsu (анализаторы спектра, генераторы, мощемеры, VNA). Резюме: https://hh.ru/resume/3594972dff062310550039ed1f726839505865 Предпочтительный способ связи: andrey.v.novikov гав ya.ru.
  3. Добрый день. А можете .qsys выложить? Никогда с таким поведением не сталкивался. Ради интереса собрал count_binary из туториала на 17.1 с PLL внутри Qsys (я обычно ставлю его в toplevel) - все работает нормально.
  4. Синтезатор имитирует tristate buf с помощью обычного мультиплексора с условием. Коллега имел в виду, что конкретный мультиплексор на tristate buf описать проще и нагляднее.
  5. А Вы хотите реализовать какую-то логику или исследовать поведение симулятора? Если первое, то не очень понятно, какого результата Вы хотите добиться. Похоже на попытку описать асинхронный мультивибратор. ( :
  6. Потратил несколько часов в попытках установить Modelsim 10.2c SE в современном 64-битном Linux (multilib). Прилагаю решение на случай, если кто-то захочет поставить относительно старую версию Modelsim SE. При запуске install.linux, установщик, написанный на Java падает с такой ошибкой: # # A fatal error has been detected by the Java Runtime Environment: # # SIGSEGV (0xb) at pc=0xf7eee475, pid=13257, tid=4144433984 # # JRE version: 6.0_21-b06 # Java VM: Java HotSpot(TM) Server VM (17.0-b16 mixed mode linux-x86 ) # Problematic frame: # C [libpthread.so.0+0xd475] pthread_cond_wait+0x95 # # If you would like to submit a bug report, please visit: # http://java.sun.com/webapps/bugreport/crash.jsp # Установщик идет со своей JRE, причем сами jar-ы на 7.x/8.x-версиях JRE уже не запускаются. Пляски с бубном (исследование пожеланий JRE с помощью ldd и strace, подсовывание старых версий библиотек через LD_PRELOAD) быстрого результата не принесли, в интернетах сведений о такой ошибки также не нашлось. В итоге было найдено следующее решение: заменяем 32-битную JRE, идущую в комплекте установщика, на 64-битную версию. 1. Ищем и скачиваем jre-6u45-linux-x64.bin. 2. Распаковываем: chmod +x jre-6u45-linux-x64.bin ./jre-6u45-linux-x64.bin 3. Копируем содержимое только что распакованной папки jre1.6.0_45 в папку ~/mgc/install.ixl/JRE (ее нам создал install.linux). 4. Запускаем установщик вручную: ~/mgc/install.ixl/mgc_install 5. Подсказываем установщику путь к modelsim-base.mis и другим .mis-файлам. Остальные телодвижения со старыми версиями 32-битных библиотек для запуска самого vsim остаются в силе.
  7. Можно проверить: 1. Power sequencing / ramp-up между двумя платами. 2. Номинал VCCPGM - у всех ли микросхем в JTAG-цепочке и на разъеме для программатора он одинаковый? 3. Сравнить шум/наводки на TDI/TDO между рабочей и нерабочей платой. Какая схема конфигурации у Arria 10?
  8. Тогда м.б. у Вас ModelSim-Intel FPGA Edition, которая поставилась вместе с Quartus? Тогда все библиотеки уже в него добавлены (см. вкладку Libraries в главном окне Modelsim). Чтобы запустить симуляцию проекта с LPM-функциями, подключите библиотеку altera_mf_ver: Simulate > Start Simulation > Вкладка Libraries > Add.
  9. 1. В Quartus II Handbook Volume 1: Design and Synthesis есть раздел Inferring Memory Functions from HDL Code, где подробно описывается, как нужно описать память желаемого типа, чтобы Quartus ее обнаружил, в т.ч. случаи, когда он не может расположить ее на BRAM. 2. У "почему не получается" факторов много. Приведите код или проект, чтобы кто-то мог посмотреть и подсказать. Может, у Вас Stratix V, где нет M9K. ( : 3. Добавить библиотеки мегафункций и моделей аппаратных блоков в Modelsim очень просто: В Quartus заходим Tools > Launch Simulation Library Compiler Выбираем Modelsim и папку с vsim.exe (...\modeltech64_10.2c\win64) Выбираем семейства (они нужны, если соберетесь симулировать gate-level или работать с трансиверами и др. аппаратными блоками; для ALTPLL они не нужны) Выбираем Verilog Выбираем Output directory Жмем Start Compilation После окончания компиляции в выбранной Output directory будет лежать modelsim.ini. Нужно скопировать строчки с библиотеками (altera_ver и другие) в секцию [Library] файлов ...\modeltech64_10.2c\modeltech.ini и в файл проекта (.mpf). В последующем, библиотеки Альтеры будут присутствовать в каждом новом проекте, т.к. каждый раз при создании проекта они копируются из ...\modeltech64_10.2c\modeltech.ini. 4. Синтез Quartus поддерживает инициализацию памяти с помощью $readmemb и $readmemh.
  10. Последняя версия Quartus II, где поддерживается FLEX/ACEX - 9.0 SP2. https://www.intel.com/content/dam/www/programmable/us/en/pdfs/literature/rn/rn_qts_90sp2_dev_support.pdf:
  11. Опять я пришел только к концу обсуждения. ( : Вставлю пару вещей: 1. Используем AD9739 с выходом как на Figure 65 с TC1-33-75G+. Полет нормальный. 2. Коли есть (относительно) широкополосный осциллограф, лучше смотреть сигнал не через щуп, а напрямую - кабелем SMA-BNC, переключив осциллограф на 50-омный вход. 2.1. Нужен делитель ("тройник") или аттенюатор? 3. Функция FFT в осциллографах в случае ВЧ-измерений работает больше как "показометр" из-за низкого разрешения (см. https://electronics.stackexchange.com/questions/50581/oscilloscope-with-fft-or-a-spectrum-analyzer/284801#284801) - можно пропустить важные частотные составляющие, да и шум не оценить. Если есть доступ к анализатору спектра, лучше пользоваться им. А почему эта тема в ветке SoC?
  12. Насколько я помню, для серии ХС была фирменная утилита, которая в битстриме меняла местами выводы, т.к. была разница между разваркой IOB (блоков ввода-вывода) на ноги штатного QFP и металлокерамике в отечественной версии.
  13. Если речь именно про доступ к внутренним wire/reg модулей дизайна из тестбенча, то, как заметил misyachniy, нет ничего лучше обращения к ним прямо из тестбенча вглубь иерархии, как указано выше. Таким образом к сигналам можно обращаться из блоков always, initial, тасков и системных функций в тестбенче.
  14. StewartLittle уже ответил по существу вопроса, поэтому осталось уточнить - что хотите симулировать? Если простой RTL плюс минимальные IP-ядра (PLL, LPM), то поддержка конкретного семейства в Modelsim и вовсе не нужна, т.к. модели поведенческие. Если это воронежские ПЛИС, то симулировать, насколько я понимаю, будете простой RTL. Синтез, кстати, должен быть под какой-то старый Stratix (если я правильно помню тамошний workflow). Домой не придут (случаев пока не наблюдалось), а в контору могут как минимум написать письмо из серии "не купите лицензию - передадим куда следует" (было такое с AWR Microwave Office). Если инициатива лично Ваша - могут быть последствия. От большинства проблем спасает доступ в интернет через прокси с паролем.
  15. Судя по объему, видимо, собираете на серверном железе. Если оставить за скобками партиции, то большинство алгоритмов Fitter-а однопоточные, поэтому тут важна производительность на одно ядро, а не число ядер. Поэтому для работы в Quartus более подходит "игровой" ПК с быстрым процессором на высокой частоте, нежели сервер с большим числом более медленных ядер. Это актуально для сред Xilinx, Altera, а также для симуляции в Modelsim. Quartus Handbook: Reducing Compilation Time (https://www.intel.cn/content/dam/altera-www/global/zh_CN/pdfs/literature/hb/qts/qts_qii52022.pdf): https://forums.xilinx.com/t5/Simulation-and-Verification/Benchmark-gt-which-CPU-i7-or-Xeon/td-p/359461 Для сравнения можно взять бенчмарки процессоров по одному потоку: https://www.cpubenchmark.net/singleThread.html При сравнении можно оценивать Clock Speed в режиме "Turbo".