Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 5. Основы синтеза
Данная статья продолжает описание маршрута проектирования FPGA Advantage, начатое в «КиТ» № 7`2005. В ней речь пойдет о синтезе ранее созданного и отлаженного проекта bcdregister. Синтез будет выполнен в программе Precision, являющейся частью пакета FPGA Advantage.
Все статьи цикла:
- Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 1.
- Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 2
- Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 3
- Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 4. Моделирование в среде FPGA Advantage
- Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 5. Основы синтеза
- Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 6. Подготовка к тестированию
- Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 7. Расширенная отладка
- Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 8. Расширенные возможности проектирования
- Обзор маршрута проектирования ПЛИС FPGA Advantage компании Mentor Graphics. Часть 9. Расширенные возможности синтеза: ограничения синтеза
В общем случае процесс синтеза состоит из двух основных и одного дополнительного этапов (рис. 1).
Этап 1. Компиляция
Компиляция — это трансляция пригодного к синтезу HDL-описания на уровне RTL в технологически независимый нет-лист, то есть в нет-лист, примитивами которого являются общие для всех ПЛИС элементы. Таким образом, каждый примитив отражает только функциональное назначение, например логическое «и» или логическое «или», но не отражает способ физической реализации данной функции. Например, логическое «и» физически может быть реализовано как при помощи соответствующей логики (логического умножения), так и при помощи так называемого функционального генератора. На этом этапе используются различные методы оптимизации. Например: формирование и распространение констант (constant folding and propagation), развертка циклов (loop unrolling), удаление неиспользуемого кода (dead code removal), минимизация (bit minimization).
Этап 2. Синтез
Синтез — это оптимизация и размещение (mapping) полученного на первом этапе нетлиста общего вида в технологические ячейки (technology gates) с использованием, где это необходимо, специальных возможностей выбранной пользователем архитектуры. Целью оптимизации может быть или минимальный объем используемых элементов (optimization for area), или максимальная производительность проекта (optimization for speed), или и то и другое одновременно.
Этап 3. (дополнительный)
В случае если временные ограничения не были выдержаны, производится дополнительная временная оптимизация.
Полученный в результате синтеза EDIF нетлист передается средствам размещения и трассировки. Эти средства поставляются поставщиками ПЛИС, и более подробно с процессом размещения и трассировки можно ознакомиться, изучив поставляемую с этими средствами документацию.
При работе с Precision отдельно от среды HDL Designer процесс синтеза выглядит следующим образом.
Подготовка проекта в обозревателе проекта (Design Explorer), то есть открытие всех нужных файлов HDL кода, указание файла, который будет являться верхним уровнем, установка дополнительных настроек в меню Tools > Set Options… Добавление HDL-файлов к проекту осуществляется либо нажатием кнопки Add Input Files на панели проекта (включается через View > Design Bar), либо двойным щелчком на папке Input Files, содержащей добавленные ранее файлы (рис. 2).
Выбор технологии. Выполняется при помощи кнопки Setup Design на панели Status Bar (рис. 2).
Компиляция. Выполняется при помощи кнопки Compile на панели Status Bar (рис. 2).
Наложение временных ограничений. Выполняется либо путем подключения текстового файла ограничений в формате SDC или UCF к разделу Constraint Files (рис. 2), либо путем интерактивного задания ограничений для каждого элемента в дереве проекта (рис. 2). В последнем случае все заданные ограничения будут автоматически добавлены к текущему текстовому файлу ограничений в формате SDС. Это позволяет самостоятельно изучить формат файла ограничений SDC непосредственно в процессе работы над проектом.
Синтез. Выполняется при помощи кнопки Synthesize на панели Status Bar (рис. 2). На этом этапе автоматически выполняется и оптимизация проекта. Если не удается выдержать все заданные ранее ограничения, Precision пытается повторно оптимизировать проект, используя различные методы.
Просмотр полученных результатов. Все полученные в ходе синтеза данные (схемы, отчеты, протоколы и т. д.) доступны в разделе Output Files обозревателя проекта (рис. 2).
Отладка. В случае если отчеты Precision показывают, что какое-либо из временных ограничений выдержать не удалось, необходимо вернуться на один из предыдущих шагов проектирования. В простых случаях достаточно будет наложения дополнительных временных ограничений и выполнения повторного синтеза. В более сложных необходимо вернуться на этап проектирования и внести изменения в исходный проект.
Размещение и трассировка. Выполняется при помощи кнопки Place & Route на панели Status Bar. Эта кнопка находится в разделе, имя которого зависит от используемого средства размещения и трассировки. На рис. 2 показан случай, когда используется программа из пакета ISE от Xilinx. Все полученные в ходе размещения и трассировки данные также будут доступны в разделе Output Files. При размещении и трассировке формируется нет-лист проекта в формате edif. Дальнейшие манипуляции с полученным нет-листом — формирование двоичного файла для загрузки в ПЛИС и его загрузка — описаны в документации, предоставляемой поставщиками ПЛИС.
При работе в Precision совместно со средой создания проекта HDL Designer запуск и первоначальное конфигурирование Precision осуществляется либо через меню Tasks > Precision Sythesis, либо при помощи вложенного окна Tasks среды HDL Designer (рис. 3). Команда меню Tasks > Precision Sythesis > Run… или двойной щелчок на строке Precision Sythesis открывает окно Precision Sythesis Settings (рис. 3) в котором можно задать предварительные настройки синтеза. После нажатия клавиши Ok во вложенном окне Downstream программы HDL Designer появятся два файла, содержащие заданные в окне Precision Sythesis Settings настройки (рис. 4). Эти настройки представлены в виде TCL-команд, передаваемых системе Precision при запуске. Помимо файлов предварительного конфигурирования, в окне Downstream будут появляться файлы, создаваемые системой Precision в процессе синтеза. Таким образом, для того чтобы получить доступ к данным, полученным в результате проведенного ранее синтеза, не обязательно запускать Precision.
Входными данными для Precision могут быть следующие файлы: VHDL, Verilog, EDIF, XDB. XDB— это двоичный файл, в котором Precision хранит синтезированный проект. Это позволяет выполнять синтез проекта по частям, «собрав» его в единое целое на завершающей стадии. Такая возможность особенно актуальна для больших проектов, где синтез может занимать несколько часов, а в некоторых случаях и десятки часов.
Проект в Precision содержит так называемые «реализации» (Implementations) (рис. 2). Реализация напоминает вложенный проект. У каждой реализации есть собственный набор входных и выходных данных. В Precision можно переключаться между реализациями двойным щелчком в соответствующей строке. Такой подход позволяет экспериментировать, проводя синтез разными путями, а затем сравнивая полученные результаты.
В процессе синтеза Precision выполняет рассчет задержек. При этом задержки на элементах берутся из встроенной базы данных, а задержки на связях принимаются равными некому среднему консервативному числу. Посмотреть временной отчет можно с помощью команды меню Output Files > Timing Report. При выполнении расчета задержек в системе размещения и трассировки (например, в Xilinx ISE) реальные задержки могут оказаться меньше, чем прогнозировал Precision, так как он не использует информацию о пути прохождения сигнала в кристалле. Для работы с топологией необходимо использовать расширенную версию Precision под названием Precision Physical, которая позволяет импортировать проект из среды размещения и трассировки и работать напрямую сфизическими элементами проекта. В случае если Presicion не смог выдержать все заданные временные ограничения, существует возможность сгенерировать отчет только по тем цепям, где есть нарушения. Это можно сделать при помощи кнопки Report Timing Violations на панели Design Bar (вкладка Design Analysis). Для просмотра критического пути в графическом виде там же существует кнопка View Critical Path. При этом параллельно с графическим отображением будет сформирован текстовый файл с подробным описанием всего критического пути. Этот файл доступен в разделе Output Files, пункт Timing Report. Текстовые данные в этом файле являются интерактивными — после щелчка правой кнопкой мыши на имени элемента раскрывается меню, позволяющее выполнить различные действия, например, отобразить этот элемент на технологической схеме.
Самостоятельная работа
Если в распоряжении пользователя имеются сконфигурированные данные для лабораторных работ, о которых говорилось в первой статье, а также создана блок-диаграмма, описанная во второй статье, создана архитектура для блока BCDRegControl, описанная в третьей статье, и объект BCDRegister без ошибок промоделирован в ModelSim, как это было описано в четвертой статье, то можно самостоятельно синтезировать объект BCDRegister. Для этого надо во вложенном окне Design Explorer программы «HDL Designer» выделить объект BCDRegister и использовать меню Tasks > Precision Synthesis > Run Through Components.
В появившемся окне Precision Sythesis Settings задайте следующие настройки:
Technology: Xilinx > Spartan2
Device: 2s15cs144
Speed Grade: -6
Design Frequency: 50 Mhz
Add IO Pads: Включить
Output Formats: EDIF
Compile: включить
Synthesize: включить
Затем нажмите OK — в результате запустится Precision и будут выполнены компиляция и синтез.
Для просмотра откомпилированной схемы на уровне RTL в разделе Output Files нужно дважды щелкнуть на пункте RTL Schematic. В открывшейся схеме для получения дополнительной информации об интересующем объекте необходимо навести курсор мыши на этот объект. Через некоторое время появится дополнительное окно с информацией об объекте. Это произойдет, если включен так называемый «режим запросов» (рис. 2). Для просмотра содержимого иерархического блока необходимо либо дважды щелкнуть по нему левой кнопкой мыши (при этом будет выполнен переход вниз по иерархии), либо включить так называемый «режим просмотра иерархических объектов» (рис. 2). RTL-схема строится в строгом соответствии с исходным HDL-описанием. По умолчанию, если схема получается большой, она отображается не целиком, а постранично. Навигация по страницам осуществляется при помощи кнопок Previous Page и Next Page на панели Design Bar слева. Отключить или включить режим постраничного отображения схемы можно, щелкнув правой кнопкой мыши по схеме и выбрав Multi Page Schematics. Для просмотра исходного HDL-кода необходимо щелкнуть правой кнопкой мыши на интересующем объекте и выбрать Trace to HDL Source. Перейти на уровень выше в просматриваемой иерархической схеме можно либо выбрав соответствующий пункт в дереве схемы слева, либо щелкнув правой кнопкой мыши на схеме и выбрав Open Up, либо при помощи так называемого «штриха» (Stroke). Штрих — это «картинка», «нарисованная» на схеме при нажатой левой кнопке мыши. Для перехода на уровень выше надо на схеме нажать левую кнопку мыши и провести линию строго вверх. В процессе «рисования» линии будет появляться подсказка, отображающая название выполняемого действия. Для возврата в режим просмотра файлов проекта необходимо выбрать вкладку Design Center в нижней части окна Precision (рис. 2).
Для просмотра технологической схемы на вентильном уровне в разделе Output Files нужно дважды щелкнуть на пункте Technology Schematic. Схема на вентильном уровне может отличаться от RTL-схемы, так как в процессе синтеза выполнялась оптимизация при помощи одного или нескольких доступных системе Precision алгоритмов. Также как и при просмотре RTL-схемы, технологическая схема может быть отображена не целиком, а постранично. Текущая страница отображается в заголовке окна Precision. Precision предоставляет большие возможности по анализу полученной схемы. О возможности просмотра исходного HDL-описания говорилось выше. Еще одной возможностью анализа является так называемый режим трассировки. В этом режиме отображается некоторый логический фрагмент схемы. Например, для анализа распространения синхросигнала можно выделить на технологической схеме сигнал, подключенный к порту CLK, и нажать кнопку «Трассировка» (рис. 2), при этом на схеме останется отображенной только выделенная цепь и подключенные к ней элементы. После этого можно щелкнуть правой кнопкой мыши на одном из выходных выводов отображенных элементов и выбрать Trace Forward > 1 Level. При этом к уже отображенным элементам добавится цепь, подключенная к выбранному выводу и элементы, подключенные к этой цепи. Таким образом можно отследить (оттрассировать) распространение любого сигнала.
Просмотр отчетов по итогам синтеза выполняется при помощи двойного щелчка мыши на нужном пункте в разделе «Output Files». В этом разделе можно получить доступ к уже сформированным данным. Если необходимо перегенерировать какой-либо отчет, то для этого необходимо либо воспользоваться панелью Design Bar и содержащимися на вкладке Design Analysis (рис. 2) кнопками, либо ввести команду генерации отчета в окне Transcript вручную. Кроме выходных данных самого Precision, раздел «Output Files» содержит отчеты и сторонних интегрированных с Precision средств, таких как средства размещения и трассировки.
Процесс выполнения команд протоколируется во вложенном окне Transcript, которое становится доступным после щелчка по вкладке, помеченной на рис. 2 именем «Протокол». Окно разбито на две части: нижнюю — для ввода команд и верхнюю — для отображения протокола работы введенных команд. Все ошибки и предупреждения, возникающие в процессе выполнения команд, помечены разноцветными точками: красная — ошибка, синяя— предупреждение, зеленая — информация. Двойной щелчок на красной точке покажет исходный HDL-текст, вызвавший ошибку.
Посмотрите полученные в результате синтеза схемы, проанализируйте отчеты, о которых говорилось выше, и закройте Precision.
В следующей статье речь пойдет о создании тестбенча для отлаженного и синтезированного регистра bcdregister.