90 lines
3.3 KiB
Tcl
90 lines
3.3 KiB
Tcl
if {[catch {
|
|
|
|
########################################################################################################
|
|
|
|
source "${CMAKE_BINARY_DIR}/base.tcl"
|
|
|
|
########################################################################################################
|
|
# Project
|
|
########################################################################################################
|
|
set proj_dir "$build_dir/$project"
|
|
|
|
puts $proj_dir
|
|
open_project "$proj_dir/lynx.xpr"
|
|
|
|
########################################################################################################
|
|
# DYNAMIC LAYER
|
|
########################################################################################################
|
|
# Create additional configs
|
|
set cn 1
|
|
while {[file isdirectory "$proj_dir/hdl/config_$cn"]} {
|
|
incr cn
|
|
}
|
|
|
|
file mkdir "$proj_dir/hdl/config_$cn"
|
|
file mkdir "$proj_dir/hdl/wrappers/config_$cn"
|
|
|
|
# Call write HDL scripts
|
|
unset ::env(PYTHONPATH)
|
|
unset ::env(PYTHONHOME)
|
|
proc call_write_hdl {r_path i} {
|
|
set output [exec python3 "$r_path/write_hdl.py" 1 $i]
|
|
puts $output
|
|
}
|
|
call_write_hdl $build_dir $cn
|
|
|
|
#source "$scripts_dir/wr_hdl/wr_hdl_user.tcl" -notrace
|
|
#for {set j 0} {$j < $cfg(n_reg)} {incr j} {
|
|
# wr_hdl_user_wrapper "$proj_dir/hdl/wrappers/config_$cn/design_user_wrapper_c$cn\_$j.sv" $j
|
|
# wr_hdl_user "$proj_dir/hdl/config_$cn/design_user_logic_c$cn\_$j.sv" $j
|
|
#}
|
|
|
|
# Create dynamic regions
|
|
for {set j 0} {$j < $cfg(n_reg)} {incr j} {
|
|
# Sources
|
|
set cmd "set files \[list \ "
|
|
append cmd "\[file normalize \"\$proj_dir/hdl/wrappers/config_$cn/user_wrapper_c$cn\_$j.sv\"] \ "
|
|
append cmd "\[file normalize \"\$proj_dir/hdl/config_$cn/user_logic_c$cn\_$j.sv\"] \ "
|
|
append cmd "\[file normalize \"\$hw_dir/hdl/pkg/axi_intf.sv\"] \ "
|
|
append cmd "\[file normalize \"\$hw_dir/hdl/pkg/lynx_intf.sv\"] \ "
|
|
append cmd "\[file normalize \"\$hw_dir/hdl/pkg/axi_macros.svh\"] \ "
|
|
append cmd "\[file normalize \"\$hw_dir/hdl/pkg/lynx_macros.svh\"] \ "
|
|
append cmd "\[file normalize \"\$hw_dir/hdl/common/regs/axis_reg_rtl.sv\"] \ "
|
|
append cmd "\[file normalize \"\$hw_dir/hdl/common/regs/axil_reg_rtl.sv\"] \ "
|
|
append cmd "\[file normalize \"\$hw_dir/hdl/common/regs/axil_reg_rd.v\"] \ "
|
|
append cmd "\[file normalize \"\$hw_dir/hdl/common/regs/axil_reg_wr.v\"] \ "
|
|
append cmd "\[file normalize \"\$proj_dir/hdl/wrappers/common/lynx_pkg.sv\"] \ "
|
|
append cmd "]"
|
|
eval $cmd
|
|
# Create pr region
|
|
create_reconfig_module -name "design_user_wrapper_c$cn\_$j" -partition_def [get_partition_defs "dynamic_$j" ] -top "design_user_wrapper_$j"
|
|
add_files -norecurse -scan_for_includes $files -of_objects [get_reconfig_modules "design_user_wrapper_c$cn\_$j"]
|
|
}
|
|
|
|
set cmd "create_pr_configuration -name config_$cn -partitions \[list \ "
|
|
for {set j 0} {$j < $cfg(n_reg)} {incr j} {
|
|
append cmd "inst_dynamic/inst_user_wrapper_$j:design_user_wrapper_c$cn\_$j "
|
|
}
|
|
append cmd "]"
|
|
eval $cmd
|
|
|
|
|
|
set n [expr {$cn + 1}]
|
|
set cmd "create_run impl_$n -parent_run impl_1 -flow {Vivado Implementation 2018} -pr_config config_$cn"
|
|
eval $cmd
|
|
|
|
set cmd "set_property STEPS.WRITE_BITSTREAM.ARGS.BIN_FILE true \[get_runs impl_$n]"
|
|
eval $cmd
|
|
|
|
close_project
|
|
#start_gui
|
|
|
|
########################################################################################################
|
|
|
|
} errorstring]} {
|
|
puts "** CERR: $errorstring"
|
|
puts "**"
|
|
exit 1
|
|
}
|
|
|
|
exit |