首页 | 新闻 | 新品 | 文库 | 方案 | 视频 | 下载 | 商城 | 开发板 | 数据中心 | 座谈新版 | 培训 | 工具 | 博客 | 论坛 | 百科 | GEC | 活动 | 主题月 | 电子展
返回列表 回复 发帖

FPGA程序如何模块化设计?(2)

FPGA程序如何模块化设计?(2)

4)时序提取:产生反标文件,供后续的时序仿真使用。


5)配置:产生FPGA配置时所需的位流文件。




增量设计


传统方法vs增量设计


传统的FPGA设计过程中,每次修改都将导致整个设计的重新编译,如此,时序也将产生变化,针对这一现象,引入了增量设计的概念。


增 量设计主要是指增量编译:根据设计者的分割设置,对不同的层次和模块分别编译。在对设计进行重新编译时,可以保持未修改部分的编译结果,从而节省编译时间。
增量设计可将设计中无需修改的部分锁定并保持其性能,仅对设计中变化的部分重新处理。使用增量设计,设计人员可在验证过程中加速设计变化的调试,将更多时间用于调整设计中的关键元件,甚至在后期设计规范发生改变时,也不会影响整个设计的主要进度。


对于设计中未改变的部分,由于它们布局布线都保持不变,性能也不会变化,因此无需进行重新验证,从而可以节省大量的设计时间。增量设计有助于模块化设计和基于团队的设计流程。


图1 传统方法vs增量设计(略)


设计分割


设计分割指用户定义的逻辑分割,它与物理区域不同。逻辑分割应与设计的层次边界相符合,其中,每个设计实体并不自动成为一个分割。设计分割具有不同的设计文件,如果使用第三方综合软件,要为每个分割生成各自的EDIF或VQM文件。最优化过程不能跨越分割的边界,每个分割部分独立的进行综合和适配。


图2给出了设计分割示意,顶层划为一个分割,其他层次结构的子模块根据具体情况进行分割。不一定每个设计实体即为一个分割,也可以是几个设计模块的组合。


图2 设计分割(略)


对于不同的设计流程,Altera提供了不同的软件支持。自顶向下(Top-Down)的设计流程,整个设计在顶层编译,可由一个设计者或项目管理者完成编译设计,Altera Quartus II 5.0 和5.1中完全支持。自底向上(Bottom-Up)的设计流程,整个设计是在底层编译,在各个设计者分别优化后进行集成。目前Altera Quartus II 5.0和5.1中尚无导入和导出功能,因此并不支持自底向上(Bottom-Up)的设计流程,而借助LogicLock可实现该设计流程。


图3 增量编译流程(略)


增量编译流程


增量编译流程如图3所示,首先,准备利用增量编译的项目。包括:详细的设计分析,识别设计的层次;生成设计分割;使能“完全增量编译”或者“只进行增量综合”;用LogicLock生成设计版图等。


利用LogicLock布图


利用LogicLock生成设计版图:对包括顶层在内的每个分割产生一个LogicLock区域,而后每个LogicLock区域或设计分割将被独立放置在分开的物理区域上,手动或使用Altera Quartus II早期时序估计工具分配物理位置。


LogicLock区域由位置和尺寸定义。用原点表示位置:对于Stratix,Cyclone和MAX II器件,原点位于区域左下角,而其他Altera器件,原点则位于区域左上角。区域的宽度和高度决定了区域的尺寸。


推荐的设计分割用法与布局方式


根据设计经验,分割中有一些推荐用法,包括:所有分割的输入输出端口要有寄存器;应令跨边界的连接最少;将关键路径限制在每个分割的内部;分割不应太小(如<1000个逻辑单元);可能需要均衡使用资源;及分割边界上不使用三态或双向端口等。
同时,推荐的布图方式包括:避免区域间相互覆盖及使用父区域和子区域,从而保持设计的逻辑层次关系,提高区域布局的灵活性等。


其次,执行完全编译。执行完全编译即启动完全编译并编译每一个分割,从而生成在随后增量编译中重新使用的综合后和适配后的网表。


最后,对设计进行修改并执行增量编译。完全编译后,在设计与调试阶段需反复进行设计的修改及增量编译。


执行增量编译


在下一次编译期间为每个分割设置使用的网表类型,如表1所示,然后重新编译设计。


表1 :网表类型设置(略)




设计优化与模块化设计方法


设计优化


FPGA设计过程中,必须采用与其结构相适应的优化技术,才能有效发挥FPGA芯片的能力。设计优化是指在设计没有达到用户要求的情况下,对其进行改进,以便满足设计的初始规格。


设计优化的主要内容包括:理解整个设计;对设计进行约束和设置;优化资源利用;输入输出时序优化;速度优化;编译效果优化及编译和测试时间优化。其设计流程如图4所示。


图4 设计优化流程(略)


只有深入理解整个设计,才能对其进行优化。包括理解系统时序,如系统时钟、模块时钟、时钟域及时钟来源等内部时钟问题。


在理解整个设计的基础上,须对设计进行约束和设置,约束和设置旨在完成编译后,可以根据编译结果对设计进行分析,找到设计中的真正瓶颈,从而有效的引导后续的优化过程。利用Altera提供的开发工具及其他厂商的EDA软件都可设定各种设计约束。


完成约束、设置后,通常将查看并分析编译产生的报告,包括:了解设计的资源使用情况,以便在后续的设计优化中更合理的分配和使用资源;查看并分析时序报告,判断各种时序关系和系统运行速度等指标是否满足了设计的需求,以便对不满足要求的部分进行修改和优化。


优化资源的利用


设计过程中,由于资源数量限制,造成系统不能在目标器件中实现,则需对资源利用进行优化。FPGA的资源,包括:逻辑单元、块RAM、I/O引脚、DSP块、锁相环、布线资源及各种硬IP核等。


设计中最根本、最有效的优化方法是对设计输入(如HDL代码)的优化,比较常用的面积优化方法包括:模块的时分复用、改变状态机的编码方式及改变模块的实现方式等。
当 设计中位置约束或者逻辑锁定约束较多时,可能会造成局部设计拥挤,导致布线资源紧张,此时,可适当解除或放松布线拥挤区域的约束 。


输入输出时序优化


输入输出时序优化需要重点考虑的问题是可编程逻辑器件与外围芯片间的接口时序。在同步系统设计中,外部芯片和可编程逻辑器件使用的时钟经常是同相位的。设计主要关心芯片输入引脚的建立时间和保持时间、数据的时钟到输出延时及数据的输入到输出延时等。


输入输出时序的优化方法:根据外围器件和PCB连线情况,保留一定余量,计算I/O时序要求,并将这些时序要求在EDA软件中对设计进行约束,编译软件将根据约束条件进行自动优化;使用I/O单元的触发器;及使用锁相环电路等。
继承事业,薪火相传
返回列表