designeasy...

13
DesignEasy 用户使用简明教程 吕文龙([email protected]) project 简介 DesignEasy(www.ic-designeasy.com)是一个在线模拟电路自动化设计工具,用 户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对 用户使用自己设计的电路进行优化的情景,进行简明的介绍,使用户能够较快的 熟悉流程。 要对用户自己设计的电路进行优化,用户需要提供: 1. 一份网表,描述电路的拓扑结构,以及使用”.measure”语句从网表中 提取出的,待优化的变量 2. 一份工艺库,如果用户对 DesignEasy 内置的工艺库比较熟悉的话, 也可以不提供工艺库而使用 DesignEasy 内置的工艺库 3. 一份描述参数、约束、优化目标的 spec 文件。 在这次的教程中,我们使用一个简单的 MOS 管共源放大电路作为例子如下 图所示:

Upload: others

Post on 27-Jun-2020

57 views

Category:

Documents


0 download

TRANSCRIPT

Page 1: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

DesignEasy 用户使用简明教程

吕文龙([email protected])

project 简介

DesignEasy(www.ic-designeasy.com)是一个在线模拟电路自动化设计工具,用

户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

用户使用自己设计的电路进行优化的情景,进行简明的介绍,使用户能够较快的

熟悉流程。

要对用户自己设计的电路进行优化,用户需要提供:

1. 一份网表,描述电路的拓扑结构,以及使用”.measure”语句从网表中

提取出的,待优化的变量

2. 一份工艺库,如果用户对 DesignEasy 内置的工艺库比较熟悉的话,

也可以不提供工艺库而使用 DesignEasy 内置的工艺库

3. 一份描述参数、约束、优化目标的 spec 文件。

在这次的教程中,我们使用一个简单的 MOS 管共源放大电路作为例子如下

图所示:

Page 2: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

其中,𝑉𝑖𝑛包括一个之流偏置 𝑉𝑖𝑛_𝑑𝑐 和一个交流小信号 𝑉𝑖𝑛_𝑎𝑐 。我们固定 𝑉𝑖𝑛_𝑎𝑐 ,

令其为幅度 0.05V,频率 1kHz 的小信号,则在这个电路中,我们能够定义的参数

有:

1. 栅极的直流偏置 𝑉𝑖𝑛_𝑑𝑐

2. MOS 管 M1 的宽 𝑊 和栅长 𝐿

3. 漏极负载电阻 𝑅𝐷

我们希望 MOS 管工作在饱和区,也就是说,我们有两个约束:

𝑉𝑔𝑠 > 𝑉𝑡ℎ

𝑉𝑑𝑠 − 𝑉𝑔𝑠 > 𝑉𝑡ℎ

确定了可以优化的参数以及必须满足的约束之后,我们来确定希望优化的目

标,我们定义功耗与增益:

𝑔𝑎𝑖𝑛 = 𝑝𝑝(𝑉𝑜𝑢𝑡)/𝑝𝑝(𝑉𝑖𝑛)

𝑝𝑜𝑤𝑒𝑟 = (𝑉𝑑𝑑 − 𝑎𝑣𝑔(𝑉𝑜𝑢𝑡))2/𝑅𝑑

其中,pp 代表峰峰值,avg 代表平均值。我们希望增益尽可能大,而功耗尽

可能小,故此,我们将最终的优化目标 (FOM, figure of merit)定义为𝑓𝑜𝑚 =

𝑝𝑜𝑤𝑒𝑟/𝑔𝑎𝑖𝑛。

至此,我们首先明确了要优化的电路,而后确定了待优化的参数,必须满足

的约束,以及最终的 FOM。

我们希望借助 DesignEasy,找到一组参数值,满足 MOS 管在饱和区的约束,

使得 FOM 尽可能小。

Page 3: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

网表测试

DesignEasy 后台使用 hspice 进行仿真(也可以由用户指定仿真工具,但本教程

暂时不涉及这方面的介绍),因此,我们需要提供一份可供 hspice 使用的网表,

因此也需要用户对 hspice 有一定了解。

在这部分,对我们随机指定一组待优化参数,用 hspice 进行测试,此时,测

试目录的结构是这样子的:

其中,”simple_amplifier.sp”是我们的带测试网表,而”035lib”是这次使用的

工衣库,在测试过程中,我们使用”.lib”语句引用这个工艺库,而当用于优化

时,对工艺库路径的说明是放到 spec 文件中的,这在后面会说明。

我们的网表文件如下:

可以看到,网表内容分三部分:

1. 引用工艺库,以及定义参数,这部分只在测试时需要在网表中指

定,实际优化时,我们应该在 spec 文件中指定待优化参数的取值

Page 4: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

范围,而不是在网表中指定参数的值,而每次需要仿真时,优化程

序会选出一组参数值,与我们提供的网表拼接起来,进行 hspice 仿

真,同时对工艺库文件的引用,在实际优化时也是在 spec 文件中

指定的,因为用户不知道,也不必知道自己上传的工艺库文件最终

会被放到什么路径,因此用户只需要在 spec 文件中指明相对路径即

2. 电路的拓扑结构,即上图网表的中间一部分,这里直接引用了上面

定义的 parameter。

3. 仿真参数与测量语句,这部分也可以定义在 spec 中,但是直接在网

表中指明也可以,而且比较方便。在我们的网表中,我们测量了三

