cvw/fpga/generator/wally.tcl

107 lines
3.9 KiB
Tcl
Raw Normal View History

# start by reading in all the IP blocks generated by vivado
set partNumber $::env(XILINX_PART)
set boardName $::env(XILINX_BOARD)
set boardSubName [lindex [split ${boardName} :] 1]
2023-04-10 21:01:17 +00:00
set board $::env(board)
set ipName WallyFPGA
create_project $ipName . -force -part $partNumber
2023-04-10 21:01:17 +00:00
if {$boardName!="ArtyA7"} {
set_property board_part $boardName [current_project]
}
read_ip IP/xlnx_proc_sys_reset.srcs/sources_1/ip/xlnx_proc_sys_reset/xlnx_proc_sys_reset.xci
read_ip IP/xlnx_ahblite_axi_bridge.srcs/sources_1/ip/xlnx_ahblite_axi_bridge/xlnx_ahblite_axi_bridge.xci
read_ip IP/xlnx_axi_clock_converter.srcs/sources_1/ip/xlnx_axi_clock_converter/xlnx_axi_clock_converter.xci
2023-04-10 21:01:17 +00:00
if {$board=="ArtyA7"} {
read_ip IP/xlnx_ddr3.srcs/sources_1/ip/xlnx_ddr3/xlnx_ddr3.xci
read_ip IP/xlnx_mmcm.srcs/sources_1/ip/xlnx_mmcm/xlnx_mmcm.xci
2023-04-10 21:01:17 +00:00
} else {
read_ip IP/xlnx_ddr4.srcs/sources_1/ip/xlnx_ddr4/xlnx_ddr4.xci
}
2023-01-21 02:16:33 +00:00
read_verilog -sv [glob -type f ../src/CopiedFiles_do_not_add_to_repo/*/*.sv ../src/CopiedFiles_do_not_add_to_repo/*/*/*.sv]
2023-04-10 21:01:17 +00:00
if {$board=="ArtyA7"} {
read_verilog {../src/fpgaTopArtyA7.v}
} else {
read_verilog {../src/fpgaTop.v}
}
read_verilog -sv [glob -type f ../src/sdc/*.sv]
2023-02-02 22:14:11 +00:00
set_property include_dirs {../../config/fpga ../../config/shared} [current_fileset]
if {$board=="ArtyA7"} {
add_files -fileset constrs_1 -norecurse ../constraints/constraints-$board.xdc
set_property PROCESSING_ORDER NORMAL [get_files ../constraints/constraints-$board.xdc]
} else {
add_files -fileset constrs_1 -norecurse ../constraints/constraints-$boardSubName.xdc
set_property PROCESSING_ORDER NORMAL [get_files ../constraints/constraints-$boardSubName.xdc]
}
# define top level
set_property top fpgaTop [current_fileset]
2021-12-03 23:47:54 +00:00
update_compile_order -fileset sources_1
2023-04-10 21:01:17 +00:00
# This is important as the ddr3/4 IP contains the generate clock constraint which the user constraints depend on.
2021-12-14 00:26:54 +00:00
exec mkdir -p reports/
exec rm -rf reports/*
2021-12-03 23:47:54 +00:00
report_compile_order -constraints > reports/compile_order.rpt
# this is elaboration not synthesis.
synth_design -rtl -name rtl_1
2021-12-03 23:47:54 +00:00
report_clocks -file reports/clocks.rpt
# this does synthesis.
launch_runs synth_1 -jobs 4
wait_on_run synth_1
open_run synth_1
check_timing -verbose -file reports/check_timing.rpt
report_timing -max_paths 10 -nworst 10 -delay_type max -sort_by slack -file reports/timing_WORST_10.rpt
report_timing -nworst 1 -delay_type max -sort_by group -file reports/timing.rpt
report_utilization -hierarchical -file reports/utilization.rpt
report_cdc -file reports/cdc.rpt
report_clock_interaction -file reports/clock_interaction.rpt
2022-03-28 22:04:58 +00:00
write_verilog -force -mode funcsim sim/syn-funcsim.v
2023-04-10 22:02:19 +00:00
if {$board=="ArtyA7"} {
# source ../constraints/small-debug.xdc
2022-03-28 22:04:58 +00:00
2023-04-10 21:01:17 +00:00
} else {
source ../constraints/debug4.xdc
2023-04-10 21:01:17 +00:00
}
# set for RuntimeOptimized implementation
#set_property "steps.place_design.args.directive" "RuntimeOptimized" [get_runs impl_1]
#set_property "steps.route_design.args.directive" "RuntimeOptimized" [get_runs impl_1]
launch_runs impl_1
wait_on_run impl_1
launch_runs impl_1 -to_step write_bitstream
wait_on_run impl_1
open_run impl_1
# output Verilog netlist + SDC for timing simulation
exec mkdir -p sim/
exec rm -rf sim/*
2021-12-17 20:40:25 +00:00
write_verilog -force -mode funcsim sim/imp-funcsim.v
write_verilog -force -mode timesim sim/imp-timesim.v
write_sdf -force sim/imp-timesim.sdf
# reports
check_timing -file reports/imp_check_timing.rpt
report_timing -max_paths 10 -nworst 10 -delay_type max -sort_by slack -file reports/imp_timing_WORST_10.rpt
report_timing -nworst 1 -delay_type max -sort_by group -file reports/imp_timing.rpt
report_utilization -hierarchical -file reports/imp_utilization.rpt