|
发表于 2006-8-19 10:30:11
|
显示全部楼层
PAD定义可以用DC自动插入,亦可以采用手动修改网表的办法实现,可以单独使用,DC插入的PAD会根据所用的库自动选择驱动能力最大的I/O单元,这样往往会超过实际的运动要求,同时增加了所做电路的电流和功耗,不是最佳的,若是手动的哈,是可以根据需要选择库中合适的驱动单元,可是这样你要首先了解你所用的库中这每一个驱动单元具体的规格,好像这个比较麻烦哦~~
定义PAD按照从左到右,从上到下的顺序,定义的语法如下:
pad padName padSide [padOrder] [padOffice] ["reflect"]
比如:
对于电源PAD我们采用手动插入方法,从库中可以查出合适的电源,pvdi与pv0i用于核心供电电源与地,pvde与pv0e用于IO供电的电源与地。插入网表为:
 pvdi CORE_VDD(.PAD(VDD)); 核心电源
 pv0i CORE_VSS(.PAD(VSS)); 核心地
 pvde IO_VDD(.PAD()); IO供电的电源
 pv0e IO_VSS(.PAD()); IO供电地
对于系统时钟引脚、I/O总线引脚、输入与输出引脚通过DC插入。利用如下命令:
 set_port_is_pad all_inputs()
 set_port_is_pad all_outputs()
 set_pad_type -clock clk; 指定系统时钟
 set_pad_type -clock rst_n; 指定复位信号
 set_pad_type –clock ea_n; 指定使能信号
 insert_pads
采用上面的命令插入引脚后还需对时钟和地再处理一下,因其只是在时钟和地后面插入了缓冲单元,还需手工修改一下网表。修改如下:
 pc3d01 pad_clk ( .PAD(clk), .CIN(pad1) );
 pc3d01 pad_rst_n ( .PAD(rst_n), .CIN(pad2) );
 pc3c04 U44 ( .CCLK(pad1), .CP(clkb) );
 pc3c04 U43 ( .CCLK(pad2), .CP(rst_nb) );
由于缓冲单元的大小与引脚单元的大小相当,因此在布局的时候它占用一个PAD的位置。
这就是对PAD的例化。 |
|