Выпуск #6/2017
А.Строгонов, П.Городков
Реализация Verilog-проектов в базисе ПЛИС Intel FPGA с использованием инструмента синтеза YOSYS
Реализация Verilog-проектов в базисе ПЛИС Intel FPGA с использованием инструмента синтеза YOSYS
Просмотры: 2806
Инструмент синтеза с открытым исходным кодом Yosys широко используется при проектировании заказных БИС и ПЛИС. Рассмотрим использование Yosys для синтеза Verilog-проекта в ПЛИС Intel FPGA (Altera) серии Cyclone IV и покажем, как посредством формирования VQM-файла без использования мегафункций САПР Quartus Prime можно реализовывать цифровые устройства в базисе современных ПЛИС.
УДК 621.3.049
ВАК 05.27.00
DOI: 10.22184/1992-4178.2017.166.6.100.106
УДК 621.3.049
ВАК 05.27.00
DOI: 10.22184/1992-4178.2017.166.6.100.106
Теги: cyclone iv intel fpga megafunctions synthesis tool verilog project verilog-проект vqm file vqm-файл yosys инструмент синтеза мегафункции плис intel fpga
VQM-файл обеспечивает связь между инструментом синтеза Yosys и САПР Quartus Prime. В рамках статьи под термином "синтез цифровых устройств" понимается автоматическое преобразование проекта с уровня регистровых передач (RTL) на уровень вентилей технологического базиса ПЛИС.[1][2]
VQM-файл – это представление RTL-проекта на "атомном" уровне с использованием сетевых примитивов технологического списка межсоединений (netlist) и мегафункций конкретной серии ПЛИС. Например, наиболее важные примитивы ПЛИС серии Stratix IV: lcell_comb (таблицы перекодировок, LUT и сумматоры), dffeas (триггер, тактируемый фронтом синхросигнала), mac_mult (умножитель MAC-блока), mac_out (аккумулятор MAC-блока), ram_block (секция ОЗУ). В САПР Quartus II VQM-файл можно извлечь как на этапе анализа и синтеза, так и после полной компиляции с учетом размещения и трассировки.
Широко используемый инструмент синтеза Synplify Pro от Synplicity позволяет с помощью VQM-файлов технологически отображать VHDL- и Verilog-проекты (с применением мегафункций в виде созданных в Quartus II "черных ящиков") в базис ПЛИС компании Altera. Synplify Pro может также выполнять ресинтез технологического отображения с использованием специального стиля языка Verilog – Technology Independent Coding Styles – в вентили и последующий синтез логики в базисе ПЛИС с получением VQM-файла на основе своих алгоритмов. Это позволяет в некоторых случаях уменьшить количество используемых логических ресурсов (рис.1). Подключение инструмента синтеза Synplify Pro в САПР Quartus II выполняется в меню Assigments/Settings/EDA Tool Settings/Design Entry Synthesis.
Рассмотрим реализацию Verilog-проекта в САПР Quartus Prime версии 16.1 Lite с использованием ПЛИС серии Cyclone IV GX (EP4CGX150DF31C7). На сайте github.com по адресу https://github.com/cliffordwolf/yosys/tree/master/examples/intel представлены примеры проектов для ПЛИС Intel FPGA серий MAX10 и Cyclone IV (рис.2). Исходный код проекта взят с сайта www.asic-world.com (http://www.asic-world.com/examples/verilog/lfsr.html).
В качестве примера рассмотрим реализацию регистра сдвига с линейной обратной связью (Llinear Feedback Shift Register – LFSR), который представляет собой регистр сдвига битовых слов, у которого значение входного (вдвигаемого) бита равно линейной булевой функции от значений остальных битов регистра до сдвига. LFSR-регистр применяется для генерации псевдослучайных последовательностей битов. На рис.3 представлен Verilog-код LFSR-регистра, а на рис.4 – испытательный стенд (test bench) для него. На рис.5 показано RTL-представление LFSR-регистра на этапе анализа и синтеза, а на рис.6 – после полной компиляции на этапе размещения и трассировки в базисе ПЛИС EP4CGX150DF31C7.
Для того чтобы реализовывать Verilog-проекты в ПЛИС серий Cyclone IV GX и MAX10, требуется новая версия Yosys 0.7+194, поэтому вначале следует обновить Yosys до версии 0.7+194 с сайта github.com/cliffordwolf/yosys (см. рис.2). В папке ~/yosys/examples/intel/asicworld_lfsr нужно запустить скрипт runme_presynth, который состоит из двух команд (рис.7). На рис.8 отображается функциональное моделирование с использованием симулятора компилятора Icarus-Verilog (устанавливается дополнительно с сайта http://iverilog.icarus.com/). По команде iverilog -o Icarus-Verilog транслирует Verilog-код в файл специального формата для симуляции проекта. После выполнения этой команды создается файл presynth, который будет использоваться для симуляции по команде vpp.
Убедившись в правильности функционирования LFSR-регистра, запускаем скрипт run_cycloneiv (рис.9). На рис.10 показан фрагмент отработки этого скрипта. При этом создается VQM-файл с именем top (top.vqm) (рис.11). Для корректной работы в САПР Quartus этот файл необходимо переименовать в lfsr_updown (lfsr_updown.vqm) или отредактировать скрипт (имя файла должно совпадать с названием модуля).
На рис.12а показано RTL-представление, построенное с использованием VQM-файла, сгенерированного инструментом Yosys в Quartus на стадии анализа и синтеза, а на рис.12б – RTL-представление на стадии размещения и трассировки (после полной компиляции) в ПЛИС EP4CGX150DF31C7. В частности, на рисунке видно, что сетевой примитив CYCLONEIV_LCELL_COMB (условный номер yosys_30_) списка соединений VQM-файла, сгенерированного Yosys, преобразуется в примитив LOGIC_CELL_COMB списка соединений на стадии размещения и трассировки. Рис.13 отражает задействованные логические ресурсы ПЛИС EP4CGX150DF31C7, упакованные в кластеры из адаптивных логических модулей с указанием месторасположения на кристалле (выделены синим).
В таблице приведены общие сведения по числу задействованных ресурсов ПЛИС Altera EP4CGX150DF31C7 и временные параметры модели slow-model TimeQuest-анализа (напряжение питания ядра 1 200 мВ, температура 85 °C) без использования файла временных ограничений, заданных пользователем. Сравнивая значения, представленные в таблице, можно сделать вывод, что инструмент синтеза QIS САПР Quartus Prime более эффективно упаковывает комбинационную логику проекта, а число триггеров в обоих случаях остается одинаковым, что объясняется дополнительной оптимизацией, которую выполняет САПР Quartus.
В заключение остается отметить, что с помощью программного инструмента для Verilog-синтеза с открытым программным кодом (в данном случае инструмента синтеза Yosys новой версии 0.7+194) можно реализовывать цифровые устройства и в базис самых современных индустриальных ПЛИС Intel FPGA серии MAX 10 посредством формирования VQM-файла. Для отладки проектов можно использовать плату DE2i‑150.
ЛИТЕРАТУРА
1. Строгонов А., Цыбин С., Городков П. Использование синтезатора Synplicity Synplify для разработки проектов цифровых устройств в Altera Quartus II // Компоненты и технологии, 2016, № 5. C. 96–100.
2. Строгонов А., Городков П. Реализация Verilog-проектов в базисе заказных БИС и ПЛИС с использованием инструмента синтеза Yosys // ЭЛЕКТРОНИКА: Наука, Технология, Бизнес. 2017. № 5. C. 98–109.
3. Строгонов А., Городков П. Реализация Verilog-проектов в базисе индустриальных ПЛИС Xilinx с применением синтезатора Yosys // Компоненты и технологии. 2017. № 6. C. 104–107.
4. Строгонов А., Городков П. Реализация Verilog-проектов в базисе академических ПЛИС с применением САПР VTR7.0 // Компоненты и технологии. 2017. № 5. C. 12–17.
5. Строгонов А., Городков П. Программные средства с открытым исходным кодом для проектирования цифровых устройств в базисах БИС и ПЛИС // Компоненты и технологии. 2017. № 3. C. 88–97.
6. http://www.clifford.at/yosys/
7. https://github.com/cliffordwolf/yosys
VQM-файл – это представление RTL-проекта на "атомном" уровне с использованием сетевых примитивов технологического списка межсоединений (netlist) и мегафункций конкретной серии ПЛИС. Например, наиболее важные примитивы ПЛИС серии Stratix IV: lcell_comb (таблицы перекодировок, LUT и сумматоры), dffeas (триггер, тактируемый фронтом синхросигнала), mac_mult (умножитель MAC-блока), mac_out (аккумулятор MAC-блока), ram_block (секция ОЗУ). В САПР Quartus II VQM-файл можно извлечь как на этапе анализа и синтеза, так и после полной компиляции с учетом размещения и трассировки.
Широко используемый инструмент синтеза Synplify Pro от Synplicity позволяет с помощью VQM-файлов технологически отображать VHDL- и Verilog-проекты (с применением мегафункций в виде созданных в Quartus II "черных ящиков") в базис ПЛИС компании Altera. Synplify Pro может также выполнять ресинтез технологического отображения с использованием специального стиля языка Verilog – Technology Independent Coding Styles – в вентили и последующий синтез логики в базисе ПЛИС с получением VQM-файла на основе своих алгоритмов. Это позволяет в некоторых случаях уменьшить количество используемых логических ресурсов (рис.1). Подключение инструмента синтеза Synplify Pro в САПР Quartus II выполняется в меню Assigments/Settings/EDA Tool Settings/Design Entry Synthesis.
Рассмотрим реализацию Verilog-проекта в САПР Quartus Prime версии 16.1 Lite с использованием ПЛИС серии Cyclone IV GX (EP4CGX150DF31C7). На сайте github.com по адресу https://github.com/cliffordwolf/yosys/tree/master/examples/intel представлены примеры проектов для ПЛИС Intel FPGA серий MAX10 и Cyclone IV (рис.2). Исходный код проекта взят с сайта www.asic-world.com (http://www.asic-world.com/examples/verilog/lfsr.html).
В качестве примера рассмотрим реализацию регистра сдвига с линейной обратной связью (Llinear Feedback Shift Register – LFSR), который представляет собой регистр сдвига битовых слов, у которого значение входного (вдвигаемого) бита равно линейной булевой функции от значений остальных битов регистра до сдвига. LFSR-регистр применяется для генерации псевдослучайных последовательностей битов. На рис.3 представлен Verilog-код LFSR-регистра, а на рис.4 – испытательный стенд (test bench) для него. На рис.5 показано RTL-представление LFSR-регистра на этапе анализа и синтеза, а на рис.6 – после полной компиляции на этапе размещения и трассировки в базисе ПЛИС EP4CGX150DF31C7.
Для того чтобы реализовывать Verilog-проекты в ПЛИС серий Cyclone IV GX и MAX10, требуется новая версия Yosys 0.7+194, поэтому вначале следует обновить Yosys до версии 0.7+194 с сайта github.com/cliffordwolf/yosys (см. рис.2). В папке ~/yosys/examples/intel/asicworld_lfsr нужно запустить скрипт runme_presynth, который состоит из двух команд (рис.7). На рис.8 отображается функциональное моделирование с использованием симулятора компилятора Icarus-Verilog (устанавливается дополнительно с сайта http://iverilog.icarus.com/). По команде iverilog -o Icarus-Verilog транслирует Verilog-код в файл специального формата для симуляции проекта. После выполнения этой команды создается файл presynth, который будет использоваться для симуляции по команде vpp.
Убедившись в правильности функционирования LFSR-регистра, запускаем скрипт run_cycloneiv (рис.9). На рис.10 показан фрагмент отработки этого скрипта. При этом создается VQM-файл с именем top (top.vqm) (рис.11). Для корректной работы в САПР Quartus этот файл необходимо переименовать в lfsr_updown (lfsr_updown.vqm) или отредактировать скрипт (имя файла должно совпадать с названием модуля).
На рис.12а показано RTL-представление, построенное с использованием VQM-файла, сгенерированного инструментом Yosys в Quartus на стадии анализа и синтеза, а на рис.12б – RTL-представление на стадии размещения и трассировки (после полной компиляции) в ПЛИС EP4CGX150DF31C7. В частности, на рисунке видно, что сетевой примитив CYCLONEIV_LCELL_COMB (условный номер yosys_30_) списка соединений VQM-файла, сгенерированного Yosys, преобразуется в примитив LOGIC_CELL_COMB списка соединений на стадии размещения и трассировки. Рис.13 отражает задействованные логические ресурсы ПЛИС EP4CGX150DF31C7, упакованные в кластеры из адаптивных логических модулей с указанием месторасположения на кристалле (выделены синим).
В таблице приведены общие сведения по числу задействованных ресурсов ПЛИС Altera EP4CGX150DF31C7 и временные параметры модели slow-model TimeQuest-анализа (напряжение питания ядра 1 200 мВ, температура 85 °C) без использования файла временных ограничений, заданных пользователем. Сравнивая значения, представленные в таблице, можно сделать вывод, что инструмент синтеза QIS САПР Quartus Prime более эффективно упаковывает комбинационную логику проекта, а число триггеров в обоих случаях остается одинаковым, что объясняется дополнительной оптимизацией, которую выполняет САПР Quartus.
В заключение остается отметить, что с помощью программного инструмента для Verilog-синтеза с открытым программным кодом (в данном случае инструмента синтеза Yosys новой версии 0.7+194) можно реализовывать цифровые устройства и в базис самых современных индустриальных ПЛИС Intel FPGA серии MAX 10 посредством формирования VQM-файла. Для отладки проектов можно использовать плату DE2i‑150.
ЛИТЕРАТУРА
1. Строгонов А., Цыбин С., Городков П. Использование синтезатора Synplicity Synplify для разработки проектов цифровых устройств в Altera Quartus II // Компоненты и технологии, 2016, № 5. C. 96–100.
2. Строгонов А., Городков П. Реализация Verilog-проектов в базисе заказных БИС и ПЛИС с использованием инструмента синтеза Yosys // ЭЛЕКТРОНИКА: Наука, Технология, Бизнес. 2017. № 5. C. 98–109.
3. Строгонов А., Городков П. Реализация Verilog-проектов в базисе индустриальных ПЛИС Xilinx с применением синтезатора Yosys // Компоненты и технологии. 2017. № 6. C. 104–107.
4. Строгонов А., Городков П. Реализация Verilog-проектов в базисе академических ПЛИС с применением САПР VTR7.0 // Компоненты и технологии. 2017. № 5. C. 12–17.
5. Строгонов А., Городков П. Программные средства с открытым исходным кодом для проектирования цифровых устройств в базисах БИС и ПЛИС // Компоненты и технологии. 2017. № 3. C. 88–97.
6. http://www.clifford.at/yosys/
7. https://github.com/cliffordwolf/yosys
Отзывы читателей