通常我们获得的FPGA IBIS模型是这款芯片的通用模型,在信号完整性仿真中使用起来,很不方便。究其原因,其实就是管脚映射不对。每个FPGA在实际应用时,都会根据产品功能、单板空间等情况,对FPGA的管脚做一个重新定义,FPGA厂家在提供IBIS模型的时候是无法预计到,所以每个FPGA的应用,都要根据具体情况生成相应的IBIS模型。

上图是一个Intel MAX10的FPGA IBIS模型,注意观察[PIN]这一列的管脚号,你就会发现,FPGA芯片根本不会使用到这样的管脚编号。这个模型如果直接映射给器件,软件在仿真过程中,会报告无法找到管脚buffer IBIS模型。

那么如何获取正确的FPGA IBIS模型呢?日常工作中,通常有两种办法:

  1. 通过FPGA开发工具自动生成,只要你有和PCB一致的管脚分配文件,就可以自动生成。

  2. 手工编辑生成,相对于上面的方法,这种方法要求使用者对IBIS的语法有一定的了解。本文将着重对这个方法进行介绍。

【手工生成FPGA IBIS模型】

回顾IBIS的语法定义,一个IBIS文件主要包括以下几部分组成:

1.文件头,定义IBIS版本、文件名、日期、生成厂家等信息

2.元件,定义了IBIS文件中所包含的元件,关键字为[Component],一个IBIS文件中可以描述多个元件

3.在[Component]部分是编辑FPGA IBIS模型要涉及的

a.封装参数 IBIS文件中元件的管脚寄生参数有三种定义方式:

i.如下图所示的,[Package] 中定义的整个封装管脚寄生参数RLC的均值,要根据不同芯片型号进行修改;

ii.在[Pin]部分中,定义了每个管脚的寄生RLC参数

iii.还可以使用[Package Model]关键字引用.pkg封装模型文件,这部分将在本文的后面部分介绍

b.[Pin]段定义了这个元件的管脚与IBIS Buffer模型的映射关系,以及每个管脚的RLC寄生参数,这个是生成FPGA IBIS模型要编辑的主要部分

c.[Diff Pin]段定义了元件管脚的差分配对关系,我们生成FPGA IBIS模型,在这一段要添加使用的差分对管脚

d.[Model Selector] 有时一个管脚可以用多个IBIS Buffer模型来描述,比如在DDR仿真中经常用到的ODT模型,有多种Buffer可选,这个就需要使用[Model Selector]进行定义了。FPGA开发工具自动生成的IBIS模型如果不包含[Model Selector],建议手工添加上,提供在仿真中使用的灵活性,定义[Model Selector]的方法后文有详细解说。

【管脚映射信息获取】

编辑IBIS模型中[Pin]这一段信息,需要获取FPGA管脚和网络名称的对应关系。
本文仅以Cadence Allegro为例,介绍管脚映射信息的获取方式:
1、在Allegro中使用Show Element查询器件后,将Pin IO Imformation部分的内容复制;

2、粘贴到一个txt文件中,再将txt文件中的内容全部选中,并复制;

3、新建一个空白的Excel文件,第一行按下图格式填写,其中” R_pin”、 ” L_pin”、” C_pin”三列如无相应数据,可以省略,注意先空出第一列

4、在Excel中,选择第二行第一列A2单元格后,单击开始菜单,再单击粘贴下方的三角形按钮,在粘贴选项中选择“使用文本导入向导”

5、导入向导第1步选择“分隔符号”,并单击下一步按钮

6、选择分隔符号为“空格”,确认已勾选“连续分隔符号视为单个处理”,并单击下一步按钮

7、选择列数据格式为“文本”,单击完成按钮

8、导入后,将多余的空白A列以及model_name等内容删除

9、仅保留[Pin]和signal_name、model_name三列的内容即可,” R_pin”、 ” L_pin”、” C_pin”三列视情况而定;

