TSMC 90nm 标准单元工艺库文件详解

2.1.3 定义单位属性(unit ):
工具本身是没有单位的 。然而在建立工艺库和产生报告时 , 必须要有单位 。库中有6个库级属性定义单位 。
time_ unit(时间单位)、(电压单位)、 unit(电流单位)、nit(上/下拉电阻单位)、(电容负载单位)、(漏电功耗单位) 。
2.2 环境描述
主要包括操作条件( )、临界条件定义( )、默认的一些环境属性( )、一些(时序、功耗)模型()、比例缩放因子(k-)、I/O pad属性(pad )、线负载模型(wire-loads) 。
2.2.1 操作条件( ):
在工艺库中 , 用操作条件设置了制程()、温度()、电压()与RC树模型() 。
在综合和静态时序分析时 , DC要用到这些信息来计算电路的延迟 , 而库中的这组操作条件为基础(也就是)操作条件 。一个工艺库只有这么一组基础的操作条件 , 如果要使用不同的操作条件 , 则需要借助K参数进行缩放 。制程、温度、电压这些很好理解 , 下面主要说一下这个RC树模型() 。
tree-type属性定义了布局之前延时的计算方式 。此外 , 线负载模型是根据连线的扇出来估算连线的RC寄生参数的 , RC如何分配就是根据这个tree-type属性来的 。
连线延时(从驱动引脚的状态变化到每个接受单元输入引脚的状态变化 , 线负载模型设每个分枝的延迟是一样的 。)的一个示例如下图所示:
在这个简单的电路中 , BUF1的输出驱动两个单元BUF2与BUF3 。在物理上 , 这是两根连线 。而在网表中 , 两根连线用一个net来表示 。在布局前 , 假设这两根线有相同的寄生电阻与寄生电容 , 即-=R1-R2。
假设我们想了解从BUF1的输出到BUF2的输入端的延时 。这个延时实际上是给连线及BUF2的输入引脚负载进行充、放电所消耗的时间 。如何计算这个延时呢? tree-type就是为此而定义的 。
Tree-type有三种取值 , 这个延时就有三种计算模型 。如下图所示:
2.2.2 临界条件定义( ):
主要是定义一些极限值 , 比如时钟抖动的最大最小值、输出输出的上升下降沿的最大最小值等等信息 。
2.2.3 默认的一些环境属性( ):
主要是默认漏电流功耗密度、标准单元的漏电流功耗、扇出负载最大值、输出引脚的电容、IO类型的端口电容、输入引脚的电容、最大转换时间 。
2.2.4 一些(时序、功耗)模型():
都是写查找表模型 , 主要是功耗(比如输入转移时间的功耗)、时序(比如输入线转换的延时、建立时间和保持时间的延时)等等 , 根据不同的操作环境 , 进行查表进行选择对应的参数 。
2.2.5 比例缩放因子(k-):
由于一般库中只有单元“”的值 , 为了计算不同的制程、电压和温度下单元的延迟(或者说是计算不同的操作条件) , 库中提供了比例缩放因子 。
根据提供的K参数 , DC按下面的公式计算不同的制程 , 电压和温度的单元延迟:
D e l a y = ( n o m i n a l d e l a y ) × ( 1 + ( D P ? K f a c t o r P ) ) × ( 1 + ( D V ? K f a c t o r V ) ) × ( 1 + ( D T ? K f a c t o r T ) ) Delay= (\ delay)×(1+(DP*K_{}P))×(1+(DV*K_{}V))×(1+(DT*K_{}T)) Delay=()×(1+(DP??P))×(1+(DV??V))×(1+(DT??T))
其中:
DP = CP-NP,CP为 ,NP为 ;
DV=CV-NV,CV为 ,NP为 ;
DT=CT-NT,CT为 ,NT为 .
、、分别是对于的K参数 , 表示制程、电压、温度对延时的影响 。
2.2.6 I/Opad属性(pad ):
主要就是定义I/O引脚的电平属性 , 告诉你输入是COMS还是TTL , 什么时候达到高电平、什么时候是低电平 。