Jump to content

    

hdl_student

Свой
  • Content Count

    144
  • Joined

  • Last visited

Community Reputation

0 Обычный

About hdl_student

  • Rank
    Частый гость
  • Birthday 09/13/1987

Информация

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

Recent Profile Visitors

2932 profile views
  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".