FPGA之IBIS模型编辑实战攻略

通常我们获得的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模型编辑实战攻略》

  • 0
    点赞
  • 11
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

ltqshs

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

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

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

打赏作者

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

抵扣说明:

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

余额充值