在xilinx-FPGA中实现包含有Synopsys DesignWare IP的RTL代码[转帖]
- UID
- 125664
- 性别
- 男
|
在xilinx-FPGA中实现包含有Synopsys DesignWare IP的RTL代码[转帖]
在SoC的设计中,FPGA验证是必不可少的一个步骤,如果芯片中所有的数字逻辑都是由RTL明码写成,那么FPGA的综合、布局布线和下载往往不会出现什么问题。但是如果我们在设计中使用了Synopsys公司提供的DesignWare的IP,那么我们的FPGA综合就会出现问题,由于DesignWare的IP是加密的,所以无论是对于Xilinx的ISE还是Synplicity的Synplify,DesignWare IP的RTL代码都是不可见的,所以我们将只能选择Synopsys(r)的FPGA Compiler对所有代码进行综合,但是由于FPGA Compiler的效率不如Synplify,所以有时会出现FPGA资源耗尽的情况,更加麻烦的是由于综合没有在FPGA供应商提供的统一环境(如Xilinx ISE)下进行,用户在使用FPGA上的DCM和memory等资源时会遇到很多麻烦。所以有时需要我们使用Synopsys的FPGA Compiler单独对DesignWare IP的RTL进行综合,然后再使用Synplify等综合工具对整个项目进行综合。下面以使用DesignWare的memory controller(DW_Memctl)和Xilinx的FPGA为例,详细介绍一下这个过程:(我们整个FPGA的开发环境是Xilinx的ISE,使用的综合工具是Synplify)
如上文所述,由于DW_Memctl是Synopsys公司提供的IP,RTL只能用Synopsys公司的综合工具进行综合。所以我们必须先用Synopsys的综合工具将DW_Memctl综合为网表文件,然后加入ISE的环境中综合入TOP中,步骤如下:
用Synopsys公司的FPGA Compiler II综合DW_Memctl,注意一定要先在Creat Implementation选项中选中Do not Insert I/O pad,否则ISE中实现的时候将不能将带有I/O pad信息的网表综合到顶层中去。综合完后我们可以得到一个不带I/O pad信息的网表文件DW_Memctl.edf。如图1所示:
在ISE中做一个DW_Memctl的黑盒子,这个verilog文件只有输入与输出端口,synplify在综合的时候可以识别出这是一个黑盒子,在log file中将有如下的显示: @W:CG146 :"E:\XXX\XXX_TOP_NODCM\DW_memctl.v":3:7:3:15|Creating black box for empty module DW_memctl
将用FPGA Compiler II综合出来的网表文件DW_memctl.edf放入ISE 相应工程的根目录下。
用Synplify对TOP进行综合的时候,遇到这样的黑盒子,Synplify将自动在根目录下寻找没有I/O pad信息的edf网表文件,并且加入到设计中去,下面是在综合过程中显示的信息: Command Line: ngdbuild -intstyle ise -dd e:\XXX\XXX_top_nodcm/_ngo -nt timestamp -uc XXX_top.ucf -p xc2v1500-bg575-6 XXX_top.edn XXX_top.ngd Reading module "XXX_top.ngo" ( "XXX_top.ngo" unchanged since last run )... Reading NGO file 'e:/XXX/XXX_top_nodcm/_ngo/XXX_top.ngo' ... Reading module "DW_memctl.ngo" ( "DW_memctl.ngo" unchanged since last run )... Loading design module "e:\XXX\XXX_top_nodcm\_ngo\DW_memctl.ngo"... Reading module "dprf9gp_512x16m4.ngo" ( "dprf9gp_512x16m4.ngo" unchanged since last run )... 这样我们就完成了对真个项目的综合,解下来的步骤就和以前的步骤一摸一样的,Translate,Map,P&R,Generate Program File,然后就可以下载测试了。
同样的方法也适用于Xilinx ISE中提供的综合工具XST。
作者:蒋燕波 意法办导体深圳设计中心
|
|
|
|
|
|