草庐IT

cadence virtuoso进行AMS仿真踩坑记录和解决方法

zui_ying 2024-01-29 原文

一、安装INCISIVE

想进行AMS仿真首先需要安装INCISIVE(网上很多人管这个叫安装IUS,我也不知大它俩什么关系,hhh)。INCISIVE不是cadence virtuoso自带的,需要额外安装,我安装时候参考的这篇安装教程:https://blog.csdn.net/YYP_8020/article/details/107252366
我已经安装的virtuoso是IC617和MMSIM151,因此我就选择了上面这篇安装教程安装INCISIVE151。我当时在找安装教程时,网上说INCISIVE版本相对于已安装的virtuoso太老是不行的。
在安完INCISIVE151后,还要在InstallScape上用Configure功能再重新设置IC,实现连接IC和INCISIVE,具体方法我参考的是https://www.jianshu.com/p/c49b798f1baf
https://bbs.eetop.cn/thread-479940-1-1.html

二、报错ERROR (SFE-23): “analog/input.scs” 13: The instance M0' is referencing an undefined model or subcircuit,nch3’. Either include the file containing the definition of nch3', or definench3’ before running the simulation.

安装完INCISIVE并配置好IC之后就可以仿真了。具体步骤我参考的是https://blog.csdn.net/mymatin1004/article/details/98804521。我按这个教程走遇到了几个报错,把这几个报错都解决了就仿真通过了。我当时搭建的电路如下:

gen是我按那个教程编写的数字模块,M0则是我从网上下载安装的tsmc18rf库里的nmos。
我点击仿真运行图标后,遇到的第一个报错是:
ERROR (SFE-23): “analog/input.scs” 13: The instance ‘M0’ is referencing an undefined model or subcircuit, ‘nch3’. Either include the file containing the definition of ‘nch3’, or define ‘nch3’ before running the simulation.
大概就是说没有认出来M0这个nmos是什么。
解决方法是:
点击Setup->Model Libraries

出现如下界面

点击click here to add model file,添加tsmc18rf的.scs文件

我的tsmc18rf库的.scs文件叫rf018.scs,在/tsmc18rf_1P6M/models/spectre文件夹下,/tsmc18rf_1P6M是我的工艺库文件夹。
然后点击选择section

我这里使用的M0是属于nch3,在tt_3v、ff_3v、fs_3v、sf_3v、ss_3v中有,具体可以查看rf018.scs的内容,里面应该会写哪些器件在哪些section中

tt、ff、fs、sf、ss代表的是工艺角,我这里就选择标准工艺角tt_3v。之后点击ok。再仿真,就不报这个错了。
实际上,我在普通仿真的时候,.scs都自动添加进来了,不知道为什么AMS仿真就要自己手动添加。(因此如果找不到.scs文件,可以看一下普通仿真时Setup->Model Libraries里面添加的.scs路径是什么,把相同的.scs手动添加到AMS仿真的Setup->Model Libraries里并选好section即可)

三、报错ncelab: *E,CUVNCM (./netlist.vams,26|17): No connection module found:Need an input port of discrete discipline logic, and an output port of continuous discipline electrical, at instance test_gen.I0.

这个报错网上说是缺少connectlib库,好像就是负责数字电路部分和模拟电路部分连接。解决方法是找到安装的INCISIVE路径,如图

在这个文件夹下找到/INCISIVE151/tools/affirma_ams/etc/connectLib,这个就是需要的链接库

接着就在virtuoso操作界面新建这个库就行,名字起connectLib,路径就是connectLib文件夹的路径,technology file我选的“Do not need process information”。点击ok。

添加connectLib库也可以直接手动在工程目录下的cds.lib添加一句DEFINE connectLib XXXXX (XXXXX为connectLib所在目录)

之后就可以再library manager中看到connectLib被添加进来了,里面有好多cell

接着回到仿真界面,点击setup->connect rules/ie setup

在这里选择需要的connect rules,