10、【神器放送】在Allegro中还可以使用文末提供的Skill工具,查询需要仿真的FPGA芯片,自动在当前目录下生成管脚信息的“器件编号_PinNet.csv”文件,用Excel打开该文件,前两列就是IBIS中[Pin]和signal_name,免去了上述9步数据导入的操作之苦,只需要在第3列手工添加一下model_name关键字即可;

11、第3列的model_name就是用来添加仿真中将要使用的IBIS Buffer模型名称或者Model Selector名称。本文编辑的模型将使用在DDR3仿真中,所以添加的都是Model Selector的名称,关于Model Selector的构建详见后文;

12、对于电源管脚,需要定义model_name为POWER,地管脚需要定义model_name为GND,未连接管脚定义model_name为NC;

13、对于一些本次仿真中不需要使用的管脚可以给一个临时模型,如下图中,将FPGA中所有与DDR仿真无关的管脚的model_name设置为sstl15_cin;

14、如果还有其他信号要仿真,则需要根据电平类型设置为正确的模型

15、由于IBIS语法中不支持表格分隔符【Tab】,不能直接从Excel中直接复制粘贴到IBIS模型中去,可以使用UltraEdit、NotePad等专业文本工具,将分隔符【Tab】替换为空格

16、再复制、粘贴到IBIS文件中去

17、如果在SI仿真中需要使用.pkg文件,就需要将FPGA的所有管脚在[Pin]段列出来

18、编辑好了[Pin]这段,根据FPGA中差分对的定义情况,将[Diff Pin]这段也编辑好

19、如果有必要,可以删除FPGA原始模型中没用到的[Series Pin Mapping]定义,如果有用到,根据实际情况进行管脚修改。

【Model Selector的构建】

Model Selector中定义了一个管脚能够使用的IBIS Buffer模型的集合。一个偷懒的办法是把原始FPGA文件中定义的IBIS Buffer全部列在Model Selector中。虽然很便捷,但是很不经济。特别是对于一些大型的FPGA芯片,原始IBIS文件巨大,将导致SI仿真软件加载IBIS时间过长。比较好的办法是根据实际应用,选择放入Model Selector的IBIS Buffer Model。本文中使用到的例子是一个DDR3 1.5V的应用,只需要Model Selector包含SSTL15的模型就可以了。更进一步,对于DDR_ADD只需要包含SSTL15模型中IBIS输出模型就可以了,不需要ODT模型。因为当FPGA作为Memory Controller使用时,地址、命令、控制以及时钟信号只为输出。

甚至删除了原始IBIS文件中没有使用到的IBIS Buffer 模型定义,从而缩减IBIS文件大小,提高未来SI软件IBIS模型的加载速度。

【封装管脚模型的添加】

很多芯片厂家在提供IBIS模型的同时也会提供后缀为.pkg的封装管脚模型文件,如何使用.pkg文件也是朋友们经常问到的问题。其实这就是个IBIS的语法问题,在IBIS规范中有明确的定义。

上图是IBIS规范的截图,需要使用.pkg封装管脚模型只需要添加[Package Model]关键字就可以了。

但是要注意,在[Pin]段要将FPGA的所有管脚列出来

如上图所示,本文的例子中在[Pin]之前添加了[Package Model]字段,其中z90b_78ball_pkg是封装模型的名字,如果是独立的.pkg的封装文件,对应的z90b_78ball_pkg.pkg文件需与本ibs文件放在同一目录下。

注意:有的仿真软件不支持外部.pkg的封装文件,需要把.pkg文件中的[Define Package Model]和[End Package Model]关键字之间的封装模型定义全部复制到IBIS文件中,如下图所示。


参考原文:《PGA之IBIS模型编辑实战攻略》

