vivado的目录结构:
1、*.xpc : 项目管理文件,里面记录了该工程的文件索引
2、*.src : 项目源文件目录,ip目录下是ip核生成的文件
3、*.runs : 内部有许多名为(name)_synth_n和(name)_imp_n形式的文件夹,里面是综合和布局布线生成的一些临时文件,对于主模块,其(name)为空,里面生成的文件中包含报告文件和bit流。
VIVADO 提供两种代码封装方法:DCP文件和edf文件。
1、write_checkpoint -force /x/xxx.dcp,其中xxx为模块名称,这样就可以生成完整的dcp文件。
2、rite_verilog -mode synth_stub /x/xxx_stub.edf生成黑盒接口文件。edf文件不像DCP文件,可以单独被调用,edf文件必须配合.v的黑盒接口才能被调用
xci文件是一个xml格式的文件,它能够搜集ip所有的配置信息,更重要的是包括Vivado指向的ip所生成的大量文件,比如上下文综合、约束和模拟文件等。根据xci文件Vivado可以确定IP是否已经“完全生成”或者缺少哪些文件。
当读取xci文件时,Vivado会读取生成的dcp(design checkpoint)文件,跳过嵌入的约束信息,采用的是原始IP的约束文件。
foreach 语法结构提供了遍历数组的简单方式。foreach 仅能够应用于数组和对象。
catch命令
用于阻止因错误而导致的中断执行,类似python中的异常,执行成功返回0,否则返回1
IP Output Products:
<ip_name>.xci:
包含IP定制信息。您可以从该文件生成输出产品。如果目录中存在IP的升级路径,则可以从此文件升级到最新版本
<ip_name>.xcix:
IP核封装文件,它列出了设计中IP之间的所有通用元素。
<ip_name>.xml:
IP物料清单(BOM)文件,用于跟踪IP的当前状态,包括生成的文件,计算的参数和接口信息
<ip_name>.veo | vho:
Verilog(VEO)或VHDL(VHO)实例化模板。您可以使用这些文件中的一个在您的设计中实例化IP。
<ip_name>.dcp:
合成设计检查点文件包含综合后网表和处理过的XDC约束。
建议:赛灵思建议您不要直接引用IP DCP文件;而是使用XCI文件,在需要时引入DCP。
<ip_name>.stub:
与第三方综合工具一起使用的模块(Verilog)和组件(VHDL)来推断IP的黑盒子。
<ip_name>.funcsim:
Vivado 2015.3版之前的综合后结构仿真网表文件。
<ip_name>.xdc:
时序/物理约束文件,这些文件并不是对于所有IP都存在,并且它们的位置因IP而异。
<ip_name>_in_context.xdc:
有关更多信息,请参阅确定时钟约束和解释时钟消息。
<ip_name>_clocks.xdc:
具有时钟依赖性的约束。这些文件对于所有IP都不存在,并且它们的位置因IP而异。
<ip_name>_board.xdc:
平台板流程中使用的约束条件。这些文件对于所有IP都不存在,并且它们的位置因IP而异。
<ip_name>_ooc.xdc:
默认的时钟定义,用于合成IP的上下文。
好了,查了这么多,也分别看了每个文档的代码,发现这些对我没啥help。
想利用tcl文件,直接生成带有想要的ip的vivado gui。
1、首先,打开vivado gui界面。按照你想要的东西一步步操作。操作完成之后,在Tcl Console选项这边,可以找到你所有的tcl命令。
2、把所有蓝色显示的命令加到你新建的tcl文件中。在文件中,修改参数。
3、在文件最底端加上 start_gui 命令。
4、运行 vivado -mode tcl -source xx.tcl 命令,就可以直接打开你想要的gui了。
注:在json文件中有你想要的ram各种参数。所以在写tcl文件时,需要注意到用set_property来设置参数。