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

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

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

速度优化


速度优化即最高时钟频率优化,其最有效的方法是对设计代码进行优化。具体优化方法包括:增加流水线级数、组合逻辑分割和平衡、复制高扇出的节点及令状态机仅完成控制逻辑的功能等。


编译效果优化


使用不同的随机数种子,编译结果将在小幅度内变动。如果设计已经非常接近系统需求,则可以尝试改变随机数种子,使性能达到系统需求。同时,使用软件工具,如Altera的"Design Space Explorer",可以一次运行多种编译设置和优化目标,探索设计的优化空间。


编译和测试时间优化


设计较大或约束较多时,编译时间往往很长,从而影响开发进度。缩短编译时间有以下3种常用方法:使用快速编译方式,其特点是速度快,但可能在一定程度上影响设计性能;使用增量编译,最大限度的利用上一次的编译结果;反标注,使逻辑的位置和布线成为下一次编译的约束,对这部分不进行重新编译。


模块化设计方法


模块化设计


模 块化设计是将复杂的大型设计分成多个模块,利用基于团队的优势,分别进行设计和调试。采用模块化设计,可以进行系统的标准化设计,即将一些系统中常用的功能块进行模块化设计、调试和包装,以备调用。


与传统设计流程相比,模块化设计流程的输入模块是已经优化并达到时序收敛的子模块,通过模块化设计方法继承以往编译与实现的结果,在保证每个子模块时序收敛的基础上,达到顶层设计的时序收敛。因此有效避免了对整个系统进行的繁琐的设计编译、时序分析以及优化的反复循环,提高了设计效率。


模块划分的一般原则:模块内部联系紧密;各个模块的功能尽量独立;模块间连接尽量简单。


模块化设计基本流程


模块化设计的基本流程(如图5所示),分为两部分,一:模块化设计输入与综合,包括:顶层模块设计(输入与综合)、子模块划分及子模块的输入与综合。二:模块化设计实现,包括模块分割,添加设计约束、各子模块的实现(布局布线)及设计整合:将顶层设计和各子模块合并。


图5 模块化设计基本流程(略)


顶层设计是进行模块化设计的必要条件,包括:所有全局逻辑、输入输出端口、类似黑匣子的子模块及模块间、模块与输出输入端口间的信号连接等。项目设计人员设计各个子模块的逻辑实体,综合出各个子模块的网表。


模块化设计的实现包括三个阶段:初始预算、模块实现及设计整合。初始预算阶段,项目负责人对设计的整体进行分割和逻辑资源的分配,主要任务包括:对设计进行全局区域规划和布局;规划每个模块的规模和区域;规定每个模块的输入输出端口及最初的时序约束。


模 块实现阶段,项目设计人员将实现顶层设计中确定的各个模块,包括:添入功能实体、添加约束、进行布局布线。当最终实现结果满足模块的设计要求,则该模块的实现阶段完成。设计整合阶段,项目负责人将所有实现好的有效模块的设计结果与顶层设计结果进行整合,从而完成整个设计,包括:对设计进行合并及对合并后的设计进行布局布线。


Altera LogicLock工具


Altera LogicLock工具是Altera Quartus II软件内嵌的高级工具,LogicLock模块化设计流程支持复杂设计的某个模块独立进行设计、实现及优化,并将该模块的实现结果约束在规划好的FPGA区域内。这样在进行设计整合时,能够更好的继承每个模块的实现结果,提高模块复用效率,缩短设计周期。


基于LogicLock的模块化设计流程如下:1.合理规划设计层次并划分模块;2.使用Quartus II软件自带的综合软件或其他第三方综合软件,对设计的每个模块进行综合;3.对每个子模块建立Quartus II软件工程,在每个独立的工程中分别对每个子模块进行设计优化,以满足每个子模块的时序性能和面积目标,创建LogicLock区域;4.当所有子模块都满足要求后,导出所有模块和LogicLock区域的反标信息,作为后续设计的约束;5.建立顶层工程,根据设计要求选择节点反标或布线反标,将每个子模块的LogicLock区域反标信息导入顶层设计中;6.编译顶层设计,并观察顶层设计是否满足设计需要。


通过 LogicLock可以将关键路径分组,便于时序优化;继承模块的设计优化成果,便于设计重用;通过增量的编译与实现,有效缩短设计编译时间;支持模块化设计方法,便于分工协作与并行设计。
继承事业,薪火相传
返回列表