多目标模拟电路设计中解决方案的选择
摘要
在本研究中,我们对一个CMOS密勒放大器的晶体管进行尺寸设计。更具体地说,我们解决了最大化直流增益和最小化密勒放大器电源电流的双目标问题。由于我们考虑的是一个双目标问题,因此会得到一组解,而不是单一解。接下来,我们研究了三种方案来选择其中一个或多个解,这些方案基于电路元件参数变化时具有更大容差的解、灵敏度最低的解,或使用蒙特卡洛方法统计变化最小的解。此外,还可以通过向给定的优化问题增加一个目标,将容差分析纳入优化循环中。
关键词 模拟电路设计 · Multi-objective优化 · Sensitivity分析 · Tolerance分析 · Monte蒙特卡洛分析
1 引言
金属氧化物半导体场效应晶体管(MOSFET)已成为互补(CMOS)集成电路(IC)制造技术中集成电路技术使用最广泛的晶体管[5]。根据偏置条件,MOSFET可以在三个区域中工作,分别是线性区、弱反型区和强反型区。此外,根据硅的掺杂方式,可以制造出两种类型的MOSFET:P沟道和N沟道MOSFET。在数字应用中,CMOS集成电路为每个N沟道MOSFET配备一个P沟道MOSFET,其工作区域主要设置为截止(关断状态)和饱和区,这是导通状态。在模拟应用中,更常见的是让金属氧化物半导体场效应晶体管工作在饱和区[1],而集成电阻可以用处于线性区的金属氧化物半导体场效应晶体管实现,并用于线性化[15]。此外,集成电容也可以使用金属氧化物半导体场效应晶体管实现,但对于较大的电容值,则采用其他技术,例如电容倍增器或版图技术。由此可见,金属氧化物半导体场效应晶体管在当今众多现代应用中非常有用。然而,由于需要满足的目标规格范围非常广泛,且涉及的变量数量众多,每个变量还可能具有较大的可行取值范围,因此设计优化无法手动完成。因此,如今大多数电子行业都致力于开发电子设计自动化(EDA)工具,以保证模拟集成电路期望性能的最小偏差,这在EDA行业中仍然是一个开放的挑战[8, 9]。
一方面,集成电路技术的缩小尺寸使得集成电路设计对工艺偏差更加敏感,这些工艺偏差主要由制造时刻的波动产生,并且随着集成电路技术不断缩小到22 nm及以下,其相对幅度持续增加。此外,集成电路设计人员通常需要进行重复的蒙特卡洛(MC)仿真以预测偏差,导致较高的计算成本,而其主要目标是通过在一定百分比范围内改变某些参数的值,来计算给定性能对应的容差边界。为了缓解这一问题,灵敏度分析方法已广泛应用于模拟集成电路设计[13]。然而,大多数方法基于近似计算,因此在对容差进行排序时,所计算出的灵敏度可能并不准确。为此,本文提出一种容差分析方法,该方法在提供与运算跨导放大器(OTA)尺寸设计相关可行解的进化算法执行之后进行。
我们正在基于密勒CMOS拓扑[11],并采用0.35 µm的集成电路技术优化一个运算跨导放大器(OTA),其目标规格为直流增益大于80 dB,并且电源电流消耗最低。这是一个双目标问题,其目标是最大化OTA的直流增益并最小化OTA的电源电流消耗。我们将使用一种著名的算法来解决此问题:非支配排序遗传算法(NSGA‐II,参见[3])。由于这是一个双目标问题,我们得到的不是单一解,而是多个解。这便引出了我们的研究主题:依据何种标准可以从这些解中选择一个或少数几个解?从NSGA‐II获得的解集中,我们进行容差分析,以从帕累托前沿中选出最鲁棒的解。此外,还可以增加另一个衡量每个解的鲁棒性的目标。本文将描述这两种方法及其结果的比较。
本章内容安排如下:第2节介绍了一些背景概念。第3节描述了OTA设计的优化问题及其解。第4.1节描述了用于选择某些解的容差分析准则。第6节给出了结果,最后在第7节给出了一些结论和可能的未来工作。
2 背景
一个多目标优化问题(MOP)被描述为:
$$
\text{minimize } f(x), \quad x \in Q \
\text{subject to: } g_i(x) \geq 0, \text{ for } i = 1, 2, …, p \
h_i(x) = 0, \text{ for } i = 1, 2, …, q,
$$
其中 $ f(x) = [f_1(x), f_2(x), …, f_m(x)]^T $, $ m \geq 2 $ 是由目标函数 $ f_i: R^n \to R $ 组成的复合函数。决策变量向量 $ x = [x_1, x_2, …, x_n]^T $ 属于可行域集合 $ Q $,该集合定义为
$$
Q = {x \in R, g_i(x) \geq 0, i = 1, 2, …, p, \text{ and } h_j(x) = 0, j = 1, 2, …, q}
$$
根据帕累托最优性对两个解进行比较:若不存在另一个决策向量 $ y \in Q $,使得对于所有 $ i = 1, …, m $ 都有 $ f_i(y) \leq f_i(x) $,并且至少存在一个指标 $ j $ 使得 $ f_j(y) < f_j(x) $ 成立,则称决策向量 $ x \in Q $ 是帕累托最优的。通常情况下,一个多目标优化问题并不存在唯一的解,而是存在一组解,每个解都在所有给定目标之间具有不同的权衡。
因此,在多目标优化问题中,目标是从所有满足(Q)的决策变量向量集合中确定帕累托最优集1。帕累托最优前沿是帕累托最优集在目标空间中的映像。
鲁棒性可以用多种形式定义[2, 4, 14]。在本研究中,我们希望选择那些在输入变量发生变化时,目标值变化最小的解(或解集)。在Jourdan等人[7],以及Schütze等人[12]的研究中,已针对与电磁屏蔽材料相关的多目标优化问题中的帕累托最优解的选择进行了探讨。
3 优化问题的描述
单端OTA的电路符号如图1所示。该器件的理想特性描述为 $ I_o = g_m(V_1 - V_2) $,其中 $ I_o $ 是输出电流,$ g_m $ 是跨导,而 $ V_1 $ 和 $ V_2 $ 分别表示同相输入电压和反相输入电压。
要解决的问题是:
最小化 $ f = [-\text{直流增益}, \text{电源电流}]^T $
公式(3)中的问题应用于Oliveira Weber和Van Noije提出的基于金属氧化物半导体场效应晶体管实现的运算跨导放大器[11],如图2所示。该运算跨导放大器电路可提供单一的正电流输出。它包含五个P型金属氧化物半导体晶体管(用Mi表示,对应图2中的 $ i = 1,2,5,6,7 $),以及三个N型金属氧化物半导体晶体管(用Mi表示,对应图2中的 $ i = 3,4,7 $)。我们的任务是确定这八个晶体管的尺寸。解决该优化问题的编码方案列于表1中。
从模拟集成电路设计的角度来看,由于图2中OTA设计的对称性,电路设计存在固有的约束:晶体管M1和M2的宽度和长度必须相等,晶体管M3和M4的宽度和长度也必须相等,M5和M8的宽度和长度必须相等,且M6的长度必须等于M5和M8的长度。因此,我们共有9个变量。决策变量向量表示为:
$$
x = [L_{M1}, W_{M1}, L_{M3}, W_{M3}, L_{M5}, W_{M5}, W_{M6}, L_{M7}, W_{M7}]^T,
$$
其中“W”表示宽度,“L”表示晶体管沟道的长度,且 $ x \in R^9 $。
在该问题中,还必须保证所有晶体管工作在饱和区。因此,我们在优化问题中额外增加了9个不等式约束:
$$
|V^{(j)}
{gs}| - |V^{(j)}
{th}| > 0, \quad \text{and} \quad |V^{(j)}
{ds}| - |V^{(j)}
{gs}| - |V^{(j)}_{th}| > 0,
$$
其中 $ V^{(j)} {gs} $、$ V^{(j)} {th} $ 和 $ V^{(j)}_{ds} $ 分别为第 $ j = 1, 2, …, 9 $ 个晶体管的栅源电压、阈值电压和漏源电压。
表1 给定问题的变量编码
| 变量 | 编码 |
|---|---|
| x1, x2 | 长度/宽度 晶体管 M1, M2 |
| x3, x4 | 晶体管的长/宽 M3, M4 |
| x5, x6 | 晶体管的长/宽 M5, M8 |
| x7 | 晶体管宽度 M6 |
| x8, x9 | 晶体管的长宽 M7 |
表1中九个变量在NSGA‐II中以实数表示,但这些变量会在搜索边界内四舍五入到最接近的整数。
解决该问题需要执行两个额外步骤:如何实现目标函数的评估,以及如何测量约束值。由于我们无法直接计算这些量,因此使用电路仿真器 Ngspice[10]来评估每个由个体表示的电路。这些步骤将在第5节中更详细地描述。
4 解的选择
为了从帕累托前沿中选择一个解或若干个解,可以采用两种通用方案:
- 执行优化,然后根据以下内容从帕累托前沿中选择一个(或多个)解:
- 容差分析
- 灵敏度分析
- 蒙特卡洛分析
- 在前一项中引入三种分析之一作为额外的目标。
在第一种情况下,通过容差、灵敏度或蒙特卡洛分析,从帕累托前沿中选择最鲁棒的解。蒙特卡洛分析是电路设计中计算Deb和Gupta[2]定义的平均有效目标函数的系统性方法。在多目标优化问题中,还有许多其他关于鲁棒性的定义,这些定义可以基于不确定性[4],或针对依赖外部参数的问题采用变分方法[14]。
在两种通用方案中,我们假设有一个多目标优化问题需要求解。在这种情况下,可能会得到包含多个问题解的完整帕累托前沿。此外,此处我们仅假设有两个目标,以便更直观地展示解集。在一般的模拟尺寸设计问题中,可以轻松添加更多目标。
问题的主要难点在于:如何选择正确的目标来解决?目标必须是相互冲突且不相关的。例如,在我们当前的
在该问题中,我们最初决定选择最大化运算跨导放大器的直流增益和单位增益频率,但这两个量是相关的,并不真正冲突:它们都是增益,直流增益在10 Hz下测量,而单位增益频率是增益等于1时的频率。最终我们决定最大化直流增益并最小化源电流,通过这种方式能够生成完整的帕累托前沿。
4.1 容差分析
我们首先建议使用容差分析来寻找最稳健的解:当晶体管的宽度(W)或长度(L)在其标称值上变化一定的容差百分比(例如 ±3%或 ±5%)时,若导致晶体管无法工作在饱和区,则将这些解排除。
然后,在这个双目标尺寸优化问题中,我们有表1中所示的九个变量。在第一种情况下,每个设计变量被扰动 ±5%,而其他变量保持不变。然后对每个解额外执行18个电路和仿真。如果在任何仿真中某个晶体管未工作在饱和区,则丢弃原始解。此外,我们通过仅将W和L扰动 ±3%来放宽容差分析,在这种情况下,满足所有金属氧化物半导体场效应晶体管处于饱和区约束的可行解数量增加。
4.2 灵敏度分析
或者,我们也可以从帕累托解中选择一个具有最低灵敏度[6]的解。
灵敏度是衡量目标函数值相对于电路中某一元件变化程度的指标。在此情况下,电路元件是表1中变量所示的W和L。因此,我们可以按如下方式计算灵敏度:
$$
S_{f_i}^{v_j}, \quad \text{for } i = 1, 2, \text{ and } j = 1, 2, …, 9.
$$
因此,我们得到目标1的九个灵敏度以及第二个目标的另外九个灵敏度。
可以将每个目标的九个灵敏度合并为一种称为多参数灵敏度的度量指标。
$$
S_{f_i} := \sqrt{\sum_j (S_{f_i}^{v_j})^2 \sigma_{v_j}^2},
$$
对于 $ i = 1, 2 $ 和 $ j = 1, 2, …, 9 $,其中 $ \sigma_{v_j}^2 $ 是变量 $ v_j $ 的变异性参数。如果我们假设所有 $ \sigma_{v_j}^2 $ 都相等,则可以计算:
$$
S_{f_i} := \sigma \sqrt{\sum_j (S_{f_i}^{v_j})^2},
$$
并结合来自($ S_{f_1} $ 和 $ S_{f_2} $)的单一指标度量:
$$
S := c_1 S_{f_1} + c_2 S_{f_2},
$$
其中 $ c_1 + c_2 = 1 $,$ c_1, c_2 \geq 0 $。因此,最终可以根据 $ S $ 的值对解进行排序。
为了计算灵敏度,需要计算数值导数,这可以通过理查森外推法[6]来实现。
4.3 蒙特卡洛分析
蒙特卡洛分析是最完整的分析方法,但在计算资源方面也是要求最高的。电路中的所有元件,即所有晶体管的W和L,都会被改变,每个电路都会进行仿真并获得其响应。在此,我们决定根据相对于标称值(由个体的变量值给出)在3西格玛处变化 ±0.05的正态分布来改变表1中的每个变量。用于执行此分析的电路与Ngspice手册中的电路相同。
进行了100次仿真,根据结果我们计算了最小值、最大值和平均值。根据每个个体的最大值与最小值之间的差异对解进行排序。
5 目标的评估
该优化问题使用NSGA‐II求解。在我们的研究中,采用了NSGA‐II的C源代码。
目标1(即直流增益)的值通过两个步骤进行测量:(i)使用Ngspice进行仿真;该仿真生成一个输出文件。Ngspice的输入文件是在C语言中利用每个个体的染色体值生成的。进一步地,(ii)从上一步的输出文件中提取目标值读取。步骤(ii)使用编程语言Python进行,因为使用Python这样的高级语言解析文本文件更为容易。用于获取目标1数值的电路如图3所示。
与目标1类似,我们使用图4所示的电路获得了目标2(即电源电流)的值:添加了两个零伏电压源,以测量流过它们的电流。
进行了另一次仿真以获取约束的值。该仿真获得了如图5所示电路的直流工作点。
6 结果
对于NSGA‐II算法,我们使用了以下参数:100个个体,350代,交叉概率为0.7,变异概率为0.25,ηc = 15,以及ηm = 20。变量x1, x3, x5, 和x8(见表1)的搜索范围在[3, 12]之间,变量x2, x4, x6, x7, 和x9的搜索范围在[3, 1000]。请记住,这些值已四舍五入到最接近的整数。在网表文件中,每个变量的值需除以2,其数值代表微米。
容差分析在3%和5%的变化下得到的帕累托前沿和选定的解如图6所示。5%的变化下的解如表2所示。
表2 通过5%容差分析获得的解
| Ao (分贝伏特) | I (μA) | 2v1 | 2v2 | 2v3 | 2v4 | 2v5 | 2v6 | 2v7 | 2v8 | 2v9 |
|---|---|---|---|---|---|---|---|---|---|---|
| 91.6 | 80.0 | 12 | 874 | 12 | 823 | 12 | 971 | 3 | 12 | 6 |
| 83.0 | 69.3 | 11 | 22 | 12 | 255 | 12 | 14 | 3 | 12 | 170 |
| 76.2 | 47.5 | 12 | 3 | 12 | 102 | 12 | 954 | 3 | 12 | 4 |
| 73.7 | 47.5 | 12 | 3 | 10 | 76 | 12 | 988 | 3 | 11 | 3 |
| 93.5 | 80.1 | 8 | 1000 | 12 | 824 | 12 | 908 | 4 | 12 | 9 |
| 78.6 | 53.1 | 12 | 4 | 12 | 223 | 12 | 21 | 3 | 12 | 240 |
| 93.6 | 81.0 | 12 | 724 | 12 | 999 | 12 | 69 | 3 | 12 | 77 |
| 93.9 | 81.0 | 12 | 800 | 12 | 999 | 12 | 69 | 3 | 12 | 77 |
帕累托前沿和通过灵敏度分析获得的选定解如图7所示。具有最低灵敏度的十个解如表3所示。仅使用目标1(直流增益)的多参数灵敏度进行排序(即常数c₁ = 1 和 c₂ = 0 在公式(7)中的取值)。选择这些值的原因是直流增益灵敏度的变化远大于电源电流变化。
表3 灵敏度最低的10个解决方案
| Ao (分贝伏特) | I (μA) | 2v1 | 2v2 | 2v3 | 2v4 | 2v5 | 2v6 | 2v7 | 2v8 | 2v9 |
|---|---|---|---|---|---|---|---|---|---|---|
| 77.7 | 48.2 | 12 | 3 | 12 | 237 | 12 | 72 | 3 | 12 | 90 |
| 78.2 | 50.1 | 12 | 3 | 12 | 164 | 12 | 27 | 3 | 12 | 170 |
| 78.0 | 49.2 | 12 | 3 | 12 | 245 | 12 | 39 | 3 | 12 | 172 |
| 76.2 | 47.5 | 12 | 3 | 12 | 102 | 12 | 954 | 3 | 12 | 4 |
| 79.7 | 59.4 | 8 | 5 | 12 | 215 | 12 | 15 | 3 | 12 | 220 |
| 80.1 | 61.2 | 8 | 6 | 12 | 164 | 12 | 14 | 3 | 12 | 164 |
| 79.6 | 58.1 | 12 | 7 | 12 | 254 | 12 | 20 | 3 | 12 | 185 |
| 81.9 | 66.3 | 12 | 16 | 12 | 251 | 12 | 14 | 3 | 12 | 188 |
| 80.4 | 62.6 | 8 | 7 | 12 | 161 | 12 | 14 | 3 | 12 | 148 |
| 79.7 | 59.7 | 8 | 5 | 12 | 198 | 12 | 14 | 3 | 12 | 220 |
帕累托前沿和通过蒙特卡洛分析获得的选定的解如图8所示。根据蒙特卡洛分析,变化最低的十个解如表4所示。
晶体管宽度和长度的数值在表2、3和4中乘以了2,因为这样我们可以对以0.5µm为步长变化的晶体管尺寸使用整数值。
表4 根据蒙特卡洛分析变异度最低的10种解决方案
| Ao (分贝伏特) | I (μA) | 2v1 | 2v2 | 2v3 | 2v4 | 2v5 | 2v6 | 2v7 | 2v8 | 2v9 |
|---|---|---|---|---|---|---|---|---|---|---|
| 93.9 | 81.0 | 12 | 800 | 12 | 999 | 12 | 69 | 3 | 12 | 77 |
| 93.6 | 81.0 | 12 | 724 | 12 | 999 | 12 | 69 | 3 | 12 | 77 |
| 94.6 | 81.7 | 8 | 999 | 12 | 912 | 12 | 45 | 3 | 12 | 103 |
| 78.0 | 49.2 | 12 | 3 | 12 | 245 | 12 | 39 | 3 | 12 | 172 |
| 77.7 | 48.2 | 12 | 3 | 12 | 237 | 12 | 72 | 3 | 12 | 90 |
| 78.2 | 50.1 | 12 | 3 | 12 | 164 | 12 | 27 | 3 | 12 | 170 |
| 89.7 | 77.6 | 12 | 170 | 12 | 183 | 12 | 11 | 3 | 12 | 119 |
| 78.2 | 50.1 | 12 | 3 | 12 | 164 | 12 | 27 | 3 | 12 | 169 |
| 79.6 | 58.1 | 12 | 7 | 12 | 254 | 12 | 20 | 3 | 12 | 185 |
| 78.5 | 52.4 | 12 | 4 | 12 | 223 | 12 | 26 | 3 | 12 | 181 |
7 结论
本文中,我们将采用密勒拓扑的运算跨导放大器(OTA)尺寸设计视为一个双目标问题,旨在最大化直流增益并最小化电源电流。我们还提出了三种从帕累托前沿中选择解的方法:基于容差、灵敏度或蒙特卡洛分析。通常情况下,这些分析能够为我们提供更鲁棒的解,或使得目标函数值在输入变量变化时具有较小波动的解。此处的输入变量为电路晶体管的沟道尺寸。
我们的问题是具有2个目标、9个变量和9个约束。
使用著名的NSGA‐II算法解决了该优化问题。
目标的值是通过Ngspice程序仿真获得的。该仿真器输出一个文本文件,该文件通过高级语言Python进行处理。Python非常容易从C/C++程序中集成,且开发时间大大缩短。
从图6、7和8的结果中可以看出,在通过容差、灵敏度或蒙特卡洛分析获得的解中,有5个解是100个解中的共同解。
在本次工作中,未测试在优化循环中引入新目标以优化容差/灵敏度/蒙特卡洛变异性的选项,因其计算时间巨大。在配备2.6 GHz Intel Core i5和8 GB内存的Mac上,获得最优帕累托前沿的处理时间约为5小时。
作为未来工作,我们将增加此类电路设计问题中的目标数量,并使用多目标算法解决这一新问题。
1546

被折叠的 条评论
为什么被折叠?



