Cadence基础操作:ADE L仿真基础操作

仿真器启动

 schematic视图左上角 launch 启动各种仿真器,ADE L界面左上角Launch 启动ADL XL 和ADE GXL。通过ADE L启动的ADEXL 会继承ADE L的各种设置,如变量、plot and save的点等等。

仿真器主要设置

1.仿真器选择:如图,Setup里面有仿真器选择,一般选择spectre仿真,数模混仿真的话选ams,项目的Project Directory 选择仿真数据存放路径,默认是在:用户-Home路径下面,有时Home目录存储空间不够,需要自行在此更改路径(后期系统复杂Tran仿真可能会占用非常多的空间!)

2.仿真模型:Setup - Model Library。每次启动仿真都要查看一下模型是否正确,不正确的话,一个简便的方法是在CIW界面,输入命令:load "xxx/liblnit.il",即可自动加载并设置默认的model library文件,liblnit.il文件在pdk的器件文件夹里面。

关于model library,一般在model - spectre或者Hspice 目录下面。不在的话,自己找找看,一般后缀为:scs--对应spectre;lib--对应Hspice。(Linux下面后缀没啥意义,只是起个标志作用,里面的内容其实是差不多的,可以混用的)。

3.高性能仿真:电路规模比较大的话,用APS仿真,启动多核跑,加快仿真。一般点一下APS就行,想知道各个选项具体什么含义,点Help。(各种界面善用Help)

4.器件参数变量化设置: 这个很简单,说一下就是,器件的参数可以是另一个变量,比如下面VCM 是 AVDD/2,其中VCM和AVDD都是变量。 

DC仿真

仿真设置:记得勾选保存直流工作点Save DC OP(后续Calculator中OP就是DC下各种参数)。DC仿真可以进行变量扫描 Sweep Variable。 

一般进行完成DC仿真后,确保所有管子工作在想要的区域。Calculator-OP 选管子,可以查看工作状态,gm,vdsat,vds,id,ron,region(0-截止;1-线性;2-饱和)等。确保 vds > vdsat 100mV左右,增益不一样vds和vdsat之间差值也不一样。gm/id = 2/vdsat 。

查看扫描波形:Results - Direct Plot - Main From(这个是后期最主要的查看波形方法)或者schematic 界面上方 直接能查看Direct Plot 

注意这里的Plotting Mode - Append / Replace 其中Append是保存上一个仿真图形,Replace 将上一次仿真波形替换了。这里的ADEL界面右下角也有这个选项

另外一个重要的仿真方法:参数扫描 Tools - Parameters Analysis 

查看仿真结果参数:ADEL界面 Results -  Print - 是打印出来
ADEL界面 Results - Annotate - 附注形式反标到schematic中

如何查看各种参数:

1.Calculator - OP 选管子看参数。

2.ADE中 Results - Print - DC Note Voltage / DC OP / Model Parameters

3.右键空白处,附注:Annotations - Setup 或者 schematic视图 - View - Annotations -Setup 
其中library为工艺库,Cell为需要显示的管子,Instance 为具体的例化名称。Expression中可以更改想要显示的参数。

PS:小数点太多,需要更改有效数字怎么办? 

CIW界面输入命令:aelPushSignifDigits(数字)

Tran仿真

仿真设置:Stop Time 和 Accuracy(精度)conservation - 精度最高 / 仿真速度最慢;liberal - 精度最低 / 速度最快。此外,Options能进行更细致的设置,主要就是仿真步长能够更加精细。

仿真波形查看:可以Direct Plot - Main From - Add to Outputs。

wave窗口,右键曲线 - Send To - Calculator 进行更多操作,例如取某一时刻值 value 函数

 

Wave 操作:

ADEL右下角,Plotting Mode - Append / Replace / New Subwindows / New Windows 
关于 SubWindows 和 Windows 区别如下

wave界面按 M - 添加标记点(Mark);测量两点之间的变化:A、B。AB点只能有一个,Mark点可以有很多个。Ctrl E 取消所有标记点。H -横线;V -纵线;

右键拖动放大;F -自适应;Ctrl 滚轮 -上下;Shift 滚轮 -左右;

q标记的点或线,可以更改属性,准确寻找到某个位置。

右键空白处,第一个图形属性,可以更改背景颜色,右键曲线,可以更改曲线的颜色、粗细、风格等。

Calculator介绍:

有几个常用的,分别是:直接输出、直接Plot、送到ADE的Outputs

上面两排:vt/It -- tran IV;vf/If -- ac IV;vdc/idc -- dc IV;op -- DC Operation Points;

查看电流

Direct Plot Main From界面,右键 - Always on top。

ADEL Outputs - Save All... -  把电流勾上,保存电流的level也可以选择。PS:规模大的话,要选save selected 而不是allpub;

另外,输出波形,电流选端口的点,电压选连线。

AC仿真

这里的AC仿真时基于DC仿真的基础上进行的,在DC的直流工作点上提取小信号模型进行小信号仿真,相对应的AC magnitude 是加在小信号模型上的,就算给的再大,也是基于小信号模型,不会改变静态工作点,因此AC magnitude只要考虑计算方便。 如果是Tran仿真,就要严格考虑了。

iprob的使用

注意反馈方向!变成了单位增益负反馈。

 

然后跑的是stb仿真

Noise 仿真

 

 

 

 

以下是一个基于栈的出栈序列检查的C语言代码: ```c #include <stdio.h> #include <stdlib.h> #define MAX_STACK_SIZE 100 int stack[MAX_STACK_SIZE]; int top = -1; void push(int val) { if (top == MAX_STACK_SIZE - 1) { printf("Stack overflow\n"); exit(1); } stack[++top] = val; } int pop() { if (top == -1) { printf("Stack underflow\n"); exit(1); } return stack[top--]; } int main() { int n, i, j; int push_seq[MAX_STACK_SIZE], pop_seq[MAX_STACK_SIZE]; printf("Enter the size of the sequence: "); scanf("%d", &n); printf("Enter the push sequence: "); for (i = 0; i < n; i++) { scanf("%d", &push_seq[i]); } printf("Enter the pop sequence: "); for (i = 0; i < n; i++) { scanf("%d", &pop_seq[i]); } i = 0; j = 0; while (i < n && j < n) { if (push_seq[i] == pop_seq[j]) { i++; j++; } else if (top != -1 && stack[top] == pop_seq[j]) { pop(); j++; } else { push(push_seq[i++]); } } while (top != -1 && j < n) { if (stack[top] == pop_seq[j]) { pop(); j++; } else { break; } } if (top == -1 && j == n) { printf("The pop sequence is valid.\n"); } else { printf("The pop sequence is not valid.\n"); } return 0; } ``` 该程序要求用户输入一个序列的大小,一个压栈序列和一个出栈序列。然后,程序使用一个基于栈的算法来检查出栈序列的合法性。如果出栈序列是合法的,程序将输出“ The pop sequence is valid.”,否则输出“The pop sequence is not valid.”。 该算法的基本思想是模拟压栈和出栈过程。我们从压栈序列的开头开始遍历,遇到一个和出栈序列的当前元素相等的元素时,我们将它出栈。否则,我们将该元素压入栈中。如果栈顶元素和出栈序列的当前元素相等,则将栈顶元素出栈。 在遍历完压栈序列后,我们检查栈中剩余的元素是否可以与出栈序列中的元素匹配。如果可以,则弹出栈顶元素并移动到下一个出栈元素。如果不能匹配,则出栈序列无效。 此算法的时间复杂度为O(n),其中n为序列的大小。
评论 5
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小生就看看

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值