增量设计流程针对需要变更部分进行优化
将综合工具的功能和集成设计环境 (IDE) 结合在一起,提供高效的增量设计方法,管理工程设计变更通知 (ECO) 需求,使设计人员能对原设计作模块级变更,即只更改那些需要变更的部分。这种设计流程大大减少了变更对那些原已成熟的设计部分的影响,因此能够节省时间和资源。
FPGA设计人员总是希望设计“一次便成功”,但由于复杂的大型系统中涉及各种复杂功能、性能要求,以及数量庞大的系统门,因此,不管他们花费多少时间和精力,通常都需要更改设计、纠正一些逻辑问题或做进一步的优化。与传统的设计流程相比,面向设计/综合及布局布线物理实现而开发的增量设计流程,却非常适合于修改或优化设计中的特定部分,而且不会影响已经达到设计要求的其它部分。如果因为系统内存受限或涉及大强度运行时间而难于采用自上而下的严密方法时,设计人员还可采用增量设计流程完成大型设计。在增量设计流程中还采用了其它一些设计策略,以便在继续独立地开发设计某些部分的同时,冻结该设计的另一些部分。
传统设计的创建和物理实现
一般的FPGA开发流程有如下几个步骤:用HDL语言创建设计;运行综合前仿真;设置约束;综合设计;运行综合后仿真 ;进行布局布线 ;分析设计的时序性能。
若能满足功能和时序性能的要求,则可生成编程文件并对器件进行编程。Libero IDE (集成设计环境) 白金版工具配有Actel及其合作伙伴提供的一流开发工具,可成功地管理“一次性成功”的设计。为了改善性能,Actel 的SmartTime时序分析和约束管理工具提供了识别和解析设计中关键路径的功能。此外,Magma PALACE物理综合工具一般都能大幅提升Actel的Fusion可编程系统芯片 (PSoC) 和ProASIC3器件的整体性能。
但若在初始布局完成后还需要进一步优化设计的某些部分,那该怎么办?若性能还不稳定,或有些构件还存在功能问题,又该怎么办?
增量设计流程的概念和优势
增量设计流程 (见图1) 与传统的综合/物理实现流程非常相似。不过,该流程在初始综合项目设置和编译之后增加了一些“编译点”。这些编译点是设计的一部分,但作为相对独立的综合单元存在;它们有自己的约束文件,进行单独优化 ;而且只在必要时才需根据设计关联分析和设计变更性质进行重新综合。为确保增量设计的稳定性以及实现具有多个输出网表的层次化的布局布线 (每个编译点有一个输出网表,每个设计的顶层有一个网表),这些编译点会被锁定。“锁定”编译点是指在综合该编译点的上一层时,不对该点进行重新优化,其层次接口保持不变,且不对其边界进行优化。这意味着同一个被锁定的编译点的所有实例都采用相同的物理实现,在综合中均同等对待。
另外,设计组可同时在各个编译点独立展开工作,每个编译点均视为可进行增量修改和个别映射的单独构件,设计中可识别和嵌套任意数目的编译点。采用编译点后,就可管理设计变更,且不影响其它设计部分。
增量设计流程中采用一种“基于差异”的增量综合方法,跟踪设计的变化和关联。这样,只有那些直接受增量变更影响的设计部分才会进行重新综合。这种综合方法也可确保网表中所作的增量变更能被相应的网表导入和编译功能所识别。设计人员可用“Layout Options”(布局选项) 菜单中的“Incremental Mode”(增量模式) 和“Lock Existing Layout”(锁定现有布局) 选项来尽可能保持原有的布局布线。只有那些与综合工具产生的编译点变更直接相关的布局部分才会被更新和修改。
Synplify Pro 综合工具的MultiPoint功能和Actel的Libero集成设计环境 (IDE) 一起提供了高效的增量设计方法,管理真正的工程设计变更通知 (ECO) 需求。两者的结合使设计人员能对原设计作模块级变更,即只更改那些需要变更的部分。这种设计流程大大减少了变更对那些原已成熟的设计部分的影响,因此能够节省时间和资源。
例如,你可用Synplify Pro中的MultiPoint 为日后设计或重新设计预留多个“编译点”。也可将设计分成一些较小的综合对象,以便对其中一些区块进行修改,同时又不影响另一些区块。在特大型设计中,MultiPoint还能对增量区块进行设计和综合,避免系统内存或运行时间方面的问题。
Actel 的Libero可轻易接受Synplify Pro的MultiPoint 综合产生的更新网表。Libero中“增量”布局布线流程提供ECO方法,而且,只更新那些需要更新的布局部分,原布局中 (由用户选中) 的其余部分将不受影响。显然,用增量布局方法比重新进行整个布局快得多。
在许多情况下,你可能需要返回到最初的设计,进行功能和性能修改,使其达到设计要求。此时,若使用Synplify Pro中的MultiPoint 综合和Libero IDE中的布局布线选项,设计人员就可用有效的增量ECO模式方法,以最短的时间完成设计更新,且不会影响那些已经完成的宝贵的设计和开发工作。
而且,Libero IDE中的设计“视图”允许在同一设计项目中独立保存设计的不同版本。这个功能可让设计人员保存先前的约束和布局布线文件,从而在增量设计布局与原来的布局间作比较。这样,你就能轻松判断增量修改后的设计能否满足设计要求,或原来的方案是否更好些。有了这些视图,你就能轻松地在原始布局上进行更改,或以各增量布局为起点逐次进行更改,并比较每次迭代的结果。
增量设计流程能够给用户带来许多益处 :一方面,可将大型设计分解成一些较小的区块,减少综合和布局布线的总体运行次数和内存需求;第二,可在Synplify Pro中标记网表或布局中感兴趣的区域,并以增量方法进行修改,最大限度地减少对原布局的影响,同时还能节约重新综合和布局运行时间;第三,传统自下而上的设计需要设计人员编写和维护一些费时且易出错的脚本,用于引导综合和跟踪设计关联。增量流程采用基于差异的增量综合方法,无需这类脚本。
评论