Cadence 问题记录
文章目录
Cadence virtuoso 617/618
2021 SAR ADC
-
virtuoso无法启动Cadence61对应的virtuoso程序
可能原因是管理员安装时使用的程序名不是virtuoso。检查/usr/local/bin/目录下的Cadence程序名,例如实际安装的程序可能是ic617。 -
启动ic617后显示异常并报错
启动ic617后界面显示异常(全黑)并报错:*WARNING* Ruler layer 'hilite drawing4' is missing。检查发现系统安装了多个版本(大写IC617和小写ic617),尝试使用大写IC617启动后显示正常,确认是版本兼容性问题。 -
打开清华李福乐老师SAR ADC例子的配置过程
李福乐老师的SAR ADC例子需要TSMC 0.18um工艺库支持,配置过程遇到以下问题及解决方法:问题1:缺少TSMC 0.18um工艺库
- 老师提供的压缩包中只包含
tsmc18scx(TSMC 0.18um数字标准单元库),缺少模拟MOS管对应的工艺库。 - 解决方法:从服务器获取完整的
tsmc18工艺库文件。
问题2:工艺库安装失败
- 将
tsmc18库文件添加到Cadence的library path后无法正常识别。 - 根据README.INSTALL文件说明,需要使用
pdkInstall.pl脚本安装。 - 运行脚本时报错
bad interpreter...,原因是脚本第一行的Perl路径不正确。 - 解决方法:使用
which perl命令找到正确的Perl路径,修改pdkInstall.pl脚本第一行的路径。
问题3:安装路径选择困惑
- 安装过程中卡在路径选择步骤,无论输入什么路径都提示
(Not Include Path Name)。 - 解决方法:直接按回车(不输入任何内容),然后输入
y确认。系统提示的是文件夹名称(Directory Name)而非完整路径(Path Name)。
问题4:格式兼容性问题
- 服务器上的
tsmc18库是OA格式(Cadence61支持),而老师提供的SAR_ADC_8BIT_V1和tsmc18scx库是CDB格式(Cadence51)。 - Cadence只提供CDB转OA的转换工具,不向下兼容。
- 解决方法:使用CDB转OA工具将两个库转换为OA格式。具体操作可参考相关博客教程。
最终成功打开例子所需的文件:
SAR_ADC_8BIT_V1.tar.gz:基本的8bit SAR ADC电路库tsmc18scx.tar.gz:TSMC 0.18um数字标准单元库t018cmsp007k3_1_3a:TSMC 0.18um工艺库
- 老师提供的压缩包中只包含
-
利用UMC28nm的库进行3bit SAR ADC的设计
-困难1:
-困难1:获取并导入数字标准单元库
设计数模混合ADC需要用到数字标准单元库(Standard Cell Library)。获取途径主要有两种: -
自行设计:手动绘制与门、或门、非门等基本逻辑单元。这种方法对工艺理解要求高,工作量大,适合有深厚工艺积累的公司或团队。
-
使用厂商提供的标准单元库:ARM、Synopsys等公司会为特定工艺(如UMC28nm)提供经过验证的标准单元库。这些库通常包含原理图、版图、时序模型等完整数据。
我选择了第二种方法,通过多方联系获得了ARM公司针对UMC28nm工艺的标准单元库文件。然而,如何将这些文件正确导入Cadence Virtuoso 617环境成为了下一个挑战。相关公开资料较少且不够详细,最终在请教有经验的工程师后才掌握了完整的导入流程。
一个是你自己画,把那些与门与非门或门都画出来,但是工程量较大,适合对相关工艺有一定积累的公司,一般来说要把数字的门用到模拟的设计里面更可靠的方法是这个,但是对于学生来说工作量太大。
一个是一些公司会做对应工艺下的Standard Cell Library用于数字设计,ARM和Synopsys都会有做,有一些下载途径但具体怎么下载我并不知道。
我采用的是第二种方法,问了好些人总算是要到了ARM公司的在UMC28nm下的Standard Cell Library。那么问题来了我要如何把它给的这些文件导入到cadence virtuoso里面呢?我在网上找啊找,终于找到了一篇说得还算详细的吧,但也没有很详细。所以后面又请教了一些工程师才完成这个过程。(得到一个血一样的教训,还是应该等研究生上完课再开始做设计啊!!工程师说这些研究生会有课程讲,奈何我是个本科生呢)
下面是导入数字标准单元库到cadence virtuoso617的总结。
首先,先在library manager处建立一个库,并且和.tf文件完成绑定。
建议先导入symbol!!
然后,到cadence的主窗口就是启动页面

