В этой обзорной статье я постараюсь рассказать какие действия выполняются тем или иным пунктом меню САПР Quartus Prime. Я сделаю акцент только на самых часто используемых действиях, так что это будет не полное руководство, а скрорее краткий справочник. Тем не менее, такое, даже поверхностное знакомство поможет лучше ориентироваться в программе начинающим разработчикам. Некоторые пункты меню САПР Quartus являются совсем тривиальными, такими же как и в других программах вроде офисных пакетов, а некоторые очень специфичными. В целом среда Quartus не является очень сложной для освоения.
1. Меню File.
Большинство пунктов меню здесь - совершенно обычные:
- New - создать новый файл. Можно создавать файлы для описания логики работы проекта, например, схемы (Block Diagram/Schematic File) или файлы Verilog / System Verilog , VHDL, файлы скриптов TCL. Так же здесь можно создать файлы инициализации встроенной памяти FPGA или файлы для симуляции VWF (Simulation Waveform File).
- Open - открыть существующий файл.
- Close - закрыть текущий открытый файл.
- Save - сохранить текущий открытый файл.
- Save As... - сохранить текущий открытый файл под новым именем.
- Save All - сохранить все открытые файлы.
- Recent Files - открыть файл из списка недавно использованных.
- Recent Projects - открыть проект из тех, которые недавно открывали.
- Exit - выход из программы САПР.
Чуть более специфичные пункты меню - это манипуляции с проектами:
- New Project Wizard... - запустить мастер-диалог создания нового FPGA проекта.
- Open Project... - открыть существующий проект.
- Save Project - сохранить проект.
- Close Project - закрыть текущий проект.
Надо сказать, что проект для среды Quartus - это обычный текстовый файл, который имеет расширение qpf (Quartus Project File). В этом файле записано всего несколько строк о том, какие ревизии (например, варианты одного и того же проекта для разных FPGA чипов) имеет проект. Каждая ревизия проекта ссылается на файл настроек c расширением qsf (Quartus Settings File). Уже в файле qsf указаны все настройки проекта: какие файлы включены в проект, какие выводы каким сигналам назначены и прочее многое другое.
В этом выпадающем меню File самые специфичные команды - это "Create / Update" и "Convert Programming Files...":
- Create / Update => Create HDL Design File from Current File - позволяет из файла схемы сделать файл Verilog или VHDL. Конвертация происходит довольно коряво, но это лучше, чем никак. Такая конвертация нужна, когда в проекте используются схемы, но однажды вы решили, что проект нужно просимулировать скажем в ModelSim. И тут оказывается, что никакой нормальный симулятор не умеет работать со схемами. Единственный способ - это конвертировать их в текстовые файлы Verilog/ System Verilog / VHDL и уже после этого симулировать.
- Create / Update => Create Symbol Files for Current File - позволяет из текстового модуля на Verilog / VHDL создать файл компонента, который можно вставить в схему. И тут кстати есть нюанс. При смешанном проектировании, когда используются и схемы и текстовые описания, например, на Verilog, очень часто можно столкнуться с ситуацией, когда текстовый файл на Verilog изменил, изменил список входов или выходов модуля, но забыл, что компонент установлен в схему! А ведь после изменения Verilog файла еще нужно пересоздать компонент для схемы, чтобы они соответствовали друг другу!
Пункт меню Create / Update еще много чего позволяет создавать, но описанные выше действия пожалуй самые распространенные.
2. Меню Edit.
Тут ничего нового, самое скучное меню. Такое же, как и в других программах, хоть даже в обычном текстовом редакторе:
- Undo - отменить последнее действие,
- Redo - повторить последнее действие,
- Cut/Copy/Paste/Delete/Select All - вырезать, копировать, вставить, удалить, выделить все..
- Find - найти строку текста, Find Next - найти далее в документе строку, которую только что искал, Find Previous - искать назад по документу. Искать можно не только в текстовых файлах, но и в схемах, по именам компонентов, названиям проводов, шин и так далее.
3. Меню View.
Тут интереснее, так как это меню позволяет показывать или скрывать некоторые специфичные окна в среде Quartus Prime. Часто бывает, что какое-то окно случайно закрыл, а потом не знаешь, как его опять показать. Вот они все здесь. Самые часто используемые окна:
- Project Navigator - окно позволяет увидеть всю структуру проекта разными способами. Можно увидеть список файлов проекта, или список модулей или в виде дерева модулей, какие модули включают в себя другие модули и так далее.
- Messages - показывает сообщения САПР. Особенно важно читать сообщения об ошибках компиляции проекта или сообщения от программатора во время загрузки FPGA готовым образом системы.
- Status - в этом окне показывается прогресс компиляции проекта FPGA по этапам: анализ и синтез, компоновщик, сборщик, временной анализатор.
- IP Catalog - это окно позволяет создать новый компонент из библиотечных компонентов квартуса и при этом задать нужные вам параметры. Например, отсюда можно создавать модули PLL с нужной частотой выходов, FIFO, ROM, RAM, DUAL-PORT-RAM с нужными вам параметрами, разрядностью данных, с заданными управляющими сигналами.
4. Меню Project.
Здесь довольно много всего. Я расскажу только про самые основные команды.
- Add Current File to Project. Если вы работаете над проектом и открыли новый файл для редактирования, то добавить его в проект можно с помощью этого пункта меню. Если это файл дизайна, например Verilog или VHDL файл, то он теперь будет компилироваться вместе с проектом. То же самое можно проделать из следующего пункта меню:
- Add/Remove Files in Project - открывает диалоговое окно, в котором можно добавлять в проект или удалять из проекта отдельные файлы. Обычно это файлы Verilog, VHDL, схемы SCH, BDF файлы. Могут быть и другие типы файлов. Если вы создаете новый компонент из IP Catalog, то Quartus генерирует сразу несколько файлов разного типа для вашего варианта компонента. Там может быть файл QIP (Quartus IP) - его так же нужно включать в список файлов проекта.
- Revisions.. - интересная команда, открывается диалоговое окно, которое позволяет создавать несколько ревизий одного проекта. Например, проект можно готовить для работы внутри разных FPGA, в разных корпусах или разный объем ПЛИС.
- Copy Project - копировать проект в другую папку. Ни разу не пользовался этой командой. Зачем? Ведь можно папки копировать просто из проводника WIndows..
- Clean Project - очистить проект. Это действие довольно полезное. Удаляет все сгенерированные в процессе компиляции файлы. Если вам нужно передать кому-то вам проект, скажем на флешке, то перед тем как копировать папку с проектом, сделайте очистку - удалите все скомпилированные, сгенерированные файлы. Так и место сэкономите.
- Archive Project / Restore Archived project.. - архивировать текущий проект и восстановить проект из архива.
- Upgrade IP Components - этот пункт меню полезен, когда открываете проект, когда-то созданный в другой более ранней версии квартуса. Тогда все компоненты, созданные через IP Catalog могут нуждаться в обновлении. Ну не заново же их создавать? Просто сделать апдейт им нужно.
- Organize Quartus Prime Settings File - отсортировать файл настроек проекта. Не очень полезная функция. Все настройки проекта хранятся в файле с расширением QSF. Его можно прямо в любом редакторе исправлять, но это редко нужно. Чтобы настройки отсортировать по типам/группам настроек используйте этот пункт меню. Хотя зачем сортировать? Для красоты разве что..
- Set as Top-level Entity - вот это очень важный и полезный пункт меню. В каждом FPGA проекте есть модуль самого верхнего уровня, который уже может включать в себя другие модули. С помощью этого пункта меню можно указать квартусу, что текущий редактируемый файл, пусть это Verilog файл, или файл схемы будет модулем самого верхнего уровня.
5. Меню Assignments.
Очень важный пункт меню. Именно отсюда делаются основные настройки проекта.
- Device.. здесь делается выбор конкретного типа микросхемы FPGA. Ведь микросхемы бывают разные и по типу корпуса, по количеству выводов, по объему логики, по быстродействию. Перед тем, как компилировать проект ПЛИС под конкретную плату обязательно нужно выбрать тип микросхемы. Иначе вы не сможете загрузить проект в FPGA. Это так важно, что покажу, какое диалоговое окно появляется, когда выбираете пункт меню Device:
В этом диалоге довольно удобно показаны ресурсы микросхемы FPGA по объему памяти, количесву логики, умножителей, PLL. При разработке нового проекта для новой платы можно предусмотреть возможность размещения на одной и той же печатной плате разных, но совместимых микросхем с помощью кнопки Migration Devices.. Особое внимание так же рекомендую уделить следующему диалогу, который открывается по нажатию кнопки Device and Pin Options. Там делаются назначения для неиспользуемых в проекте выводов. Я рекомендую ставить Unused Pins в состояние Tristate Input (Хотя альтера рекомендует Output Zero). Здесь не буду расписывать подробно, я про эту опцию уже как-то писал.
- Пункт мею Settings.. здесь делается много важных настроект проекта помимо выбора типа ПЛИС.
Здесь очень много важных настроек, но к счастью почти ничего здесь менять обычно не нужно, ну только в некоторых отдельных случаях. Здесь, например, можно посмотреть изменить список файлов проекта, но это же самое действие можно сделать и из меню Project => Add / Remove Files in Project. Здесь же в настройках есть опции влияющие на компилятор, но если вы только начинаете изучать технологию FPGA, то лучше эти настройки не трогать, они и по умолчанию хороши. В этом диалоге можно задавать макросы Verilog / VHDL для условной компиляции проекта - вот это уже важно. Кроме того, здесь в диалоге можно включать и отключать встроенный отладчик SignalTap.
- Assignment Editor. Позволяет назначать отдельные сигналы модуля верхнего уровня конкретным выводам микросхемы FPGA. Это чрезвычайно важно.
На рисунке выше показано, как выглядит документ с назначениями сигналов. Тип назначения Location определяет местоположение сигнала на корпусе микросхемы. Но есть и другие типы назначений, например, можно сделать входной сигнал чуть подтянутым к питанию: Weak Pull-Up Resistor.
В меню Assignments есть и другие подпункты меню, но самые важные я кратко привел выше. Остальные пункты не так важны или даже мало применимы.
6. Меню Processing.
Самая главная команда в меню Processing - это Start Compilation.. В общем случае обычно больше ничего и не надо. Однако, бывают случаи, когда требуется выполнить не полную компиляцию, а только, к примеру, Start Analysis & Synthesis. Такое иногда требуется при отладке проекта с помощью Signal Tap. Этот инструмент помогает подсматривать состояния отдельных сигналов проекта и просматривать их изменения во времени. Если изменить какой-то файл проекта, добавив в него новые регистры, то бывает не можешь найти эти регистры в списке сигналов доступных отладчику Signal Tap. Требуется перекомпиляция, а это иногда очень долго. Проще выполнить только Analysis & Synthesis, а затем найти новый сигнал, добавить его в Signal Tap и уже потом делать полную перекомпиляцию проекта.
- Update Memory Initialization FIle - интересная и важная команда. Если проект использует встроенную память ПЛИС в качестве ROM / ПЗУ (Read Only Memory / Постоянного Запоминающего Устройства), то бывает нужно обновить только содержимое этого блока памяти. Что это может быть? Ну, например, это память использующаяся для хранения программы процессора. Процессор для FPGA разработали, ему нужно стартовать с некоторой программы-загрузчика, которую пишем на языке ассемблера или С. Программу написали, скомпилировали, теперь ее нужно поместить в ROM в FPGA. Конечно, полная компиляция все это сделает, но это очень долго. А ведь можно просто использовать вот этот пункт меню и тогда полная перекомпиляция не потребуется!
- Compilation Report - открывает для просмотра документ - отчет о последней компиляции проекта. Там в отчете будет видно сколько проект занял ресурсов, можно посмотреть сообщения каждого этапа компиляции и отчет временного анализатора о наиболие критических путях сигналов.
- Power Analizer Tool - позволяет рассчитать и увидеть отчет о предполагаемом энергопотреблении микросхемы FPGA, когда в нее будет загружен разрабатываемый вами проект.
- SNN Analizer Tool - позволяет анализировать так называемые шумы переключения, Simultaneous switching noise (SSN). Это очень специфический инструмент и бывает нужен только в очень высокоскоростных проектах в ПЛИС большой емкости.
- Receive Compilation Status Notifications - возможность получать уведомления о процессе компиляции по электронной почте. Никогда этим сам не пользовался, так как проекты были не слишком емкими. Самый долгий проект, в котором я участвовал, компилировался 3 часа. Можно просто подождать. Время компиляции зависит от сложности проекта и емкости ПЛИС.
7. Меню Tools.
В этом меню очень много специфичных команд. Кратко опишу только те, которыми сам часто пользуюсь.
- Timing Analizer - позволяет задавать проекту временные ограничения (timing constraints).
- Netlist Viewers - инструмент позволяет увидеть "полную схему" скомпилированного проекта. Это часто бывает полезно, чтобы понять, что получается из Verilog / VHDL кода после оптимизации компилятором.
- Chip Planner - позволяет рассмотреть распределение логики проекта по ресурсам внутри чипа.
- Signal Tap Logic Analizer - инструмент позволяет смотреть внутреннее состояние избранных сигналов проекта во время работы проекта.
- Programmer - инструмент позволяет загрузить скопилированный образ проекта в ПЛИС через программатор UsbBlaster, MBFTDI или какой-то другой.
- IP Catalog - показывает список библиотечных компонентов: PLL, FIFO, RAM, Dual-Port RAM, ROM, Shift Reg, Filters и прочие, из которых можно создавать свои вариации, задавая компонентам требуемые параметры.
Поскольку каждый из этих пунктов важен и сложен, то хорошо было бы расписать их подробнее. Возможно я сделаю это в отдельных статьях.
8. Меню Help.
Это меню довольно заурядное, но хотел бы обратить внимание на пункты:
- PDF Tutorials => PDF Tutorial for VHDL users
- FDP Tutorials => PDF Tutorial for Verilog HDL users
Это ссылки на обучающие материалы для пользователей VHDL и Verilog HDL. Материалы на английском языке, но это и не плохо на самом деле. Многие переводные материалы грешат неточностями и корявым переводом. Ну а разработчику для ПЛИС знать английский, конечно, желательно.
Пожалуй на этом краткий обзор пунктов меню САПР Intel Quartus Prime можно завершить.
Подробнее...