具体选择哪个connect rules可以查看/INCISIVE151/tools/affirma_ams/etc/connectLib下的readme文件,里面有各个connect rules的解释,我用的是3v电源电压,因此选了Connectrules_3V_full_fast

选好之后,点击add再点ok就好了。

再运行AMS仿真就不报错了。

四、报错信息如下

ld: BFD (GNU Binutils) 2.20 internal error, aborting at …/…/binutils-2.20/bfd/reloc.c line 446 in bfd_get_reloc_size

ld: Please report this bug.

collect2: ld returned 1 exit status
gnumake: *** [obj/optimize/5.0/libahdlcmi_connectLib__L2E_2__module__0x10000001_behavioral.so] Error 1

网上说这个是gcc版本问题(毕竟virtuoso是原本在centos、redhet上运行,放到Ubuntu上真的让它好不适应,hhh)
解决方法:
找到INCISIVE安装目录下的INCISIVE151/tools.lnx86/cdsgcc/gcc文件夹,里面有4.1和4.4两个文件夹


两个里面都有bin/gcc文件,把这两个gcc文件改个名备份,分别在终端执行sudo ln -s /usr/bin/gcc ./gcc,重新建立名为gcc的软连接,我也不知道仿真时用的是4.1还是4.4里面的bin/gcc,就两个都改了。

完成之后,再运行AMS仿真就不报错了。

五、总结

这些就是我在cadence virtuoso进行AMS仿真时踩的坑,本人比较小白,真的是花了好长时间才跑通AMS仿真,肯请大家斧正。

有关cadence virtuoso进行AMS仿真踩坑记录和解决方法的更多相关文章

  1. ruby - 如何使用 Nokogiri 的 xpath 和 at_xpath 方法 - 2

    我正在学习如何使用Nokogiri,根据这段代码我遇到了一些问题:require'rubygems'require'mechanize'post_agent=WWW::Mechanize.newpost_page=post_agent.get('http://www.vbulletin.org/forum/showthread.php?t=230708')puts"\nabsolutepathwithtbodygivesnil"putspost_page.parser.xpath('/html/body/div/div/div/div/div/table/tbody/tr/td/div

  2. ruby - 如何从 ruby​​ 中的字符串运行任意对象方法? - 2

    总的来说,我对ruby​​还比较陌生,我正在为我正在创建的对象编写一些rspec测试用例。许多测试用例都非常基础,我只是想确保正确填充和返回值。我想知道是否有办法使用循环结构来执行此操作。不必为我要测试的每个方法都设置一个assertEquals。例如:describeitem,"TestingtheItem"doit"willhaveanullvaluetostart"doitem=Item.new#HereIcoulddotheitem.name.shouldbe_nil#thenIcoulddoitem.category.shouldbe_nilendend但我想要一些方法来使用

  3. ruby - 为什么我可以在 Ruby 中使用 Object#send 访问私有(private)/ protected 方法? - 2

    类classAprivatedeffooputs:fooendpublicdefbarputs:barendprivatedefzimputs:zimendprotecteddefdibputs:dibendendA的实例a=A.new测试a.foorescueputs:faila.barrescueputs:faila.zimrescueputs:faila.dibrescueputs:faila.gazrescueputs:fail测试输出failbarfailfailfail.发送测试[:foo,:bar,:zim,:dib,:gaz].each{|m|a.send(m)resc

  4. ruby-on-rails - 使用 Ruby on Rails 进行自动化测试 - 最佳实践 - 2

    很好奇,就使用ruby​​onrails自动化单元测试而言,你们正在做什么?您是否创建了一个脚本来在cron中运行rake作业并将结果邮寄给您?git中的预提交Hook?只是手动调用?我完全理解测试,但想知道在错误发生之前捕获错误的最佳实践是什么。让我们理所当然地认为测试本身是完美无缺的,并且可以正常工作。下一步是什么以确保他们在正确的时间将可能有害的结果传达给您? 最佳答案 不确定您到底想听什么,但是有几个级别的自动代码库控制:在处理某项功能时,您可以使用类似autotest的内容获得关于哪些有效,哪些无效的即时反馈。要确保您的提

  5. ruby - Facter::Util::Uptime:Module 的未定义方法 get_uptime (NoMethodError) - 2

    我正在尝试设置一个puppet节点,但ruby​​gems似乎不正常。如果我通过它自己的二进制文件(/usr/lib/ruby/gems/1.8/gems/facter-1.5.8/bin/facter)在cli上运行facter,它工作正常,但如果我通过由ruby​​gems(/usr/bin/facter)安装的二进制文件,它抛出:/usr/lib/ruby/1.8/facter/uptime.rb:11:undefinedmethod`get_uptime'forFacter::Util::Uptime:Module(NoMethodError)from/usr/lib/ruby

  6. ruby-on-rails - 按天对 Mongoid 对象进行分组 - 2

    在控制台中反复尝试之后,我想到了这种方法,可以按发生日期对类似activerecord的(Mongoid)对象进行分组。我不确定这是完成此任务的最佳方法,但它确实有效。有没有人有更好的建议,或者这是一个很好的方法?#eventsisanarrayofactiverecord-likeobjectsthatincludeatimeattributeevents.map{|event|#converteventsarrayintoanarrayofhasheswiththedayofthemonthandtheevent{:number=>event.time.day,:event=>ev

  7. Ruby 方法() 方法 - 2

    我想了解Ruby方法methods()是如何工作的。我尝试使用“ruby方法”在Google上搜索,但这不是我需要的。我也看过ruby​​-doc.org,但我没有找到这种方法。你能详细解释一下它是如何工作的或者给我一个链接吗?更新我用methods()方法做了实验,得到了这样的结果:'labrat'代码classFirstdeffirst_instance_mymethodenddefself.first_class_mymethodendendclassSecond使用类#returnsavailablemethodslistforclassandancestorsputsSeco

  8. ruby-on-rails - Rails 3.2.1 中 ActionMailer 中的未定义方法 'default_content_type=' - 2

    我在我的项目中添加了一个系统来重置用户密码并通过电子邮件将密码发送给他,以防他忘记密码。昨天它运行良好(当我实现它时)。当我今天尝试启动服务器时,出现以下错误。=>BootingWEBrick=>Rails3.2.1applicationstartingindevelopmentonhttp://0.0.0.0:3000=>Callwith-dtodetach=>Ctrl-CtoshutdownserverExiting/Users/vinayshenoy/.rvm/gems/ruby-1.9.3-p0/gems/actionmailer-3.2.1/lib/action_mailer

  9. ruby - 使用 C 扩展开发 ruby​​gem 时,如何使用 Rspec 在本地进行测试? - 2

    我正在编写一个包含C扩展的gem。通常当我写一个gem时,我会遵循TDD的过程,我会写一个失败的规范,然后处理代码直到它通过,等等......在“ext/mygem/mygem.c”中我的C扩展和在gemspec的“扩展”中配置的有效extconf.rb,如何运行我的规范并仍然加载我的C扩展?当我更改C代码时,我需要采取哪些步骤来重新编译代码?这可能是个愚蠢的问题,但是从我的gem的开发源代码树中输入“bundleinstall”不会构建任何native扩展。当我手动运行rubyext/mygem/extconf.rb时,我确实得到了一个Makefile(在整个项目的根目录中),然后当

  10. ruby - Highline 询问方法不会使用同一行 - 2

    设置:狂欢ruby1.9.2高线(1.6.13)描述:我已经相当习惯在其他一些项目中使用highline,但已经有几个月没有使用它了。现在,在Ruby1.9.2上全新安装时,它似乎不允许在同一行回答提示。所以以前我会看到类似的东西:require"highline/import"ask"Whatisyourfavoritecolor?"并得到:Whatisyourfavoritecolor?|现在我看到类似的东西:Whatisyourfavoritecolor?|竖线(|)符号是我的终端光标。知道为什么会发生这种变化吗? 最佳答案

随机推荐