Назначение выводов кристалла для внешних цепей разрабатываемой системы с помощью средств PlanAhead Design and Analysis Tool

Проектирование встраиваемых микропроцессорных систем на базе расширяемых процессорных платформ семейства Zynq 7000 AP SoC в САПР Xilinx ISE Design Suite

PDF версия
Продолжение. Начало в № 4`2014
В данной части статьи рассматривается создание модуля описания верхнего уровня иерархии проекта разрабатываемой встраиваемой системы и подготовка файла временных и топологических ограничений проекта ее аппаратной части.

Создание модуля описания верхнего уровня иерархии проекта разрабатываемой встраиваемой системы

После создания спецификации аппаратной платформы разрабатываемой встраиваемой микропроцессорной системы рабочая область Project Navigator САПР серии Xilinx ISE Design Suite приобретает вид, представленный на рис. 36.

Вид рабочей области Project Navigator после создания спецификации аппаратной платформы разрабатываемой системы

Рис. 36. Вид рабочей области Project Navigator после создания спецификации аппаратной платформы разрабатываемой системы

Во встроенной панели Hierarchy вкладки Design, в которой отображается иерархическая структура модулей исходного описания, появилась строка с названием проекта аппаратной платформы разрабатываемой микропроцессорной системы, созданного средствами Xilinx Platform Studio. Если необходимо внести какие-либо изменения в сформированную спецификацию MHS, например добавить необходимые периферийные устройства, то достаточно расположить курсор в этой строке и дважды щелкнуть левой кнопкой мыши. При этом вновь открывается основное окно средств разработки Xilinx Platform Studio, позволяющее в интерактивном режиме скорректировать конфигурацию аппаратной платформы проектируемой микропроцессорной системы.

После окончательного завершения формирования спецификации аппаратной платформы нужно создать модуль исходного описания верхнего иерархического уровня проекта разрабатываемой системы на выбранном языке HDL. Этот процесс выполняется автоматически средствами САПР серии Xilinx ISE Design Suite. Для его активизации необходимо во встроенной панели Hierarchy вкладки Design рабочей области Project Navigator выделить строку с названием проекта аппаратной платформы разрабатываемой микропроцессорной системы, а затем во встроенной панели Processes расположить курсор в строке Generate Top HDL Source и дважды щелкнуть левой кнопкой мыши. При успешном завершении процесса генерации модуля исходного описания верхнего иерархического уровня проекта рабочая область Project Navigator преобразуется к виду, показанному на рис. 37.

Вид рабочей области Project Navigator после генерации модуля исходного описания верхнего иерархического уровня проекта

Рис. 37. Вид рабочей области Project Navigator после генерации модуля исходного описания верхнего иерархического уровня проекта

В состав иерархической структуры проекта, отображаемой во встроенной панели Hierarchy, добавилась строка с названием сформированного файла HDL-описания разрабатываемой микропроцессорной системы верхнего иерархического уровня. Идентификатор для сформированного модуля исходного описания назначается автоматически в следующем формате:

<идентификатор_проекта_ аппаратной платформы_процессорной_системы_XPS>_top

Для просмотра и редактирования содержимого сгенерированного модуля исходного описания верхнего уровня иерархии проекта достаточно расположить курсор в строке с его названием и дважды щелкнуть левой кнопкой мыши. В результате открывается рабочее окно интегрированного HDL-редактора Project Navigator, в котором отображается сформированный HDL-код (рис. 37). В качестве примера приводится полный текст модуля VHDL-описания верхнего иерархического уровня проекта простейшей встраиваемой системы сбора и обработки данных, процесс разработки спецификации аппаратной платформы которой был рассмотрен в предыдущих частях этой статьи:

-----------------------------------------------------
-- PS_ARM_top.vhd
-----------------------------------------------------
library IEEE;
use IEEE.STD_LOGIC_1164.ALL;
--
library UNISIM;
use UNISIM.VCOMPONENTS.ALL;
--
entity PS_ARM_top is
    port (
        processing_system7_0_MIO : inout std_logic_vector(53 downto 0);
        processing_system7_0_PS_SRSTB_pin : in std_logic;
        processing_system7_0_PS_CLK_pin : in std_logic;
        processing_system7_0_PS_PORB_pin : in std_logic;
        processing_system7_0_DDR_Clk : inout std_logic;
        processing_system7_0_DDR_Clk_n : inout std_logic;
        processing_system7_0_DDR_CKE : inout std_logic;
        processing_system7_0_DDR_CS_n : inout std_logic;
        processing_system7_0_DDR_RAS_n : inout std_logic;
        processing_system7_0_DDR_CAS_n : inout std_logic;
        processing_system7_0_DDR_WEB_pin : out std_logic;
        processing_system7_0_DDR_BankAddr : inout std_logic_vector(2 downto 0);
        processing_system7_0_DDR_Addr : inout std_logic_vector(14 downto 0);
        processing_system7_0_DDR_ODT : inout std_logic;
        processing_system7_0_DDR_DRSTB : inout std_logic;
        processing_system7_0_DDR_DQ : inout std_logic_vector(31 downto 0);
        processing_system7_0_DDR_DM : inout std_logic_vector(3 downto 0);
        processing_system7_0_DDR_DQS : inout std_logic_vector(3 downto 0);
        processing_system7_0_DDR_DQS_n : inout std_logic_vector(3 downto 0);
        processing_system7_0_DDR_VRN : inout std_logic;
        processing_system7_0_DDR_VRP : inout std_logic;
        axi_gpio_0_GPIO_IO_pin : inout std_logic_vector(7 downto 0)
    );
end PS_ARM_top;
--
architecture STRUCTURE of PS_ARM_top is
--
    component PS_ARM is
        port (
           processing_system7_0_MIO : inout std_logic_vector(53 downto 0);
           processing_system7_0_PS_SRSTB_pin : in std_logic;
           processing_system7_0_PS_CLK_pin : in std_logic;
           processing_system7_0_PS_PORB_pin : in std_logic;
           processing_system7_0_DDR_Clk : inout std_logic;
           processing_system7_0_DDR_Clk_n : inout std_logic;
           processing_system7_0_DDR_CKE : inout std_logic;
           processing_system7_0_DDR_CS_n : inout std_logic;
           processing_system7_0_DDR_RAS_n : inout std_logic;
           processing_system7_0_DDR_CAS_n : inout std_logic;
           processing_system7_0_DDR_WEB_pin : out std_logic;
           processing_system7_0_DDR_BankAddr : inout std_logic_vector(2 downto 0);
           processing_system7_0_DDR_Addr : inout std_logic_vector(14 downto 0);
           processing_system7_0_DDR_ODT : inout std_logic;
           processing_system7_0_DDR_DRSTB : inout std_logic;
           processing_system7_0_DDR_DQ : inout std_logic_vector(31 downto 0);
           processing_system7_0_DDR_DM : inout std_logic_vector(3 downto 0);
           processing_system7_0_DDR_DQS : inout std_logic_vector(3 downto 0);
           processing_system7_0_DDR_DQS_n : inout std_logic_vector(3 downto 0);
           processing_system7_0_DDR_VRN : inout std_logic;
           processing_system7_0_DDR_VRP : inout std_logic;
           axi_gpio_0_GPIO_IO_pin : inout std_logic_vector(7 downto 0)
        );
    end component;
--
 attribute BOX_TYPE : STRING;
 attribute BOX_TYPE of PS_ARM : component is "user_black_box";
--
begin
--
    PS_ARM_i : PS_ARM
        port map (
           processing_system7_0_MIO => processing_system7_0_MIO,
           processing_system7_0_PS_SRSTB_pin => processing_system7_0_PS_SRSTB_pin,
           processing_system7_0_PS_CLK_pin => processing_system7_0_PS_CLK_pin,
           processing_system7_0_PS_PORB_pin => processing_system7_0_PS_PORB_pin,
           processing_system7_0_DDR_Clk => processing_system7_0_DDR_Clk,
           processing_system7_0_DDR_Clk_n => processing_system7_0_DDR_Clk_n,
           processing_system7_0_DDR_CKE => processing_system7_0_DDR_CKE,
           processing_system7_0_DDR_CS_n => processing_system7_0_DDR_CS_n,
           processing_system7_0_DDR_RAS_n => processing_system7_0_DDR_RAS_n,
           processing_system7_0_DDR_CAS_n => processing_system7_0_DDR_CAS_n,
           processing_system7_0_DDR_WEB_pin => processing_system7_0_DDR_WEB_pin,
           processing_system7_0_DDR_BankAddr => processing_system7_0_DDR_BankAddr,
           processing_system7_0_DDR_Addr => processing_system7_0_DDR_Addr,
           processing_system7_0_DDR_ODT => processing_system7_0_DDR_ODT,
           processing_system7_0_DDR_DRSTB => processing_system7_0_DDR_DRSTB,
           processing_system7_0_DDR_DQ => processing_system7_0_DDR_DQ,
           processing_system7_0_DDR_DM => processing_system7_0_DDR_DM,
           processing_system7_0_DDR_DQS => processing_system7_0_DDR_DQS,
           processing_system7_0_DDR_DQS_n => processing_system7_0_DDR_DQS_n,
           processing_system7_0_DDR_VRN => processing_system7_0_DDR_VRN,
           processing_system7_0_DDR_VRP => processing_system7_0_DDR_VRP,
           axi_gpio_0_GPIO_IO_pin => axi_gpio_0_GPIO_IO_pin
        );
--
end architecture STRUCTURE;

При необходимости в состав сгенерированного модуля описания верхнего уровня иерархии проекта могут быть включены дополнительные компоненты, созданные ранее разработчиком, и внешние порты ввода/вывода, подключаемые к выводам кристалла расширяемой процессорной платформы семейства Zynq‑7000 AP SoC. В этом случае в состав проекта аппаратной части разрабатываемой встраиваемой системы, формируемого в среде САПР серии Xilinx ISE Design Suite, добавляются соответствующие модули исходного описания.

Для получения законченного описания аппаратной части проектируемой встраиваемой микропроцессорной системы необходимо кроме спецификации MHS и модулей HDL-описания подготовить дополнительную информацию о топологических и временных ограничениях, которая используется средствами синтеза, размещения и трассировки проекта в кристалле.

 

Основные типы и формат временных и топологических ограничений, устанавливаемых для проекта аппаратной части разрабатываемой микропроцессорной системы

Дополнительная информация, предназначенная для программ синтеза, размещения и трассировки проекта аппаратной части разрабатываемой микропроцессорной системы в кристалле, задается в форме файла временных и топологических ограничений User Constraints File (UCF). Этот файл имеет текстовый формат, каждая строка которого представляет собой выражение, описывающее соответствующий параметр (ограничение проекта). Синтаксис выражений, включаемых в файл временных и топологических ограничений, подробно рассмотрен в [16]. Поэтому остановимся на изучении только наиболее часто используемых типов ограничений, устанавливаемых для аппаратной части встраиваемых систем, реализуемых на базе ресурсов программируемой логики кристаллов семейства Zynq‑7000 AP SoC.

В файлах временных и топологических ограничений проектов встраиваемых микропроцессорных систем чаще всего применяются три типа выражений. Ограничения первого типа позволяют установить соответствие между внешними цепями проектируемой системы и номерами выводов кристалла, а также указать цифровые сигнальные стандарты, в соответствии с которыми должны конфигурироваться эти выводы. Выражения второго типа используются для определения максимального значения периода сигнала синхронизации. Выражения третьего типа предоставляют возможность инициализации элементов запоминающих устройств, конфигурируемых на базе соответствующих ресурсов программируемой логики кристаллов расширяемых процессорных платформ семейства Zynq‑7000 AP SoC.

Параметр LOC позволяет осуществить привязку внешних цепей разрабатываемой микропроцессорной системы к пользовательским выводам кристалла перед трассировкой и определить цифровые сигнальные стандарты для этих выводов, а также явно указать конфигурируемый логический блок (Configurable Logic Block, CLB) для реализации элементов проектируемой системы. Для привязки внешних цепей разрабатываемой встраиваемой системы к требуемым выводам кристалла и указания цифрового сигнального стандарта для этих выводов используется следующий формат выражения:

NET <идентификатор_цепи> LOC=<номер_вывода_кристалла> | IOSTANDARD=<условное_обозначение_цифрового_сигнального_стандарта>;

Форма записи номера вывода кристалла расширяемой процессорной платформы в этом выражении зависит от типа используемого корпуса. Для корпусов, относящихся к категории BGA, номер вывода указывается в том же виде, в каком он представлен в документации. При использовании корпусов других типов номер вывода, указанный в документации, в выражении ограничения LOC сопровождается префиксом P. В качестве примеров топологических ограничений, предназначенных для указания соответствия внешних цепей разрабатываемой микропроцессорной системы и номеров выводов кристалла, а также цифровых сигнальных стандартов для этих выводов, приводятся следующие выражения:

NET DAT_REC LOC = W12 | IOSTANDARD=LVCMOS33; # " DATA REC "
NET BTN_STRT LOC = R18 | IOSTANDARD=LVCMOS18; # " BTN START "

Максимальное значение периода сигнала синхронизации для соответствующей цепи разрабатываемой микропроцессорной системы задается с помощью параметра PERIOD. Полный формат соответствующего выражения ограничения имеет вид:

NET < идентификатор_цепи_синхронизации> PERIOD=<длительность_периода> [<единицы_измерения>] [{HIGH | LOW}[<длительность_первой_фазы_периода> [<единицы_измерения>] ]];

Здесь значение HIGH или LOW определяет логический уровень сигнала в первой фазе периода, а элементы, указанные в квадратных скобках, являются необязательными. По умолчанию в качестве единиц измерения длительности установлены наносекунды (нс) и одинаковая продолжительность состояний высокого и низкого логического уровня периода тактового сигнала, в результате чего получается сокращенный формат записи:

NET < идентификатор_цепи_синхронизации> PERIOD = <длительность_периода>;

например,

NET clock PERIOD=20ns;

Таким образом, значение параметра PERIOD накладывает ограничение на время распространения сигналов по цепям и логике, подключенных между выходом одного и входом другого синхронного элемента (триггера, регистра или ОЗУ), которые тактируются одним и тем же сигналом синхронизации.

Инициализация элементов запоминающих устройств (ОЗУ, ПЗУ, таблиц преобразования и регистров) осуществляется с помощью параметра INIT, формат выражения которого имеет следующий вид:

INST < идентификатор_элемента_памяти> INIT = <значение_определяющее_содержимое_элемента_памяти>;

например,

INST rom5 INIT = 4076;

Значение, определяющее содержимое элемента запоминающего устройства, указывается в шестнадцатеричном виде. При этом количество знаков шестнадцатеричного числа должно соответствовать разрядности элемента запоминающего устройства.

Формат выражения инициализации триггеров и регистров имеет следующий вид:

INST <идентификатор_экземпляра_триггера_или_регистра> INIT={1 | 0 | S | R};

где S соответствует режиму установки, а R — режиму сброса, например,

INST ddr1 INIT=1;

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

 

Подготовка файла временных и топологических ограничений проекта аппаратной части разрабатываемой микропроцессорной системы

Для подготовки основы файла временных и топологических ограничений аппаратной части разрабатываемой встраиваемой системы необходимо выполнить процедуру создания нового модуля исходного описания проекта. Она запускается при нажатии кнопки кнопка на оперативной панели управления или при выборе команды New Source из раздела Project основного меню Project Navigator или контекстно-зависимого всплывающего меню, вызываемого щелчком правой кнопки мыши. При этом в открывшейся диалоговой панели Select Source Type «мастера» создания основы нового модуля исходного описания проекта New Source Wizard (рис. 6) следует выделить строку Implementation Constraints File, которая в качестве типа нового модуля задает файл временных и топологических ограничений проекта. Затем в этой же диалоговой панели нужно указать идентификатор нового файла *.UCF в поле редактирования File Name и нажать кнопку Next.

По умолчанию создаваемый файл временных и топологических ограничений ассоциируется с модулем исходного описания верхнего уровня иерархии проекта. Если в составе проекта присутствует несколько модулей исходного описания проекта, с которыми может ассоциироваться формируемый файл UCF, то после этого на экран выводится следующая диалоговая панель «мастера» New Source Wizard с подзаголовком Associate Source. Эта диалоговая панель позволяет выбрать модуль исходного описания проекта, с которым должен ассоциироваться создаваемый файл временных и топологических ограничений. Процесс выбора завершается нажатием кнопки Next, расположенной в нижней части диалоговой панели Associate Source. На экране появляется информационная панель Summary, в которой отображаются все параметры формируемого нового модуля временных и топологических ограничений проекта аппаратной части разрабатываемой встраиваемой микропроцессорной системы.

После подтверждения этих параметров нажатием кнопки Next, находящейся в нижней части диалоговой панели, во встроенной панели Hierarchy вкладки Design рабочей области Project Navigator появляется строка, в которой отображается идентификатор создаваемого файла временных и топологических ограничений (рис. 38). При этом в области расположения рабочих окон автоматически открывается новое окно редактирования, если по умолчанию в качестве средств подготовки файлов *.UCF в Project Navigator установлен интегрированный HDL-редактор.

Создание модуля временных и топологических ограничений проекта аппаратной части разрабатываемой системы

Рис. 38. Создание модуля временных и топологических ограничений проекта аппаратной части разрабатываемой системы

Для внесения информации в файл UCF служат различные программные инструменты пакета САПР серии Xilinx ISE Design Suite. Определение временных и топологических ограничений проекта аппаратной части встраиваемой микропроцессорной системы может осуществляться с помощью специальной программы Constraints Editor, а также средств PlanAhead Design and Analysis Tool, которые входят в состав этого пакета. Перечисленные инструменты на основании данных, указанных разработчиком в диалоговом режиме, автоматически формируют соответствующие выражения для описания ограничений проекта аппаратной части разрабатываемой системы.

Для модификации содержимого файла *.UCF с помощью редактора временных и топологических ограничений Constraints Editor следует во встроенной панели Hierarchy вкладки Design рабочей области Project Navigator расположить курсор в строке с идентификатором модуля исходного описания верхнего иерархического уровня проекта и щелчком левой кнопки мыши выделить указанную строку. Затем во встроенной панели Processes вкладки Design следует развернуть строку User Constraints и дважды щелкнуть левой кнопкой мыши на строке Create Timing Constraints, в результате чего откроется рабочее окно программы Constraints Editor, вид которого показан на рис. 39.

Формирование модуля временных и топологических ограничений с помощью программы Constraints Editor

Рис. 39. Формирование модуля временных и топологических ограничений с помощью программы Constraints Editor

Чтобы воспользоваться средствами PlanAhead Design and Analysis Tool для привязки внешних входов и выходов разрабатываемой встраиваемой системы к выводам кристалла расширяемой процессорной платформы семейства Zynq‑7000 AP SoC до или после процесса синтеза, необходимо во встроенной панели Processes вкладки Design расположить курсор на строке I/O Pin Planning (PlanAhead) — Pre-Synthesis или I/O Pin Planning (PlanAhead) — Post-Synthesis и дважды щелкнуть левой кнопкой мыши. В результате выполненных действий на экране открывается основное окно средств разработки PlanAhead Design and Analysis Tool, вид которого представлен на рис. 40. При этом в среде разработки PlanAhead Design and Analysis Tool автоматически устанавливается режим планирования пользовательских выводов кристалла, предназначенных для подключения внешних цепей проектируемой микропроцессорной системы.

Назначение выводов кристалла для внешних цепей разрабатываемой системы с помощью средств PlanAhead Design and Analysis Tool

Рис. 40. Назначение выводов кристалла для внешних цепей разрабатываемой системы с помощью средств PlanAhead Design and Analysis Tool

Самым простым способом подготовки содержимого модуля временных и топологических ограничений является использование встроенного текстового HDL-редактора управляющей оболочки САПР серии Xilinx ISE Design Suite. Поэтому далее основное внимание мы уделим этому методу формирования файла *.UCF.

 

Редактирование модуля временных и топологических ограничений проекта аппаратной части разрабатываемой микропроцессорной системы

Чтобы приступить к редактированию файла *.UCF в текстовом режиме, нужно во встроенной панели Hierarchy вкладки Design рабочей области Project Navigator расположить курсор в строке с идентификатором этого файла и щелчком левой кнопки мыши выделить эту строку. После этого во встроенной панели процессов Processes вкладки Design следует развернуть строку User Constraints и дважды щелкнуть левой кнопкой мыши на строке Edit Constraints (Text), в результате чего откроется новое рабочее окно редактирования. Если в Project Navigator по умолчанию в качестве основного инструмента подготовки временных и топологических ограничений проекта аппаратной части разрабатываемой микропроцессорной системы установлен встроенный HDL-редактор, то для его использования достаточно дважды щелкнуть левой кнопкой мыши на строке с идентификатором формируемого файла *.UCF.

Ввод выражений временных и топологических ограничений осуществляется с помощью клавиатуры. При этом для сокращения времени подготовки файла *.UCF, а также для минимизации синтаксических ошибок, появление которых возможно при наборе текста выражений ограничений «вручную», с помощью клавиатуры, рекомендуется использовать шаблоны HDL-редактора. Чтобы воспользоваться этими шаблонами, нужно, прежде всего, сделать активным рабочее окно интегрированного HDL-редактора, в котором создается модуль временных и топологических ограничений для проекта аппаратной части разрабатываемой микропроцессорной системы. Далее следует открыть окно шаблонов, используя команду Language Templates из всплывающего меню Edit или кнопку кнопка, расположенную на оперативной панели управления Project Navigator. Применение шаблонов HDL-редактора при формировании файла *.UCF показано на рис. 41.

Применение шаблонов HDL-редактора при формировании файла UCF

Рис. 41. Применение шаблонов HDL-редактора при формировании файла UCF

Окно шаблонов содержит две области: в левой отображается список шаблонов, которые сгруппированы в папки, а в правой — содержание выбранного шаблона. Первоначально при открытии окна шаблонов в левой области отображаются четыре папки — Tcl, UCF, VHDL и Verilog, в которых содержатся шаблоны команд языка управления, выражений ограничений проекта и соответствующих языков описания аппаратуры HDL.

Чтобы включить требуемый шаблон в состав создаваемого модуля описания временных и топологических ограничений проекта аппаратной части разрабатываемой встраиваемой системы, нужно открыть папку UCF, поместив курсор на ее изображение, и дважды щелкнуть левой кнопкой мыши. После этого в той же области окна будут показаны основные группы шаблонов, представленные в виде папок с соответствующими названиями CPLD и FPGA. Для подготовки модуля временных и топологических ограничений проекта аппаратной части микропроцессорных систем, разрабатываемых на базе кристаллов расширяемых вычислительных платформ семейства Zynq‑7000 AP SoC, нужно открыть папку FPGA.

В каждой из основных групп шаблоны разделены на подгруппы. Поэтому далее нужно последовательно открыть папки соответствующей группы и подгруппы, пока на экране в левой области окна не появится список шаблонов, входящих в состав выбранной подгруппы. В этом списке щелчком левой кнопки мыши на соответствующей строке следует выделить название требуемого шаблона, после чего текст выбранного шаблона отобразится в правой области окна. Затем нужно воспользоваться командой Use in … из всплывающего меню Edit или контекстно-зависимого всплывающего меню, которое выводится на экран щелчком правой кнопки мыши. Кроме того, для этой же цели можно использовать кнопку быстрого доступа кнопка, которая находится на оперативной панели управления Project Navigator. При этом выбранный шаблон будет вставлен в то место создаваемого файла *.UCF, где расположен курсор в окне редактирования. Если требуется вставить только фрагмент шаблона, то необходимо выделить его в правой области окна и выполнить команды копирования (copy) и вставки (paste) из всплывающего меню Edit или контекстно-зависимого всплывающего меню.

При реализации разрабатываемых встраиваемых микропроцессорных систем на базе аппаратных отладочных плат в качестве шаблонов рекомендуется использовать файлы временных и топологических ограничений, предоставляемые производителями этих плат в составе демонстрационных проектов. Для этого следует открыть файл *.UCF, предоставляемый для применяемой отладочной платы, в новом окне встроенного HDL-редактора с помощью команды Open из всплывающего меню File или кнопки быстрого доступа кнопка, расположенной на оперативной панели управления Project Navigator. Затем, используя команды copy и paste из всплывающего меню Edit или контекстно-зависимого всплывающего меню, нужно скопировать требуемый фрагмент предоставляемого файла *.UCF и вставить его в формируемый модуль временных и топологических ограничений проекта аппаратной части разрабатываемой микропроцессорной системы. После этого необходимо в скопированных выражениях ограничений изменить идентификаторы цепей в соответствии с обозначениями интерфейсных портов, заданными в спецификации аппаратной платформы и модуле исходного описания проекта верхнего уровня иерархии.

В качестве примера приведем текст модуля временных и топологических ограничений, который предоставляется для отладочной платы ZedBoard [12], используемой для реализации проекта простейшей системы сбора и обработки данных:

# -------------------------
#
# Notes:
#
# 10 August 2012
# IO standards based upon Bank 34 and Bank 35 Vcco supply options of 1.8V,
# 2.5V, or 3.3V are possible based upon the Vadj jumper (J18) settings.
# By default, Vadj is expected to be set to 1.8V but if a different
# voltage is used for a particular design, then the corresponding IO
# standard within this UCF should also be updated to reflect the actual
# Vadj jumper selection.
#
# 09 September 2012
# Net names are not allowed to contain hyphen characters '-' since this
# is not a legal VHDL87 or Verilog character within an identifier.
# HDL net names are adjusted to contain no hyphen characters '-' but
# rather use underscore '_' characters. Comment net name with the hyphen
# characters will remain in place since these are intended to match the
# schematic net names in order to better enable schematic search.
# --------------------------

Для большей информативности текст предлагаемого файла *.UCF разбит на разделы и дополнен комментариями, поясняющими назначение отдельных групп выражений ограничений.

Первый раздел содержит замечания о необходимости учета возможных вариантов напряжения питания для выходных каскадов блоков ввода/вывода, относящихся к банкам 34 и 35, и преобразовании отдельных символов, используемых в составе идентификаторов цепей.

Во втором разделе представлены выражения ограничений, которые определяют подключение внешних цепей проектируемой встраиваемой системы к пользовательским выводам кристалла, относящимся к банку 13. Эти выводы используются для организации взаимодействия кристалла расширяемой процессорной платформы с аудиокодеком и OLED-дисплеем. Кроме того, часть пользовательских выводов этого банка подключена к контактам разъемов расширения, которые соответствуют спецификациям FMC Low Pin Count (ANSI/VITA 57.1) и PMOD (компании Digilent Incorporated). Для питания выходных каскадов блоков ввода/вывода, входящих в состав этого банка, используется источник напряжения 3,3 В. Поэтому указанные выводы кристалла конфигурируются в соответствии со стандартом LVCMOS33:

# ---------------------------
#
# Bank 13, Vcco = 3.3V
#
# Пользовательские выводы кристалла, подключенные к аудио-кодеку
#
NET AC_ADR0 LOC = AB1 | IOSTANDARD=LVCMOS33; # "AC-ADR0"
NET AC_ADR1 LOC = Y5 | IOSTANDARD=LVCMOS33; # "AC-ADR1"
NET AC_GPIO0 LOC = Y8 | IOSTANDARD=LVCMOS33; # "AC-GPIO0"
NET AC_GPIO1 LOC = AA7 | IOSTANDARD=LVCMOS33; # "AC-GPIO1"
NET AC_GPIO2 LOC = AA6 | IOSTANDARD=LVCMOS33; # "AC-GPIO2"
NET AC_GPIO3 LOC = Y6 | IOSTANDARD=LVCMOS33; # "AC-GPIO3"
NET AC_MCLK LOC = AB2 | IOSTANDARD=LVCMOS33; # "AC-MCLK"
NET AC_SCK LOC = AB4 | IOSTANDARD=LVCMOS33; # "AC-SCK"
NET AC_SDA LOC = AB5 | IOSTANDARD=LVCMOS33; # "AC-SDA"
#
# Пользовательские выводы кристалла, подключенные к контактам разъема FMC LPC
#
NET FMC_SCL LOC = R7 | IOSTANDARD=LVCMOS33; # "FMC-SCL"
NET FMC_SDA LOC = U7 | IOSTANDARD=LVCMOS33; # "FMC-SDA"
#
# Подключение внешнего сигнала синхронизации
#
NET GCLK LOC = Y9 | IOSTANDARD=LVCMOS33; # "GCLK"
#
# Пользовательские выводы кристалла, подключенные к контактам разъемов PMOD
#
NET JA1 LOC = Y11 | IOSTANDARD=LVCMOS33; # "JA1"
NET JA10 LOC = AA8 | IOSTANDARD=LVCMOS33; # "JA10"
NET JA2 LOC = AA11 | IOSTANDARD=LVCMOS33; # "JA2"
NET JA3 LOC = Y10 | IOSTANDARD=LVCMOS33; # "JA3"
NET JA4 LOC = AA9 | IOSTANDARD=LVCMOS33; # "JA4"
NET JA7 LOC = AB11 | IOSTANDARD=LVCMOS33; # "JA7"
NET JA8 LOC = AB10 | IOSTANDARD=LVCMOS33; # "JA8"
NET JA9 LOC = AB9 | IOSTANDARD=LVCMOS33; # "JA9"
NET JB1 LOC = W12 | IOSTANDARD=LVCMOS33; # "JB1"
NET JB10 LOC = V8 | IOSTANDARD=LVCMOS33; # "JB10"
NET JB2 LOC = W11 | IOSTANDARD=LVCMOS33; # "JB2"
NET JB3 LOC = V10 | IOSTANDARD=LVCMOS33; # "JB3"
NET JB4 LOC = W8 | IOSTANDARD=LVCMOS33; # "JB4"
NET JB7 LOC = V12 | IOSTANDARD=LVCMOS33; # "JB7"
NET JB8 LOC = W10 | IOSTANDARD=LVCMOS33; # "JB8"
NET JB9 LOC = V9 | IOSTANDARD=LVCMOS33; # "JB9"
NET JC1_N LOC = AB6 | IOSTANDARD=LVCMOS33; # "JC1_N"
NET JC1_P LOC = AB7 | IOSTANDARD=LVCMOS33; # "JC1_P"
NET JC2_N LOC = AA4 | IOSTANDARD=LVCMOS33; # "JC2_N"
NET JC2_P LOC = Y4 | IOSTANDARD=LVCMOS33; # "JC2_P"
NET JC3_N LOC = T6 | IOSTANDARD=LVCMOS33; # "JC3_N"
NET JC3_P LOC = R6 | IOSTANDARD=LVCMOS33; # "JC3_P"
NET JC4_N LOC = U4 | IOSTANDARD=LVCMOS33; # "JC4_N"
NET JC4_P LOC = T4 | IOSTANDARD=LVCMOS33; # "JC4_P"
NET JD1_N LOC = W7 | IOSTANDARD=LVCMOS33; # "JD1_N"
NET JD1_P LOC = V7 | IOSTANDARD=LVCMOS33; # "JD1_P"
NET JD2_N LOC = V4 | IOSTANDARD=LVCMOS33; # "JD2_N"
NET JD2_P LOC = V5 | IOSTANDARD=LVCMOS33; # "JD2_P"
NET JD3_N LOC = W5 | IOSTANDARD=LVCMOS33; # "JD3_N"
NET JD3_P LOC = W6 | IOSTANDARD=LVCMOS33; # "JD3_P"
NET JD4_N LOC = U5 | IOSTANDARD=LVCMOS33; # "JD4_N"
NET JD4_P LOC = U6 | IOSTANDARD=LVCMOS33; # "JD4_P"
#
# Пользовательские выводы кристалла, подключенные к OLED-дисплею
#
NET OLED_DC LOC = U10 | IOSTANDARD=LVCMOS33; # "OLED-DC"
NET OLED_RES LOC = U9 | IOSTANDARD=LVCMOS33; # "OLED-RES"
NET OLED_SCLK LOC = AB12 | IOSTANDARD=LVCMOS33; # "OLED-SCLK"
NET OLED_SDIN LOC = AA12 | IOSTANDARD=LVCMOS33; # "OLED-SDIN"
NET OLED_VBAT LOC = U11 | IOSTANDARD=LVCMOS33; # "OLED-VBAT"
NET OLED_VDD LOC = U12 | IOSTANDARD=LVCMOS33; # "OLED-VDD"

Третий раздел включает в себя выражения ограничений, предназначенные для привязки внешних цепей разрабатываемой микропроцессорной системы к пользовательским выводам кристалла, входящим в состав банка 33. Пользовательские выводы этого банка сопряжены с контактами разъема FMC LPC, HDMI-кодеком, светодиодными индикаторами и контактами разъема VGA. Питание выходных каскадов блоков ввода/вывода, относящихся к этому банку, осуществляется от источника напряжения 3,3 В. Поэтому в представленных выражениях ограничений для соответствующих выводов кристалла указан стандарт конфигурирования LVCMOS33:

# --------------------------------
#
# Bank 33, Vcco = 3.3V
#
# Пользовательские выводы кристалла, подключенные к контактам разъема FMC LPC
#
NET FMC_PRSNT LOC = AB14 | IOSTANDARD=LVCMOS33; # "FMC-PRSNT"
#
# Пользовательские выводы кристалла, подключенные к HDMI-кодеку
#
NET HD_CLK LOC = W18 | IOSTANDARD=LVCMOS33; # "HD-CLK"
NET HD_D0 LOC = Y13 | IOSTANDARD=LVCMOS33; # "HD-D0"
NET HD_D1 LOC = AA13 | IOSTANDARD=LVCMOS33; # "HD-D1"
NET HD_D10 LOC = W13 | IOSTANDARD=LVCMOS33; # "HD-D10"
NET HD_D11 LOC = W15 | IOSTANDARD=LVCMOS33; # "HD-D11"
NET HD_D12 LOC = V15 | IOSTANDARD=LVCMOS33; # "HD-D12"
NET HD_D13 LOC = U17 | IOSTANDARD=LVCMOS33; # "HD-D13"
NET HD_D14 LOC = V14 | IOSTANDARD=LVCMOS33; # "HD-D14"
NET HD_D15 LOC = V13 | IOSTANDARD=LVCMOS33; # "HD-D15"
NET HD_D2 LOC = AA14 | IOSTANDARD=LVCMOS33; # "HD-D2"
NET HD_D3 LOC = Y14 | IOSTANDARD=LVCMOS33; # "HD-D3"
NET HD_D4 LOC = AB15 | IOSTANDARD=LVCMOS33; # "HD-D4"
NET HD_D5 LOC = AB16 | IOSTANDARD=LVCMOS33; # "HD-D5"
NET HD_D6 LOC = AA16 | IOSTANDARD=LVCMOS33; # "HD-D6"
NET HD_D7 LOC = AB17 | IOSTANDARD=LVCMOS33; # "HD-D7"
NET HD_D8 LOC = AA17 | IOSTANDARD=LVCMOS33; # "HD-D8"
NET HD_D9 LOC = Y15 | IOSTANDARD=LVCMOS33; # "HD-D9"
NET HD_DE LOC = U16 | IOSTANDARD=LVCMOS33; # "HD-DE"
NET HD_HSYNC LOC = V17 | IOSTANDARD=LVCMOS33; # "HD-HSYNC"
NET HD_INT LOC = W16 | IOSTANDARD=LVCMOS33; # "HD-INT"
NET HD_SCL LOC = AA18 | IOSTANDARD=LVCMOS33; # "HD-SCL"
NET HD_SDA LOC = Y16 | IOSTANDARD=LVCMOS33; # "HD-SDA"
NET HD_SPDIF LOC = U15 | IOSTANDARD=LVCMOS33; # "HD-SPDIF"
NET HD_SPDIFO LOC = Y18 | IOSTANDARD=LVCMOS33; # "HD-SPDIFO"
NET HD_VSYNC LOC = W17 | IOSTANDARD=LVCMOS33; # "HD-VSYNC"
#
# Пользовательские выводы кристалла, подключенные к светодиодным индикаторам
#
NET LD0 LOC = T22 | IOSTANDARD=LVCMOS33; # "LD0"
NET LD1 LOC = T21 | IOSTANDARD=LVCMOS33; # "LD1"
NET LD2 LOC = U22 | IOSTANDARD=LVCMOS33; # "LD2"
NET LD3 LOC = U21 | IOSTANDARD=LVCMOS33; # "LD3"
NET LD4 LOC = V22 | IOSTANDARD=LVCMOS33; # "LD4"
NET LD5 LOC = W22 | IOSTANDARD=LVCMOS33; # "LD5"
NET LD6 LOC = U19 | IOSTANDARD=LVCMOS33; # "LD6"
NET LD7 LOC = U14 | IOSTANDARD=LVCMOS33; # "LD7"
NET NetIC16_W20 LOC = W20 | IOSTANDARD=LVCMOS33; # "NetIC16_W20"
NET NetIC16_W21 LOC = W21 | IOSTANDARD=LVCMOS33; # "NetIC16_W21"
#
# Пользовательские выводы кристалла, подключенные к контактам разъема VGA
#
NET VGA_B1 LOC = Y21 | IOSTANDARD=LVCMOS33; # "VGA-B1"
NET VGA_B2 LOC = Y20 | IOSTANDARD=LVCMOS33; # "VGA-B2"
NET VGA_B3 LOC = AB20 | IOSTANDARD=LVCMOS33; # "VGA-B3"
NET VGA_B4 LOC = AB19 | IOSTANDARD=LVCMOS33; # "VGA-B4"
NET VGA_G1 LOC = AB22 | IOSTANDARD=LVCMOS33; # "VGA-G1"
NET VGA_G2 LOC = AA22 | IOSTANDARD=LVCMOS33; # "VGA-G2"
NET VGA_G3 LOC = AB21 | IOSTANDARD=LVCMOS33; # "VGA-G3"
NET VGA_G4 LOC = AA21 | IOSTANDARD=LVCMOS33; # "VGA-G4"
NET VGA_HS LOC = AA19 | IOSTANDARD=LVCMOS33; # "VGA-HS"
NET VGA_R1 LOC = V20 | IOSTANDARD=LVCMOS33; # "VGA-R1"
NET VGA_R2 LOC = U20 | IOSTANDARD=LVCMOS33; # "VGA-R2"
NET VGA_R3 LOC = V19 | IOSTANDARD=LVCMOS33; # "VGA-R3"
NET VGA_R4 LOC = V18 | IOSTANDARD=LVCMOS33; # "VGA-R4"
NET VGA_VS LOC = Y19 | IOSTANDARD=LVCMOS33; # "VGA-VS"

В четвертом разделе приведены выражения ограничений, которые определяют соответствие внешних цепей проектируемой встраиваемой системы и пользовательских выводов кристалла, относящихся к банку 34. К пользовательским выводам этого банка подключены кнопочные переключатели, контакты разъема FMC LPC и контакты разъема аналого-цифрового блока XADC. Для питания выходных каскадов блоков ввода/вывода, входящих в состав этого банка, могут использоваться различные уровни напряжения (1,8, 2,5 и 3,3 В), которые выбираются с помощью соответствующих коммутационных перемычек. Приведенные выражения ограничений предписывают конфигурирование указанных выводов кристалла в соответствии со стандартом LVCMOS18:

# ----------------------------
#
# Bank 34, Vcco = Vadj
#
# Пользовательские выводы кристалла, подключенные к кнопочным переключателям
#
NET BTNC LOC = P16 | IOSTANDARD=LVCMOS18; # "BTNC"
NET BTND LOC = R16 | IOSTANDARD=LVCMOS18; # "BTND"
NET BTNL LOC = N15 | IOSTANDARD=LVCMOS18; # "BTNL"
NET BTNR LOC = R18 | IOSTANDARD=LVCMOS18; # "BTNR"
NET BTNU LOC = T18 | IOSTANDARD=LVCMOS18; # "BTNU"
#
# Пользовательские выводы кристалла, подключенные к контактам разъема FMC LPC
#
NET FMC_CLK0_N LOC = L19 | IOSTANDARD=LVCMOS18; # "FMC-CLK0_N"
NET FMC_CLK0_P LOC = L18 | IOSTANDARD=LVCMOS18; # "FMC-CLK0_P"
NET FMC_LA00_CC_N LOC = M20 | IOSTANDARD=LVCMOS18; # "FMC-LA00_CC_N"
NET FMC_LA00_CC_P LOC = M19 | IOSTANDARD=LVCMOS18; # "FMC-LA00_CC_P"
NET FMC_LA01_CC_N LOC = N20 | IOSTANDARD=LVCMOS18; # "FMC-LA01_CC_N"
NET FMC_LA01_CC_P LOC = N19 | IOSTANDARD=LVCMOS18; # "FMC-LA01_CC_P"
NET FMC_LA02_N LOC = P18 | IOSTANDARD=LVCMOS18; # "FMC-LA02_N"
NET FMC_LA02_P LOC = P17 | IOSTANDARD=LVCMOS18; # "FMC-LA02_P"
NET FMC_LA03_N LOC = P22 | IOSTANDARD=LVCMOS18; # "FMC-LA03_N"
NET FMC_LA03_P LOC = N22 | IOSTANDARD=LVCMOS18; # "FMC-LA03_P"
NET FMC_LA04_N LOC = M22 | IOSTANDARD=LVCMOS18; # "FMC-LA04_N"
NET FMC_LA04_P LOC = M21 | IOSTANDARD=LVCMOS18; # "FMC-LA04_P"
NET FMC_LA05_N LOC = K18 | IOSTANDARD=LVCMOS18; # "FMC-LA05_N"
NET FMC_LA05_P LOC = J18 | IOSTANDARD=LVCMOS18; # "FMC-LA05_P"
NET FMC_LA06_N LOC = L22 | IOSTANDARD=LVCMOS18; # "FMC-LA06_N"
NET FMC_LA06_P LOC = L21 | IOSTANDARD=LVCMOS18; # "FMC-LA06_P"
NET FMC_LA07_N LOC = T17 | IOSTANDARD=LVCMOS18; # "FMC-LA07_N"
NET FMC_LA07_P LOC = T16 | IOSTANDARD=LVCMOS18; # "FMC-LA07_P"
NET FMC_LA08_N LOC = J22 | IOSTANDARD=LVCMOS18; # "FMC-LA08_N"
NET FMC_LA08_P LOC = J21 | IOSTANDARD=LVCMOS18; # "FMC-LA08_P"
NET FMC_LA09_N LOC = R21 | IOSTANDARD=LVCMOS18; # "FMC-LA09_N"
NET FMC_LA09_P LOC = R20 | IOSTANDARD=LVCMOS18; # "FMC-LA09_P"
NET FMC_LA10_N LOC = T19 | IOSTANDARD=LVCMOS18; # "FMC-LA10_N"
NET FMC_LA10_P LOC = R19 | IOSTANDARD=LVCMOS18; # "FMC-LA10_P"
NET FMC_LA11_N LOC = N18 | IOSTANDARD=LVCMOS18; # "FMC-LA11_N"
NET FMC_LA11_P LOC = N17 | IOSTANDARD=LVCMOS18; # "FMC-LA11_P"
NET FMC_LA12_N LOC = P21 | IOSTANDARD=LVCMOS18; # "FMC-LA12_N"
NET FMC_LA12_P LOC = P20 | IOSTANDARD=LVCMOS18; # "FMC-LA12_P"
NET FMC_LA13_N LOC = M17 | IOSTANDARD=LVCMOS18; # "FMC-LA13_N"
NET FMC_LA13_P LOC = L17 | IOSTANDARD=LVCMOS18; # "FMC-LA13_P"
NET FMC_LA14_N LOC = K20 | IOSTANDARD=LVCMOS18; # "FMC-LA14_N"
NET FMC_LA14_P LOC = K19 | IOSTANDARD=LVCMOS18; # "FMC-LA14_P"
NET FMC_LA15_N LOC = J17 | IOSTANDARD=LVCMOS18; # "FMC-LA15_N"
NET FMC_LA15_P LOC = J16 | IOSTANDARD=LVCMOS18; # "FMC-LA15_P"
NET FMC_LA16_N LOC = K21 | IOSTANDARD=LVCMOS18; # "FMC-LA16_N"
NET FMC_LA16_P LOC = J20 | IOSTANDARD=LVCMOS18; # "FMC-LA16_P"
#
# Выводы кристалла, подключенные к коммутационным перемычкам выбора режима
#
NET OTG_VBUSOC LOC = L16 | IOSTANDARD=LVCMOS18; # "OTG-VBUSOC"
NET PUDC_B LOC = K16 | IOSTANDARD=LVCMOS18; # "PUDC_B"
#
# Подключение выводов аналого-цифрового блока XADC кристалла
#
NET XADC_GIO0 LOC = H15; # "XADC-GIO0"
NET XADC_GIO1 LOC = R15; # "XADC-GIO1"
NET XADC_GIO2 LOC = K15; # "XADC-GIO2"
NET XADC_GIO3 LOC = J15; # "XADC-GIO3"

Пятый раздел содержит выражения ограничений, предназначенные для привязки внешних цепей разрабатываемой микропроцессорной системы к пользовательским выводам кристалла, входящим в состав банка 35. Пользовательские выводы этого банка связаны с контактами разъема FMC LPC, DIP-переключателями и контактами разъема аналого-цифрового блока XADC. В качестве источника питания для выходных каскадов блоков ввода/вывода, входящих в состав этого банка, могут использоваться различные уровни напряжения. Представленные выражения ограничений задают в качестве варианта конфигурирования указанных выводов кристалла стандарт LVCMOS18:

# ----------------------------
#
# Bank 35, Vcco = Vadj
#
# Пользовательские выводы кристалла, подключенные к контактам разъема FMC LPC
#
NET FMC_CLK1_N LOC = C19 | IOSTANDARD=LVCMOS18; # "FMC-CLK1_N"
NET FMC_CLK1_P LOC = D18 | IOSTANDARD=LVCMOS18; # "FMC-CLK1_P"
NET FMC_LA17_CC_N LOC = B20 | IOSTANDARD=LVCMOS18; # "FMC-LA17_CC_N"
NET FMC_LA17_CC_P LOC = B19 | IOSTANDARD=LVCMOS18; # "FMC-LA17_CC_P"
NET FMC_LA18_CC_N LOC = C20 | IOSTANDARD=LVCMOS18; # "FMC-LA18_CC_N"
NET FMC_LA18_CC_P LOC = D20 | IOSTANDARD=LVCMOS18; # "FMC-LA18_CC_P"
NET FMC_LA19_N LOC = G16 | IOSTANDARD=LVCMOS18; # "FMC-LA19_N"
NET FMC_LA19_P LOC = G15 | IOSTANDARD=LVCMOS18; # "FMC-LA19_P"
NET FMC_LA20_N LOC = G21 | IOSTANDARD=LVCMOS18; # "FMC-LA20_N"
NET FMC_LA20_P LOC = G20 | IOSTANDARD=LVCMOS18; # "FMC-LA20_P"
NET FMC_LA21_N LOC = E20 | IOSTANDARD=LVCMOS18; # "FMC-LA21_N"
NET FMC_LA21_P LOC = E19 | IOSTANDARD=LVCMOS18; # "FMC-LA21_P"
NET FMC_LA22_N LOC = F19 | IOSTANDARD=LVCMOS18; # "FMC-LA22_N"
NET FMC_LA22_P LOC = G19 | IOSTANDARD=LVCMOS18; # "FMC-LA22_P"
NET FMC_LA23_N LOC = D15 | IOSTANDARD=LVCMOS18; # "FMC-LA23_N"
NET FMC_LA23_P LOC = E15 | IOSTANDARD=LVCMOS18; # "FMC-LA23_P"
NET FMC_LA24_N LOC = A19 | IOSTANDARD=LVCMOS18; # "FMC-LA24_N"
NET FMC_LA24_P LOC = A18 | IOSTANDARD=LVCMOS18; # "FMC-LA24_P"
NET FMC_LA25_N LOC = C22 | IOSTANDARD=LVCMOS18; # "FMC-LA25_N"
NET FMC_LA25_P LOC = D22 | IOSTANDARD=LVCMOS18; # "FMC-LA25_P"
NET FMC_LA26_N LOC = E18 | IOSTANDARD=LVCMOS18; # "FMC-LA26_N"
NET FMC_LA26_P LOC = F18 | IOSTANDARD=LVCMOS18; # "FMC-LA26_P"
NET FMC_LA27_N LOC = D21 | IOSTANDARD=LVCMOS18; # "FMC-LA27_N"
NET FMC_LA27_P LOC = E21 | IOSTANDARD=LVCMOS18; # "FMC-LA27_P"
NET FMC_LA28_N LOC = A17 | IOSTANDARD=LVCMOS18; # "FMC-LA28_N"
NET FMC_LA28_P LOC = A16 | IOSTANDARD=LVCMOS18; # "FMC-LA28_P"
NET FMC_LA29_N LOC = C18 | IOSTANDARD=LVCMOS18; # "FMC-LA29_N"
NET FMC_LA29_P LOC = C17 | IOSTANDARD=LVCMOS18; # "FMC-LA29_P"
NET FMC_LA30_N LOC = B15 | IOSTANDARD=LVCMOS18; # "FMC-LA30_N"
NET FMC_LA30_P LOC = C15 | IOSTANDARD=LVCMOS18; # "FMC-LA30_P"
NET FMC_LA31_N LOC = B17 | IOSTANDARD=LVCMOS18; # "FMC-LA31_N"
NET FMC_LA31_P LOC = B16 | IOSTANDARD=LVCMOS18; # "FMC-LA31_P"
NET FMC_LA32_N LOC = A22 | IOSTANDARD=LVCMOS18; # "FMC-LA32_N"
NET FMC_LA32_P LOC = A21 | IOSTANDARD=LVCMOS18; # "FMC-LA32_P"
NET FMC_LA33_N LOC = B22 | IOSTANDARD=LVCMOS18; # "FMC-LA33_N"
NET FMC_LA33_P LOC = B21 | IOSTANDARD=LVCMOS18; # "FMC-LA33_P"
NET OTG_RESETN LOC = G17 | IOSTANDARD=LVCMOS18; # "OTG-RESETN"
#
# Пользовательские выводы кристалла, подключенные к DIP-переключателям
#
NET SW0 LOC = F22 | IOSTANDARD=LVCMOS18; # "SW0"
NET SW1 LOC = G22 | IOSTANDARD=LVCMOS18; # "SW1"
NET SW2 LOC = H22 | IOSTANDARD=LVCMOS18; # "SW2"
NET SW3 LOC = F21 | IOSTANDARD=LVCMOS18; # "SW3"
NET SW4 LOC = H19 | IOSTANDARD=LVCMOS18; # "SW4"
NET SW5 LOC = H18 | IOSTANDARD=LVCMOS18; # "SW5"
NET SW6 LOC = H17 | IOSTANDARD=LVCMOS18; # "SW6"
NET SW7 LOC = M15 | IOSTANDARD=LVCMOS18; # "SW7"
#
# Подключение выводов аналого-цифрового блока кристалла
#
NET XADC_AD0N_R LOC = E16; # "XADC-AD0N-R"
NET XADC_AD0P_R LOC = F16; # "XADC-AD0P-R"
NET XADC_AD8N_R LOC = D17; # "XADC-AD8N-R"
NET XADC_AD8P_R LOC = D16; # "XADC-AD8P-R"

Приведенный модуль временных и топологических ограничений в полном объеме также может быть непосредственно включен в состав проекта аппаратной части разрабатываемой системы. Для этого следует выбрать пункт Project основного меню Project Navigator, а затем в появившемся всплывающем меню выполнить команду Add Source или Add Copy of Source. Кроме того, с этой же целью можно воспользоваться кнопками быстрого доступа кнопка или кнопка, расположенными на оперативной панели управления, которые дублируют эти команды. Исполнение этих команд начинается с вывода стандартной диалоговой панели открытия файла, в которой нужно указать название и расположение требуемого файла ограничений *.UCF. При использовании команды Add Source (или кнопки кнопка) этот файл добавляется в состав текущего проекта аппаратной части разрабатываемой системы, но не переписывается в его рабочий каталог. Команда Add Copy of Source (или кнопка кнопка) выполняет аналогичную функцию и отличается только тем, что добавляемый файл *.UCF копируется в рабочий каталог текущего проекта. В процессе выполнения этих команд на экран выводится диалоговая панель Adding Source Files, вид которой приведен на рис. 42.

Вид диалоговой панели Adding Source Files

Рис. 42. Вид диалоговой панели Adding Source Files

Открывшаяся диалоговая панель позволяет выбрать процесс, для которого предназначен добавляемый модуль, и указать библиотеку, в состав которой он включается. Эта информация представлена в форме таблицы, которая расположена в центре диалоговой панели Adding Source Files. В первой колонке этой таблицы (с названием File Name) отображается идентификатор копируемого файла. Колонки с названиями Association и Library содержат поля выбора, которые позволяют указать ассоциируемый процесс и библиотеку для добавляемого модуля временных и топологических ограничений. По умолчанию файл *.UCF ассоциируется с процессом размещения и трассировки аппаратной части проектируемой микропроцессорной системы в кристалле (Implementation) и заносится в рабочую библиотеку текущего проекта (work). После нажатия клавиши OK в нижней части диалоговой панели Adding Source Files предоставляемый модуль временных и топологических ограничений добавляется в состав проекта аппаратной части разрабатываемой встраиваемой системы.

Далее необходимо воспользоваться встроенным HDL-редактором для изменения идентификаторов внешних цепей в этом файле UCF. В частности, для реализации проекта системы сбора и обработки данных в модуле временных и топологических ограничений, текст которого приведен выше, необходимо заменить названия цепей SW0–SW7 идентификаторами axi_gpio_0_GPIO_IO_pin(0) — axi_gpio_0_GPIO_IO_pin(7) соответственно. Выражения ограничений, которые определяют подключение внешних цепей к выводам кристалла, связанным с различными элементами отладочной платы ZedBoard, не используемыми в составе реализуемого проекта встраиваемой системы, целесообразно закомментировать, вставив символ # в начале соответствующих строк. Эти выражения могут потребоваться при дальнейшем расширении архитектуры разрабатываемой микропроцессорной системы.

Для вступления в силу всех изменений, выполненных в процессе редактирования модуля временных и топологических ограничений, необходимо сохранить файл *.UCF на диске, воспользовавшись командой Save из всплывающего меню File или кнопкой кнопка, расположенной на оперативной панели управления Project Navigator.

После завершения подготовки спецификации MHS и соответствующего файла временных и топологических ограничений можно перейти к следующему этапу проектирования, в результате выполнения которого должен быть сформирован список соединений аппаратной части встраиваемой микропроцессорной системы.

 

Формирование списка соединений аппаратной части разрабатываемой микропроцессорной системы

Этот этап проектирования включает в себя две фазы. В первой фазе осуществляется генерация модулей HDL-описаний в соответствии с подготовленной спецификацией аппаратной платформы проектируемой микропроцессорной системы. Вторая фаза представляет собой процедуру синтеза аппаратной части встраиваемой микропроцессорной системы, в процессе которой производится трансформация исходных модулей HDL-описания в список цепей (netlist), выполненный на низком логическом уровне.

Элементы низкоуровневого описания, формируемого в процессе синтеза, должны соответствовать архитектуре программируемой логики кристалла расширяемой процессорной платформы семейства Zynq‑7000 AP SoC, применяемого для реализации разрабатываемой встраиваемой системы. Синтезированный список цепей должен быть максимально адаптирован к ресурсам используемого кристалла, что обеспечивает его наиболее эффективное отображение средствами размещения и трассировки на физическом уровне. В процессе синтеза выполняется оптимизация полученного списка цепей в соответствии с выбранным критерием. Основным результатом фазы синтеза является формирование файла NGC, который представляет собой описание проекта аппаратной части разрабатываемой микропроцессорной системы на низком логическом уровне. Процедура синтеза выполняется теми средствами, которые были выбраны при определении параметров проекта с помощью опции Synthesis Tool. В качестве инструмента синтеза, применяемого по умолчанию, используются средства Xilinx Synthesis Tool (XST), которые являются составной частью систем автоматизированного проектирования серии Xilinx ISE Design Suite.

Этап генерации списка соединений аппаратной части разрабатываемой микропроцессорной системы выполняется в автоматическом режиме. Прежде чем непосредственно активизировать соответствующий процесс, следует проконтролировать и при необходимости установить требуемые значения параметров синтеза аппаратной части проектируемой встраиваемой системы, реализуемой на базе ресурсов программируемой логики PL кристалла семейства Zynq‑7000 AP SoC.

 

Установка параметров синтеза аппаратной части проектируемых встраиваемых микропроцессорных систем

Чтобы получить доступ к параметрам синтеза аппаратной части разрабатываемой микропроцессорной системы, вначале нужно во встроенной панели Hierarchy вкладки Design рабочей области Project Navigator выделить строку с названием исходного модуля описания верхнего уровня иерархии проекта. Далее необходимо во встроенной панели Processes щелчком левой кнопки мыши выделить строку Synthesize-XST, после чего нажать кнопку кнопка, расположенную на оперативной панели Project Navigator, или воспользоваться командой Properties контекстно-зависимого всплывающего меню, которое выводится при щелчке правой кнопкой мыши. В результате выполненных действий на экране монитора отображается диалоговая панель параметров синтеза, первоначальный вид которой показан на рис. 43.

Вид страницы Synthesis Options диалоговой панели параметров синтеза

Рис. 43. Вид страницы Synthesis Options диалоговой панели параметров синтеза

Эта диалоговая панель содержит три страницы:

  • Synthesis Options;
  • HDL Options;
  • Xilinx Specific Options.

Доступ к ним открывает список Category, расположенный в левой части рассматриваемой панели. Для того чтобы активизировать требуемую страницу этой диалоговой панели, достаточно выделить в списке Category строку с ее названием. Каждая из этих страниц содержит соответствующую группу (категорию) параметров, представленных в виде таблицы, которая содержит три колонки:

  • Switch Name;
  • Property Name;
  • Value.

В ячейках колонки Switch Name приводятся опции командной строки, устанавливающие значения соответствующих параметров синтеза. Ячейки второй колонки содержат названия параметров, относящихся к выбранной категории. В ячейках колонки Value отображаются значения соответствующих параметров синтеза. Чтобы изменить значение параметра, следует щелчком левой кнопки мыши активизировать соответствующее поле в этой колонке, а затем воспользоваться кнопкой управления выпадающим списком значений или, если параметр может принимать один из двух вариантов (вкл./выкл.), щелкнуть левой кнопкой мыши на поле индикатора состояния.

Содержание страниц диалоговой панели параметров синтеза зависит от выбранного языка описания HDL и семейства программируемых систем на кристалле. В последующих разделах статьи мы рассмотрим параметры синтеза для реализации аппаратной части разрабатываемых встраиваемых систем на базе кристаллов расширяемых процессорных платформ семейства Zynq‑7000 AP SoC. При этом основное внимание будет уделено параметрам синтеза исходных описаний, представленных на языке VHDL.

 

Описание параметров синтеза, представленных на странице Synthesis Options

Страница Synthesis Options объединяет параметры, предназначенные, в основном, для управления оптимизацией, выполняемой в процессе синтеза. Параметр Optimization Goal позволяет выбрать критерий оптимизации и может принимать одно из двух значений:

  • Speed;
  • Area.

Значение Speed устанавливает стратегию оптимизации, ориентированную на достижение максимального быстродействия проектируемой системы. При выборе значения Area оптимизация выполняется с целью минимизации используемой области (ресурсов) кристалла. По умолчанию для этого параметра установлено значение Speed.

Параметр Optimization Effort определяет уровень производимой оптимизации и имеет три возможных значения:

  • Normal;
  • High;
  • Fast.

Если задано значение Normal, то используются стандартные алгоритмы оптимизации (минимизации и разложения на элементарные операции). При выборе значения High выполняется дополнительная оптимизация с учетом особенностей архитектуры программируемой логики PL выбранного кристалла расширяемой процессорной платформы, что позволяет достигнуть более высоких результатов, но приводит к увеличению времени вычислений. Вариант Fast позволяет минимизировать время вычислений, выполняемых в процессе синтеза, за счет исключения некоторых алгоритмов оптимизации, применяемых при выборе значения Normal, которое предлагается по умолчанию для рассматриваемого параметра.

Параметр Power Reduction предоставляет возможность выполнения оптимизации в процессе синтеза аппаратной части разрабатываемой встраиваемой системы в соответствии с выбранным критерием, определяемым значением параметра Optimization Goal, и с учетом минимизации энергопотребления. При этом следует обратить внимание на то, что сокращение потребляемой мощности может достигаться за счет снижения уровня оптимизации по основному критерию. По умолчанию индикатор состояния параметра Power Reduction находится в выключенном положении, запрещающем учет минимизации энергопотребления в процессе оптимизации.

Значение параметра Use Synthesis Constraints File разрешает или запрещает использование файла ограничений в процессе синтеза. По умолчанию индикатор состояния этого параметра находится в положении «Включено», допускающем применение файла ограничений при синтезе аппаратной части проектируемой микропроцессорной системы.

Параметр Synthesis Constraints File предназначен для определения названия файла ограничений, используемого в процессе синтеза. Этот параметр доступен только при разрешающем значении опции Use Synthesis Constraints File. Название файла ограничений может быть введено непосредственно с клавиатуры после активизации поля редактирования значения этого параметра или выбрано при использовании стандартной диалоговой панели открытия файла, которая отображается при нажатии кнопки с пиктограммой в виде многоточия (…). Файл ограничений синтеза (не путать с файлом ограничений проекта *.UCF) может содержать информацию о параметрах синтеза отдельных элементов разрабатываемой системы, которые определяются в рассматриваемой диалоговой панели глобально для проекта в целом, а также о временных и топологических ограничениях, используемых программами трассировки. Учитывая, что ограничения для программы трассировки указываются в файле *.UCF, а собственно ограничения процесса синтеза чаще всего устанавливаются одинаковыми для всех элементов проекта с помощью диалоговой панели параметров синтеза, можно не указывать значение параметра Synthesis Constraints File.

Параметр Keep Hierarchy определяет возможность сохранения иерархической структуры проекта в процессе синтеза. В выпадающем списке возможных значений этого параметра представлено три варианта:

  • Yes;
  • No;
  • Soft.

Если для этого параметра выбрано значение Yes, то объекты, определенные в модулях HDL-описаний, сохраняются в процессе синтеза и не объединяются с остальной частью проекта. При выборе значения No иерархия проекта в процессе синтеза не сохраняется. Значение Soft используется в тех случаях, когда нужно сохранить иерархическую структуру аппаратной части разрабатываемой микропроцессорной системы только в процессе синтеза, но не при выполнении последующего этапа размещения и трассировки в кристалле.

Значение параметра Netlist Hierarchy определяет форму представления списка соединений (netlist) в итоговом файле NGC. Выпадающий список допустимых значений этого параметра содержит два варианта:

  • As Optimized;
  • Rebuilt.

При использовании варианта As Optimized, предлагаемого по умолчанию, список соединений записывается в файл *.NGC в той форме, в какой он был получен в результате выполненной оптимизации с учетом установленного значения параметра Keep Hierarchy. В случае выбора варианта Rebuilt итоговый список соединений представляется в иерархической форме независимо от выбранного значения параметра Keep Hierarchy.

Параметр Global Optimization Goal позволяет выбрать критерий глобальной оптимизации. В процессе синтеза проекта аппаратной части разрабатываемой системы, реализуемой на базе ресурсов программируемой логики кристаллов расширяемых процессорных платформ, производится два вида оптимизации:

  • оптимизация отдельных объектов и модулей;
  • глобальная оптимизация проекта в целом.

Список возможных значений параметра Global Optimization Goal включает в себя пять вариантов:

  • AllClockNets;
  • Inpad to Outpad;
  • Offset In Before;
  • Offset Out After;
  • Maximum Delay.

Значение AllClockNets устанавливает стратегию глобальной оптимизации, ориентированную на достижение максимальной тактовой частоты проектируемой системы. При выборе значения Inpad to Outpad целью оптимизации является минимизация задержек распространения сигналов от входных до выходных контактов через комбинационную логику кристалла. Значение Offset In Before задает режим оптимизации максимального времени запаздывания сигналов на маршрутах от входных контактов кристалла до информационных входов триггеров, по отношению к тактовому сигналу. При выборе значения Offset Out After оптимизируется максимальная задержка распространения выходных сигналов триггеров до выходных контактов кристалла относительно сигнала синхронизации. Значение Maximum Delay устанавливает в качестве критерия глобальной оптимизации минимизацию максимальной задержки распространения сигналов для всех цепей проекта. По умолчанию для параметра Global Optimization Goal предлагается вариант AllClockNets.

С помощью параметра Generate RTL Schematic предоставляется возможность формирования в процессе синтеза списка соединений (netlist) аппаратной части проектируемой системы на уровне RTL, который может затем отображаться с помощью схемотехнического редактора в наглядной форме (в виде принципиальной схемы). Выпадающий список возможных значений этого параметра содержит три варианта: YES, NO и ONLY. Значение YES, установленное по умолчанию, разрешает генерацию файла, содержащего список соединений аппаратной части разрабатываемой микропроцессорной системы на RTL-уровне. Этот файл имеет расширение NGR. При выборе варианта NO список соединений на RTL-уровне не создается. В случае установки значения ONLY процесс синтеза ограничивается только формированием RTL-представления аппаратной части разрабатываемой системы в виде файла *.NGR.

Параметр Read Cores разрешает или запрещает в процессе вычислений и оптимизации временных параметров проекта чтение соответствующей информации из файлов, содержащих описания используемых параметризированных модулей (Cores) в формате .EDIF или .NGC, .NGO. По умолчанию индикатор состояния этого параметра установлен в положение «Включено», что допускает чтение необходимых данных из указанных файлов.

С помощью параметра Cores Search Directories можно явно указать разделы, в которых будет производиться поиск файлов, содержащих описания параметризированных модулей в формате .EDIF или .NGC, .NGO. Названия требуемых каталогов, включающие полный путь доступа, могут быть введены непосредственно с клавиатуры после активизации поля редактирования значения этого параметра или выбраны при использовании стандартной диалоговой панели открытия файла, которая отображается на экране при нажатии кнопки с пиктограммой в виде многоточия (…). При указании нескольких разделов для поиска файлов описаний параметризированных модулей их названия отделяются друг от друга символом «|».

Параметр Write Timing Constraints управляет размещением временных ограничений в файле, содержащем результаты синтеза проекта аппаратной части разрабатываемой встраиваемой системы (.NGC). Эти временные ограничения учитываются как при синтезе, так и в процессе размещения и трассировки проекта в кристалле. По умолчанию индикатор состояния этого параметра находится в положении «Выключено», запрещающем запись временных ограничений в файл *.NGC.

Значение параметра Cross Clock Analysis разрешает или запрещает выполнение временного анализа совокупности связанных синхронных элементов, управляемых различными тактовыми сигналами, в процессе оптимизации, которая осуществляется на этапе синтеза аппаратной части проектируемой микропроцессорной системы. По умолчанию индикатор состояния этого параметра находится в выключенном положении, запрещающем проведение временного анализа указанных групп элементов в процессе синтеза аппаратной части разрабатываемой встраиваемой системы.

Параметр Hierarchy Separator позволяет выбрать символ, который используется в качестве разделителя при формировании идентификаторов элементов аппаратной части разрабатываемой микропроцессорной системы в соответствии с иерархической структурой проекта. Выпадающий список возможных значений этого параметра содержит два элемента: символ подчеркивания “_” и “/”. По умолчанию в качестве разделителя используется символ “/”.

Параметр Bus Delimiter определяет формат записи данных векторного типа (массивов) в списке соединений (netlist), формируемом в результате выполнения этапа синтеза аппаратной части проектируемой микропроцессорной системы. В выпадающем списке допустимых значений этого параметра представлено четыре вида скобок, используемых для записи векторов (массивов): <>, [], {}, (). По умолчанию используются угловые скобки <>.

Параметр LUT-FF Pairs Utilization Ratio позволяет задать размер области (объем физических ресурсов) кристалла в процентном отношении, в пределах которой должна выполняться временная оптимизация в процессе синтеза аппаратной части разрабатываемой встраиваемой системы. По умолчанию для этого параметра используется значение, равное 100%.

Значение параметра BRAM Utilization Ratio определяет максимальное количество модулей блочной памяти кристалла Block RAM, которое может использоваться в процессе синтеза аппаратной части проектируемой микропроцессорной системы. Требуемое значение задается в виде соответствующего числа процентов от максимального объема ресурсов блочной памяти, присутствующей в составе программируемой логики PL выбранного кристалла расширяемой процессорной платформы. По умолчанию для этого параметра используется значение, равное 100%.

С помощью параметра DSP Utilization Ratio устанавливается предельное количество аппаратных блоков цифровой обработки сигналов, которое может использоваться в процессе синтеза аппаратной части разрабатываемой встраиваемой системы. Значение этого параметра указывается в процентном отношении к максимальному числу данных аппаратных модулей, представленных в выбранном кристалле. По умолчанию этот параметр принимает значение, равное 100%.

Значение параметра Case определяет, символами какого регистра (верхнего или нижнего) записываются идентификаторы цепей и экземпляров компонентов в файле, полученном в результате выполнения процесса синтеза. Выпадающий список возможных значений этого параметра включает в себя три варианта: Maintain, Lower и Upper. Значение Maintain, установленное по умолчанию, предписывает сохранять текущий регистр символов, используемый в исходных модулях описания аппаратной части разрабатываемой встраиваемой системы. При выборе варианта Lower идентификаторы цепей и экземпляров компонентов в итоговом файле будут записаны символами нижнего регистра. Чтобы использовать символы верхнего регистра для записи этих идентификаторов, следует для рассматриваемого параметра установить значение Upper.

С помощью параметра Work Directory указывается название рабочего каталога, в котором сохраняются промежуточные результаты компиляции исходных HDL-файлов описания аппаратной части проектируемой микропроцессорной системы. По умолчанию в рабочей папке проекта средствами синтеза автоматически создается каталог XST, который и рекомендуется использовать. Если необходимо выбрать другой каталог, то следует активизировать поле выбора значения этого параметра, расположив на нем курсор и щелкнув левой кнопкой мыши. Затем следует нажать кнопку с пиктограммой в виде многоточия (…), после чего воспользоваться стандартной панелью навигации по дискам компьютера.

Значение параметра HDL INI File содержит название INI-файла, в котором устанавливается соответствие HDL-библиотек для текущего проекта. Требуемый идентификатор может быть указан с помощью клавиатуры или выбран из списка, отображаемого в стандартной диалоговой панели открытия файла, которая выводится при нажатии кнопки с пиктограммой в виде многоточия (…).

Параметр Library for Verilog Sources используется в смешанных проектах разрабатываемых систем, в состав которых входят модули исходного описания как на языке VHDL, так и на языке Verilog. Значение этого параметра позволяет указать библиотеку VHDL, отличную от рабочей библиотеки, для модулей исходного описания на языке Verilog.

Параметр Library Search Order позволяет указать название файла с расширением .lso, который определяет требуемую последовательность компиляции файлов исходного описания аппаратной части разрабатываемой встраиваемой системы. Название этого файла задается теми же способами, что и идентификатор INI-файла в параметре HDL INI File. Если значение параметра Library Search Order не задано, то автоматически создается файл с расширением .lso, идентификатор которого совпадает с названием проекта.

С помощью параметра Verilog Include Directories задается название каталога, в котором расположены включаемые модули, используемые в исходных описаниях аппаратной части проектируемой микропроцессорной системы на языке Verilog. Полное название требуемого каталога указывается теми же способами, что и значение параметра Work Directory, рассмотренного выше.

Опция Generics, Parameters позволяет определить или переопределить значения настраиваемых параметров (Generic в VHDL-описании или Parameter в Verilog-описании) в модуле исходного описания верхнего уровня иерархии проекта. В процессе синтеза аппаратной части разрабатываемой встраиваемой системы значения соответствующих настраиваемых параметров (Generic/Parameter) заменяются значениями, указанными в поле редактирования Generics, Parameters. Если необходимо определить или переопределить значения нескольких параметров, то соответствующие выражения отделяются друг от друга символом «|».

Параметр Verilog Macros предназначен для определения или переопределения Verilog-макроса, используемого в составе HDL-описания аппаратной части проектируемой микропроцессорной системы. В поле редактирования значения этого параметра могут быть указаны несколько макросов, которые отделяются друг от друга символом «|». При выполнении этапа синтеза макросы, которые перечислены в поле редактирования, определяющем значение параметра Verilog Macros, заменяют соответствующие макросы в модуле исходного описания аппаратной части разрабатываемой встраиваемой системы.

Значение параметра Other XST Command Line Options позволяет определить дополнительные опции командной строки для средств синтеза XST.

Продолжение следует.

Статья опубликована в журнале «Компоненты и технологии» №6’2014.

Литература
  1. Зотов В. Проектирование цифровых устройств на основе ПЛИС фирмы Xilinx в САПР WebPack ISE. М.: Горячая линия – Телеком, 2003.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *