Что такое хороший "шаблонный" скрипт синтеза Yosys?
Я хочу написать свой собственный скрипт синтеза Yosys. Что такое хороший шаблон для начала? Руководство и веб-страница содержат различные примеры, но не "авторитетный" пример Hello World.
2 ответа
synth
Команда запускает рекомендуемый сценарий для задач синтеза общего назначения. Увидеть help synth
для полного списка команд, вызываемых этой мета-командой.
Ваш сценарий должен либо позаимствовать у synth
или просто позвоните synth
чтобы сделать вещи общего назначения. Многие сценарии называют synth -run coarse
для крупнозернистой части синтеза, а затем продолжить с пользовательской последовательностью команд для синтеза мелкозернистых. Смотри например synth_xilinx
,
Для синтеза ASIC в библиотеку в свободном формате используйте следующий сценарий в качестве отправной точки:
# read design
read_verilog mydesign.v
# generic synthesis
synth -top mytop
# mapping to mycells.lib
dfflibmap -liberty mycells.lib
abc -liberty mycells.lib
clean
# write synthesized design
write_verilog synth.v
Менее агрессивный набор оптимизаций часто требуется для сценариев, которые выполняют формальную проверку. В этом случае следующая последовательность команд обычно является хорошей отправной точкой для части "синтеза" формального потока проверки:
hierarchy [-check -top <top-module>]
proc; opt; memory [-nomap]; opt -fast; check -assert
Не забудьте поместить файлы mycells.lib и mycells.v в каталог, где вы вызываете yosys. Хороший пример - на сайте yosys GitHub в каталоге examples / cmos, где они разместили примеры файлов cmos_cell.lib и cmos_cell.v.
read_verilog counter.v
read_verilog -lib cmos_cells.v
proc;; memory;; techmap;;
dfflibmap -liberty cmos_cells.lib
abc -liberty cmos_cells.lib;;
write_verilog synth.v
(Кроме того, если вы хотите получить более понятный вывод для синтеза, вы можете изменить файлы.lib и.v, чтобы изменить вентили NAND и NOR на вентили AND и OR.)