ЛР3 > Компиляция проекта в среде Quartus II. Анализ результатов компиляции

Цель: Использование инструментов Compilation Report, RTL Viewer, Technology Map Viewer и Chip Planner для анализа результатов компиляции проекта.

1. Порядок выполнения работы.

Шаг 1: Скомпилируйте проект

  1. Для компиляции проекта выберите команду Start Compilation в меню Processing или нажмите кнопку , расположенную на рабочей панели. После завершения процесса компиляции откроется диалоговое окно.
  2. Нажмите OK. 
 

 Лабораторные работы: Основы Quartus II

 1. Знакомство со средой проектирования Quartus II. Создание проекта
 2. Моделирование проекта в среде Quartus II
 3. Компиляция проекта в среде Quartus II. Анализ результатов компиляции 
 4. Версии проекта в Quartus II. Создание назначений
 5. Назначение контактов ввода/вывода в Quartus II
 6. Временной анализ проекта в Quartus II
 7. Специализированные модули. Реализация КИХ-фильтра в Quartus II 

Шаг 2: Просмотрите информацию в окне отчета компилятора (Compilation Report)

Отчет компилятора предоставляет полную информацию о результатах обработки проекта. С его помощью вы определяет, как компилятор обрабатывал ваш проект и какие получены результаты. Каждая отдельная утилита, входящая в состав компилятора, обновляет информацию в своей директории.
Окно Compilation
Report открывается, когда запущено одно из приложений, входящих в состав компилятора. По окончанию работы компилятора открывается окно Flow Summary.

1. Из раздела Flow Summary окна Compilation Report, выпишите полученные значения Total logic elements, total memory bits, embedded multiplier 9-bit elements и total pins в Таблицу 1.

Анализ результатов показывает, что для реализации проекта были задействованы по большей части специализированные ресурсы (т.е. встроенная память, встроенный умножитель) и дополнительная логика.

2. Раскройте папку Fitter в окне Compilation Report. Выберите раздел Resource Section. Из таблицы Resource Utilization by Entity, выпишите данные об используемых ресурсах для реализации блоков mult и ram.

3. Из раздела Control Signals выпишите основные управляющие сигналы и их коэффициент разветвления.

Хотя сигнал clock в данном проекте поступает более чем на три регистра, коэффициент разветвления, равный 3 говорит о количестве задействованных архитектурных блоков:1 блок памяти, 1 блок умножителя, 1 логическая ячейка.

В дальнейшем вы ознакомитесь с некоторыми дополнительными способами анализа вашего проекта.


Шаг 3: Проанализируйте логическую реализацию проекта с помощью RTL Viewer

Утилита RTL Viewer позволяет представить логическую реализацию проекта в графическом виде. Это очень полезный инструмент для анализа результатов синтеза HDL проектов.

1. В меню Tools вызовите утилиту RTL Viewer (в списке Netlist Viewers).

Вы должны увидеть схему, представленную выше. Это графическое отображение логической реализации проекта. Здесь присутствуют контакты ввода/вывода, блоки mult и ram а также выходные регистры. Обратите внимание, что выходной регистр является внешним элементом по отношению к блоку памяти в данном проекте.

2. Выделите блок ram, нажмите правую клавишу мыши и в выпадающем контекстном меню выберите команду Ungroup Selected Nodes.

Теперь блок памяти отображается со всеми входами и выходами. Это очень полезно, когда вы хотите рассмотреть, каким образом соединяются отдельные сигналы. Эта операция доступна для входящих блоков и контактов ввода/вывода.

3. Повторно выделите блок ram. Нажмите правую клавишу мыши и выберите команду Group Related Nodes.

Это позволяет вернуться к предыдущему изображению.

4. Дважды нажмите левую клавишу мышки на блоке ram.

Сейчас вы перешли на более низкий уровень иерархии – к блоку ram. В результате вы видите изображение, представленное выше. Это говорит о том, что для реализации блока ram используется одна мегафункция, которая называется altsyncram. Таким способом вы можете перейти к самому нижнему уровню иерархии. Мы рассмотрим другой способ перехода к нижнему уровню иерархии.

5. Дважды нажмите левую кнопку мышки в пустом месте графического окна.

Таким образом, вы возвращаетесь к верхнему уровню иерархии проекта. Возможно, вам придется повторить это действие несколько раз.

6. Повторно выделите блок ram. Нажмите правую клавишу мыши и выберите команду Display Content.

Команда Display Content позволяет отобразить нижний уровень иерархии в пределах данного уровня. Зеленый блок altsyncram, выделенный красным контуром, показывает границу иерархических уровней.

7. Выделите блок altsyncram, нажмите правую кнопку мыши и выберите команду Display Content.

Это позволит показать еще более низкий уровень иерархии. Отобразится внутренняя структура модуля altsyncram (altsyncram_coq1).

8. Выделите модуль altsyncram_coq1, нажмите правую клавишу мыши и выберите команду Display Content. Если необходимо, измените масштаб изображения (с помощью правой клавиши мыши).