个值:Vout 的直流分量 vout_dc,Vout 的峰峰值 vout_pp,Vin 的峰

峰值 vin_pp,使用这三个测量值,我们可以求出增益以及功耗。

网表写完之后,使用 hspice 进行仿真,测试网表的书写有无错误:

经过测试,网表书写无误,我们开始去写 spec 文件,在其中明确待优化参

数,约束条件以及 FOM。

Page 5: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

SPEC 文件书写

Spec 文件的可选内容比较多,详细的介绍可以参考网站上帮助中心的文

档,在这里只介绍几个基本的功能,使用它们即可以完成基本的电路优化工

作。

在这里,我们使用 spec 文件说明了四件事:

1. 待优化参数以及它们的取值范围

2. 使用什么工艺库

3. 待优化的网表是哪一个,从网表中需要提取哪些测量值

4. 约束与 FOM

待优化参数

上图是 spec 文件中的参数段,参数段的格式是 file::parameter is “name”{…};

这样的格式,其中,“name”可以自己定义。我们可以这一段与上一节中网表文件

对比:

可以看到,其内容是一致的,只不过,在 spec 文件中,我们指定的是参数

的范围,于是,优化程序会在我们指定的优化范围中寻找最优的参数组合。参

数也可以定义为常量,如上面参数中的 Vdd 为电源电压,Vth0 为估计的 MOS

管阈值电压(从工艺库中查找得知)。

Page 6: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

指定工艺库

上面这一段指定工艺库,针对 typical , ff , ss 这三个工艺角,使

用”035lib/sm046005-1j.hspice”这个库文件。也可以为每个工艺角指定单独的工艺

库,但在这里不介绍。

工艺段的语法格式为 file::process is “name”{};,其中,“name”由自己指定,

这里要注意的是结尾的分号要记得不要忽略。

在 corner 语句中,lib 语句后面跟的是工艺库的相对路径,比如我们的工艺库

是在”035lib”这个文件夹中的,我们最后会需要在网站上上传一份”035lib.tar”的

压缩文件。因而 lib 语句就就以”035lib”开头。这份工艺库最终会被放到后台文件

夹中的某个位置。

指定网表

在这一段中,我们指定网表的名字,同时,指定我们需要获取哪些从网表中

测量的变量,这些变量应该是在网表中由.measure 语句测量,而测量结果会输出

到一个与网表同名,但拓展名为”mt0“的文件中。

上图为我们的 simulation 段,而其中的 netlist 段指明了网表文件名

为”simple_amplifier.sp“,并从中提取三个变量。

Page 7: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

指定约束与优化目标

上面是我们在 specification 段中指定约束与优化目标。

这一段的语法格式是 operation::specification is “name”,其中,”name“可以

自己指定。

首先我们定义一些变量,而约束与优化目标都是这些变量的表达式。变量

既可以是从网表中测量得到的测量值,即在前面使用”extract”语句声明的变

量,如下图:

这些变量的引用格式是,circuitname::var_name。

变量还可以是我们在最开始的参数段定义的参数:

Page 8: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

这些变量的引用格式是 circuitname::parameter_block_name::var_name。其

中,parameter_block_name 是前面定义的 parameter 段的名字,即 parameter 段

此时将应如此定义 file::parameter is “parameter_block_name”。

定义了这些变量之后,我们来定义我们的约束:

约束使用 constraint 语句定义,而且必须是 var > number 或者 var < number

的格式,其中,”number“为数字常数,而不能是 var1 > var2 或 var1 < var2 这样

的格式,因此,我们先讲需要的约束声明为变量,看上图,constr1 就是 MOS

管的 vgs – vth,而 constr2 就是 vds – vgs – vth,我们希望这两个约束变量都大于

0,保证 MOS 管工作在饱和区。

而后我们定义最终的 FOM:

其中,功耗(power)为电源电压 vdd 乘以 Rd 的直流电流 idc,增益则是输出

与输入峰峰值之比。

最后,使用”fom fom_”语句,指定 fom 是那个变量,注意,这里优化的目

标是使 fom 最小,对于希望越大越好的 fom,可以乘以-1。

Page 9: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

网站上传

文件准备

目前,我们已经准备好了所有的文件,等待上传,但是首先要将其转化为合

适的格式,即工艺库与网表是 tar 格式的压缩包,而 spec 为文本文件。

处理前的文件:

在如果可以在命令行(windows 中的 cmd、powershell 或者 linux 中的 terminal)

中执行 tar 命令,可以执行如下命令:

其中,process.tar 就是工艺库的压缩包,netlist.tar 就是网表文件的压缩

包。

如果无法在命令行,例如在 windows 下,可以使用 windows 下的压缩工具

将其压缩为 tar 格式,例如,windows 下,我使用 7-Zip 进行测试:

Page 10: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

其他压缩工具,如 winRAR,尚未测试,不知能不能支持 tar 格式。

网站上传

首先登录,进入用户中心,点击”create”按钮:

进入创建 Project 页面,点击”upload”:

Page 11: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

填写 project 名与描述

分别选择工艺文件、网表文件、spec 文件:

Page 12: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

点击提交:

其中,绿色表示程序正在运行,黑色表示程序运行完毕。

Page 13: DesignEasy 用户使用简明教程ic-designeasy.com/document/simple_tutorial.pdf户可用使用网站上内置的电路,也可以对自己设计的电路进行优化。本教程针对

程序运行结果。这一部分还有待完善,暂不详细介绍