热度 1| |
大型的设计或时序关键性模块的编译时间往往比较长,在常规的设计流程中,设计中任何小的改动都将需要对整个设计重新执行一遍编译、综合、布局布线等步骤,所以效率比较低。为解决这个问题,”赛灵思提出了partition和smart guide编译技术用来提高设计效率,可能很多朋友都没有注意到这两个工具,但使用起来倒是很简单的,”赛灵思有一篇文档感兴趣的朋友可以参考一下: http://www.xilinx.com/support/documentation/application_notes/xapp918.pdf 下面简单说明下这两个工具的使用: 一、smart guide的使用 SmartGuide将用户指定的以前实现的设计和当前实现进行比较,然后尽可能保留设计的未变更部分。如果需要满足时序目标并生成成功的实现,就会重新实现保留的设计部分。 SmartGuide 适用于整个设计,如要使用SmartGuide技术,在ISE界面左边的SOURCES里右键点击顶层模块,选择SmartGuide…, 如下图一示: 在弹出的配置窗口钩选Use SmartGuide, 并且通过浏览器指定要作为参考的NCD文件,最后点OK就可以开启SmartGuide功能了,然后按普通工程一样编译、综合、布局布线来实现结果。 二、partition的使用 partition用于保留以前已实现设计的未变更部分。在实现设计时,对没有变更的设计实现工具会通过“复制粘贴”等操作保证将该分区的实现数据保留下来。通过将实现结果保留下来,分区可以实现设计的已修改部分而不影响设计的其余部分或已保留的分区,这也有助于缩短编译时间。 要使用partition技术,只需要在ISE界面左边的SOURCES里右键点击一个想要实现分区的模块,然后选择New Partition, 如下图二示: 然后右键点击分区模块, 在弹出的右键菜单里选择Porperties…,即上图中右键菜单的最后一个选择项。在弹出窗口可以选择分区保留级别,具体有四个选择项如下图三示: 各个选择项说明如下: ①Inherit(routing):这是默认的保留级别,对顶层模块的保留级别设为“Routing”,而较低级分区的保留级别设为“Inherit”。 “Inherit”即为继承上层模块的保留级别。 ②Routing:此保留级别保留布线后的结果,包括综合的网表和信息、布局信息和布线信息,提供的保留程度最高,相对而言给予实现工具满足时序或实现目标的灵活性最小。 ③Placement:此保留级别保留布局后的结果,包括综合的网表和信息、布局信息和部分布线信息,也可能是所有的布线信息,提供的保留程度次高,相对而言给予实现工具满足时序或实现目标的灵活性次小。 ④Synthesis:此保留级别只保留设计的综合网表,提供的保留程度最底,相对而言给予实现工具满足时序或实现目标的灵活性最大。 另外右键点击分区模块, 在弹出的右键菜单里里有个Delete Partition 和Partition Force 菜单中也会用到,如下图四所示: Delete Partition就是删除分区。 Partition Force两个选项为: Force Synthesis Out-of-date: 使重新综合并重新实现分区。 Force Implement Design Out-of-date:使重新实现分区,但保留已综合的网表。 分区设好后按普通工程一样编译、综合、布局布线来实现结果就可以了。 三、partition和smart guide的选择 在一个设计中不能同时使用partition和smart guide技术,所以要根据具体情况选择合适的技术。根据赛灵思xapp918.pdf文档描述,在下述情况使用smart guide比较合适: ①一两个模块中的少量逻辑变更(少于 10%),不影响设计的其余部分。 ②移动PAD位置。 ③更改元件属性。 ④更改时序约束。 以下情况使用partition比较合适: ①设计修改量比较大的情况 ②为了缩短综合实现工具的实现运行时间,如NGDBuild、MAP 和 PAR时间 ③减少验证:由于实现完全相同,因而分区被保留,不需要重新验证。 ④希望方便对各模块进行不同的控制,而smart guide是对整个设计而言的。 最后提一下如果编译时间比较长而想提高一些编译速度的话,除了使用本文提到的partition和smart guide增量编译技术,一般情况下,选用更高版本的ISE软件和使用命令行的Tcl脚本也可以获得更快的编译速度。 欢迎大家来讨论与交流,本文为“安富利杯”赛灵思FPGA设计技巧与应用创新博文大赛参赛作品。 |