Переход к нижнему уровню иерархии для блока altsyncram_coq1 позволяет увидеть, что он состоит из 16 функциональных однобитных элементов RAM. Напомним, что это ФУНКЦИОНАЛЬНОЕ представление проекта, а не его практическая реализация в микросхеме Cyclone II.

Обратите внимание, что окно иерархии проекта Hierarchy List утилиты RTL Viewer тоже отражает иерархическую структуру блока ram. Для каждого уровня иерархии дополнительно отображаются имена контактов и внутренних цепей.

Шаг 4: Проверка физической реализации блока ram с помощью Technology Map Viewer

Утилита Technology Map Viewer
позволяет вам просматривать фактическую реализацию проекта и используемые ресурсы FPGA/CPLD. Данная
утилита используется в качестве вспомогательного инструмента в процессе отладки проекта для анализа изменений в используемых ресурсах (изменение настроек проекта).

1. В окне RTL Viewer перейдите на иерархический уровень, отображающий блок ram (модуль altsyncram_coq1). Выделите его. Нажмите правую клавишу мыши и выберите в контекстном меню команду Locate -> Locate in Technology Map Viewer.

Откроется окно Technology Map Viewer с изображением модуля altsyncram_coq1.

2. Перейдите на нижний уровень иерархии для модуля altsyncram_coq1, используя любой из предложенных ранее способов.

В отличие от отображаемых в RTL Viewer 16 однобитных функциональных блоков памяти, Technology Map Viewer отображает ФАКТИЧЕСКИ используемый ресурс микросхемы – единственный блок встроенной памяти (ram_block1a0).

3. Нажмите дважды левую клавишу мышки на блоке ram_block1a0 для подробного анализа способа реализации блока памяти.

На этом изображении видно, что все входные сигналы блока RAM поступают на встроенные регистры так же, как и все выходные сигналы. И выходные? Но выходные регистры отображались за пределами блока памяти в окне RTL Viewer? Трассировщик переместил эти регистры в блок памяти, чтобы улучшить его производительность и снизить количество используемых логических ресурсов в проекте. Такой способ оптимизации называется упаковкой регистров, и трассировщик использует его для уменьшения логических ресурсов микросхемы. В данном случае трассировщик выдает сообщение “Extra Info” (дополнительная информация) в окне сообщений Message(возможно, оно располагается в таблице Suppressed), которое указывает на то, что используется такая оптимизация.

Это можно проверить позже с помощью редактора ресурсов Resource Property Editor.

4. Нажмите кнопку на панели инструментов, чтобы вернутся к предыдущему изображению блока оперативной памяти RAM.

Шаг 5: Проверьте связи блока ram с помощью редактора топологии кристалла Chip Planner.

Редактор Chip Planner предоставляет возможность просмотра физического размещения логических блоков вашего проекта на кристалле. Это очень полезно для понимания особенностей реализации проекта, а также архитектурных особенностей ПЛИС FPGA и CPLD. Хотя редактор Chip Planner предназначен для ручного назначения логических ресурсов, в настоящий момент мы его используем лишь для оценки полученных результатов.

1. В окне Technology Map Viewer, выделите блок RAM (ram_block1a0). Нажмите правую клавишу мыши и выберите команду Locate -> Locate in Chip Planner (Floorplan & Chip Editor) в контекстном меню.

2. В открывшемся окне редактора топологии кристалла Chip Planner выберите кнопку (в панели инструментов) и с помощью правой клавиши мыши уменьшите масштаб изображения в несколько раз.

Ресурсы кристалла в окне Chip Planner

Размещение блока RAM

В окне редактора вы должны видеть блок ram (выделенный синим цветом) и его размещение в микросхеме Cyclone II. Остальные выделенные области в окне Chip Planner – это ресурсы, используемые для размещения остальных логических блоков проекта. Так как мы не делали никаких назначений относительно размещения логических блоков, трассировщик самостоятельно определял необходимые ресурсы. Позже мы изменим это.

3. Если блок памяти выделен в окне Chip Planner, нажмите кнопку (Generate Fan-In Connections) на панели инструментов (отображение входных связей для выделенного блока).

Сейчас в окне Chip Planner отображаются те логические ресурсы микросхемы, от которых поступают входные сигналы в блок ram (блоки ввода/вывода и умножитель) и задержки распространения сигналов по этим связям.

4. Выделите снова блок ram в Chip Planner (возможно вам придется уменьшить масштаб изображения), и нажмите кнопку (Generate Fan-Out Connections) на панели инструментов.

Сейчас в окне Chip Planner одновременно отображаются входные и выходные связи выделенного блока. Выходные связи показаны синим цветом.

5. Отмените команды fan-in/fan-out, нажав левую кнопку мышки на любом невыделенном блоке, а затем нажмите кнопку (Clear Unselected Connections/Paths) на панели инструментов.

6. Закройте окна RTL Viewer, Technology Map Viewer, и Chip Planner.