首页 > 其他分享 >IBIS仿真---SI篇(10)

IBIS仿真---SI篇(10)

时间:2023-11-09 09:47:44浏览次数:32  
标签:仿真 模型 Allegro --- IBIS SI 信号 低速

IBIS模型是一种行为级的模型,这是相对于HSPICE电路模型而言的。看过IBIS模型里面你会发现有很多电压电流(I/V曲线)查找表,而不是详细的电路节点。各个IO端口的特性曲线事先已经得到,并记录在一张表格里,因此实际仿真的时候速度相比于SPICE模型要快很多。另外一般芯片原厂都会提供IBIS模型,但是不会提供HSPICE模型,即使一些IP原厂给的HSPICE模型也是经过加密的模块形式。

既然谈到SI仿真这个话题,先来总体把SI仿真分个类:

  1. 按信号速率上分可以分为低速信号仿真,高速信号仿真。通常认为小于1Gbps速度的为低速信号,大于1Gbps的是高速信号。低速信号通常都是跑时域仿真,就是会把发送端的IO和接收端的IO模型再加上中间的链路模型组合在一起,然后给发送端施加一个激励去看接受端的时域波形的情况。而高速信号的话,则更侧重于频域仿真,同时也兼顾时域仿真。我们的IBIS模型仿真的作用就是针对低速信号时域仿真。

2. 从仿真的链路来分可以分为有源仿真和无源仿真。有源仿真其实就是带信号源的时域仿真,无源仿真是针对无信号源的无源信号链路进行的频域仿真。当然这里的无源频域仿真主要就是S参数的仿真,经过前面的介绍,应该对S参数已经不再陌生了。

大致分类如此,但是都是可以相互共存的,只是分类规则不一样而已。并且IBIS模型/HSPICE模型/S参数模型/集总电路模型,这些模型在同一个链路里面都是可以相互连接的。我们这次谈的IBIS模型的地位在低速信号仿真领域是最常用的工具。当然也不是说对于低速几百Mhz的信号,你就不能去做个无源仿真了?当然可以,也可以仿个S参数看看插损的情况,道理都是通用的。只是对于低速信号来说可能更多时候关注的点在于信号边沿的单调性,信号过冲等,而插损的指标(其实就是幅度)如果不是特别特别长的链路,损耗都会很小,所以就不是作为重点关注对象。而高速数字信号则反过来了。

那么说了这些,我们常用的低速接口一般都有哪些呢?工作中最常用到的应该就是I2C,SPI接口了。前者是OD门,一般400Khz左右的速率,后者是CMOS电平,一般可以跑几十Mhz量级。当然差分的信号如LVDS接口也可以用IBIS仿真,LVDS一般可以跑到800Mbps左右。当然DDR3,DDR4都可以用IBIS模型跑仿真。数字接口类型非常多,这里就不一 一例举。

关于IBIS详细的内容,还是要去看IBIS的Spec文档,这里主要从仿真的角度去总结一下IBIS使用的一些套路。IBIS模型仿真的常用软件:Allegro自带的SigXplorer,或者ADS等等。这次我们主要还是以SigXplorer来介绍。用它有个好处就是可以直接把链路从Allegro的PCB板上提取出来比较方便。如果中间的链路使用的是S参数模型,那就建议用ADS来进行仿真了。

使用SigXplorer步骤:

  1. 获得发送端和接收端芯片的IBIS模型。一般如果使用一些知名厂商,如TI之类的芯片,在官网上是可以下载到IBIS模型的,类似下图。有的时候用到的一些芯片实在没有IBIS模型,其实如果知道它的电平接口类型(LVCMOS/SSTL等),及工艺(多少纳米工艺)。则可以找相近的芯片的IO端口的模型来替代。因为同一种工艺的同样的电平类型的IO口,电气性能是类似的。比如FPGA的IO类型比较多,所以它的IBIS模型有时候就可以拿来做替代。

 

2. 得到IBIS模型之后,需要在Allegro软件里面将它转化为DML格式。这个是Allegro可以识别的IBIS模型文件格式。这个可以在Allegro里面直接进行转换。转换完成后在DML Models里面就会出现转换好的模型了。

 

3. 针对待仿真的网络所涉及到的器件赋模型。RLC可以使用软件默认的模型,如下图先运行Auto Setup,把板子里的RLC全部赋上默认的模型,然后芯片需要手动指定DML格式的模型。如下图,需要点选你要赋模型的芯片位号,然后Find Model,并找到对应的刚刚转换好的DML模型。

4. 使用Allegro Setup->SI Design Setup 这个wizard将要仿真的信号网络等参数都设置一下,包括需要仿真的网络,一些DC电源网络的真实电压值等。

5. 在Analysis->Preference下面设置仿真器的相关参数,不过大部分都使用默认即可。需要注意的就是trace solver的仿真器一般都选择Bem2D即可,仿真速度较快。如果要仿真差分信号还需要勾选Differential extraction mode。

6. 使用Analysis->Probe功能,点选要仿真的网络(这个网络一定要在前面的第4步wizard里选择过才行),提取网络拓扑,Allegro会自动打开SigXplorer软件,然后设置仿真激励。

这里要注意的是提取的拓扑结构一般传输线的阻抗都是根据设置的PCB叠层自动计算出来的。如果拓扑中的传输线的阻抗离50ohm偏差较大,可以修改一下叠层,从而改变阻抗的值。另外在SigXp把拓扑提取出来之后,也可以在这个拓扑上做自由修改,比如增加端口,添加电阻电容,传输线等组件,这些都是可以在左边面板里选取的。最后保存为.top后缀的拓扑,下次可直接打开。下图的拓扑是一个output buffer 输出,一段fanout线,一个33ohm串阻,再到传输线和一个过孔最后到接收侧。

