verilog2bit全流程覆盖V7_330上板实验

概述

      时至今日,不管从国际形势还是国家对于“中国芯”的扶持,“国产化”这一话题越来越要付出实践,对于FPGA这一“万能芯”也是很多企业会优先考虑的。
      从华为被“卡脖子”到集成电路正式成为国家学科,都能看出国家对于国产芯的迫切发展。满怀爱国情怀的我,听说有从事CAD(EDA)工具开发机会时,既欣喜又担忧。欣喜,有一个投身科研的机会;欣喜,有一个为打破国外芯片软件产业垄断做贡献的机会;担忧的是,当然是怕竹篮打水一场空。这将是一个试图改变我国FPAG EDA软件环境,通过自研来争取改变国际垄断却又被现实痛击而不断成长的故事。但我相信,中国集成电路要完善、崛起,就需要有更多人加入,一起贡献想法和力量,群策群力,多元碰撞。所以勇敢向前,通过行动吸引更多的人来从事这个行业,让这个行业碰撞出如互联网一样的火花!

FPGA EDA工具的前世今生

      在二十世纪七十到八十年代,设计人员依靠手工完成电路图的输入、布局和布线。依靠手工在坐标纸上描绘出晶体管图形,输入到图形发生器再用“刻红膜”的方式制作光刻版。到了70年代中期,可编程逻辑技术出现了,开发人员尝试将整个设计工程自动化,这个时期的CAD主要功能是交互图形编辑,晶体管级版图设计、布局布线、设计规则检查,门级电路模拟和验证等。这是EDA的雏形时期。
      当下FPGA 市场份额主要被国外三家FPGA厂商霸占、垄断,这些FGPA主流厂商是:
verilog2bit全流程覆盖V7_330上板实验_第1张图片

      经过半年的艰苦奋斗、历经挫折团队实现了在不使用任何Xilinx公司EDA工具的情况下, 将verilog语言硬件描述代码,转换为可烧写在xilinx v7_330t FPGA上的bit码流文件;

团队在不使用任何Xilinx CAD(EDA) 工具下实现了以下功能

   1.逻辑综合
   2.技术映射
   3.打包
   4.布局
   5.布线
   6.码流生成

FPGA开发流程

verilog2bit全流程覆盖V7_330上板实验_第2张图片

1) 系统功能设计

在系统设计之前,首先要进行的是方案论证、系统设计和FPGA芯片选择等准备工作。系统工程师根据任务要求,如系统的指标和复杂度,对工作速度和芯片本身的各种资源、成本等方面进行权衡,选择合理的设计方案和合适的器件类型。一般都采用自顶向下的设计方法,把系统分成若干个基本单元,然后再把每个基本单元划分为下一层次的基本单元,一直这样做下去,直到可以直接使用EDA元件库为止。

2) RTL级HDL设计

RTL级(Register Transfer Level,寄存器传输级)指不关注寄存器和组合逻辑的细节(如使用了多少个逻辑门、逻辑门的连接拓扑结构等),通过描述数据在寄存器之间的流动和如何处理、控制这些数据流动的模型的HDL设计方法。RTL级比门级更抽象,同时也更简单和高效。RTL级的最大特点是可以直接用综合工具将其综合成为门级网表,其中RTL级设计直接决定着系统的功能和效率。

3) RTL级仿真

也称为功能(行为)仿真,或是综合前仿真,是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。仿真前,要先利用波形编辑器和HDL等建立波形文件和测试向量(即将所关心的输入信号组合成序列),仿真结果将会生成报告文件和输出信号波形,从中便可以观察各个节点信号的变化。如果发现错误,则返回设计修改逻辑设计。常用的工具有Model Tech公司的ModelSim、Sysnopsys公司的VCS和Cadence公司的NC-Verilog以及NC-VHDL等软件。虽然功能仿真不是FPGA开发过程中的必需步骤,但却是系统设计中最关键的一步。

为了提高功能仿真的效率,需要建立测试平台testbench,其测试激励一般使用行为级HDL语言描述,其中RTL级模块是可综合的,它是行为级模块的一个子集合。

4) 综合

所谓综合就是将较高级抽象层次的描述转化成较低层次的描述。综合优化根据目标与要求优化所生成的逻辑连接,使层次设计平面化,供FPGA布局布线软件进行实现。就目前的层次来看,综合优化(Synthesis)是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。真实具体的门级电路需要利用FPGA制造商的布局布线功能,根据综合后生成的标准门级结构网表来产生。为了能转换成标准的门级结构网表,HDL程序的编写必须符合特定综合器所要求的风格。由于门级结构、RTL级的HDL程序的综合是很成熟的技术,所有的综合器都可以支持到这一级别的综合。常用的综合工具有Synplicity公司的Synplify/Synplify Pro软件以及各个FPGA厂家自己推出的综合开发工具。

5) 门级仿真

也称为综合后仿真,综合后仿真检查综合结果是否和原设计一致。在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。目前的综合工具较为成熟,对于一般的设计可以省略这一步,但如果在布局布线后发现电路结构和设计意图不符,则需要回溯到综合后仿真来确认问题之所在。在功能仿真中介绍的软件工具一般都支持综合后仿真。

6) 布局布线

实现是将综合生成的逻辑网表配置到具体的FPGA芯片上,将工程的逻辑和时序与器件的可用资源匹配。布局布线是其中最重要的过程,布局将逻辑网表中的硬件原语和底层单元合理地配置到芯片内部的固有硬件结构上,并且往往需要在速度最优和面积最优之间作出选择。布线根据布局的拓扑结构,利用芯片内部的各种连线资源,合理正确地连接各个元件。也可以简单地将布局布线理解为对FPGA内部查找表和寄存器资源的合理配置,布局可以被理解挑选可实现设计网表的最优的资源组合,而布线就是将这些查找表和寄存器资源以最优方式连接起来。

目前,FPGA的结构非常复杂,特别是在有时序约束条件时,需要利用时序驱动的引擎进行布局布线。布线结束后,软件工具会自动生成报告,提供有关设计中各部分资源的使用情况。由于只有FPGA芯片生产商对芯片结构最为了解,所以布局布线必须选择芯片开发商提供的工具。

7) 时序仿真

是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的。

8) FPGA板级调试

通过编程器将布局布线后的配置文件下载至FPGA中,对其硬件进行编程。配置文件一般为.pof或.sof文件格式,下载的方式包括AS(主动)、PS(被动)、JTAG(边界扫描)等方式。

v7_330t 我们来跑马灯吧!

在Xilinx v7_330t FPGA上测试码流的正确性;在不使用任何Xilinx EDA工具的情况下,将跑马灯的Verilog代码转为BIT文件,并烧写在FPGA上。上板实验图如下:

闪起来吧,我的灯呀!

不用xilinx公司工具实现v7-330t的verilog2bit

总结:通过上板实验,验证了功能的正确性

参考

FPGA开发流程
FPGA厂家

探讨联系方式

Google邮箱:[email protected]
微信:centuryofchong

你可能感兴趣的:(FPGA,FPGA码流生成,FPGA布局布线,Verilog2bit,逻辑综合,技术映射)