(超级详细教程)cadence从原理图到版图layout,DRC、LVS、PEX、RVE后仿真AMS完整流程+SAR ADC项目

cadence从原理图到版图layout,DRC、LVS、PEX、RVE后仿真AMS完整流程+SAR ADC项目

在这里插入图片描述

以反相器为例

一、原理图绘制(这里先略过)

在这里插入图片描述

其中,p18和n18使用的库是smic18mmrf,注意绘制完电路图后将VIN、VOUT、VDD、GND设置为引脚(注意名称大写)
在这里插入图片描述

二、版图layout绘制

2.1.导入器件到版图

在画好的电路原理图中,如下图点击
在这里插入图片描述
如图,选择OK
在这里插入图片描述

如图,选择OK在这里插入图片描述

弹出layout界面后。如图操作,即可导入原理图中使用器件
在这里插入图片描述
勾选Instances即可,点击OK
在这里插入图片描述
在这里插入图片描述
shift+F,显示器件细节
在这里插入图片描述

2.2.添加绘制过孔和布局连线

常用快捷键如下
在这里插入图片描述
将器件移动到白色十字线附近
在这里插入图片描述

2.2.1绘制过孔

按o添加过孔,M1_AA表示过孔连接M1金属层和AA有源区(active),选择一列四行
绘制出VDD的过孔
在这里插入图片描述
生成红框中四个过孔
在这里插入图片描述
给过孔覆盖金属层,按P键划线,画完之后按Q键修改宽度(注意过孔与金属层之间的间距不能太小)
在这里插入图片描述
在这里插入图片描述
同理绘制出GND的过孔(注意GND过孔需要覆盖SP drawing)

在这里插入图片描述
在这里插入图片描述
给cmos器件添加过孔,选中一个PMOS器件,按Q,然后如下图操作
在这里插入图片描述
即可在PMOS下方生成过孔
在这里插入图片描述
同样方法绘制出1234四个过孔,其中2过孔需要自己按O键生成,方法同上
在这里插入图片描述

2.2.2布线

