-
Notifications
You must be signed in to change notification settings - Fork 108
/
install.cmake
119 lines (100 loc) · 4.52 KB
/
install.cmake
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
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
function(DEFINE_XC_TOOLCHAIN_TARGET)
set(options)
set(oneValueArgs ARCH CONV_SCRIPT SYNTH_SCRIPT UTILS_SCRIPT ROUTE_CHAN_WIDTH)
set(multiValueArgs VPR_ARCH_ARGS)
cmake_parse_arguments(
DEFINE_XC_TOOLCHAIN_TARGET
"${options}"
"${oneValueArgs}"
"${multiValueArgs}"
"${ARGN}"
)
get_target_property_required(VPR env VPR)
get_target_property_required(GENFASM env GENFASM)
set(ARCH ${DEFINE_XC_TOOLCHAIN_TARGET_ARCH})
set(VPR_ARCH_ARGS ${DEFINE_XC_TOOLCHAIN_TARGET_VPR_ARCH_ARGS})
set(ROUTE_CHAN_WIDTH ${DEFINE_XC_TOOLCHAIN_TARGET_ROUTE_CHAN_WIDTH})
list(JOIN VPR_BASE_ARGS " " VPR_BASE_ARGS)
string(JOIN " " VPR_ARGS ${VPR_BASE_ARGS} "--route_chan_width ${ROUTE_CHAN_WIDTH}" ${VPR_ARCH_ARGS})
get_target_property_required(FAMILY ${ARCH} FAMILY)
get_target_property_required(DOC_PRJ ${ARCH} DOC_PRJ)
get_target_property_required(DOC_PRJ_DB ${ARCH} DOC_PRJ_DB)
set(WRAPPERS
env
symbiflow_generate_constraints
symbiflow_pack
symbiflow_place
symbiflow_route
symbiflow_synth
symbiflow_write_bitstream
symbiflow_write_fasm)
set(TOOLCHAIN_WRAPPERS)
foreach(WRAPPER ${WRAPPERS})
set(WRAPPER_PATH "${symbiflow-arch-defs_SOURCE_DIR}/xc/${FAMILY}/toolchain_wrappers/${WRAPPER}")
list(APPEND TOOLCHAIN_WRAPPERS ${WRAPPER_PATH})
endforeach()
set(VPR_COMMON_TEMPLATE "${symbiflow-arch-defs_SOURCE_DIR}/xc/${FAMILY}/toolchain_wrappers/vpr_common")
set(VPR_COMMON "${CMAKE_CURRENT_BINARY_DIR}/vpr_common")
configure_file(${VPR_COMMON_TEMPLATE} "${VPR_COMMON}" @ONLY)
install(FILES ${TOOLCHAIN_WRAPPERS} ${VPR_COMMON}
DESTINATION bin
PERMISSIONS WORLD_EXECUTE WORLD_READ OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE)
# install python scripts
install(FILES
${symbiflow-arch-defs_SOURCE_DIR}/utils/split_inouts.py
${symbiflow-arch-defs_SOURCE_DIR}/utils/fix_xc7_carry.py
${symbiflow-arch-defs_SOURCE_DIR}/xc/common/utils/prjxray_create_ioplace.py
${symbiflow-arch-defs_SOURCE_DIR}/xc/common/utils/prjxray_create_place_constraints.py
${symbiflow-arch-defs_SOURCE_DIR}/utils/vpr_io_place.py
${symbiflow-arch-defs_SOURCE_DIR}/utils/vpr_place_constraints.py
${symbiflow-arch-defs_SOURCE_DIR}/utils/eblif.py
DESTINATION share/symbiflow/scripts
PERMISSIONS WORLD_EXECUTE WORLD_READ OWNER_WRITE OWNER_READ OWNER_EXECUTE GROUP_READ GROUP_EXECUTE)
install(FILES ${symbiflow-arch-defs_SOURCE_DIR}/utils/lib/parse_pcf.py
DESTINATION share/symbiflow/scripts/lib)
# install prjxray techmap
install(DIRECTORY ${symbiflow-arch-defs_SOURCE_DIR}/xc/${FAMILY}/techmap
DESTINATION share/symbiflow/techmaps/${FAMILY}_vpr)
# install Yosys scripts
install(FILES ${DEFINE_XC_TOOLCHAIN_TARGET_CONV_SCRIPT} ${DEFINE_XC_TOOLCHAIN_TARGET_SYNTH_SCRIPT} ${DEFINE_XC_TOOLCHAIN_TARGET_UTILS_SCRIPT}
DESTINATION share/symbiflow/scripts/${FAMILY})
endfunction()
function(DEFINE_XC_PINMAP_CSV_INSTALL_TARGET)
set(options)
set(oneValueArgs PART DEVICE_TYPE BOARD DEVICE PACKAGE)
set(multiValueArgs)
cmake_parse_arguments(
DEFINE_XC_PINMAP_CSV_INSTALL_TARGET
"${options}"
"${oneValueArgs}"
"${multiValueArgs}"
"${ARGN}"
)
set(PART ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_PART})
set(BOARD ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_BOARD})
set(DEVICE ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_DEVICE})
set(DEVICE_TYPE ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_DEVICE_TYPE})
set(PACKAGE ${DEFINE_XC_PINMAP_CSV_INSTALL_TARGET_PACKAGE})
get_target_property(USE_ROI ${DEVICE_TYPE} USE_ROI)
if(USE_ROI OR USE_ROI STREQUAL "USE_ROI-NOTFOUND")
message(STATUS "Skipping pinmap installation for ${DEVICE}-${PACKAGE} part: ${PART}")
return()
endif()
get_target_property(LIMIT_GRAPH_TO_DEVICE ${DEVICE_TYPE} LIMIT_GRAPH_TO_DEVICE)
if(LIMIT_GRAPH_TO_DEVICE OR LIMIT_GRAPH_TO_DEVICE STREQUAL "LIMIT_GRAPH_TO_DEVICE-NOTFOUND")
message(STATUS "Graph limited to a sub-area of the device. Skipping files installation for ${DEVICE}-${PACKAGE} type: ${DEVICE_TYPE}")
return()
endif()
get_target_property_required(PINMAP ${BOARD} PINMAP)
get_file_location(PINMAP_FILE ${PINMAP})
get_filename_component(PINMAP_FILE_NAME ${PINMAP_FILE} NAME)
append_file_dependency(DEPS ${PINMAP})
add_custom_target(
"PINMAP_INSTALL_${BOARD}_${DEVICE}_${PACKAGE}_${PINMAP_FILE_NAME}"
ALL
DEPENDS ${DEPS}
)
install(FILES ${PINMAP_FILE}
DESTINATION "share/symbiflow/arch/${DEVICE}_${PACKAGE}/${PART}"
RENAME "pinmap.csv")
endfunction()