点击file-import
导入schematic:
在import中选择Spice,然后在ARM给你的那个Standard Cell Library的文件夹里面找到.cdl文件,进行如下配置:
首先是input
如果所有cell都要导入 Import Sub-circuits list可以不填
(reference library list我也不知道写啥,我随便写了一个我这个Standard Cell Library对应的工艺文件UMC28hpc的工艺库)

然后是output:

我只导入过ARM的Standard Cell Library所以对于其他库,如果设置可能有所变化,可以自己试试,我刚开始以为cdl文件要用cdl的Netlist Language,但是后来发现要用Spectre才行。
导入layout:
在import中选择Stream,就填前两项应该就行,Stream File是.gds文件或者.gds2,可以找找。

导入symbol:
对于symbol文件一般会有,直接传到服务器上即可,因为本来应该使用.v文件,import的时候选择verilog去导入的,但是那样出来所有的门都是长方形就不太好看,一般ARM或者Synopsys公司给的包里会包含symbol的库。直接用sftp传到服务器上就好了。
-
安装smic55nmpdk文件,报错Error: Cannot find virtuoso executable. Please reset PATH or specify it by argument “-b <virtuoso_bin>”
可能因为该目录下没有配置相应的cadence virtuoso的环境,先输入
ic617-env之后再安装pdk即可。 -
启动cadence virtuoso,报错 WARNING file /home/hdx20/CDS.log fflush failed. No space left on device。
清理一下磁盘中的东西,应该是分配给用户的空间被占满了,导致无法启动。 -
修改了原理图的pin,如何更新symbol中的管脚,而不重新排。
从schematic再次create,系统会检测到已有symbol,直接选择modify即可。 -
仿真时报erro:“xxxxxx”(之后再具体截图原因)
主要遇到过以下几种:
a)没有setup 合适的library,有的时候工具不会自动给你检测并添加,也就需要自己找到.scs文件导入一下。(操作:set up-model libraries)
b)找不到spectre,因为我导入的是学长的设计,所以仿真时会报错这个,可以把对应view的spectre文件删了,不影响原理图仿真。
2023 CTSDM
simic40ll工艺
1、lvs时报错:Problems encountered when checking source netlisttSource netlist references but does not define 2subcktst n11ll_ckt p111l_ckt

需要在calibre-setup-netlist export,把.sp文件include进来,因为你从原理图通过calibre生成的网表文件,你的n11ll_ckt这些mos的名字,和你的lvs规则文件里用的mos的名字不是一个,因为simic的lvs规则文件对网表里mos的文件有一个简化映射。

2、pex报错,Compilation Error :Error while compiling rules file。(特别神经的是它的pex rules文件居然是.lvs后缀的,simic一般会在里面留一个typical_pex的一个文档说明各个文件是代表什么的,我找了好半天)

仔细查看报错,可以发现这个是rule文件include的是绝对路径的文件,由于路径不符合目前的路径,所以你需要找到.lvs的文件报错的那行并且修改为你的服务器对应pdk的绝对路径。
3、SMIC40nm,跑MonteCarlo时,只需要添加相应的mc corner(mos_mc res_mc mom_mc),保证schematic中的mos下的mismod置1了(q一下mos在properties里面就可以看到,默认是打开的)。
4、scc40nll_hdc40_lvt_PG库中layout打开一片黑
需要重新bind一下Technology lib:
virtouso窗口-tools-technology file manager-attach-绑定到simic40ll


5、pin不带label
create-pin-create label √-options-layer name same as pin-layer purpose pin

6、smic40的工艺,dnw需要res层,不打res层可能会识别不到管子,和net,也可能把错误报到net上面去。
7、把mos管打散之后,版图上报warning:Overlap between a pathSeg on ‘M3 drawing’ on net ‘O’ and a rectangle on ‘M2 drawing’ on net ‘VDD’ creates a short.。这是因为打散后layout xl 把net识别错了,q一下有源区的金属图形,改成你想要的net名字就行。

8、Net DVSS is selected for stamping. Rejected nets: AVSS
AVSS DVSS通过NWELL或者PSUB形成了非金属直连上的“软连接”,就是共用了同一个sub。要么通过DNW隔离一下,要么用假的SUBD分开骗一下工具,但是实际制造的时候会是同一个衬底,建议采用DNW进行隔离。
2023 单转差OPAMP(TSMC185V)
1.IBIAS<0> on net;IBIAS<0> VBIAS4 on net;VBIA54

两个名字不同的net接在一起,lvs就会报这个错。在漏端接一个小电阻即可解决。

2.电阻阻值discrepancy

