Pcell制作mos流程.docx

上传人:b****5 文档编号:8106651 上传时间:2023-01-28 格式:DOCX 页数:25 大小:401.04KB
下载 相关 举报
Pcell制作mos流程.docx_第1页
第1页 / 共25页
Pcell制作mos流程.docx_第2页
第2页 / 共25页
Pcell制作mos流程.docx_第3页
第3页 / 共25页
Pcell制作mos流程.docx_第4页
第4页 / 共25页
Pcell制作mos流程.docx_第5页
第5页 / 共25页
点击查看更多>>
下载资源
资源描述

Pcell制作mos流程.docx

《Pcell制作mos流程.docx》由会员分享,可在线阅读,更多相关《Pcell制作mos流程.docx(25页珍藏版)》请在冰豆网上搜索。

Pcell制作mos流程.docx

Pcell制作mos流程

1Overview

这一章描述了参数化单元——pcell

什么是参数化单元(parameterscell)

一个参数化的单元(pcell),是用图形表示的,允许你每次创建器件的时候都可以编辑其参数。

你创建这样的单元就好像创建任何其他layout单元,你将parameters赋予它,它就称为了pcell,这样的pcell我们称之为master。

在你compile完这样的master之后,他将以SKILL语言的形式记录基础数据。

SubmasterCells:

你已经创建了一个pcell,当你利用这个pcell创建器件的时候,你需要对创建的instances赋予参数,这样每个不同的instance都具有不同数据存储在虚拟内存中,我们称之为submaster。

创建一个Pcell

两种编译Pcell的方式:

利用Pcell菜单;用SKILL命令

1创建并编辑一个cell

2添加parameters

3编译cell成为masterpcell

4测试master.

➤Fromalayoutwindow,chooseTools–Pcell.

什么是parameters

当你放置一个instance的时候,你需要将数值赋予不同的参数项以使你:

⏹stretchparameter——向X或Y方向拉伸图形;

⏹conditionalinclusionparameter——包含或去除对象;

⏹repetitionparameter——在X或Y方向复制对象组;

⏹parameterizedshapes——在你放置instance时修改栅paths或矩形;

⏹repetitionalongshapeparameter——沿着参数化图形的边缘复制;

⏹referencepointdefinedbypathendpoint——放置与parameterizedpath端点相关的对象

⏹referencepointdefinedbyparameter——放置于参考点相关器件

⏹inheritedparameters——从hierarchy的任何一个level获得参数而inherit更高的level

⏹parameterizedlayer——改变layer目的是对象图形组

⏹parameterizedlabel——定制label

⏹parameterizedproperty——创建一个由参数值决定的属性

定义参数:

参数名是一个变量,我们可以将其关联到其他定义参数上如果给的拉伸变量名是gate,那么我们定义重复栅的步长的时候我们可以使用SKILL表达式,如gate+1。

变量名的命名需要指明使用意图,如channelWidth。

SKILL表达式可以使用2个以上参数。

可以定义为:

⏹浮点型的数字

⏹一个名字

⏹一个SKILL表达式

⏹一个SKILL函数

SKILLOperators

2StretchCommands

这一章我们讨论

⏹DrawingStretchControlLines

⏹DefiningStretchParameters

⏹SpecifyingStretchDirections

⏹SpecifyingaReferenceDimension

⏹SettingMinimumandMaximumValues

⏹StretchingPaths

⏹UsingStretchwithRepetition

⏹UsingStretchwithConditionalInclusion

⏹UsingtheStretchmenu,including

利用Stretchparameters可以改变对象的尺寸,可以沿着垂直方向(vertically)、水平方向(horizontally)或者同时两个方向。

⏹Stretchthelengthandwidthofatransistor

⏹Stretchthewidthofapath

⏹Movecertaingroupsofobjectswhilestretchingothers

StretchMenu

StretchinX——沿X方向拉伸

将目标沿X方向拉伸,其Stretchcontrolline是一条垂直的直线,将object一分为二,分割处既是拉伸的起点。

沿X方向拉伸后的图形:

◆StretchinY——沿Y方向拉伸

沿Y方向拉伸后的图形:

◆Qualify——指定对象

首先点击Qualify——出现提示

——点击Stretchline——Stretchline高亮同时出现提示——

(点击受此Stretchline影响的单元)——我们选择除了孔以外的图形——双击空白处结束。

选择菜单项的parameters——Summarize查看

我们可以看到(qualified)字样,具体我们还需要验证:

我们选择影响的单元不包括右边的孔,我们看下结果:

