Skip to content
Snippets Groups Projects
Commit 175da44f authored by David Sidler's avatar David Sidler
Browse files

updated cmake files to support installip

parent bb62e2d8
No related branches found
No related tags found
No related merge requests found
Showing
with 157 additions and 46 deletions
......@@ -7,7 +7,12 @@ project(network-stack-example)
# Include custom Find<Module>.cmake scripts to enable searching for Vivado HLS
set(CMAKE_MODULE_PATH ${CMAKE_MODULE_PATH} ${CMAKE_SOURCE_DIR}/cmake)
if (NOT DEFINED ENV{IPREPO_DIR})
# Check if parent directory
get_directory_property(hasParent PARENT_DIRECTORY)
if (DEFINED ENV{IPREPO_DIR})
set(IPREPO_DIR $ENV{IPREPO_DIR})
elseif (NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo)
message("set iprepor dir ${IPREPO_DIR}")
endif()
......@@ -27,7 +32,6 @@ endif()
add_subdirectory(hls/arp_server_subnet)
add_subdirectory(hls/dhcp_client)
add_subdirectory(hls/echo_server_application)
add_subdirectory(hls/ethernet_frame_padding)
add_subdirectory(hls/icmp_server)
add_subdirectory(hls/iperf_client)
add_subdirectory(hls/iperf_udp_client)
......@@ -36,26 +40,29 @@ add_subdirectory(hls/ipv4)
add_subdirectory(hls/mac_ip_encode)
add_subdirectory(hls/toe)
add_subdirectory(hls/udp)
if (NOT hasParent)
add_subdirectory(hls/ethernet_frame_padding)
endif()
#Vivado Project (create only if no parent)
if (NOT hasParent)
#Vivado Project
# Find Xilinx Vivado
find_package(Vivado REQUIRED)
if (NOT VIVADO_FOUND)
message(FATAL_ERROR "Vivado not found.")
endif()
# Find Xilinx Vivado
find_package(Vivado REQUIRED)
if (NOT VIVADO_FOUND)
message(FATAL_ERROR "Vivado not found.")
endif()
configure_file(${CMAKE_SOURCE_DIR}/projects/create_project.tcl.in create_project.tcl)
configure_file(${CMAKE_SOURCE_DIR}/projects/create_project.tcl.in create_project.tcl)
set (PROJECT_DEPENDS
${CMAKE_SOURCE_DIR}/rtl/common/network_stack.v
${CMAKE_SOURCE_DIR}/projects/create_project.tcl.in
${CMAKE_SOURCE_DIR}/projects/network_stack.tcl)
set (PROJECT_DEPENDS
${CMAKE_SOURCE_DIR}/rtl/common/network_stack.v
${CMAKE_SOURCE_DIR}/projects/create_project.tcl.in
${CMAKE_SOURCE_DIR}/projects/network_stack.tcl)
add_custom_target(project
COMMAND ${VIVADO_BINARY} -mode batch -source create_project.tcl
DEPENDS ${PROJECT_DEPENDS})
add_custom_target(project
COMMAND ${VIVADO_BINARY} -mode batch -source create_project.tcl
DEPENDS ${PROJECT_DEPENDS})
endif()
# add_dependencies(project ip)
# Author: Johannes de Fine Licht (johannes.definelicht@inf.ethz.ch)
# Created: October 2016
#
# To specify the path to the Vivado installation, provide:
# -DVIVADO_ROOT_DIR=<installation directory>
# If successful, this script defines:
# VIVADO_FOUND
# VIVADO_BINARY
cmake_minimum_required(VERSION 3.0)
find_path(VIVADO_PATH
NAMES vivado
PATHS ${VIVADO_ROOT_DIR} ENV XILINX_VIVADO
PATH_SUFFIXES bin
)
if(NOT EXISTS ${VIVADO_PATH})
message(WARNING "Vivado not found.")
else()
get_filename_component(VIVADO_ROOT_DIR ${VIVADO_PATH} DIRECTORY)
set(VIVADO_FOUND TRUE)
set(VIVADO_BINARY ${VIVADO_ROOT_DIR}/bin/vivado)
message(STATUS "Found Vivado at ${VIVADO_ROOT_DIR}.")
endif()
# Author: Johannes de Fine Licht (johannes.definelicht@inf.ethz.ch)
# Created: October 2016
#
# To specify the path to the Vivado HLS installation, provide:
# -DVIVADO_HLS_ROOT_DIR=<installation directory>
# If successful, this script defines:
# VIVADO_HLS_FOUND
# VIVADO_HLS_BINARY
# VIVADO_HLS_INCLUDE_DIRS
cmake_minimum_required(VERSION 3.0)
find_path(VIVADO_HLS_PATH
NAMES vivado_hls
PATHS ${VIVADO_HLS_ROOT_DIR} ENV XILINX_VIVADO_HLS ENV XILINX_HLS
PATH_SUFFIXES bin
)
if(NOT EXISTS ${VIVADO_HLS_PATH})
message(WARNING "Vivado HLS not found.")
else()
get_filename_component(VIVADO_HLS_ROOT_DIR ${VIVADO_HLS_PATH} DIRECTORY)
set(VIVADO_HLS_FOUND TRUE)
set(VIVADO_HLS_INCLUDE_DIRS ${VIVADO_HLS_ROOT_DIR}/include/)
set(VIVADO_HLS_BINARY ${VIVADO_HLS_ROOT_DIR}/bin/vivado_hls)
message(STATUS "Found Vivado HLS at ${VIVADO_HLS_ROOT_DIR}.")
endif()
......@@ -46,7 +46,7 @@ set(EXAMPLE_HLS_DEPENDS
#Setup HLS custom targets
set(HLS_TARGETS synthesis csim ip)
set(HLS_TARGETS synthesis csim ip installip)
foreach (target ${HLS_TARGETS})
if (NOT TARGET ${target})
......@@ -61,6 +61,7 @@ endforeach()
#target dependencies
add_dependencies(ip.${PROJECT_NAME} synthesis.${PROJECT_NAME})
add_dependencies(installip.${PROJECT_NAME} ip.${PROJECT_NAME})
# Installation
if (DEFINED ENV{IPREPO_DIR})
......@@ -68,6 +69,6 @@ if (DEFINED ENV{IPREPO_DIR})
elseif(NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo/)
endif()
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
# DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
......@@ -25,6 +25,10 @@ if {$command == "synthesis"} {
csim_design
} elseif {$command == "ip"} {
export_design -format ip_catalog -ipname "arp_server_subnet" -display_name "ARP Subnet Server" -description "Replies to ARP queries and resolves IP addresses." -vendor "ethz.systems.fpga" -version "1.1"
} elseif {$command == "installip"} {
file mkdir ${IPREPO_DIR}
file delete -force ${IPREPO_DIR}/${PROJECT_NAME}
file copy -force ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip ${IPREPO_DIR}/${PROJECT_NAME}/
} else {
puts "No valid command specified. Use vivado_hls -f make.tcl <synthesis|csim|ip> ."
}
......
......@@ -46,7 +46,7 @@ set(EXAMPLE_HLS_DEPENDS
#Setup HLS custom targets
set(HLS_TARGETS synthesis csim ip)
set(HLS_TARGETS synthesis csim ip installip)
foreach (target ${HLS_TARGETS})
if (NOT TARGET ${target})
......@@ -61,6 +61,7 @@ endforeach()
#target dependencies
add_dependencies(ip.${PROJECT_NAME} synthesis.${PROJECT_NAME})
add_dependencies(installip.${PROJECT_NAME} ip.${PROJECT_NAME})
# Installation
if (DEFINED ENV{IPREPO_DIR})
......@@ -68,6 +69,6 @@ if (DEFINED ENV{IPREPO_DIR})
elseif(NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo/)
endif()
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
# DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
......@@ -24,7 +24,10 @@ if {$command == "synthesis"} {
csim_design
} elseif {$command == "ip"} {
export_design -format ip_catalog -ipname "dhcp_client" -display_name "DHCP Client" -description "DHCP Client to be used with the Xilinx Labs TCP & UDP offload engines." -vendor "xilinx.labs" -version "1.05"
} elseif {$command == "installip"} {
file mkdir ${IPREPO_DIR}
file delete -force ${IPREPO_DIR}/${PROJECT_NAME}
file copy -force ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip ${IPREPO_DIR}/${PROJECT_NAME}/
} else {
puts "No valid command specified. Use vivado_hls -f make.tcl <synthesis|csim|ip> ."
}
......
......@@ -46,7 +46,7 @@ set(EXAMPLE_HLS_DEPENDS
#Setup HLS custom targets
set(HLS_TARGETS synthesis csim ip)
set(HLS_TARGETS synthesis csim ip installip)
foreach (target ${HLS_TARGETS})
if (NOT TARGET ${target})
......@@ -61,6 +61,7 @@ endforeach()
#target dependencies
add_dependencies(ip.${PROJECT_NAME} synthesis.${PROJECT_NAME})
add_dependencies(installip.${PROJECT_NAME} ip.${PROJECT_NAME})
# Installation
if (DEFINED ENV{IPREPO_DIR})
......@@ -68,6 +69,6 @@ if (DEFINED ENV{IPREPO_DIR})
elseif(NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo/)
endif()
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
# DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
......@@ -24,6 +24,10 @@ if {$command == "synthesis"} {
csim_design
} elseif {$command == "ip"} {
export_design -format ip_catalog -ipname "echo_server_application" -display_name "Echo Server Application for 10G TOE" -description "Echos packets on connections coming in on port 7." -vendor "ethz.systems" -version "1.2"
} elseif {$command == "installip"} {
file mkdir ${IPREPO_DIR}
file delete -force ${IPREPO_DIR}/${PROJECT_NAME}
file copy -force ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip ${IPREPO_DIR}/${PROJECT_NAME}/
} else {
puts "No valid command specified. Use vivado_hls -f make.tcl <synthesis|csim|ip> ."
}
......
......@@ -46,7 +46,7 @@ set(EXAMPLE_HLS_DEPENDS
#Setup HLS custom targets
set(HLS_TARGETS synthesis csim ip)
set(HLS_TARGETS synthesis csim ip installip)
foreach (target ${HLS_TARGETS})
if (NOT TARGET ${target})
......@@ -61,6 +61,7 @@ endforeach()
#target dependencies
add_dependencies(ip.${PROJECT_NAME} synthesis.${PROJECT_NAME})
add_dependencies(installip.${PROJECT_NAME} ip.${PROJECT_NAME})
# Installation
if (DEFINED ENV{IPREPO_DIR})
......@@ -68,6 +69,6 @@ if (DEFINED ENV{IPREPO_DIR})
elseif(NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo/)
endif()
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
# DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
......@@ -26,6 +26,10 @@ if {$command == "synthesis"} {
csim_design
} elseif {$command == "ip"} {
export_design -format ip_catalog -display_name "Ethernet Frame Padding" -vendor "ethz.systems.fpga" -version "0.1"
} elseif {$command == "installip"} {
file mkdir ${IPREPO_DIR}
file delete -force ${IPREPO_DIR}/${PROJECT_NAME}
file copy -force ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip ${IPREPO_DIR}/${PROJECT_NAME}/
} else {
puts "No valid command specified. Use vivado_hls -f make.tcl <synthesis|csim|ip> ."
}
......
......@@ -46,7 +46,7 @@ set(EXAMPLE_HLS_DEPENDS
#Setup HLS custom targets
set(HLS_TARGETS synthesis csim ip)
set(HLS_TARGETS synthesis csim ip installip)
foreach (target ${HLS_TARGETS})
if (NOT TARGET ${target})
......@@ -61,6 +61,7 @@ endforeach()
#target dependencies
add_dependencies(ip.${PROJECT_NAME} synthesis.${PROJECT_NAME})
add_dependencies(installip.${PROJECT_NAME} ip.${PROJECT_NAME})
# Installation
if (DEFINED ENV{IPREPO_DIR})
......@@ -68,6 +69,6 @@ if (DEFINED ENV{IPREPO_DIR})
elseif(NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo/)
endif()
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
# DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
......@@ -24,6 +24,10 @@ if {$command == "synthesis"} {
csim_design
} elseif {$command == "ip"} {
export_design -format ip_catalog -ipname "icmp_server" -display_name "ICMP Server" -vendor "xilinx.labs" -version "1.67"
} elseif {$command == "installip"} {
file mkdir ${IPREPO_DIR}
file delete -force ${IPREPO_DIR}/${PROJECT_NAME}
file copy -force ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip ${IPREPO_DIR}/${PROJECT_NAME}/
} else {
puts "No valid command specified. Use vivado_hls -f make.tcl <synthesis|csim|ip> ."
}
......
......@@ -48,7 +48,7 @@ set(EXAMPLE_HLS_DEPENDS
#Setup HLS custom targets
set(HLS_TARGETS synthesis csim ip)
set(HLS_TARGETS synthesis csim ip installip)
foreach (target ${HLS_TARGETS})
if (NOT TARGET ${target})
......@@ -63,6 +63,7 @@ endforeach()
#target dependencies
add_dependencies(ip.${PROJECT_NAME} synthesis.${PROJECT_NAME})
add_dependencies(installip.${PROJECT_NAME} ip.${PROJECT_NAME})
# Installation
if (DEFINED ENV{IPREPO_DIR})
......@@ -70,6 +71,6 @@ if (DEFINED ENV{IPREPO_DIR})
elseif(NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo/)
endif()
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
# DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
......@@ -25,6 +25,10 @@ if {$command == "synthesis"} {
csim_design
} elseif {$command == "ip"} {
export_design -format ip_catalog -ipname "ip_handler" -display_name "IP Handler" -vendor "ethz.systems.fpga" -version "2.0"
} elseif {$command == "installip"} {
file mkdir ${IPREPO_DIR}
file delete -force ${IPREPO_DIR}/${PROJECT_NAME}
file copy -force ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip ${IPREPO_DIR}/${PROJECT_NAME}/
} else {
puts "No valid command specified. Use vivado_hls -f make.tcl <synthesis|csim|ip> ."
}
......
......@@ -47,7 +47,7 @@ set(EXAMPLE_HLS_DEPENDS
#Setup HLS custom targets
set(HLS_TARGETS synthesis csim ip)
set(HLS_TARGETS synthesis csim ip installip)
foreach (target ${HLS_TARGETS})
if (NOT TARGET ${target})
......@@ -62,6 +62,7 @@ endforeach()
#target dependencies
add_dependencies(ip.${PROJECT_NAME} synthesis.${PROJECT_NAME})
add_dependencies(installip.${PROJECT_NAME} ip.${PROJECT_NAME})
# Installation
if (DEFINED ENV{IPREPO_DIR})
......@@ -69,6 +70,6 @@ if (DEFINED ENV{IPREPO_DIR})
elseif(NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo/)
endif()
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
# DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
......@@ -24,6 +24,10 @@ if {$command == "synthesis"} {
csim_design
} elseif {$command == "ip"} {
export_design -format ip_catalog -ipname "iperf_client" -display_name "iperf client" -vendor "ethz.systems.fpga" -version "1.0"
} elseif {$command == "installip"} {
file mkdir ${IPREPO_DIR}
file delete -force ${IPREPO_DIR}/${PROJECT_NAME}
file copy -force ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip ${IPREPO_DIR}/${PROJECT_NAME}/
} else {
puts "No valid command specified. Use vivado_hls -f make.tcl <synthesis|csim|ip> ."
}
......
......@@ -47,7 +47,7 @@ set(EXAMPLE_HLS_DEPENDS
#Setup HLS custom targets
set(HLS_TARGETS synthesis csim ip)
set(HLS_TARGETS synthesis csim ip installip)
foreach (target ${HLS_TARGETS})
if (NOT TARGET ${target})
......@@ -62,6 +62,7 @@ endforeach()
#target dependencies
add_dependencies(ip.${PROJECT_NAME} synthesis.${PROJECT_NAME})
add_dependencies(installip.${PROJECT_NAME} ip.${PROJECT_NAME})
# Installation
if (DEFINED ENV{IPREPO_DIR})
......@@ -69,6 +70,6 @@ if (DEFINED ENV{IPREPO_DIR})
elseif(NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo/)
endif()
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
# DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
......@@ -24,6 +24,10 @@ if {$command == "synthesis"} {
csim_design
} elseif {$command == "ip"} {
export_design -format ip_catalog -ipname "iperf_udp_client" -display_name "iperf udp client" -description "" -vendor "ethz.systems.fpga" -version "0.8"
} elseif {$command == "installip"} {
file mkdir ${IPREPO_DIR}
file delete -force ${IPREPO_DIR}/${PROJECT_NAME}
file copy -force ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip ${IPREPO_DIR}/${PROJECT_NAME}/
} else {
puts "No valid command specified. Use vivado_hls -f make.tcl <synthesis|csim|ip> ."
}
......
......@@ -47,7 +47,7 @@ set(EXAMPLE_HLS_DEPENDS
#Setup HLS custom targets
set(HLS_TARGETS synthesis csim ip)
set(HLS_TARGETS synthesis csim ip installip)
foreach (target ${HLS_TARGETS})
if (NOT TARGET ${target})
......@@ -62,6 +62,7 @@ endforeach()
#target dependencies
add_dependencies(ip.${PROJECT_NAME} synthesis.${PROJECT_NAME})
add_dependencies(installip.${PROJECT_NAME} ip.${PROJECT_NAME})
# Installation
if (DEFINED ENV{IPREPO_DIR})
......@@ -69,6 +70,6 @@ if (DEFINED ENV{IPREPO_DIR})
elseif(NOT IPREPO_DIR)
set(IPREPO_DIR ${CMAKE_CURRENT_SOURCE_DIR}/iprepo/)
endif()
install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
#install(DIRECTORY ${CMAKE_CURRENT_BINARY_DIR}/${PROJECT_NAME}_prj/solution1/impl/ip/
# DESTINATION ${IPREPO_DIR}/${PROJECT_NAME}/)
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment