Altera的-6、-7、-8速度等级逆向排序,Xilinx速度等级正向排序。

不很严密地说,“序号越低,速度等级越高”这是Altera FPGA的排序方法

“序号越高,速度等级也越高”这是Xilinx FPGA的排序方法

从那时起,就一直没搞明白speed grade是怎么来的,唯一的概念是:同一款芯片可以有多个速度等级,不同的速度等级代表着不同的性能,不同的性能又导致芯片价格的巨大差异。脑子里总有 一个模模糊糊的推测:FPGA厂家为了提高利润,专门给同一款芯片生产了不同的速度等级。

直到一年前和一位学过IC设计的同事hammer讨论这一问题时,才有了新的认识:对FPGA厂家来说,为了得到同一款芯片的不同速度等级而专门设 计不同的芯片版图是不划算的;所以芯片的速度等级不应该是专门设计出来的,而应该是在芯片生产出来之后,实际测试标定出来的;速度快的芯片在总产量 中的比率低,价格也就相应地高。

这一解答很是合理,纠正了我的一个错误认识。但是我仍然有两点困惑:1. 是什么因素导致了同一批芯片的性能差异;2. 如果因素已知,为什么不人为控制这些因素,提高高速芯片的产率,达到既增加芯片厂商的利润又降低高速芯片价格的目的呢。

前些天在博客里看到hugu朋友的一篇FPGA speed grade,激发了我进一步探索上述问题的动力。通过在网络上搜索,逐步得到了以下一些 认识:

1. 芯片的速度等级决定于芯片内部的门延时和线延时,这两个因素又决定于晶体管的长度L和容值C,这两个数值的差异最终决定于芯片的生产工艺。怎样的工艺导致了这 一差异,我还没找到答案。

2. 在芯片生产过程中,有一个阶段叫做speed binning。就是采用一定的方法、按照一组标准对生产出来的芯片进行筛选和分类,进而划分不同 的速度等级。“测试和 封装”应该就包含这一过程

3. 速度等级的标定不仅仅取决于芯片本身的品质,还与芯 片的市场定位有很大关系,返修概率和成本也是因素之一。

4. 芯片的等级可以在测试后加以具体调整和改善,在存储器芯片的生产中这一技术应用很广泛

5. 芯片生产的过程是充满各种变数的,生产过程可以得到控制,但是控制不可能精确到一个分子、一个原子,产品质量只能是一个统计目标。同一个wafer上的芯 片会有差异,即使是同一芯片的不同部分也是有差异的。速度等级是一个统计数字,反映了一批芯片的某些共同特性,不代表个别芯片的质量。而且由于某些芯片的 测试是抽样进行的,也不排除个别芯片的个别性能会低于标定的速度等级。不过,据说FPGA的测试是极严格的,很可能我们拿到手的芯片个个都经过了详尽的测 试。这也是FPGA芯片价格高于普通芯片的原因。

Statistical Static Timing Analysis - A Better Alternative

6. 同一等级的芯片中的绝大多数,其性能应该高于该速度等级的划分标准。这也是为什么在FPGA设计中,有少许时序分析违规的设计下载到芯片中仍然能够正常运 行的原因(时序分析采用的模型参数是芯片的统计参数,是最保守也是最安全的)。不过,由于同一等级的芯片仍然存在性能差异,存在时序违规但是单次测试成功 的FPGA设计不能确保在量产时不在个别芯片上出现问题(出了问题就要返修或现场调查,成本一下子就上去了)。所以,还是要把时序收敛了才能放心量产,这 就是工程标准对产品质量的保证。

7. 概率和统计学源于工程实践,对工程实践又起到了巨大的指导作用。工程实践中的标准都是前人经验教训的积累,是人类社会的宝贵精神财富。

8. 现实世界是模拟的,不是数字的。在考察现实问题时,我们这些数字工程师和软件工程师应该抛弃“一是一、〇是〇”的观念,用连续的眼光看待这个连续变化的真 实世界。

9. 芯片生产过程中的不确定性导致了芯片的性能差异,这一差异影响了芯片的价格,价格和性能的折中又影响了我们这些FPGA设计工程师在器件选型、设计方法上 的决策,我们生产的产品的性价比决定了产品的销售,产品的销量又决定了芯片的采购量,采购量又影响了芯片的采购价格...。原子、分子级别上的差异,就这 样一级一级地传递和放大。人类社会就是这样环环相扣,互相制约的。嘿,真是神奇!

FPGA speed grade的更多相关文章

  1. FPGA速度等级

    转自http://wenku.baidu.com/view/ea793deef8c75fbfc77db263.html?from=rec 最初接触speed grade这个概念时,很是为Altera的 ...

  2. Xilinx Zynq FPGA Boards板

    Xilinx Zynq FPGA Boards板 Xilinx Zynq FPGA Boards 介绍 Styx是一个易于使用的Zynq开发模块,具有Xilinx的Zynq ZC7020 SoC和FT ...

  3. 设计简单算法体验Vivado HLS的使用

    前言 本文主要讲解了使用Vivado HLS设计简单C语言的二选一选择器算法的硬件HLS开发的全流程,包括工程创建-算法验证和仿真-算法综合-RTL仿真-IP封装等步骤. 参考网站: http://b ...

  4. Quartus11中新建工程

    最近在使用CycloneII的开发板,但是高版本的Quartus不支持II系列的开发,于是只能用Q11了.好久没玩FPGA了,新建工程的过程中遇到了一些问题,这里把这些问题记下了以便以后查看. Qua ...

  5. 【黑金原创教程】【TimeQuest】【第二章】TimeQuest模型角色,网表概念,时序报告

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  6. 【黑金原创教程】【TimeQuest】【第五章】网表质量与外部模型

    声明:本文为黑金动力社区(http://www.heijin.org)原创教程,如需转载请注明出处,谢谢! 黑金动力社区2013年原创教程连载计划: http://www.cnblogs.com/al ...

  7. ITU-R BT.656 协议

    ITU-R BT.601和ITU-R BT.656国际电信联盟(International Telecommunication Union)无线通信部门(ITU-R)制定的标准.严格来说,ITU-R ...

  8. 如何确定FPGA电路中DDR4的Speed bin 是否兼容?

    原创 by DeeZeng DDR4 是否兼容,拿更快速度的DDR4,是否可以不改FPGA工程,直接换料就能直接用? 实际工作中,经常会碰到因为DDR3/4 或其他料件换料了,需要判断FPGA工程中I ...

  9. FPGA Timing笔记

    很多FPGA工程师都会遇到timing的问题,如何让FPGA跑到更快的处理频率是永久话题.决定FPGA的timing关键是什么?如何才能跑到更快的频率呢? A. 第一步需要了解FPGA的timing路 ...

随机推荐

  1. Django--models一对多实例

    需求 models一对多表的构建,创建数据,查询数据,数据前端展示等​. 速查 1.创建数据 1 2 all_data = obj.clean()  #{'username': u'user1', ' ...

  2. 加密,解密,Hash

    Hash的算法: SHA256Managed(mscorlib.dll) private static string HashCreditCard(string creditCardNumber) { ...

  3. 《构建之法》第8、9、10章读书笔记、读后感以及Sprint1总结

    第八章:需求分析 软件需求 人们(用户)的需求五花八门,作为一个软件团队要准确而全面地获取这些需求主要有以下四个步骤: 获取和引导需求.这一步骤也被叫做“需求捕捉”.软件团队需要为用户着想,设身处地, ...

  4. [CLR via C#]9. 参数

    一.可选参数和命名参数 在设计一个方法的参数时,可为部分或全部参数分配默认值.然后,调用这些方法的代码时可以选择不指定部分实参,接受默认值.此外,调用方法时,还可以通过指定参数名称的方式为其传递实参. ...

  5. 如何把maven项目转成web项目

    创建Web工程,使用eclipse ee创建maven web工程 1.右键项目,选择Project Facets,点击Convert to faceted from 2.更改Dynamic Web ...

  6. 51Node 1035----最长的循环节

    51Node  1035----最长的循环节 正整数k的倒数1/k,写为10进制的小数如果为无限循环小数,则存在一个循环节,求<=n的数中,倒数循环节长度最长的那个数.     1/6= 0.1 ...

  7. JDK动态代理的实现及原理

    Proxy.newProxyInstance(classloader,Class,invocationHandler) 调用getProxyClass0(loader, interfaces)生成代理 ...

  8. js 创建对象 经典模式

    1. 概述 通过构造函数创建对象, 有时忘记了写new, 这时函数就会返回undefined 可以创建一个函数createXXX, 在内部封装new. function Student(props){ ...

  9. python函数和常用模块(一),Day3

    set集合 函数 三元运算 lambda表达式 内置函数1 文件操作 set集合 创建 se = {"123", "456"} # 直接创建一个集合 se = ...

  10. Hibernate之lazy延迟加载(转)

    一.延迟加载的概念 当Hibernate从数据库中加载某个对象时,不加载关联的对象,而只是生成了代理对象,获取使用session中的load的方法(在没有改变lazy属性为false的情况下)获取到的 ...