• 易迪拓培训,专注于微波、射频、天线设计工程师的培养
首页 > 电子设计 > PCB设计 > PCB设计 > 增量设计流程针对需要变更部分进行优化

增量设计流程针对需要变更部分进行优化

录入:edatop.com    点击:

将综合工具的功能和集成设计环境 (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中标记网表或布局中感兴趣的区域,并以增量方法进行修改,最大限度地减少对原布局的影响,同时还能节约重新综合和布局运行时间;第三,传统自下而上的设计需要设计人员编写和维护一些费时且易出错的脚本,用于引导综合和跟踪设计关联。增量流程采用基于差异的增量综合方法,无需这类脚本。

[p]

  增量设计流程的六个实施步骤

  步骤一:准备采用增量流程的设计

  创建设计后,使用Synplify Pro综合工具中MultiPoint的第一步是在启动Synplify Pro时创建“实现选项”。该选项包含器件、速度级别、全局频率,以及其它设计和优化参数。之后,也可以创建一些采用不同参数或包含设计变更的实现方案来测试设计的变更效果。例如可为初始参数和HDL设计代码创建名为“实现方案 1”的实现方案。

  Synplify Pro的“Compile Only” (只有编译) 功能有助于Synplify Pro的SCOPE约束编辑器理解设计的层次结构。Synplify Pro中的SCOPE(r) 约束编辑器管理综合和布局布线的约束条件,同时也用于定义各编译点及其相应的约束条件。编译点和约束条件都保存在约束文件中,作为该实现方案的一部分,且约束条件已设置为编译点定义的一部分。编译点被定义在新的顶层约束文件中,或者说,编译点的定义被添加到已有的顶层约束文件 (.sdc) 中。

  然后,从Synplify Pro的工具条中启动SCOPE,并从“Select File Type”(选择档案类型) 对话框中选择“Top Level Module”(顶层模块)。使用这个菜单命令,你可根据设计识别出的模块列表创建各编译点。你可锁定某些感兴趣的模块或功能区块。这些被锁定的区块将被Synplify Pro识别为编译点,并同时设置好其它的一些顶层约束,如输入/输出延迟、时钟频率、或多循环路径。

  必须在相应的 .sdc文档中为每个编译点规定其约束条件,并在顶层.sdc文件中为整个设计添加单独的顶层约束条件。设计环境提供名为“Create SCOPE File”(创制 SCOPE 档案) 的对话框,让用户轻松建立编译点和约束条件。

  在SCOPE中完成编译点和约束的设置后,就可以对顶层设计进行综合处理。

  步骤二:分析Synplify Pro的结果

  评价综合结果有几种方法。Synplify Pro将时序和区域写入实现方案目录中的日志文档。你可在Synplify Pro的HDL Analyst RTL和 Technology schematic views中评价设计;确定其是否已达到设计目的。你也可查看和隔离某些关键路径,搜索和标出某些重点设计目标,在源文件间进行交叉探测。在这个层面上发现的任何错误都应当予以纠正。

  步骤三:综合或以增量方式重新综合

  Synplify Pro允许用户以增量方式综合设计或对整个设计进行综合。如果某一编译点从未改变,Synplify Pro便会使用前次综合运行时产生的建模文件。你可选择以增量方式综合设计 (即执行“run incrementally”指令),该指令只综合编译点;而且,只有那些已经出现源代码、约束或实现变更的编译点才会改变。也可用“re-synthesize all”(重新综合所有) 指令重新综合整个设计。一般来说,选择以增量方式综合设计比较省时。[p]

  步骤四:在物理实现环节将更新的网表导入Libero

  一旦Synplify Pro生成网表,就自动成为Libero IDE文档管理器的一部分,并且可用于布局布线 (即可被布局功能调用)。在设计流程和文档管理器与Libero之间的用户界面上,你很容易就找到和选出Synplify Pro创建的网表实现方案(参见图2)。


  假设该网表是更新后的网表,包含设计和综合过程中产生的增量变更,你可能首先希望保护Libero的初始布局布线过程生成的原始布局。在Libero中,你可轻松地将原始布局保存为物理设计“View”(也叫做“implementation”) 文件,可按使用方便给该视图命名,比如命名为“Design_Layout_1”。Libero不会用更新的网表结果覆盖“Design_Layout_1”这个文件,它允许在同一项目中创建新的View。例如,可将名为“Design_Layout_2”的文件用于存放更新网表的实现和测试结果。这个功能使用户能够比较用Synplify Pro产生增量网表变化前后的结果。

  接下来,在Libero中打开Actel的物理实现工具Designer,将更新的网表用新的实现方案名称导入Libero,并编译设计。编译设计后,在Libero的布局选项中完成设计布局。该菜单的缺省选项会对整个布局进行重新布局布线。对于包含经MultiPoint更新后的网表,Actel建议采用完全布局布线。完全布局布线的布局效率最高,但需要对所有时序进行重新验证。从增量修改策略的角度来看,只对那些直接受增量变化影响的布局部分进行重新布局布线也许更为有利。布局选项菜单包括“Place Incrementally”(放置增量)、“Lock Existing Placement (Fix)”[锁定现有放置 (修正)]和“Route Incrementally”(布线增量)

。“Place Incrementally”(没有锁定) 使用现有的元件布局作为参考起始点,但大多数情况下会得到不同的布局结果。“Place Incrementally”采用针对元件增量布局的高级算法,以尽可能满足时序要求。

  用“Lock Existing Placement (Fix)”锁定现有的布局,可减小布局结果因增量变更而引起的不可预测性,这是因为Libero的布局过程没有涉及所有的固定 (不改变的) 区块。若加入增量变更,用户需要确保FPGA阵列具有足够的设计空间。如果增量变更大,而且设计空间已经非常紧张,布局有可能不成功。如果事先知道以后会进行增量变更,可使用Libero IDE的平面空间规划工具 (Chipplanner)在芯片上为变更保留一些区域。该方法与锁定初始布局配合,就可快速、有效地将增量变更加入,而且能按要求保留原布局中的某些部分。


  步骤五:评测更新后的布局

  完成布局后,使用Libero的静态时序分析工具SmartTime来验证新的实现方案的整体器件性能 ;必要时,分析关键路径:比较Design_Layout_1和Design_Layout_2增量布局流程的性能结果,并确定增量更新是否已达到设计目标。

  步骤六:器件编程和调试

  在采用ECO流程达到设计目标后,就可使用Libero IDE提供的FlashPro ISP (在系统内编程) 工具、Silicon Sculptor编程工具,以及Synplicity的 Identify(r) 及Actel的Silicon Explorer器件调试工具和验证工具。

  总结

  Synplify Pro MultiPoint综合和Libero IDE开发工具为管理实际的ECO需求提供了有效的增量设计流程。两者的结合使设计人员能对原设计作模块级变更,而且只更改那些需要变更的部分。这种设计流程最大限度地减少了变更对那些原已成熟的设计部分的影响;由于无需对整个设计重新布局,因而节省了时间。用户可使用Synplify和 Libero中的“实现选项和视图”,轻松地建立不同设计选项方案,进而分析和比较这些方案,并选出性能最佳的方案。

射频工程师养成培训教程套装,助您快速成为一名优秀射频工程师...

天线设计工程师培训课程套装,资深专家授课,让天线设计不再难...

上一篇:基于DDS技术三相功率可控PWM信号的FPGA实现
下一篇:基于ANSYS的漏感变压器仿真计算

射频和天线工程师培训课程详情>>

  网站地图