非图形界面开发FPGA_VIVADO

曾经在图形界面上设置的参数,过了半年,打开工程,哎!是咋设置的来的,这个pcie是2.0还是3.0来着。。。
以此记录,用TCL命令行开发,并使用开发板Basys3和创龙TLZ7进行验证,生成bit文件、mcs文件并下载到板子中。

gen_bit.tcl

## Vivado 2019.1 Tcl Shell
## cd F:/chaunglong/cl_tcl  
## source gen_bit.tcl
# close_project
## STEP#1: 定义输出目录区域
set outputDir ./compile_output
file mkdir $outputDir

# STEP#2: 读取源文件
read_verilog [ glob ./Sources/led_flash.v ]
read_xdc ./Sources/led_flash_tlz7xh.xdc
##添加IP
# source gen_ip.tcl


## STEP#3: 运行综合、编写设计检查点、报告时序、报告利用率估计
#synth_ip [get_ips ila_128b] -force
#synth_ip [get_ips clk_wiz] -force
synth_design -top led_flash -part XC7Z045FFG900-2  
write_checkpoint -force $outputDir/post_synth.dcp
report_timing_summary -file $outputDir/post_synth_timing_summary.rpt
report_utilization -file $outputDir/post_synth_util.rpt

## 运行自定义脚本以报告关键时序路径
# reportCriticalPaths $outputDir/post_synth_critpath_report.csv

## STEP#4:运行逻辑优化、布局和物理逻辑优化,编写设计检查点、报告利用率和时序估计
opt_design
place_design
report_clock_utilization -file $outputDir/clock_util.rpt
phys_opt_design
write_checkpoint -force $outputDir/post_place.dcp
report_utilization -file $outputDir/post_place_util.rpt
report_timing_summary -file $outputDir/post_place_timing_summary.rpt

## STEP#5: 运行布局布线,编写路由后设计检查点,报告布线状态、报告时序、功耗、DRC检####查、最后保存Verilog网表。
route_design
write_checkpoint -force $outputDir/post_route.dcp
report_route_status -file $outputDir/post_route_status.rpt
report_timing_summary -file $outputDir/post_route_timing_summary.rpt
report_power -file $outputDir/post_route_power.rpt
report_drc -file $outputDir/post_imp_drc.rpt
write_verilog -force $outputDir/cpu_impl_netlist.v -mode timesim -sdf_anno true

## STEP#6: 生成bin文件和ltx文件
write_bitstream -force $outputDir/led_flash.bit
# write_debug_probes -force $outputDir/led_flash.ltx

## STEP#7: 生成MCS文件
# write_cfgmem -force -format MCS -size 32 -interface SPIx1 -loadbit "up 0x0 $outputDir/led_flash.bit" $outputDir/config_28f00ap30t
close_project
source up_bit.tcl 

gen_ip.tcl

create_ip -vlnv xilinx.com:ip:ila:6.2 -module_name ila_128b
set_property -dict [list CONFIG.C_PROBE0_WIDTH {128} CONFIG.Component_Name {ila_128b}] [get_ips ila_128b]
# generate_target {instantiation_template} [get_files  F:/basys3_tcl/.srcs/sources_1/ip/ila_64b/ila_128b.xci -of_objects [get_filesets sources_1]]
generate_target {instantiation_template} [get_ips] -force


create_ip -vlnv xilinx.com:ip:clk_wiz:6.0 -module_name clk_wiz
set_property -dict [list CONFIG.CLKOUT2_USED {true} \
CONFIG.CLKOUT1_REQUESTED_OUT_FREQ {100.000} \
CONFIG.CLKOUT2_REQUESTED_OUT_FREQ {20.000} \
CONFIG.MMCM_CLKFBOUT_MULT_F {10.000} \
CONFIG.MMCM_CLKOUT0_DIVIDE_F {10.000} \
CONFIG.MMCM_CLKOUT1_DIVIDE {50} \
CONFIG.NUM_OUT_CLKS {2} \
CONFIG.CLKOUT1_JITTER {130.958} \
CONFIG.CLKOUT1_PHASE_ERROR {98.575} \
CONFIG.CLKOUT2_JITTER {183.243} \
CONFIG.CLKOUT2_PHASE_ERROR {98.575}] [get_ips clk_wiz]
generate_target {instantiation_template} [get_files  F:/basys3_tcl/.srcs/sources_1/ip/clk_wiz/clk_wiz.xci -of_objects [get_filesets sources_1]]

