文章目录
概要
项目更迭升级中,可能会遇到ISE旧平台开发的算法或功能模块需要移植到新的器件上,
如Ultrascale系列,这时就只能在Vivado平台下开发。
因为Vivado下IP接口的变化,重新修改原有代码中IP接口和时序费时费力,
这里分享一种减小代码修改的方法:可将原工程模块生成NGC网表文件,Vivado下使用NGC文件来开发。
(K7/V7等系列支持NGC;Ultrascale系列等不支持的,需要将NGC转换成EDF或DCP再使用)。
NGC转DCP流程:
1、ISE下,将需要封装的模块设置为顶层模块,去掉iobuf ,Translate编译后会在工程根目录生成xxx.NGC文件
2、如果文件中包含IP核,那么将IP的NGC文件拷贝至工程文件的根目录
3、ISE TCL Console执行ngcbuild xxx.ngc xxx_all.ngc(xxx为顶层文件名)
4、vivado中调用 xxx_all.ngc文件(Ultrascale系列不支持ngc,可换成7系列编译,生成EDF文件后可在Ultrascale系列上使用)
5、将需要封装的模块设置为顶层模块
6、Synth Options下面最后一项More Options一栏写入 -mode out_of_context
7、综合完成后,Open Synthesized Design,并在vivado TCL Console中输入:
生成DCP:write_checkpoint -noxdef path/xxx.dcp
生成EDF:write_edif path/xxx.edif ( 含IP核:write_edif -security_mode all path/xxx.edif)
注意:路径分隔字符为“/”
局限性
1:原有工程中有的IP在新器件上可能不兼容,编译时会报错,例如XADC;所以需要先去除不兼容的IP;
2:如果开发过程中需要修改源码,使用此方法不便于调试;
3:EDIF和DCP文件支持综合后仿真;
4:DCP文件不支持参数传递。