11add_library (yosys_passes_pmgen INTERFACE )
22
3- function (pmgen_command _name _path)
3+ set (PMGEN_TARGETS "" )
4+
5+ function (pmgen_command _name _path)
6+ set (GENERATED_HEADER ${yosys_BINARY_DIR} /${_path} /${_name} _pm.h)
7+ set (CUSTOM_TARGET_NAME ${_name} _pm_gen)
8+
49 add_custom_command (
5- OUTPUT ${yosys_BINARY_DIR} / ${_path} / ${_name} _pm.h
6- COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR} /pmgen.py -o ${yosys_BINARY_DIR} / ${_path} / ${_name} _pm.h -p ${_name} ${yosys_SOURCE_DIR} /${_path} /${_name} .pmg
10+ OUTPUT ${GENERATED_HEADER}
11+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR} /pmgen.py -o ${GENERATED_HEADER} -p ${_name} ${yosys_SOURCE_DIR} /${_path} /${_name} .pmg
712 DEPENDS ${CMAKE_CURRENT_SOURCE_DIR} /pmgen.py ${yosys_SOURCE_DIR} /${_path} /${_name} .pmg
813 COMMENT "Generating ${_path} /${_name} _pm.h..."
914 )
15+ add_custom_target (${CUSTOM_TARGET_NAME} DEPENDS ${GENERATED_HEADER} )
16+ list (APPEND PMGEN_TARGETS ${CUSTOM_TARGET_NAME} )
1017endfunction ()
1118
1219pmgen_command(test_pmgen passes/pmgen)
@@ -21,9 +28,10 @@ pmgen_command(microchip_dsp_CREG techlibs/microchip)
2128pmgen_command(microchip_dsp_cascade techlibs/microchip)
2229pmgen_command(xilinx_srl techlibs/xilinx)
2330
31+ set (PEEPOPT_HEADER ${yosys_BINARY_DIR} /passes/opt/peepopt_pm.h)
2432add_custom_command (
25- OUTPUT ${yosys_BINARY_DIR} /passes/opt/peepopt_pm.h
26- COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR} /pmgen.py -o ${yosys_BINARY_DIR} /passes/opt/peepopt_pm.h -p peepopt
33+ OUTPUT ${PEEPOPT_HEADER}
34+ COMMAND ${Python3_EXECUTABLE} ${CMAKE_CURRENT_SOURCE_DIR} /pmgen.py -o ${PEEPOPT_HEADER} -p peepopt
2735 ${yosys_SOURCE_DIR} /passes/opt/peepopt_shiftmul_right.pmg
2836 ${yosys_SOURCE_DIR} /passes/opt/peepopt_shiftmul_left.pmg
2937 ${yosys_SOURCE_DIR} /passes/opt/peepopt_shiftadd.pmg
@@ -39,9 +47,13 @@ add_custom_command(
3947 ${yosys_SOURCE_DIR} /passes/opt/peepopt_formal_clockgateff.pmg
4048 COMMENT "Generating passes/pmgen/peepopt_pm.h..."
4149)
50+ add_custom_target (peepopt_pm_gen DEPENDS ${PEEPOPT_HEADER} )
51+ list (APPEND PMGEN_TARGETS peepopt_pm_gen)
52+
53+
4254
4355target_sources (yosys_passes_pmgen INTERFACE
44- test_pmgen.cc
56+ ${CMAKE_CURRENT_SOURCE_DIR} / test_pmgen.cc
4557 ${yosys_SOURCE_DIR} /techlibs/ice40/ice40_dsp.cc
4658 ${yosys_SOURCE_DIR} /techlibs/ice40/ice40_wrapcarry.cc
4759 ${yosys_SOURCE_DIR} /techlibs/xilinx/xilinx_dsp.cc
@@ -50,22 +62,13 @@ target_sources(yosys_passes_pmgen INTERFACE
5062 ${yosys_SOURCE_DIR} /techlibs/xilinx/xilinx_srl.cc
5163)
5264
53- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /passes/pmgen/test_pmgen_pm.h)
54-
55- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/ice40/ice40_dsp_pm.h)
56- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/ice40/ice40_wrapcarry_pm.h)
57-
58- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/xilinx/xilinx_dsp_pm.h)
59- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/xilinx/xilinx_dsp48a_pm.h)
60- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/xilinx/xilinx_dsp_CREG_pm.h)
61- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/xilinx/xilinx_dsp_cascade_pm.h)
62-
63- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/microchip/microchip_dsp_pm.h)
64- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/microchip/microchip_dsp_CREG_pm.h)
65- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/microchip/microchip_dsp_cascade_pm.h)
66-
67- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /passes/opt/peepopt_pm.h)
68-
69- target_sources (yosys_passes_pmgen PUBLIC ${yosys_BINARY_DIR} /techlibs/xilinx/xilinx_srl_pm.h)
65+ target_include_directories (yosys_passes_pmgen INTERFACE
66+ ${yosys_BINARY_DIR} /passes/pmgen
67+ ${yosys_BINARY_DIR} /techlibs/ice40
68+ ${yosys_BINARY_DIR} /techlibs/xilinx
69+ ${yosys_BINARY_DIR} /techlibs/microchip
70+ ${yosys_BINARY_DIR} /passes/opt
71+ )
7072
71- target_link_libraries (yosys PUBLIC yosys_passes_pmgen)
73+ add_dependencies (yosys_passes_pmgen ${PMGEN_TARGETS} )
74+ target_link_libraries (yosys PUBLIC yosys_passes_pmgen)
0 commit comments