108 lines
5.6 KiB
Tcl
108 lines
5.6 KiB
Tcl
#
|
|
# Check configs
|
|
#
|
|
|
|
# Applications:
|
|
${APPS_ALL}
|
|
|
|
#
|
|
# Package
|
|
#
|
|
for {set i 0} {$i < $cfg(n_config)} {incr i} {
|
|
for {set j 0} {$j < $cfg(n_reg)} {incr j} {
|
|
set proj_dir "$build_dir/$project\_config_$i/user\_c$i\_$j"
|
|
open_project "$proj_dir/$project.xpr"
|
|
|
|
set tmp_val "[format "\$vfpga_c$i\_$j"]"
|
|
set tmp_path "[format "%s" $tmp_val]"
|
|
set cmd "[format "set tmp_path $tmp_path"]"
|
|
eval $cmd
|
|
|
|
puts "[color $clr_flow "** vFPGA_C$i\_$j adding files ..."]"
|
|
puts "[color $clr_flow "**"]"
|
|
|
|
# Add all raw hdl files (no packaging)
|
|
file mkdir "$build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/raw"
|
|
set files_hdl [glob -nocomplain "$hw_dir/hdl/pkg/axi_macros.svh" "$hw_dir/hdl/pkg/axi_intf.sv" "$hw_dir/hdl/pkg/lynx_macros.svh" "$hw_dir/hdl/pkg/lynx_intf.sv"]
|
|
file copy -force {*}$files_hdl "$build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/raw"
|
|
|
|
if {[file isdirectory "${CMAKE_SOURCE_DIR}/$tmp_path/hdl"]} {
|
|
set files_hdl [glob -nocomplain "${CMAKE_SOURCE_DIR}/$tmp_path/hdl/*.svh" "${CMAKE_SOURCE_DIR}/$tmp_path/hdl/*.sv" "${CMAKE_SOURCE_DIR}/$tmp_path/hdl/*.v" "${CMAKE_SOURCE_DIR}/$tmp_path/hdl/*.vhd"]
|
|
if {[llength $files_hdl]} {
|
|
file copy -force {*}$files_hdl "$build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/raw"
|
|
}
|
|
}
|
|
|
|
add_files -norecurse "$build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/raw"
|
|
|
|
# Grab all hdl kernels (IP package)
|
|
# if {[file isdirectory "${CMAKE_SOURCE_DIR}/$tmp_path/hdl"]} {
|
|
# set krnls [glob -nocomplain -tails -directory "${CMAKE_SOURCE_DIR}/$tmp_path/hdl" -type d *]
|
|
|
|
# foreach krnl $krnls {
|
|
# # Copy all files
|
|
# file mkdir "$build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/$krnl\_hdl"
|
|
# set files_hdl [glob -nocomplain "${CMAKE_SOURCE_DIR}/$tmp_path/hdl/$krnl/*.svh" "${CMAKE_SOURCE_DIR}/$tmp_path/hdl/$krnl/*.sv" "${CMAKE_SOURCE_DIR}/$tmp_path/hdl/$krnl/*.vhd" "$hw_dir/hdl/pkg/axi_macros.svh" "$hw_dir/hdl/pkg/axi_intf.sv" "$shell_dir/hdl/lynx_pkg.sv"]
|
|
# if {[llength $files_hdl]} {
|
|
# file copy -force {*}$files_hdl "$build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/$krnl\_hdl"
|
|
# }
|
|
|
|
# # Package IPs
|
|
# set cmd "ipx::infer_core -vendor user.org -library user -taxonomy /UserIP $build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/$krnl\_hdl "
|
|
# eval $cmd
|
|
# set cmd "ipx::edit_ip_in_project -upgrade true -name $krnl\_c$i\_$j -directory $build_dir/$project\_config_$i/user\_c$i\_$j/${CMAKE_PROJECT_NAME}.tmp $build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/$krnl\_hdl/component.xml; "
|
|
# append cmd "ipx::current_core $build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/$krnl\_hdl/component.xml; "
|
|
# append cmd "update_compile_order -fileset sources_1; "
|
|
# append cmd "update_compile_order -fileset sim_1; "
|
|
# append cmd "set_property name $krnl\_c$i\_$j \[ipx::current_core]; "
|
|
# append cmd "set_property display_name $krnl\_c$i\_$j \[ipx::current_core]; "
|
|
# append cmd "set_property description $krnl\_c$i\_$j \[ipx::current_core]; "
|
|
# append cmd "set_property previous_version_for_upgrade user.org:user:$krnl\_c$i\_$j:1.0 \[ipx::current_core]; "
|
|
# append cmd "set_property core_revision 1 \[ipx::current_core]; "
|
|
# append cmd "ipx::create_xgui_files \[ipx::current_core]; "
|
|
# append cmd "ipx::update_checksums \[ipx::current_core]; "
|
|
# append cmd "ipx::check_integrity \[ipx::current_core]; "
|
|
# append cmd "ipx::save_core \[ipx::current_core]; "
|
|
# append cmd "ipx::move_temp_component_back -component \[ipx::current_core]; "
|
|
# append cmd "close_project -delete; "
|
|
# eval $cmd
|
|
|
|
# set ip_repos "$build_dir/iprepo $build_dir/$project\_config_$i/user\_c$i\_$j/hdl/ext/$krnl\_hdl "
|
|
# set cmd "set_property ip_repo_paths {$ip_repos} \[current_project]; "
|
|
# append cmd "update_ip_catalog; "
|
|
# eval $cmd
|
|
|
|
# create_ip -name "$krnl\_c$i\_$j" -vendor user.org -library user -version 1.0 -module_name "$krnl\_c$i\_$j"
|
|
# #$generate_target all [get_ips]
|
|
# update_compile_order -fileset sources_1
|
|
# }
|
|
# }
|
|
|
|
# Grab all hls kernels
|
|
if {[file isdirectory "${CMAKE_SOURCE_DIR}/$tmp_path/hls"]} {
|
|
set krnls [glob -nocomplain -tails -directory "${CMAKE_SOURCE_DIR}/$tmp_path/hls" -type d *]
|
|
|
|
foreach krnl $krnls {
|
|
create_ip -name "$krnl\_c$i\_$j" -vendor user.org -library hls -version 1.0 -module_name "$krnl\_c$i\_$j"
|
|
#$generate_target all [get_ips]
|
|
update_compile_order -fileset sources_1
|
|
}
|
|
}
|
|
|
|
# Include top
|
|
set files_hdl [glob -nocomplain "${CMAKE_SOURCE_DIR}/$tmp_path/vfpga_top.svh"]
|
|
if {[llength $files_hdl]} {
|
|
file copy -force {*}$files_hdl "$build_dir/$project\_config_$i/user\_c$i\_$j/hdl/vfpga_top.svh"
|
|
}
|
|
set cmd "[format "exec /usr/bin/python3 \"$build_dir/replace.py\" $tmp_path $i $j"]"
|
|
eval $cmd
|
|
add_files -norecurse "$build_dir/$project\_config_$i/user\_c$i\_$j/hdl/vfpga_top.svh"
|
|
|
|
# IP instantiation
|
|
if {[file exists "${CMAKE_SOURCE_DIR}/$tmp_path/init_ip.tcl"]} {
|
|
source "${CMAKE_SOURCE_DIR}/$tmp_path/init_ip.tcl"
|
|
}
|
|
|
|
close_project
|
|
}
|
|
} |