接下来进行布线,把相同名称的节点连接在一起,如图,注意,图中蓝色为M1层
![在这里插入图片描述](https://img-blog.csdnimg.cn/10c92db6be7c4d3d849ed07d522b86b3.png

因为PMOS器件需要建立在Nwell中,所以将上方的两个PMOS器件用紫色的NW drawing层覆盖
在这里插入图片描述

2.2.3在金属层上添加label(引脚,对应于原理图)

在这里插入图片描述

至此,版图完成
在这里插入图片描述

三、DRC检验

在版图界面打开DRC
在这里插入图片描述

注意,如果在这一步出现License的错误,如下图,请点击下方的链接,查看解决方法。
在这里插入图片描述

Cadence Virtuoso IC617中常见的报错和警告的解决方法

导入规则文件
在这里插入图片描述
全部变绿之后,点击 Run DRC
在这里插入图片描述
筛选错误类型,检查版图错误并修改(密度问题不用解决,指电路密度稀疏)
在这里插入图片描述

四、LVS检验

在这里插入图片描述
找到自己工艺库中的LVS rules_file
在这里插入图片描述
此处选择电源和地

然后点击RUN即可
在这里插入图片描述
出现笑脸说明全部连接完成,LVS检验通过
在这里插入图片描述

五、PEX提取寄生参数

在这里插入图片描述
选择自己工艺库的提取寄生参数的rules_file
在这里插入图片描述

选择电源和接地
在这里插入图片描述
在这里插入图片描述

点击RUN即可

之后会跳出界面 需要选择自己的Cellmap File ,后缀为 .cellmap ,此外其它选项需改动的都在红色框标出
在这里插入图片描述
之后会跳出一个框,点击close即可
在这里插入图片描述
成功提取之后就会出现绿色的图
在这里插入图片描述
提取成功之后,在View界面中会出现calibre文件,表示提取成功
在这里插入图片描述

在这里插入图片描述

六、后仿

后仿方法1

——直接使用前仿中用到的ADE L界面
选择Environment
在这里插入图片描述
在第一行中加入calibre,点击OK
在这里插入图片描述
然后开始仿真即可,此时进行的就是后仿

后仿方法2

——利用config配置后仿
(此方法需要将整体电路图封装成一个symbol,并加入输入输出激励,好处是可以分别设置各个模块是否使用前仿或者后仿,可以对某一模块单独进行后仿)
在library manager中,新建cell view
在这里插入图片描述

选择config
在这里插入图片描述

选择需要仿真的原理图,点击下方的Use Template,选择spectre,点击OK
在这里插入图片描述
进入config界面后,设置需要进行后仿的器件,选择仿真calibre

在这里插入图片描述
点击ADE L,即和前仿一样操作,无需设置Environment

注意:
每次更改一下shematic,需要在config窗口即Virtuoso@Hierarchy Editor窗口点一下菜单栏第七个按钮—recompute the hierarchy,重新上传下数据,然后才能进行ADEL仿真,同时,注意检查下,ADEL窗口的Setup→Simulator/Directory/Host…下的Simulator选项必须要选择spectre,这个点必须注意,应为有的时候应为系统配置会默认为ams,导致仿真不能正常进行(我就遇到过,查了半天,哈哈哈)
在这里插入图片描述

仿真前确认是否为后仿真

方法一:在ADEL窗口,simulation→netlist→create/recreate→弹出netlist网表,下拉到最后,看是否include所加的后仿真寄生网表“/home/…/caliber/pex/SAR_ADC.pex.netlist”,如果有,则表示是后仿真,否则,需要检查是否哪一步设置有误,后仿真只能保存模块外部信号,不能保存内部信号

方法二:在ADEL窗口,simulation→Output Log→弹出log页,找到Circuit inventory即电路详细列表,可看到列表包括capacitor:36168,resistor:32623,实际电路中并没有这么多电阻电容,说明提取的仿真网表中包括寄生电容、电阻,是后仿真

如果出现cadence 后仿真不收敛的问题
ERROR (SPECTRE-16080): No DC solution found (no convergence).
解决方法:SKIP DC (跳过DC仿真)
操作:
在这里插入图片描述

将skip dc勾选上就可以了
在这里插入图片描述

七、使用RVE工具在后仿真中查看寄生电容、电阻方法

(1)版图对电路进行寄生提取(pex),在路径/home/…/calibre/pex下会生成svdb文件,该文件包含提取的寄生信息,值得注意的是,多个模块的寄生提取放在同一路径下,svdb文件会覆盖,建议在/home/…/calibre/pex路径下建立不同的block来存放不同模块的寄生文件,方便调用

(2)进入电路的shematic,Calibre→Start RVE→打开Calibre RVE对话框,最上方的Database选择对应路径下该模块电路的svdb文件,比如:/home/…/calibre/pex/SAR_ADC/svdb,Database Type选择PEX,点ok→打开Calibre RVE窗口,左边的Result中选择Parasitics,双击,会显示寄生列表,选择对应的net查看对应的C+CC值即可,或者双击该net名,下方会弹出详细的寄生电阻/电容列表,进行查看,也可点对点计算寄生电阻

在这里插入图片描述

八——AMS数模混合仿真

https://blog.youkuaiyun.com/qq_38496973/article/details/107901610

九、几个已经完成的SAR ADC项目——在另一个文章专栏里

几个完成的SAR ADC项目教程+Bandgap LDO+Buck DCDC项目教程
设计文档详细,适合初学者入门

目录
一、10bit 20MHz SAR ADC
二、12bit 100MHz Pipelined混合SAR架构 ADC
三、李福乐老师8bit SAR ADC
四、cadence入门教程
五、1.8V LDO电路 ➕1.2V bandgap电路
六、Buck DCDC项目教程

在这里插入图片描述

### Pipeline Successive Approximation Register Analog-to-Digital Converter Architecture Pipeline successive approximation register (SAR) analog-to-digital converters (ADCs) combine the benefits of both pipeline and SAR architectures to achieve high resolution with moderate speed. The design integrates multiple stages where each stage performs a partial conversion, refining the result progressively. #### Basic Structure and Operation Principle A typical pipeline SAR ADC consists of several identical or similar stages connected in series. Each stage includes a sample-and-hold circuit, a low-resolution flash ADC, a digital-to-analog converter (DAC), and an error correction mechanism. During operation: - Input voltage is sampled at the first stage. - A coarse quantization occurs using a small number of bits within this initial segment. - Residue from this quantization passes through subsequent stages for finer adjustments until reaching desired accuracy levels[^1]. This approach allows higher throughput compared to traditional single-stage SAR designs while maintaining good power efficiency characteristics suitable for many modern electronic systems requiring fast yet precise conversions between analog signals and their corresponding binary representations. #### Implementation Considerations In practical implementations, designers must address various challenges such as reducing interstage gain errors, managing clock skew across different segments, ensuring sufficient linearity over temperature variations, minimizing noise contributions introduced by internal components like comparators used inside individual blocks forming part of overall structure described above. Advanced calibration techniques can be employed alongside careful layout strategies during fabrication processes aimed specifically towards mitigating these potential issues effectively without compromising performance metrics significantly. ```python class PipelineSAR_ADC: def __init__(self, num_stages, bit_resolution_per_stage): self.num_stages = num_stages self.bit_resolution_per_stage = bit_resolution_per_stage def convert(self, input_voltage): output_code = 0 for i in range(self.num_stages): # Simulate sampling & holding current value before passing it forward residue = simulate_sample_and_hold(input_voltage) # Perform rough estimation via lower-bitwidth sub-converter approximated_bits = perform_coarse_quantization(residue) # Update final code based on intermediate results obtained so far update_output_code(output_code, approximated_bits) # Calculate difference between actual signal level versus what was just estimated calculated_residue = calculate_residual_error(approximated_bits) # Prepare next iteration's input accordingly prepare_next_input(calculated_residue) return finalize_conversion_result(output_code) def main(): adc = PipelineSAR_ADC(num_stages=8, bit_resolution_per_stage=3) print(f"Converted Value: {adc.convert(2.5)}") if __name__ == "__main__": main() ```
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

模拟IC攻城狮

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

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

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

打赏作者

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

抵扣说明:

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

余额充值