目录
前言
介绍
设计输入
综合(SYnthesize)
综合流程
综合要点:
设计实现
翻译
映射
布局布线
生成配置文件
验证
器件配置
前言
这篇博文先总的说一下 Xilinx FPGA开发的基本流程(不包括实例介绍),实例介绍在另有博文介绍。
Xilinx FPGA的开发在ISE(Integrated Software Environment)(集成软件环境)平台上完成,FPGA的设计流程主要分为以下几个部分:
- 设计输入
- 综合
- 设计实现
- 验证
- 器件配置
先给出流程图
介绍
下面分别进行简单介绍:
设计输入
设计输入是将概念设计转化为硬件描述的过程,ISE支持多种描述方式,分别为CORE Generator,第三方网表,原理图设计,HDL描述(Verilog HDL或VHDL),设计约束。
(设计输入阶段,主要是使用硬件描述语言(HDL)对要设计的电路进行描述,可以使用的硬件描述语言分别为Verilog HDL和VHDL(Very High Speed Integrated Circuit Hardware Description Language),这个时候可能要配合IP CORE Generator 生成IP核来辅助设计,当然电路的设计还可以使用原理图设计方式,但这并不主流,且几乎不能用来设计大规模电路。)
综合(SYnthesize)
综合就是将HDL(硬件描述语言)描述转化为针对特定架构的网表描述(门级电路)的过程。
此时,XST(XIlinx Synthesis Tool)的输入为:HDL(例如:Verilog HDL)的源文件和综合库;
XST的输出:NGR和NGC网表文件,分别对应RTL Viewer 和 Technology Viewer;
如下图,ISE中的RTL Schematic和Technology Schematic就分别对应NGR和NGC网表文件。
其他表达方式:
综合优化(Synthesize)是将硬件语言或原理图等设计输入翻译成由与,或,非门、RAM、触发器等基本逻辑单元组成的逻辑连接(网表),并根据约束条件优化生成的逻辑连接。
2018/8/31更新部分:
所谓逻辑综合就其实质而言是设计流程中的一个阶段,在这一阶段中将较高级抽象层次的描述自动地转换成较低层次描述。就现在达到的水平而言,所谓逻辑综合就是通过综合器把HDL程序转换成标准的门级结构网表,而并非真实具体的门级电路。而真实具体的电路还需要利用ASIC和FPGA制造厂商的布局布线工具根据综合后生成的标准的门级结构网表来产生。为了能转换成标准的门级结构网表,HDL程序的编写必须符合特定综合器所要求的风格。
综合流程
1、语言检查(Check Syntax)
2、HDL综合
将HDL描述转化为硬件电路原语(Primitive),硬件宏(如MUX,RAM等),并进行状态机提取及编码优化,对硬件宏进行资源共享优化等逻辑优化。
(就目前的层次来看,综合优化(Synthesis)是指将设计输入编译成由与门、或门、非门、RAM、触发器等基本逻辑单元组成的逻辑连接网表,而并非真实的门级电路。
真实具体的门级电路需要利用FPGA制造商的布局布线功能,根据综合后生成的标准门级结构网表来产生。)
- 低层次优化
将HDL综合的网表进行架构级(不同系列的FPGA就属于架构级)的逻辑优化。
综合要点:
- 充分挖掘某些XIlinx特有的资源(如LUT、进位链、块RAM、移位寄存器等)
- 对FPGA而言,低层次优化过程是时序驱动的,依据的是Perold,Offset等时序约束信息。
设计实现
将综合输出的逻辑网表适配到特定的器件上,并生成用于配置FPGA的位流文件。
翻译
主要完成统一标准工作,将各种网表文件(EDN、NGC、NMC)及约束文件翻译成Xilinx 标准的NGD文件格式,全部由各种NGD原语构成。
映射
- 具体工作为把由NGD原语描述的网表映射到特定FPGA器件中的相应资源(CLB, IOB等)。
- 输入为NGD文件,输出为NCD文件(本地电路描述文件),该文件是由目标器件的特定资源所表示的原始设计。
布局布线
- 布局是将NCD所描述的资源根据约束文件,互联的情况及可用的布线资源情况映射到FPGA器件中的特定位置;
- 布线则根据布局情况将各模块间的连接分配到FPGA的内部互联网络上。
- 布局可以被理解挑选可实现设计网表的最优的资源组合,而布线就是将这些查找表和寄存器资源以最优方式连接起来。
输入输出均为NCD文件,但文件中将根据布局布线情况添加或修改与目标器件特定资源有关的使用信息。
生成配置文件
将FPGA内部全部可用资源的配置信息输出,用于控制芯片以实现特定功能。
验证
将设计所要求的功能的完整性及系统性能进行的检测和测试。
- 仿真
行为仿真(功能仿真):也称为RTL仿真,或是综合前仿真,是在编译之前对用户所设计的电路进行逻辑功能验证,此时的仿真没有延迟信息,仅对初步的功能进行检测。
门级仿真:也称为综合后仿真,综合后仿真检查综合结果是否和原设计一致。
在仿真时,把综合生成的标准延时文件反标注到综合仿真模型中去,可估计门延时带来的影响。但这一步骤不能估计线延时,因此和布线后的实际情况还有一定的差距,并不十分准确。目前的综合工具较为成熟,对于一般的设计可以省略这一步,但如果在布局布线后发现电路结构和设计意图不符,则需要回溯到综合后仿真来确认问题之所在。
时序仿真:是指将布局布线的延时信息反标注到设计网表中来检测有无时序违规(即不满足时序约束条件或器件固有的时序规则,如建立时间、保持时间等)现象。时序仿真包含的延迟信息最全,也最精确,能较好地反映芯片的实际工作情况。由于不同芯片的内部延时不一样,不同的布局布线方案也给延时带来不同的影响。因此在布局布线后,通过对系统和各个模块进行时序仿真,分析其时序关系,估计系统性能,以及检查和消除竞争冒险是非常有必要的。
- STA
静态时序分析
- IN-Circuit验证
板级验证
器件配置
参考文献
http://xilinx.eetop.cn/viewnews-51(参考视频)
https://blog.csdn.net/zqh6516336520/article/details/40505297
https://blog.csdn.net/yangshoub/article/details/74011436
从赛灵思FPGA设计流程看懂FPGA设计
以后会通过实例,让认识更加的深刻。
这篇文章的实例:全过程实现一个最简单的FPGA项目之PWM蜂鸣器控制,由于实验规模小,所以就没有添加时序约束。