Cadence教程4——环形振荡器

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

英文原文在这里。

原理图

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

新建一个cellview

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

  1. 直接放置的时候在属性中写30列
  1. 放置后复制为一个阵列,注意要选中inverter以及vdd和gnd,复制的快捷键是c

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

  1. 使用总线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项目完成!

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容

  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 135,156评论 19 139
  • 这一篇主要讲如何用cadence仿真一个简单的反相器,并画出版图的全部流程。工艺使用ncsu-free-cdk。 ...
    maxwell2ic阅读 24,368评论 5 15
  • testbench 1. 激励的产生 对于testbench而言,端口应当和被测试的module一一对应。端口分为...
    Michael_Johnson阅读 2,738评论 0 1
  • linux资料总章2.1 1.0写的不好抱歉 但是2.0已经改了很多 但是错误还是无法避免 以后资料会慢慢更新 大...
    数据革命阅读 12,256评论 2 33
  • 画笔下的“鲁冰花”,是我童年家园的味道 平台打卡第一天的作业图样有一个好听的名字叫紫扇豆,昵称“鲁冰花”。...
    祝丹妮阅读 378评论 2 2