首页 理论教育关于设计环境约束的优化方案

关于设计环境约束的优化方案

【摘要】:但为了保证电路的每一条时序路径,特别是输入/输出路径延迟约束的精确性,我们还应该提供设计的环境属性,如图6.23所示。图6.23 环境约束每一个逻辑器件的延迟都与这个器件的输出负载和输入转换时间相关,其输出转换时间也与这个器件的输出负载和输入转换时间相关。我们可以用setload指定外部电容负载为一常数值,如图6.24所示。图6.25 指定实际器件负载图6.26 指定驱动器件如上文所述,在实际设计中,由于电路比较大,需要对设计进行划分。

上文中我们用createclock、setinputdelay,setoutputdelay等命令来设置电路约束。但为了保证电路的每一条时序路径,特别是输入/输出路径延迟约束的精确性,我们还应该提供设计的环境属性,如图6.23所示。

978-7-111-55094-5-Chapter06-72.jpg

图6.23 环境约束

每一个逻辑器件的延迟都与这个器件的输出负载和输入转换时间相关,其输出转换时间也与这个器件的输出负载和输入转换时间相关。即:

978-7-111-55094-5-Chapter06-73.jpg

因此,为了精确地计算输出电路的时间,DC需要知道输出器件所驱动的总电容负载。在默认情况下,DC会认为输出端口外部电容负载为0。我们可以用setload指定外部电容负载为一常数值,如图6.24所示。也可以用loadof命令指定工艺库中某一器件的引脚为负载,如图6.25所示。

978-7-111-55094-5-Chapter06-74.jpg

图6.24 指定常数负载

978-7-111-55094-5-Chapter06-75.jpg

对于输入,为了精确计算输入电路的时间,DC需要知道到达输入端口的转换时间。在DC中用setdrivingcell命令明确说明输入端口是由一个真实的外部单元驱动。默认情况下,DC假设输入端口上外部信号对应的转换时间为0。但是如果我们用setdrivingcell命令在输入端加上了一个驱动,DC将会计算实际的转换时间,如图6.26所示。

978-7-111-55094-5-Chapter06-76.jpg

978-7-111-55094-5-Chapter06-77.jpg

图6.25 指定实际器件负载

978-7-111-55094-5-Chapter06-78.jpg

图6.26 指定驱动器件

如上文所述,在实际设计中,由于电路比较大,需要对设计进行划分。在一个设计团队中,每一个设计者负责一个或几个模块。设计者往往不知道每个输入端口的驱动和输出端口的负载,因此设计者要对输入输出端口预测,预测需要遵守以下几个准则

1)保守起见,假设输入端口由驱动能力很弱的单元驱动;

2)限制每一个输入端口的输入负载;

3)估算输出端口驱动的模块数目。

第1条和第3条上文已经介绍,对于第2条可以通过setmaxcapacitance命令限制附加在输入端口上的电容负载值。

工艺库单元通常用“nominal”电压和温度来描述周围环境特性,例如:

978-7-111-55094-5-Chapter06-79.jpg

如果电路在不同的“nominal”电压和温度的条件下工作,我们需要为设计设置条件。在半导体厂商提供的工艺库中会放入不同的工作环境,可以用setoperat-ingconditions命令把工作条件加在设计上。可以用reportlib libname命令将所有工作条件列出来,例如:

978-7-111-55094-5-Chapter06-80.jpg

978-7-111-55094-5-Chapter06-81.jpg

设置工作条件用下面的命令:

978-7-111-55094-5-Chapter06-82.jpg

WLM(Wire Load Model,线负载模型)是根据连线的扇出来估算连线的RC寄生参数,一般由半导体厂商建立,用户也可以建立自己的线负载模型,例如:

978-7-111-55094-5-Chapter06-83.jpg

设置线负载模型用下面的命令:

978-7-111-55094-5-Chapter06-84.jpg

综上所述,可以将所有的设计约束建立为一个DC-Tcl脚本,在使用工具时直接用source命令执行该脚本就可以完成所有约束,如例6.22所示。

例6.22

978-7-111-55094-5-Chapter06-85.jpg

978-7-111-55094-5-Chapter06-86.jpg