Cadence教程4——环形振荡器

请移步简书看本文内容
http://www.jianshu.com/p/b3591d197887

本次教程主要讲array和bus的用法。

英文原文在这里。

原理图

仍然直接从inverter这个项目复制过来

新建一个cellview

放置我们之前设计的反相器,注意这里有几种方法来放置一个阵列:

  1. 直接放置的时候在属性中写30列

  2. 放置后复制为一个阵列,注意要选中inverter以及vdd和gnd,复制的快捷键是c

    然后将首尾连接,同时添加label

  3. 使用总线bus,首先编辑inverter的属性(q),修改如下属性,代表这个对象是一个阵列。

    然后画bus(快捷键是shift+w,菜单目录为create –> wire(Wide)),按照下图添加label,代表:

    I0<1>的输入是osc_out,输出是out<1>
    I0<2>的输入是out<1>,输出是out<2>
    ……
    I<31>的输入是out<30>,输出是osc_out

原理图仿真

启动ADE,添加model library,设置瞬态仿真,输出为osc_out

其中因为在现实生活中的电路会有噪声,初始状态等,所以我们要设置仿真的初始状态,不然震荡器不会起振。菜单目录在Simulation --> Convergence Aids --> Initial Condition。在原理图中勾选osc_out这个label,然后node voltage为0。

netlist and run

电路已经起振!

版图

首先新建一个layout

放置我们之前设计的inverter的layout view

并排两个放置

用metal1讲ntap,ptap还有前一个inverter的输出与后一个的输入连起来

将第二个inverter删除后,复制第一个为阵列

在I0和I31旁放置M1_M2

然后用metal2将首尾相连

放置vdd!, gnd!, osc_out这几个pin,注意前两者是inputoutput,后者是output

DRC LVS

这时候会发现LVS不成功

这是因为我们在layout中使用了ocs_out这个pin,但原理图中没有添加这个pin,进入原理图更改

check and save,发现仍然有错误

发现在bus与pin之间必须添加label

再次check and save, extract, LVS

ring oscillator项目完成!

猜你喜欢

转载自blog.csdn.net/maxwell2ic/article/details/52219730