在元器件和网络被引导之后,新的和经修改的元器件及网络被增加到设计中。网表中没有变更的那部分在某些情况下必须被重新布局和布线,但是,这只在设计变化引起电路中另一个部分出现一个重大路径时序冲突的情况下。正是因为该原因,这是一个清除阶段。如果存在关键路径的时序冲突,就会有一些引导逻辑的移动以确定时序。在来自新的和已修改逻辑的关键路径上的清除阶段可能迫使引导逻辑的移动。这个清除阶段极大地增加成功实现一项设计的机率,该设计以稍微降低一些逻辑的保存为代价,以满足时序约束的要求。
Partition如何运作?
为了做到准确无误的保存,设计工程师必须对模块实例设置一个被称为Partition的属性。这将把Partition与该设计的其它部分相隔离。通过隔离模块实例,其接口(跨越Partition边界的连通性)被保证不会在各种实现之间被修改。这使得在Partition内的元器件和网络可从以前的实现中被复制并粘贴到当前的实现中。复制和粘贴这些设计信息的过程比重新实现要快得多,并且保证始终是前一次实现的准确复制。
Partition必须在设计被综合之前就在模块实例上进行设置。然后,综合引擎将把Partition接口作为待优化的障碍进行处理。例如,图2所示的异步逻辑结构可能被合并成一个更优化的形式。如果Partition在这个逻辑的一个部分上已被设置,综合引擎不能对它进一步优化,这是因为它会修改Partition接口。类似的情况会出现在像映射这样的下游实现工具中。逻辑内部和外部的Partition将被完全最优化。如果关键时序路径需要这种优化出现,它将会被Partition边界闭塞。为了避免出现这个问题,要把寄存器添加到跨越Partition边界的各种信号上,或者确信这些信号的时序不是关键的。
ISE 9.1i将自动确定要对哪一个Partitions进行重新实现。某些类型的设计变更只会影响直接相关的Partition。这些类型的设计变更包括源代码修改和物理约束。其它类型的设计变更将迫使所有的Partitions被重新实现。修改时序约束或优化设置如映射努力级别将影响整个设计。
在缺省条件下,Partition将促成实现工具保存从综合网表到已布线设计的所有实现数据。在某些情况下,它可能需要让像布线器这样的实现工具能修改某一个已保存的Partition,同时保存它的布局。Partition属性,即众所周知的保存(preserve),能实现这一级别的控制。Preserve可以被设置到综合、布局、 布线或继承上。继承属性将采用与Partition的双亲相同的特性。综合属性只保存综合网表;所有实现的其它方面可能会被修改。布局属性通过布局保存已综合的网表。此外,输出也可能被修改。布线属性将保证包括布线在内的所有实现数据得到保存。在 Synplify Pro Partition的流程中,由Partition流程保存的信息的级别(综合;布局与综合;或布线、布局与综合)作为一种属性在tcl 文件中有详细的说明,然后,再通过ISE布局和布线工具读出。