1.简述
一个完整的IC EDA环境也不能缺少了FPGA,FPGA原型验证是IC设计流程中重要的一环。一个芯片从设计到流片需要投入大量的人力、财力以及很长的研发周期,如果流片失败,对于公司来说是一笔很大的损失,同时对于研发的工程师来说这是一场重大的设计失误,重则内部会追究责任,所以验证尤为关键,能够发现很多设计的bug,而在FPGA验证是在真实的电路上验证,能够发现一些仿真器没有发现的bug,如果设计芯片是soc,那么还可以在FPGA上针对芯片功能进行嵌入式开发,不用等芯片流片回来再进行开发,缩短整个芯片的开发周期。FPGA原型验证是比较复杂的工作,我这里说的比较笼统,想了解的朋友建议某乎上搜一搜。
但是对于我们来说是业余开发,不太可能从前端到后端走完IC完整的开发流程,但是为了得到比较好学习效果,只好选择:设计=>前仿=>FPGA,可能后面加入DC综合与后仿,不会走后端的流程,所以搭建FPGA环境很重要,这个环境也换个说法:在linux下开发FPGA。
2.IC工程目录结构
目前暂定为以下目录结构,如图所示一个呼吸灯工程,但是以后会根据工程的具体情况有所变动,请以实际为准;
1)IC工程一级目录:
FPGA:存放FPGA相关文件module:存放项目源码script :存放项目的脚本,目前还没有使用tb:存放测试用例verification :仿真验证目录2)FPGA工程目录:
constraint :放置FPGA约束文件libs:放置FPGA IP 核script:存放FPGA综合脚本work:FPGA综合所在目录3.FPGA环境搭建
我目前使用的是Xilinx的K325T FPGA板卡,上一篇也已经说过EDA环境已经安装Vivado.1,Linux下安装很简单,所以这里不讲怎么安装Vivado,需要Vivado安装后台回复“vivado”可以获得。
1)添加vivado环境
在home目录下,打开.bashr,添加如下命令,路径根据自己的修改,保存退出后记得source一下让环境生效。然后在terminal输入 “vivado” 就会启动vivado的gui。
source /home/Xilinx/Vivado/.1/settings64.sh
2)FPGA Tcl脚本
下面是vivado综合的Tcl脚本,根据你自己的Xilinx FPGA板卡修改。
我的板卡是差分时钟,使用了clk_wizd的IP;最后一行生成Flash烧写的mcs文件,需要根据自己板载的Flash型号调整;根据你虚拟机分配的处理器数量,设置maxThreads,如果脚本设置超过实际的分配,会综合出错,这问题坑了我一天;
################################################## vivado FPGA environment configuration#################################################set PRJ_NAME Breath_ledset SCRIPT_DIR../scriptset CONST_DIR ../constraintset DEVICE_NAMExc7k325tffg676-2set XDC_FILE $CONST_DIR/pin.xdcset CODE_FILE ../../module/breath_led.v#################################################Step1: Create project and overwrite old files################################################create_project -force $PRJ_NAME ./ -part $DEVICE_NAMEread_xdc $XDC_FILEadd_file $CODE_FILEadd_files ../libs/sysclk_wiz/sysclk_wiz.xciset_property ip_repo_paths ../libs/sysclk_wiz [current_project]set_property verilog_define {FPGA_SYN=1} [get_filesets sources_1]#set max threadsset_param general.maxThreads 8# Launch Synthesislaunch_runs synth_1wait_on_run synth_1# Launch Implementationlaunch_runs impl_1 -to_step write_bitstreamwait_on_run impl_1write_cfgmem -format mcs -size 128 -interface BPIx16 -loadbit {up 0x0 "Breath_led.runs/impl_1/breath_led.bit" } -checksum -force -disablebitswap -file Breath_led.runs/impl_1/Breath_led.mcs
3)Makefile
需要说一下“open”,这个可以自动化启动vivado gui并自动加载综合的工程。
clean:rm -rf *.cache *.hw *.sim *.ip_user_files *.runsrm -f *.jou *.log *.txt *.xpr built:vivado -mode batch -source ../script/create_prj.tcl & open:vivado -source open_project ./*.xpr &
4.vivado识别不到板卡
设置虚拟机的usb的兼容性,默认设置是兼容usb2.0,我的电脑是usb3.0,修改如下。
如果还是无法识别,安装下cabel的驱动,进入到驱动目录,进行root安装。然后重启一下vivado应该能识别到板卡。
cd /home/Xilinx/Vivado/.1/data/xicom/cable_drivers/lin64/install_script/install_driverssudo ./install_drivers
5.总结
到这里IC EDA环境已经比较完善了,后面还会补充新的内容,后面可能主要以项目为主了,目前正在研究蜂鸟E203,也会基于这个环境做分享。想获取Breath_led的工程后台回复“Breath_led”可获得下载连接。
整个流程的演示效果:
数字IC EDA环境(vcs+verdi) 数字IC工程师业余开发环境演示(支持linux 自动化高效开发FPGA)
传送门:数字IC EDA环境(vcs+verdi) 数字IC工程师业余开发环境演示(支持linux 自动化高效开发FPGA
6.公众号与微信交流区
刚新建了微信交流群,欢迎加入!!!
搭建属于自己的数字IC EDA环境(五):搭建FPGA自动化环境(Linux下vivado Tcl脚本自动化开发) 业余IC设计流程与通路