6. 启动仿真。一般默认会显示所有发送端口和接收端口的波形。

对于低速接口来说,比较关注的就是沿上的过冲,台阶,回沟是否会影响到触发门限。当然如果信号仿真下来过冲较大,可以增加始端串阻,减小FPGA驱动能力。如果边沿有台阶,说明驱动不足,可以减小始端串阻,增加FPGA驱动能力(前提是输出是FPGA芯片)。

IBIS模型目前用在复杂拓扑低速接口和DDR的时域仿真上居多。提到低速信号仿真,基本都是用IBIS模型。当然如果有办法得到HSPICE模型当然是也可以做同样的仿真。后来IBIS又演变出一个IBIS-AMI模型,这个东西就是在IBIS中添加了高速数字发送和接收端加重器和均衡器的算法部分后得到的,用于高速数字时域仿真。IBIS仿真就先谈到这里。

 

关注微信公众号:电子工程师那些事儿

慢慢带你建立起软硬件开发的系统观

标签:仿真,模型,Allegro,---,IBIS,SI,信号,低速
From: https://www.cnblogs.com/FROMRPITO0/p/17819010.html

相关文章

  • Cadence Sigrity 仿真入门(一)
    Sigrity各模块功能介绍:PowerDC:①可以用来进行PCB板级(单板和多板)的直流压降和通流问题,主要研究从VRM(电压管理模块,在Sigrity里就是源端)到SINK(负载端)的直流压降、以及过孔与平面电流密度、功耗密度等问题,并且以2D和3D的形式直观呈现出来。②由于PCB流过电流之后,不可避免的会产......
  • 16-动态规划
    16.动态规划以下规则来自左程云老师的总结1.暴力递归的优化有重复调用同一个子问题的解,这种递归可以优化如果每一个子问题都是不同的解,无法优化也不用优化2.如何找到某个问题的动态规划方式1)设计暴力递归:重要原则+4种常见尝试模型!重点!2)分析有没有重复解:套路解决3)用记忆......
  • 爬虫-mysql-工具
    MySQL数据库一、MySQL数据库的介绍1、发展史1996年,MySQL1.02008年1月16号Sun公司收购MySQL。2009年4月20,Oracle收购Sun公司。MySQL是一种开放源代码的关系型数据库管理系统(RDBMS),使用最常用的数据库管理语言--结构化查询语言(SQL)进行数据库管理。MySQL是开放源代码的,因此任......
  • vue 项目使用element ui 中tree组件 check-strictly 用法
    属性check-strictly:   在显示复选框的情况下,是否严格遵循父子互相关联的做法,默c认为false。   默认false,父子关联。      点击父节点,其下子节点全部统一跟随父节点变化,点击子节点,子节点部分勾选时,父节点处于半选状态。   设置为true,严格遵循......
  • 【misc】[HNCTF 2022 Week1]calc_jail_beginner_level3(JAIL) --沙盒逃逸,help函数
    还是先看附件内容这里对字符串长度进行了进一步的限制,长度不能大于7,这里可以输入help(),help函数:help()函数是Python的一个内置函数,用于获取关于模块、函数、类、方法等的帮助信息。当你在交互式命令行中使用help()函数时,它会打开一个交互式帮助系统,让你能够浏览相关主题和......
  • 02-异或算法
    2.异或算法2.1异或基础0^N==NN^N==0;记为无进位相加即可,1+1=0;异或运算满足交换律和结合。2.1.1不用额外变量交换两个数解法:aba=b,abb=a。2.1.2找出现奇数次的数1.题目​ 一个数组中有一种数出现了奇数次,其他数都出现了偶数次,怎么找到并打印这种数。2.......
  • 05-二叉树
    5.二叉树5.0二叉树递归套路1)假设以X节点为头,假设可以向X左树和X右树要任何信息2)在上一步的假设下,讨论以X为头节点的树,得到答案的可能性(最重要)3)列出所有可能性后,确定到底需要向左树和右树要什么样的信息4)把左树信息和右树信息求全集,就是任何一棵子树都需要返回的信息S5......
  • 04-栈和队列
    4.栈和队列栈:push,pop,peek(返回当前值),empty队列:add,remove,peek(返回当前值),isEmpty4.1双向链表实现栈和队列4.2数组实现栈和队列加一个指针指向某个位置。队列:环形数组4.3最小栈1.题目https://leetcode.cn/problems/min-stack/设计一个支持push,pop,top操作,并能在常数......
  • 03-链表
    3.链表3.1单向链表和双向链表单项:有一个next,双向:last,next3.2删除链表的倒数第n个结点1.题目https://leetcode.cn/problems/SLwz0R/给定一个链表,删除链表的倒数第n个结点,并且返回链表的头结点。输入:head=[1,2,3,4,5],n=2输出:[1,2,3,5]输入:head=[1],n=1......
  • 07-双指针、滑动窗口
    7.双指针、滑动窗口7.1含有全部字符的最短字符串1.题目https://leetcode.cn/problems/minimum-window-substring/给定两个字符串s和t。返回s中包含t的所有字符的最短子字符串。如果s中不存在符合条件的子字符串,则返回空字符串""。如果s中存在多个符合条件的......