右边的孔并没有被影响到。

◆Modify——修改

我们选择

,出现提示

,选择一条Stretchcontrolline,出现对话框,我们可以进行修改,这里只能修改已知Stretchcontrolline的parameters。

◆Redefine——重新定义

选择

出现提示

,我们单击Stretchcontrolline,出现提示

选择合适位置,单击左键出现Stretchcontrolline的划线,再双击左键结束,原来的Stretchcontrolline消失。

Redefine功能不仅能用于重新定义Stretchcontrolline的位置,而对于parameters也能修改。

当你对你的对象设置parameters之前必须首先绘制一条StretchControlLines,这条线决定我们从哪开始拉伸和向哪个方向拉伸。

DrawingStretchControlLines

添加拉伸parameters到你的cellviews,你必须首先画一条Stretchcontrolline,Stretchcontrolline决定了wheretoBeginthestretch和whichdirectiontostretch。

horizontalstretchcontrolline——水平拉伸控制线是一条水平线,控制着向上向下或上下拉伸。

菜单中是StretchinX。

verticalstretchcontrolline——垂直拉伸控制线是一条垂直线,控制着左右拉伸。

菜单中是StretchinY。

你可以为一个单元添加很多Stretchcontrolline,程序默认为他们都是独立的。

Example

下图是一个实例,我们选取一条垂直拉伸控制线(verticalStretchcontrolline)来控制其穿过的栅和栅下有源区位置,而对未穿过的孔和铝线则不能控制。

选择菜单中的StretchinX,出现菜单

菜单中NameorExpressionforStretch需要填入parameter,这个parameter可以是变量名称,我们用Length(代表栅长),ReferenceDimension(Default)默认为0.6,这里默认值是控制线穿过的图形中最小的图形量度,StretchDirection可以选择right-left-rightandleft三种,从控制线穿越位置拉伸。

其他以后介绍。

再选择一个拉伸有源的,水平拉伸控制线(horizontallyStretchcontrolline)菜单中选择StretchinY。

菜单中NameorExpressionforStretch需要填入parameter,这个parameter可以是变量名称,我们用Width(代表有源区宽度),ReferenceDimension(Default)默认为0.5,这里默认值是控制线穿过的图形中最小的图形量度,也即是空的宽度StretchDirection可以选择up-down-upanddown三种,从控制线穿越位置拉伸。

我们设置完parameters后还需要编译一下,才能保存到硬盘上。

Pcell——compile——ToPcell

或者我们可以直接按

保存。

新建一个virtuosolayout,在parameter选项内更改参数调用刚才的pcell,拉伸变化如图:

我们发现孔也随着有源区拉伸的,这是我们所不希望看到的。

我们可以使用Qualify命令来选择我们需要影响的图形。

选择Pcell——Stretch——Qualify,按照界面左下角提示选择水平拉伸控制线(horizontallyStretchcontrolline),使其高亮,再按提示选择需要被该控制线影响的图形,除了孔和铝都设置为高亮,双击完成,再测试:

StretchControlLineRules

拉伸控制线需要遵循的几点规则:

✓Stretchcontrolline必须要与图形正交,排除其他任何角度,这里可以在Displayoptions选项中的

调整。

✓Stretchcontrollines不能翻转,你可以将控制线绕开你不想包括的单元但是不能够反相翻转。

且stretchinX不能穿过垂直的边缘,stretchinY不能穿过水平的边缘。

✓Stretchcontrollines穿过的图形,将会受到其影响,但是未穿过的图形呢?

他们将会跟随穿过图形相对移动。

而不会拉伸,即使是不同的层,我们做一个实验,将有右边的有源区变换层次,再用垂直控制线拉伸栅长。

可以看到右边的层次也随着栅长的拉伸位置跟随变化。

✓当我们设置parameters的时候,默认的ReferenceDimension总是穿越图形中最小尺寸的图形,那么我们改变其值会怎样呢?

我们用横向拉伸控制线控制栅宽或者有源宽度的变化,我们改变默认值,在ReferenceDimension填入栅的总宽度(长)2.4。

我们插入instance观察parameter。

Widith栏默认的是填入的栅的宽度2.4,而晶体管并未拉伸。

更改数值后,晶体管拉伸。

这样我们可以设置我们所需要更改的图形参数,而不只是默认的最小宽度。

✓我们是首先量了栅的宽度,如果没有测量准确测量尺寸的情况下,我们绘制了2个矩形高度分别为10和30,而我们填入的ReferenceDimension为20,我们插入后分别设置ReferenceDimension为201510和5,发现Reference