我这里本来用的TSMC185V,但是做lvs的时候用的TSMC18的lvs文件,而185V和18并不完全相同和兼容,由此出现了此问题。改用TSMC185V的lvs文件便解决了。
3.后仿看内部节点电压
在原理图里打pin,layout也相应打pin,就可以看了(用于看的节点电压不太多的情况);
如果要看的比较多,就要从result browser里去找才行,反正直接用plot是plot不出来的。
4.后仿真利用spectreText,仿真报错:Attempt to override value of inherited parameter `r’ when instantiating a subcircuit.
ADEL中不要用r,做为变量
养成一个不要用太简单的名词做变量的习惯
2024 PGA
1.后仿真增益掉得很厉害,或者相位裕度突然特别差,特别离谱的问题
首先把电源和地的寄生exclude提取网表再重新仿一下,可能因为电源和地走线的问题,导致了额外的环路出现。
2.spectrText反提文件和netlist的调用端口顺序可能不匹配要注意。可能是cadence卡bug了,重启一下。
3.result browser在adexl里面没有节点电压的信息,可能是adexl的bug,点进test editor再用adel仿真一次,后面adexl就能看见result browser的结果。
AMS数模混仿
1.仿真一直卡在xmelab,不往后进行。

解决:AMS卡bug了,换个服务器。
2.ADEL 或者ADEXL仿真一直显示之前的结果,并不更新结果,例如我后一次只仿到40ns,但是却显示到180ns。
解决:ADEL出问题了,用ADE Explorer(官方建议就是用ADE Explorer进行AMS数模混仿)
Analog lib和ahdl lib器件的使用
1、vbit
rptsart(the starting bit when repeating)起始时,vbit输出的是1还是0;
rpttimes(repeat times)vbit输出是根据你的输入的data进行重复的,这个属性指定了vbit重复的次数;

number of periodic jitter:描述了时间周期的变化,当该值不是0的时候,时间周期的变化可以是一种正弦的、三角波的、方波类型的变换。如果只考虑随机抖动的话,number of periodic jitter可以设置为0。
CDB2OA 设计库
1.先把工艺库转oa格式。
新建一个文件夹(cdbpdk),里面包含cds.lib文件,cds.lib文件中包含cdb工艺库路径。
新建一个文件夹(OA),用于存转换后的oa格式的工艺库。


在OA文件夹下启动ic617(virtouso 617版本)。点击tools-conversion toolbox-cdb to openaccess translator。

选中cdbpdk路径下的cds.lib文件,选中工艺库文件进行转换UMC_18_CMOS。点击OK。转换完成后,可以看到在library manager中出现了UMC_18_CMOS的工艺库

2.把设计转为OA格式。
在确保你当前cadence的运行路径下的cds.lib文件中包含oa格式的工艺库之后。再新建一个文件夹,里面包含cds.lib,cds.lib文件中有你要转的设计的路径。
首先在设计库目录下运行find . -name "*cdslck*" -exec rm -f {} \;把设计目录中的cdslck文件全部删除。
然后再tools-conversion toolbox-cdb to openaccess translator。类似的再进行一次转换。
两种方法仿时钟的jitter
眼图
1、tran带noise仿真足够的周期数,周期数不够可能电路没有建立好,同时周期数会影响jitter计算的置信度
2、波形窗口measurement-eye diagram,并进行如下设置,点击plot eye,threshold为clk摆幅的一半。


3、点击右下角的eye measurement,选择刚刚画的眼,填入threshold,bins多填一点。即可得到random jitter(因为左侧它自动对齐了所以jitter几乎为0,要想换个edge看,就在cross type选)。

pss+pnoise
1、设置pss仿真

2、设置pnoise

trigger是时钟信号,measurement也是时钟信号

3、查看输出

pss+pnoise详解 https://blog.csdn.net/weixin_42221495/article/details/135466315
2024NS SAR(TSMC28)
1.无法仿真,仿真就报错:Error found by spectre during initial setup. ERROR(CMI-2440):"/process/tsmc/CLN28HPC+/TSMCHOME/PDK/PDK1 _elk v1d8_3.scs ”53092: MO: The length, width, or area of the instance does not fit the given lmax-lmin, wmax-wmin, or areamax-areamin range for any mo

解决:

2025 THA of pipeline
- spectre X仿真精度较低,并且无法设置步长和retol 解决: spectreX默认不可设置步长和retol,需要在advance option中勾选上preset overide,并且后面的框什么都不填则设置跟从你原本在.tran和simulation option中的设置。
- tran仿真查看dc工作点:option-output-infotimes 设置需要查看工作点的时间。有利于观察在大摆幅下mos 管的工作状态变化。
- lvs的split gate打开,nand门无法识别A B端的区别。
- 仿真的电路很简单,同时带有很多理想元件时,即使约束了retol和tran的步长,仿真也可能不准,所以这种时候要尝试把spectreX的AX,CX用起来。
- 后仿真时,c cc网表仿真时,外部连接为noConn或浮空节点,在result browser里面看不到这个节点,但是网表里面又有这个节点,这是因为这个节点的被仿真器优化了。如果想要看这个节点的结果有两种方案:
- output-to be saved-把这个节点手动加上去,即使你在save all里选择的是save allpub/save all。
- 在这个节点外部接一个1MOhm的超级大电阻,在不影响电路结果的情况下,将此节点接一个器件到vcc或者vss。
- pex抽取时,不想抽底层的某个net,在Exclude Toplevel Source Nets 填入,RVE中source net显示的名字,即可不抽取这个底层net。
- Smic的工艺仿真dc match不显示贡献,需要把corner切换到mc。
- check/asserts输出显示disabled,可以查看output log,搜索check,看看check运行的情况。此处发现是没有设置model和cond就显示ignored due to incorrect parameter。model设置为device 的cell name,cond是你判断的调节,设置为v(g,s)>1.8等等也就是你要check的条件。这些都可以在help文档搜索static mosfet voltage check搜索到。
- check仿真运行的开关也要在simulation-option-analog里面打开。dochecklimit:yes;checklimitdest:both/psf;opptcheck:yes。
- tran仿真中查看工作点(gm,vgs等等)的波形(以下顺序不能乱):
(a. save all:选择 save allpub)
b. outputs-to be saved select op parameter-选择需要save的器件
c.跑一次tran仿真
d.打开calculator,点击ot,选择器件,下拉框选择需要保存的工作点的量,点击到send to ade(齿轮符号)
e.这样output里面就会自动出现保存你要保存的东西了。
2026 charge pump
- charge pump带反馈环路,采用pss+pstb进行stb仿真运放的相位裕度。
231的设置跟之前的不太一样。
两个办法:
detect steady state:自动寻找稳态,但是这个对于需要时间稳定的电路来说,pss没办法直接收敛。需要将.tran仿真的spectre.fc文件加载到pss的option的readic中。
设置tstab:pss会在tstab时间附近进行稳态寻找,设置了tstab之后不能再勾选detect steady state否则tstab就没用了。
pstb需要add specific points,从pss输出波形中找到比较稳定时间点填入。 - 直接带diffamp跑容易一把跑飞,最好是带着limiting_diffamp。
2026 input matching net
- rf设计几乎都基于扫描,可以采用spec summary来挑选最优解(maestro右上角那个绿√红x)。spec summary 可能还是之前的results,点击spec summary上一个带上传符号的标志,即可更新为当前仿真的结果。
TIPS
1.服务器和本地电脑之间无法直接复制,在terminal中输入vncconfig&,在那个小窗口不被关掉期间,都可以复制。
2.在 terminal 中运行:find . -name "*cdslck*" -exec rm -f {} \;
或者: rm 'find . -name "*cdslck*"' 删除所有的cdslck文件。
3.layout插入instance的时候,instance的版图离鼠标很远。原因是instance的版图没有画在版图的中心点上。改变一下中心点位置即可:edit-advanced-move origin
4. .cdsinit如果在本地目录有,就不会加载根目录的cdsinit,所以有些软件例如calibre,就不会给你加载,所以想自己配置cdsintit文件就要先把根目录下的复制过来,再进行配置。
5. 快速建立symbol,参考快速建立symbol但是至今用shift n添加不太行,得复制那个橙色的。另外在cdf里的设置也不可或缺。并且在调用时,需要增加user property-netSet-vdd以及vss,来和inheritvdd vss对应。
6. simulation文件太多太大,如何快速删除,cd到simulation路径:执行命令du -h --max -depth=1 | sort -rh | head -n 10,只寻找当前目录下第一层目录,并从大到小列出前10个。
7. linux系统对比文件,bcompare &进入GUI或者bcompare pathA pathB对比路径分别为A B的两个文件。
8. 获得别人的tb,先检查温度,先检查温度。
9. 浮空的电容节点一定要设置initial condition。可能前仿网表没问题,后仿网表会突然出现奇怪的问题,仿真器之前收敛的节点的初始电压的被后仿网表冲掉了。
10.lib库过多分类管理,先新建一个新的库(新建文件夹/new lib均可以),再 写入ASSIGN xxx COMBINE lib1 lib2 lib3,就把lib1 lib2 lib3放到一个路径下了
未完待续…
更多推荐

所有评论(0)