Есть ли команда для 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, на которые неявно ссылаются.