Dimension设置为20的没有变化,设为15的两个矩形的高度都减少了5,设置为5的时候均减小了15,其中较矮矩形变为反相的图形。

这样就知道ReferenceDimension填入的值只是一个基准值,我们后来填入的parameters会依照基准值加减。

✓在垂直和水平拉伸线命名同样的parameter,这样就可以实现同时拉伸,对于宽高不同的图形,对于设的ReferenceDimension值,我们放置instance的时候设的值相对于宽高按差值变化,如宽高分别为1020,初值ReferenceDimension=20,NameorExpressionforStretch=Width。

Instance放置Width=30,那么变化后宽=10+(30-20)=20,高=20+(30-20)=30。

相同尺寸相同变化:

✓当Stretchcontrolline穿过两块图形连接的缝隙之间,图形的拉伸跟StretchDirection,

结果如下图:

StretchDirection——LeftEdges=4;Edges=-2

StretchDirection——RightEdges=4;Edges=-2

StretchDirection——RightandLeftEdges=4;Edges=-2

我们可以限制parameters的最大最小值。

✓StretchingPaths

UsingStretchwithRepetition

我们可以将拉伸参数和复制参数相结合,可以做到:

✓拉伸复制对象

✓依总拉伸量决定复制个数

✓依复制个数决定拉伸量

我们可以将拉伸参数结合复制参数在同一个pcell里面,但这里要注意的是拉伸总是赶在复制之前发生的,如果要使复制先行于拉伸,我们必须指定一条依靠复制参数的拉伸控制线。

◆UsingStretchParameterswithRepeatedObjects

当一条Stretchcontrolline穿过一个复制的对象,拉伸的方向和复制的方向共同影响该实例。

✓如果拉伸的方向垂直于复制的方向,这个实例或实例组首先被拉伸然后被复制。

下图栅长是上下方向拉伸的,而栅的复制是水平的,形成了常见的相互垂直关系。

✓如果拉伸的方向平行于复制的方向,那么实例或实例组将会默认被排除拉伸的影响之外,除非实例组完全在拉伸线的一端(即使在一端也未发现被影响,带验证.....),否则复制的实例不会被拉伸影响。

✓默认的,拉伸总是先于复制,即使是由宽度函数(width/steppingdistance)决定的复制参数中,因为拉伸先行发生,就使晶体管源漏的接触孔的计算称为可能。

宽度设为width,复制步长为pcStepY,计算contact为width/pcStepY。

◆StretchingObjectsinRepetitionGroups(拉伸复制的实例)

Stretchcontrolline穿过复制的实例组,默认情况下实例组的单元不会被拉伸,但你仍可以拉伸这部分图形。

我们通过点击拉伸对话框的StretchHorizontally(Vertically)RepeatedFigures来拉伸复制的单元,这里我们设置栅的长度为Width,栅和栅之间的距离为0.1,这样SteppingDistance=Width+0.1(这里一定要注意有变量expression我们不能用初始值带入,必须用变量名)。

这样将栅的数量设为3,栅长为0.9如图(这里复制的objects需要如图3项,而拉伸的影响object有栅和栅下的有源,默认即可)。

Example:

我们看TO层次跟随的栅的复制,这样的情况下我们采用另一种方法:

因为栅的复制方向和拉伸方向相同,必须使此项为true;

有源区的拉伸,需独立留一条;

垂直的contact的复制,这里需要包括除了contact的所有图形;

串联栅的数量为NUM,这里注意栅长是变化的,所以在pcStep需要用栅长的变量L+0.1,这里需要用依靠TO决定有源区域的拉伸长度。

Contact的复制。

验证compile:

◆UsingDependentStretchControlLines(从属控制拉伸线)

默认的拉伸先于复制发生,然而你也可以设置拉伸从属于复制参数。

✓当拉伸参数是主要的(默认),拉伸总量控制着复制总量。

✓当复制参数是主要的(拉伸参数是依靠项),复制参数控制着拉伸总量

你可以控制主要参量(拉伸或复制的parameters),但你不能控制第二主要参量(因为这个量是被主要参量控制的,属于从属关系)。

系统从主要参量计算非主要参量,你只需要指定哪个量是需要输入的,哪个量只需要由其控制即可。

UsingStretchwithConditionalInclusion

你可以结合条件包含来设置拉伸参数:

✓创建一个条件包含的控制线(可废弃或启用)

✓由拉伸总量决定是否包含实例

✓由条件包含决定是否拉伸

Example

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 高等教育 > 工学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1