vivado的两种工作模式,project模式以及Non-project模式。
其中project模式可以以GUI界面也可以用tcl语言来操作,下面是以wavegen的实际操作例子。
(1)新建一个wavegen工程。
打开工程后,需要修改一下ip为xcix格式。(xcix是将xci生成文件压缩的二进制文件格式),点击ip右边对应的Enable Core Container就可以更改xci为xcix格式。
(2)将对应需要资源整理到一个新文件夹Source下面。
这些文件都在wavegen\wavegen.srcs中,ip对应xcix文件(.Xil不用管,自动生成的),tb对应testbench文件,hdl对应v文件以及vh文件,xdc对应约束文件。
(3)打开vivado 2020.1 Tcl shell ,先cd到Source所在的文件夹下,再运行project.tcl脚本。
#project.tcl
#project flow
#芯片型号
set devive xc7k70t
#封装
set package fbg676
#速度
set speed -1
#器件
set part $devive$package$speed
#设计工程名字为wavegen,地址,source位置
set prjName wavegen
set prjDir ./$prjName
set srcDir ./Sources
#建立工程,关闭工程close_project
create_project $prjName $prjDir -part $part
#线程数设置为8
set_param general.maxThreads 8
#增加对应的文件,默认为sources_1文件集
add_files [glob $srcDir/hdl/*.v]
add_files [glob $srcDir/hdl/*.vh]
add_files [glob $srcDir/ip/*.xcix]
#用于更新指定文件集下文件的编译顺序,我的理解就是找到顶层文件
update_compile_order -fileset sources_1
add_files -fileset constrs_1 [glob $srcDir/xdc/*.xdc]
add_files -fileset sim_1 [glob $srcDir/tb/*.v]
#用于更新指定文件集下文件的编译顺序,我的理解就是找到顶层文件
update_compile_order -fileset sim_1
#设计总和以及优化的strategy
set_property strategy Flow_AreaOptimized_high [get_runs synth_1]
set_property strategy Performance_Explore [get_runs impl_1]
#综合
launch_runs synth_1
wait_on_run synth_1
#实现
launch_runs impl_1 -to_step write_bitstream
wait_on_run impl_1
#打开图像界面看结果
start_gui
source project.tcl
(4)完整跑完一遍还是需要等待一段时间的,跑完之后有结果如下,可以看到实际是不符合时序收敛的。
参考
[1]vivado/Tcl零基础入门与案例实战