很久没有写blog了,半年过去了,新学了一些东西,还是写写比较好。
关于VTR-to-Bitstream这个项目,我现在是自己一个人在摸索,所能获取到的资源都是来自英文论文,以及做过相关项目教授的个人网站。孤军奋战~,以下的内容都是基于我的思考与实践,望有相关了解的人一起讨论。
首先讲下VTR-to-Bitstream的概念吧,VTR(verilog to routing)是一种toolchain(工具链),目的是将要烧到FPGA板子上的verilog文件转化为xdl(xilinx description language)文件,该文件能够在Xilinx ISE 的工具下,打开ISE的command输入(我是win7的系统): -xdl xdl2ncd filename.xdl ,能将我们通过VTR工具链生成的xdl文件转化为网表文件ncd,之后再输入 -bitgen filename.ncd, 就能生成我们所要的bit文件,再烧到板子里即可,这是整体的流程,但是在VTR这个工具链中,要研究的东西实在是太多。
VTR有这么一篇发表在FCCM上的论文:~eddieh/hung_fccm13.pdf
里面描述了整个流程,我就稍稍提炼一下,VTR事实上是ODIN II, ABC, VPR 和RapidSmith 工具的结合。
ODIN II 工具是Front-end Synthesis, 旨在Description of Heterogeneous Blocks on FPGA,经过这个工具后会产生.blif文件,即BLIF format Netlist of Logic and blackboxes for Heterogeneous Blocks.
ABC工具是Logic Optimization, Technology Map to LUTs, it can generate .blif Format Netlist of LUTs and Flip-Flops and blackboxes for Heterogeneous Blocks.
VPR 工具:(1) Pack Circuit or Read in an Existing Packed Netlist —> generate .net Format Netist of Logic Blocks and Heterogeneous Blocks
(2)Place Circuit or Read in an Existing Placement —-> FPGA Architecture Description File
(3)Perform Either Global or Combined Global/Detailed Routing —> Existing Placement or Placement from another CAD tool
经过以上三个工具之后,会生成 .NET .PLACE . BLIF 和 .ROUTE 文件,利用这些文件。再通过RapidSmith(网上实现该工具的方式是JAVA),生成XDL文件,后来的步骤就是上述我所说的了。最终生成bit。
VTR-to-Bitstream 比起之前的ISE工具来,能让我们更专注于加速算法的研究,并且该种方法的布局布线比起ISE的时间更短。随着该工具的不断完善,时延、功耗等数据也能得出。其实toolchain就是一个黑匣子,我们所做的就是放进去verilog文件,出来就是bit文件。
目前我所在学习的东西是针对VPR过程中的FPGA ARCHITECTURE XML文件的编写。每一个板子都有不同的结构,,而今网上能够找到的XML文件有Stratix IV和 Virtex-6。正在仿写ZYNQ板子,同时也一直在尝试如何在LINUX机子上彻底的跑一次基于V6板子的VTR-to-Bitstream流程,如今这个过程卡在无法生成xdl文件,.NET, .PLACE, .ROUTE .BLIF和.XML都有,RapidSmith工具我还使用的不熟。教授网站上给的文件夹都是已经封好了的,每个工具都有应的shell文件。看代码的过程是冗长而又必须的,与君共勉。
奋斗令我们的生活充满生机,责任让我们的生命充满意义!