-
Notifications
You must be signed in to change notification settings - Fork 113
/
Copy pathCMakeLists.txt
48 lines (39 loc) · 1.84 KB
/
CMakeLists.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
add_subdirectory(tiles)
add_file_target(FILE arch.xml SCANNER_TYPE xml)
get_target_property_required(PYTHON3 env PYTHON3)
set(ICEBOX_TIMING ${f4pga-arch-defs_SOURCE_DIR}/third_party/icestorm/icefuzz/timings.py)
set(CLEAN_ICEBOX_TIMING cleaned_timing.txt)
set(TIMING_TXT_FILE ${ICEBOX_SHARE}/timings_hx1k.txt)
set(SDF_FILE timings_hx1k.sdf)
add_file_target(FILE ${SDF_FILE} GENERATED)
get_file_target(SDF_FILE_TARGET ${SDF_FILE})
add_custom_command(
OUTPUT ${SDF_FILE}
COMMAND grep -v \\* ${TIMING_TXT_FILE} > ${CLEAN_ICEBOX_TIMING}
COMMAND ${PYTHON3} ${ICEBOX_TIMING} -t ${CLEAN_ICEBOX_TIMING} -s > ${SDF_FILE}
BYPRODUCTS ${CLEAN_ICEBOX_TIMING}
DEPENDS ${TIMING_TXT_FILE} ${ICEBOX_TIMING} ${PYTHON3}
)
add_custom_target(
ice40_sdf_target
DEPENDS ${SDF_FILE}
)
get_target_property_required(ICE40_IMPORT_TIMING ice40_import_timing_deps ICE40_IMPORT_TIMING)
set(TIMING_IMPORT_CMD "${PYTHON3} ${ICE40_IMPORT_TIMING} --read_sdf ${SDF_FILE} --write_arch_xml /dev/stdout --read_arch_xml /dev/stdin")
set(TIMING_IMPORT_DEPS ${SDF_FILE_TARGET})
set(UPDATE_TILES "${f4pga-arch-defs_SOURCE_DIR}/utils/update_arch_tiles.py")
set(UPDATE_TILES_CMD "${PYTHON3} ${UPDATE_TILES} --in_xml /dev/stdin --out_xml /dev/stdout")
get_file_target(UPDATE_TILES_TARGET ${UPDATE_TILES})
set(UPDATE_TILES_DEPS ${UPDATE_TILES_TARGET})
define_device_type(
DEVICE_TYPE top-routing-virt
ARCH ice40
ARCH_XML arch.xml
SCRIPT_OUTPUT_NAME tiles timing
SCRIPT_DEPS UPDATE_TILES_DEPS TIMING_IMPORT_DEPS
SCRIPTS UPDATE_TILES_CMD TIMING_IMPORT_CMD
)
add_dependencies(ice40_top-routing-virt_arch ice40_import_timing_deps ice40_sdf_target)
get_target_property_required(VIRT_DEVICE_MERGED_FILE top-routing-virt DEVICE_MERGED_FILE)
get_file_target(DEVICE_MERGED_FILE_TARGET ${VIRT_DEVICE_MERGED_FILE})
add_dependencies(${DEVICE_MERGED_FILE_TARGET} ice40_import_timing_deps ice40_sdf_target)