#-quiet Ignore command errors
read_ip -quiet F:/basys3_tcl/.srcs/sources_1/ip/ila_128b/ila_128b.xci  
read_ip -quiet F:/basys3_tcl/.srcs/sources_1/ip/clk_wiz/clk_wiz.xci


up_bit.tcl

##打开Vivado设计套件中的硬件管理器。
open_hw


##断开到本地或远程Vivado硬件服务器应用程序的连接。避免二次连接出现错误 
# disconnect_hw_server

##建立到本地或远程Vivado硬件服务器应用程序的连接。
connect_hw_server

##定义所连接服务器的硬件目标。 
current_hw_target

##打开到硬件目标的连接。 
open_hw_target

## get_hw_devices
## 指定用于编程和调试的Xilinx FPGA器件。 
current_hw_device [get_hw_devices xc7z045_1]
refresh_hw_device -update_hw_probes false [lindex [get_hw_devices xc7z045_1] 0]

#出于调试目的,还可以使用probes.file属性将探测文件(.ltx)与设备相关联
set_property PROBES.FILE {} [get_hw_devices xc7z045_1]
set_property FULL_PROBES.FILE {} [get_hw_devices xc7z045_1]


#连接到目标硬件设备后,必须使用set_property命令将设计中的位流文件(.bit、.rbt、.bin)与设备相关联: 
set_property PROGRAM.FILE {F:/chaunglong/cl_tcl/compile_output/led_flash.bit} [get_hw_devices xc7z045_1]


program_hw_devices [get_hw_devices xc7z045_1]
refresh_hw_device [lindex [get_hw_devices xc7z045_1] 0]

close_hw

##error
    ## Device arm_dap_0 is not programmable

up_cfgmem.tcl

close_hw
open_hw
connect_hw_server
open_hw_target
current_hw_device [get_hw_devices xc7a35t_0]
refresh_hw_device -update_hw_probes false [lindex [get_hw_devices xc7a35t_0] 0]

create_hw_cfgmem -hw_device [lindex [get_hw_devices xc7a35t_0] 0] [lindex [get_cfgmem_parts {s25fl032p-spi-x1_x2_x4}] 0]
set_property PROGRAM.BLANK_CHECK  0 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.ERASE  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.CFG_PROGRAM  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.VERIFY  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.CHECKSUM  0 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
refresh_hw_device [lindex [get_hw_devices xc7a35t_0] 0]

set_property PROGRAM.ADDRESS_RANGE  {use_file} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.FILES [list "F:/basys3_tcl/config_28f00ap30t.mcs" ] [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.PRM_FILE {F:/basys3_tcl/config_28f00ap30t.prm} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.UNUSED_PIN_TERMINATION {pull-none} [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.BLANK_CHECK  0 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.ERASE  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.CFG_PROGRAM  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.VERIFY  1 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
set_property PROGRAM.CHECKSUM  0 [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
create_hw_bitstream -hw_device [lindex [get_hw_devices xc7a35t_0] 0] [get_property PROGRAM.HW_CFGMEM_BITFILE [ lindex [get_hw_devices xc7a35t_0] 0]]
program_hw_devices [lindex [get_hw_devices xc7a35t_0] 0]
refresh_hw_device [lindex [get_hw_devices xc7a35t_0] 0]
program_hw_cfgmem -hw_cfgmem [ get_property PROGRAM.HW_CFGMEM [lindex [get_hw_devices xc7a35t_0] 0]]
close_hw
  • 10
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

树清风探花

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值