FPGA之IBIS模型编辑实战攻略相关推荐

  1. Centos7 安装ELK/EFK 7.x 集群搭建实战攻略

    Centos7 安装ELK/EFK 7.x 集群搭建实战攻略 1.1 写在前面的话 1.2 开始之前 1.3 安装ELK/EFK 1.3.1 海量数据存储和检索-->E-->安装Elast ...

  2. VMware HA实战攻略之四VMware HA安装及配置

    [IT168 专稿]在前面三篇文章中(点击1.2.3),不但讲述了如何准备适合虚拟化的硬件.软件,以及如何使用现有的硬件.软件搭建一套实验环境,还讲述了通过VC Server如何添加主机和ISCSI存 ...

  3. Cempi实战攻略(六)——如何截获到达的短消息

    Cempi实战攻略(六)--如何截获到达的短消息 By 吴春雷 QQ:819543772 EMAIL:wuchunlei@163.com 1.      MapiRule是什么?我从哪里能够得到它? ...

  4. VMware HA实战攻略之五VMwareHA测试验收

    [IT168 专稿]在上一篇"VMware HA实战攻略之四VMwareHA安装及配置"中(点击),讲述了VMwareHA的概念及创建过程,还讲述了创建过程中要注意的一些事项. 在 ...

  5. CEMAPI实战攻略(四)——发送短消息

    CEMAPI实战攻略(四)--发送短消息 By 吴春雷 QQ:819543772 EMail:wuchunlei@163.com 四.发送短消息 发送短信是一个相对比较简单的过程,之所以拿出来一节来讨 ...

  6. 微软官方Windows Server 2008实战攻略系列

    微软Windows Server 2008实战攻略系列之十八:Windows Server 2008 高可用性配置实现 http://download.microsoft.com/download/f ...

  7. (全部)2008重磅出击——微软Windows Server 2008实战攻略系列

    微软Windows Server 2008实战攻略系列之十八:Windows Server 2008 高可用性配置实现 [url]http://download.microsoft.com/downl ...

  8. Mware HA实战攻略之五VMwareHA测试验收

    [IT168 专稿]在上一篇"VMware HA实战攻略之四VMwareHA安装及配置"中(点击),讲述了VMwareHA的概念及创建过程,还讲述了创建过程中要注意的一些事项. 在 ...

  9. 弱电布线工程实战攻略

    弱电布线工程实战攻略 数字家庭这个名词对很多年轻人不陌生,但是如何让自己未来的蜗居或者豪宅也成为时尚现代便捷的智能之家呢,这其中当然有很多需要了解和掌握的知识,想必绝大多数的朋友都对高清视频.无线互联 ...

最新文章

  1. git git git
  2. 利用MAVEN打包时,如何包含更多的资源文件
  3. ASP+AJAX制作无刷新新闻评论系统01
  4. linux脚本怎怎么屏蔽段落,怎么写shell脚本才能不耍流氓?
  5. java菜单管理的实现方式_智能停车场管理系统的收费实现方式有哪些?
  6. 微信小程序四(设置底部导航)
  7. HomeBrew太慢,如何替换默认HomeBrew源,使用阿里云的源
  8. 最简单的OSPF配置实验(Cisco路由器)
  9. 微信脚本配置服务器,微信自动加人脚本教程
  10. 微小宝编辑器修改html代码,怎么在微小宝编辑器提取永久链接
  11. SMM项目集成Log4j2
  12. win10卸载软件_【电脑软件】win10自带浏览器|教你一招,如何完美将它卸载!
  13. 腾讯云认证考试考点列表有哪些?
  14. 如何用cmd打开管理员模式
  15. IMF总裁:科技变革对于就业的意义何在
  16. 工控机主板与ARM工控机主板有什么不同呢?
  17. 气动四自由度机械手结构设计(设计说明书+CAD图纸) 套类零件自动上下料机构
  18. DayThirteen 笔记
  19. angelababy都靠它保持身材,只需10秒随时随地喝到新鲜果汁!
  20. IIS支持APK文件下载的方法

热门文章

  1. 【云原生之Docker实战】使用Docker部署ROS软路由系统
  2. Spring的Environment类的使用
  3. plantuml 依赖_Plantuml的基本使用
  4. Navicat免费破解版安装说明
  5. 浙江大学区块链协会纳新 | 加入我们,“链”接未来
  6. 【小程序】跨页面传参通信 onfire.js
  7. go---详解container/heap
  8. 从产品小白到产品经理,我用了三个月时间
  9. aardio - 使用customPlus库制作弹出列表
  10. mre下的控件实现(三、Button实现)