Как выводить файлы зависимостей в Yosys (эквивалент gcc -MMD)?

Есть ли команда для Yosys, которая создает файл зависимостей, эквивалентный параметру gcc -MMD? (Этот параметр выводит небольшой фрагмент Makefile, в котором перечислены все файлы, включенные в модуль компиляции. См. Использование g++ с -MMD в makefile для автоматического создания зависимостей)

Предыстория: я пытаюсь создать Makefile, который синтезирует проект Verilog с помощью Yosys. В проекте используется один верхний файл Verilog, из которого включены другие зависимости Verilog. Для этого я использую следующее правило make, которое работает очень хорошо:

$(HARDWARE_BLIF_FILES): $(SUITE_OBJ_DIR)/%.blif : $(SUITE_SUPPORT_HARDWARE_DIR)/%.v
    $(HARDWARE_YOSYS) -q -p 'read_verilog -I/path/to/hwlib $<' -p 'synth_ice40 -blif $@'

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


Благодаря новой опции yosys -E, добавленной Клиффордом, я смог изменить приведенное выше правило Makefile следующим образом:

-include $(HARDWARE_BLIF_DEP_FILES)

$(HARDWARE_BLIF_FILES): $(SUITE_OBJ_DIR)/%.blif : $(SUITE_SUPPORT_HARDWARE_DIR)/%.v
    $(HARDWARE_YOSYS) -q -E $(SUITE_OBJ_DIR)/$*.v.d -p 'read_verilog -I/path/to/hwlib $<' -p 'synth_ice40 -blif $@'

Теперь файл blif создается всякий раз, когда изменяется один из файлов Verilog, на которые неявно ссылаются.


person Alexander    schedule 08.12.2017    source источник
comment
Привет, Александр, я пытаюсь реализовать это в своем Makefile. Ваш проект общедоступен на Github, не могли бы вы поделиться ссылкой? Я пытаюсь создать файл .v.d из файла top.v. Нужно ли мне явно добавлять макросы `include в каждый файл module.v, чтобы yosys -E мог их обнаружить?   -  person Alexandre Dumont    schedule 09.05.2020


Ответы (1)


Подобная функция теперь добавлена ​​в Yosys git head (a96c775). Просто добавьте -E <depsfile> к вызову yosys, чтобы сгенерировать файл зависимостей.

person CliffordVienna    schedule 07.01.2018
comment
Привет, Клэр, когда я запускаю yosys -E top.v.d top.v, сгенерированный файл начинается с :, за которым следует имя всех явно включенных модулей (.v/.vh...). Разве не должно быть что-то слева от : ? На LHS должна быть цель, верно? - person Alexandre Dumont; 09.05.2020