表 2.2 器件的端口定义
由于篇幅有限,只能对初始条件设置做一些简单的介绍。可以参考 cadence 文档的“Spectre simulator user Guide 头 7. Control Statement”做进一步的了解。
。 “skipdc”:选择跳过直流分析。在没有直流分析的情况下,电路的初始解将采用通
解,或是从由“readic”定义的文件中读取初始条件。如果“readic”没有定义,那 么将从“ic statement”中获取初始条件。不论是否跳过直流分析,器件上的初始条 件肯定都会被采用。如果一个节点没有被赋予初始条件,将自动被仿真器设置为 0。 该参数同样也会引起仿真器收敛性问题。推荐不使用该参数。具体选择项可详见 “Spectre Circuit Simulator Reference头3. Analysis Statements” 。 “readic”:从文件中读取初始条件。
“CONVERGENCE PARAMETERS”
当电路在仿真时存在无限快的响应速度(例如一个电路节点不存在任何电容),“Spectre”仿
真器可能会产生收敛性问题。为了避免这种问题,需要设置“cmin”参数给该节点设置一个合理 的对地电容值。
。 “readns”:从文件中读取电路瞬态仿真的初始估计解。 。 “cmin”:设定每个节点对地的最小电容。 当对一个电路进行多次仿真时,建议使用“write”和“readns”参数。并且将两者的文件名 命名相同。这将使直流分析的收敛的速度加快。
“STATE FILE PARAMETERS” (从?界面)
状态文件(State File)主要有两个用处:
A、 将保存下来的状态文件用于后续的仿真分析中。比如在一次瞬态分析中,保存下终
止时刻的信息,在下一次瞬态分析中,能够以该时刻作为起始点继续做后续时间端 的分析。
B、 用户能够利用状态文件自动完成初始条件的更新。
读者能够利用仿真器将一次分析的初始时刻工作点或者是终止时刻工作点生成状态文件。当 然,用户也能手动编写一个状态文件。在“Spectre”仿真器中,可以设置三个有关“State File” 的参数,如图 2.4 所示。
26
图 2.4 “State File Parameter”的设定
。
。 。
“write”:将瞬态分析的初始状态解写到指定的文件中去。 “writefinal”:将瞬态分析的最终解写到指定文件中去。 “ckptperiod”:在指定的周期去作周期性的分析。
图 2.5“Spectre.ic”文件例
图 2.6 “Spectre.fc”文件例
在图 2.5 和 2.6 中分别给出了“Spectre.ic”和“Spectre.fc”文件。这两个文件的目录是
27
~/simulation/cell name/spectre/schematic/netlist。路径中“cell name”是用户仿真的电路单元名。 “Spectre.ic”中记录的初始时刻状态值。“V0:p”和“V3:p”表示两个电压源的正端电压值,“VIN”, “VOUT”,“vdd!”表示电路中各个节点电压值。“Spectre.fc”记录终止时刻值,文件中的字符 和数字的含义和“Spectre.ic”中相同。
下面的例子解释了状态文件的格式。注意:这里的例子是以命令行形式给出的,用户在使用 图形界面是只需在相应的参数里设置即可。
altTemp alter param=temp value=0
Drift dc param=temp start=0 stop=50.0 step=1 readns=\
XferVsTemp xf param=temp start=0 stop=50 step=1 \\ probe=Rload freq=1kHz readns=\
第一行命令表明首先做了一次在温度 T=0 情况下的直流分析(DC Analysis)。用户需要把该 次分析的结果保存在状态文件“ua741.dc0”中。
然后做温度从 0 到 50 度的扫描。 第三次做传输函数分析(Transfer Function Analysis)时需要将温度重新设置为 0。如果不使 用“State File”,那么由于温度发生了变化,将导致重新计算直流工作点。如果系统较大,仿真 速度受到很大限制。可是如果直接采用保存下来的“State File”,“Spectre”可以直接利用里面保 存的在温度 T=0 状态下的直流解来计算传输函数。即便是电路有一定程度上的改变,仿真速度 也会比从头开始计算要快得多。
“INTEGRATION METHOD PARAMETERS”
(从何界面?)
该参数用于设计人员根据仿真速度和仿真精确度选择合适的积分方式。“Spectre”仿真器提 供 3 种不同的积分方式:“backward-Euler”,“Trapezoidal”,“The second-order Gear”。根据这 3 种方式一共组合出 6 中模式,分别为“euler”,“traponly”,“trap”,“gear2only”,“gear2”,“trapgear2”。 表 2.2 表示了各种积分方式和模式之间的对应关系。
表 2.3 各种积分方式和模式之间的对应关系
如果用户需要高精度仿真,可以选择“trapezoidal”积分方式。但是,这种积分方式在容差 (error tolerances)很大的时候并不是一种很好的选择。这是因为它对前一个时刻计算产生的误 差非常敏感。如果在容差很大而且要求速度较快的情况下,最好还是选择“Second-order Gear” 积分法。
“Second-order Gear”积分法比“backward-Euler”法更加精确。但两种方法都会过高估计系
28
统的稳定性。“Second-order Gear”积分法的这种误差效应要相对小一些。比如当用户需要仿真 一个高 Q 值的谐振器例如振荡器或滤波器时,使用“Second-order Gear”的结果会表现出阻尼振 荡,而“backward-Euler”则表现出更强的衰减。所以,在这种情况下,应该采用“trapezoidal” 积分法。
“ACCURACY PARAMETERS”
。
。
“relref”:相对收敛标准的参考,而默认值是从“errpreset”得到。包括如下几个选 项:
? ―relref = pointlocal‖,即,relref=局部点:这个设定用来定量比较每个节点的值
相对于待分析节点上当前数值的相对误差。 ? “relref = alllocal”,即,relref=局部所有点:定量比较过去的所有时间点的值
相对于最大节点值的相对误差。 ? “relref = sigglobal”,即,relref=所有信号点:定量比较每个电路上信号值相对
于电路中所有信号中的最大值的相对误差。 ? “relref = allgolbal”:同上,另外对每个节点最大悬浮电流值设定比较方程,此
时不能满足基尔霍夫电流方程。 “lteratio”:比率系数,用于计算 Newton 容差中的 LTE 容差。
“ANNOTATION PARAMETERS”
。
“states”:统计学分析。在实际芯片生产过程中,工艺的变化会影响到产品的性能。 而统计学分析则帮助设计师把握这种工艺和性能之间的关系。在设计时,如果采用 的器件模型带有统计分析参数,既是说这些模型中带有表征工艺误差的数据,就可 以进行统计学分析。这种分析的实质是对工艺参数设置不同的数值后多次仿真,就 可以找出设计对工艺的依赖程度。这种统计学分析也被称作蒙特卡罗分析。 ◆ “annotate”:注释选项
“OUTPUT PARAMETERS”
“Spectre”仿真器一般情况下会把所有仿真数据都保存下来。但有时候并不需要所有的数据量。
“Spectre”允许用户选择保存需要的数据。当然,如果需要得到更精确的结果,也可以增大数据 输出量。可以如下几种方式来控制数据保存量:
。 “strobing”:在保存点之间设置一个时间间隔。虽然仿真器计算过这些数据,但是
并没有将其保存输出。 。 “skip time point”:用户能够选择让仿真器保存多少个点。 。 “compression”:将恒定信号的重复记录删除。 。 “outputstart”:设置仿真器从何时开始保存数据。 。 “Infotime”:允许用户保存某些自定义时刻的工作点数据。如果需要保存多个时刻
的工作点,填入时间矢量之间是以空格隔开。如果用户填入了某些非法数据, “Spectre”会在输出窗口中报错。如果仿真成功,点击“Results Print”头“Transient Operating Point”菜单,然后在电路图中选取一个器件,将会显示在指定时间点时刻 的工作数据。由于“OUTPUT PARAMETERS”参数一般不经常使用,因此详细内 容请参考“Spectre”的用户手册。
29
“NEWTON PARAMETERS”
。 。
―maxiters‖:在每个时间步最多进迭代多少次。
―restart‖:如果有任何条件发生变化,是否从最开始重新计算直流解。如果不重新计 算,将直接采用上一次的初始猜测。
“CAPTAB PARAMETERS” 。
“captab”: 电容列表参数,界面如图 2.7 所示。在完成一次“Spectre”仿真后, 用户能够得到有关电路负载电容的信息。在瞬态分析中,用户能够通过“infotimes” 参数来指定在某些时刻点保存电路中的电容信息。如果没有特殊指定,仿真器将默 认保存终止时刻的电容列表。如果点击该参数,会显示对该参数的细节设置。
图 2.7 电容列表参数
。
。
“timed”:是否将使用“infotimes”参数来保存电容列表。 “threshold”:需要保存的电容的最小值。电路中电容值小于该阈值的电容就不会出 现在输出文件中。默认值为 0.0。 ◆ “detail”:可以被设置为节点电容(node),节点对地电容(nodetoground),nodetonode 三个选项。
。 “sort”:排序方式。 图 2.8 给出了一个电容列表的例子。该列表中记录的是仿真终止时刻的信息。
图 2.8 电容列表例
该电容列表所描述的电路如图 2.9 所示:其中“net19”节点是指“M0”MOS 管的栅端。“Vdd!”
表示的节点电容是 MOS 管“M1”的源端。“Vout”节点为图中所示的输出端。由于 MOS 管的 各端口寄生电容和该 MOS 的工作状态有端口电压有关,所以,电容列表中包含了固定电容(fixed) 和可变电容(variable)两项。总电容(sum)为两者的加和。
30