1、电路设计与输入
电路设计与输入是指通过某些规范的描述方式,将工程师电路构思输入给EDA工具。常用的设计方法有硬件描述语言(HDL)和原理图设计输入方法等。原理图设计输入法在早期应用得比较广泛,它根据设计要求,选用器件、绘制原理图、完成输入过程。这种方法的有点是直观、便于理解、元器件库资源丰富。但是在大型设计中,这种方法的可维护性较差,不利于模块构造与重用。更主要的缺点就是当所选用芯片升级换代后,所有的原理图都要做相应的改动。目前进行大型工程设计时,最常用的设计方法是HDL设计输入法,其中影响最为广泛的HDL语言是VHDL和Verilog HDL.他们的共同特点是利用由顶向下设计,利于模块的划分与复用,可移植性好,通用性好,设计不因芯片的工艺与结构不同而变化,更利于向ASIC的移植。波形输入和状态机输入方法是两种常用的辅助设计输入方法:使用波形输入时,志耘爱绘制出激励波形与输出波形,EDA软件就能自动地根据响应关系进行设计;使用状态机输入法时,设计者只需要画出状态转移图,EDA软件就能生成相应的HDL代码或原理图,使用十分方便。但是需要指出的是,波形输入和状态机输入方法只能在某些特殊情况下缓解设计者的工作量,并不适合所有的设计。
2、功能仿真
电路设计完成以后,要用专用的仿真工具对设计进行功能仿真,验证电路功能是否符合设计要求。功能仿真有时也称为前仿真。通过仿真能及时发现设计中的错误,加快设计进度,提高设计的可靠性。
3、综合优化
综合优化(Synthesize)是指将HDL语言、原理图等设计输入翻译成由与、或、非门,RAM,触发器等基本逻辑单元组成的逻辑连接(网表),并根据目标与要求(约束条件)优化所生成的逻辑连接,输出edf和edn等标准格式的网表文件,供FPGA/CPLD厂家的布局布线器进行实现。
4、综合后仿真
综合完成后需要检查综合结果是否与设计一致,做综合后仿真。在仿真时,把综合生成的标准延时文件反标志到综合仿真模型中去,可估计门延时带来的影响。综合后仿真虽然比功能仿真精确一些,但是只能估计门延时,不能估计线延时,仿真结果与布线后的实际情况还有一定的差距,并不十分准确。这种仿真的主要目的在于检查综合器的综合结果是否与设计输入一致。目前主流综合工具日益成熟,对于一般性的设计,如果设计者确信自己标注明确,没有综合歧义发生,则可省略该步骤。但是如果在布局布线后仿真时发现有电路结构与设计意图不符的现象,则常常需要回溯到综合后仿真以确认是否时由于综合歧义造成的问题。
5、实现与布局布线
综合结果的本质是一些由与、或、非门,触发器,RAM等基本逻辑单元组成的逻辑网表,它与芯片的实际的配置情况还有较大的差距。此时应该使用FPGA/CPLD厂商提供的软件工具,根据所选芯片的型号将综合输出的网表适配到具体FPGA/CPLD器件上,这个过程就叫做实现过程。因为只有器件的开发商最了解器件的内部结构,所以实现步骤必须选用器件开发商提供的工具。在实现过程中最主要的过程是布局布线(PAR)。所谓布局(Place),就是指将逻辑网表中的硬件原语或者底层单元合理地适配到FPGA内部的固有硬件结构上,布局的优劣对设计的最终结果(在速度和面积两个方面)影响很大。所谓布线(Route),是指根据布局的拓扑结构,利用FPGA内部的各种连线资源,合理正确连接各个元件的过程。FPGA的结构相对复杂,为了获得更好的实现结果,特别是保证能够满足设计的时序条件,一般采用时序驱动的引擎进行布局布线,所以对于不同的设计输入,特别是不同的时序约束,获得的布局布线结果一般有较大的差异。CPLD结构相对简单得多,其资源有限而且布线资源一般为交叉连接矩阵,故CPLD的布局布线过程相对简单明朗的多,一般称为适配过程。一般情况下,用户可以通过设置参数指定布局布线的优化准则,总的来说优化目标主要有两个方面,面积和速度。一般根据设计的主要矛盾,选择面积或者速度或者是两者平衡等优化目标,但是当两者冲突时,一般满足时序约束要求更重要一些,此时选择速度或时序优化目标更佳。
6、时序仿真与验证
将布局布线的延时信息反标注到设计网表中,所进行的仿真就叫时序仿真或布局布线后仿真,也叫后仿真。该仿真的仿真延时文件包含的延时信息最全,不仅包含了门延时,还包含了实际布线延时,所以布局布线后仿真最准确,能够较好的反映芯片的实际工作情况。一般来说,布线后仿真步骤必须进行,通过布局布线后仿真能检查设计时序与FPGA实际运行情况是否一致,确保设计的可靠性和稳定性。
——功能仿真主要目的在于验证语言设计的电路结构和功能是否和设计意图相符。
——综合后仿真主要目的在于验证综合后电路结构是否与设计意图相符,是否存在歧义综合结果。
——布局布线后仿真主要目的是验证是否存在时序违规。
7、板级仿真与验证
有些高速设计情况下还需要使用第三方的板级验证工具进行仿真与验证。这些工具通过对设计的IBIS、HSPICE等模型的仿真,能较好地分析高速设计的信号完整性、电磁干扰等电路特性。
8、调试与加载配置
设计开发的最后步骤就是在线调试或者将生成的配置文件写入芯片中进行测试。示波器和逻辑分析仪是逻辑设计的主要调试工具。传统的逻辑功能板级验证手段是用逻辑分析仪分析信号,设计时要求FPGA和PCB设计人员保留一定数量FPGA管脚作为测试管脚,编写FPGA代码时将需要观测的信号作为模块的输出信号,在综合实现时在把这些输出信号锁定到测试管脚上,然后连接逻辑分析仪的探头到这些测试管脚,设定触发条件,进行观测。
任何仿真或验证步骤出现问题,就需要根据错误定位返回到相应的步骤更改或者重新设计逻辑设计的主要调试工具。传统的逻辑功能板级验证手段是用逻辑分析仪分析信号,设计时要求FPGA和PCB设计人员保留一定数量FPGA管脚作为测试管脚,编写FPGA代码时将需要观测的信号作为模块的输出信号,在综合实现时在把这些输出信号锁定到测试管脚上,然后连接逻辑分析仪的探头到这些测试管脚,设定触发条件,进行观测。
任何仿真或验证步骤出现问题,就需要根据错误定位返回到相应的步骤更改或者重新设计。
FPGA中丰富的布线资源
布线资源连通FPGA内部的所有单元,而连线的长度和工艺决定着信号在连线上的驱动能力和传输速度。FPGA芯片内部有着丰富的布线资源,根据工艺、长度、宽度和分布位置的不同而划分为4类不同的类别。
第一类是全局布线资源,用于芯片内部全局时钟和全局复位/置位的布线;
第二类是长线资源,用以完成芯片Bank间的高速信号和第二全局时钟信号的布线;
第三类是短线资源,用于完成基本逻辑单元之间的逻辑互连和布线;
第四类是分布式的布线资源,用于专有时钟、复位等控制信号线。