FPGA设计中遇到的奇葩问题之“芯片也要看出身”(三)

首页 > 新酷 > 程序世界 > 本文
2018年05月17日 05:42 | 搜狐 暮云
接上文 工程师都知道,寻找好板和坏板之间的“差异”是定位问题的利器之一啊。因此当时虽然没有欣喜若狂,但是也隐隐看到了一丝曙光。 我冲出实验室,一溜小跑去了焊板实验室。找到了焊板的同事,让他现场给我焊两......

原标题:FPGA设计中遇到的奇葩问题之“芯片也要看出身”(三)

接上文

工程师都知道,寻找好板和坏板之间的“差异”是定位问题的利器之一啊。因此当时虽然没有欣喜若狂,但是也隐隐看到了一丝曙光。

我冲出实验室,一溜小跑去了焊板实验室。找到了焊板的同事,让他现场给我焊两块单板,一块必须用产自大马的FPGA,一块必须用产自台湾的FPGA。那个老兄很奇怪的看了我一眼,然后又一眼。后来我才想明白估计我是第一个在乎芯片产地的怪咖。

我就站在他旁边,看着他工作,觉得时间过得奇慢无比。拿到了焊好的两块板子,又以百米冲刺的速度杀回实验室,隐隐约约听到有同事在抱怨:发哪门子神经,刮这么大的风。我以迅雷不及掩耳盗铃之势,先把台湾板子安装好,上电启动、加载、运行,果然是好的;拆掉台湾,换上大马板子,上电启动、加载、运行,果然出误码了。问题确诊了!为了保险起见,我从坏板和好板堆里各取了两块单板进行了验证,现象是一致的。

此时距离下班也就十几分钟了,我赶紧去了老大的工位,强压着鸡冻滴小心情,向老大汇报:“老大,告诉生产那边,发货只能用产自台湾的芯片,马来西亚的坚决不能用。我怀疑产自马来西亚的芯片的容差小,产自台湾的芯片的容差比较大。而设计本身肯定存在时序打擦边球的情况,导致使用产自马来西亚芯片的单板会出误码,而使用产自台湾的芯片则没有问题。到底是哪里的时序存在擦边球的隐患,我还需要进一步熟悉代码,寻找之而修改之而长治久安也”。老大难得的露出了笑容:“嗯,不错不错!这两周辛苦了,回去好好休息,下周全力解决问题。啊,对了,你该刮胡子了。”

周末跟老婆(那时候还是女朋友)去搓了一顿大餐,逛街,看电影,累得半死,但是心情那是相当的愉快。

我从实验室回到了工位,在感受人间烟火气的同时,全力看代码。认真的看了一整天之后,我发现前同事对于“同步”、“组合逻辑嵌套层次不能过多”等设计原则完全不care,隐患到处都是,要想彻底的解决这些隐患,只有一个办法:推倒重来。我去找老大说明了想法,老大说:“要不要这么夸张?劳资派你去解决问题,你解决问题就是了,搞这么大工程出来,有必要么?”我说:“老大,我以一个工程师滴半生清誉担保:如果不推倒重来,问题根本不能彻底解决。”老大无奈的挥了挥手,说话的同时目露凶光兼咬牙切齿:“是否推倒你来定。但素,市场那边给出的预测是最多三个月内,这块单板就会迎来发货高峰,到那时无论如何也要保证FPGA不出任何问题。你有信心滴干活?”“饿夫考斯啊老大,没有金刚钻,不揽瓷器活啊”,我心说:“你要是答应给我加五百块工资,没准儿我敢承诺一半的时间就给你搞出来”。

结果不到三个月,我的全套重写的代码就完成了,编译、加载、测试:不论是产自台湾的芯片还是马来西亚的芯片,完全没问题。老大不放心,特地多找了几块焊着马来西亚芯片的板子一遍又一遍的测试,结果仍然是no problem at all。

老大笑靥如花(港版那个),眼睛眯成了一条缝儿:“小样儿,行啊!”我只顾嘿嘿傻笑,结果忘了趁热打铁跟老大提加薪。曾经有一个机会摆在我面前,我没有珍惜。如果有重来一次的机会,我特么会加一个十万光年的期限。

过了没多久,Xilinx公司也发来了报告:由于马来工厂的某个车间顶部一个窗户没关严,导致车间纯净度不够,所以那段时间生产的芯片尽管各项指标都在合格范围内,但是都在边缘,从而容差能力都比较低。公司已经发现并做了相应处理,之后生产的芯片从一致性方面跟台湾产的芯片没有区别了。

Well,这就是我从业生涯中碰到的“芯片也要看出身”的“灵异”事件。给我的印象是如此之深,18年后我仍然记得清清楚楚。问题解决是在2000年的9月份,第二年,我惨遭表扬,获得了某公司的最高荣誉:XXXX奖。

后记:

1.真实问题定位的过程很痛苦,也比文中描述的要复杂,因为那批单板使用的FPGA芯片还有另外一个产地:韩国。在定位问题的过程中,台湾和韩国的芯片加载原同事的设计都没有问题,马来产的就不行。于是比对、比对、再比对,最终确定了问题出在马来产的芯片上。

2. 我重写后的设计完全不区分芯片的产地。采用原同事设计、已经发货的那批单板,使用产自台湾、韩国的芯片而暂时没出问题的,总量大概几千块吧,这些单板在条件发生变化时(比如温度变化、电压变化),出误码是必然的。好在那时候运营商对国产厂家都比较宽容,用服的同事找了各种机会,神不知鬼不觉的对这些单板上的FPGA重新加载了新版本,彻底消除了隐患。

3. 9000多行代码,我用了大概70个工作日进行了重写,计算开发效率,大约是130行/人天。实际上,我做过个人职业生涯的不完全统计:使用HDL开发FPGA,从全流程的角度来计算(从需求分析到最终发布),效率不会超过20行/人天,跟软件开发效率大致类似。当然,随着新的设计语言以及工具等方面的进步,开发效率会逐步提升是毫无疑问的。

4. 文档真的很重要、很重要、很重要。很多人会说:整个设计(模块)我闭着眼睛都能知道哪行代码是干嘛的,文档意义不大。但素,人的记忆是会衰退的。如果设计天衣无缝、没有任何问题,在整个生命周期里没有任何升级或者功能变动,那么文档也许没那么重要。但素,大家想一想,对于FPGA来说,上述条件全部满足的概率是不是和行星撞地球差不多?我几乎重写了整个设计文档,基本能保证文档描述的是西施,而设计至少是凤姐。

------

本文作者:隐达,阿里云资深专家,花名的意思就是做人隐,做事达。业余时间喜欢看美剧和读书,尤其是历史书;还喜欢喝点小酒侃大山,喝酒只喝啤酒和威士忌;酒量比较差,但是酒品还过得去。我在某通信公司工作了18年,其中十年的大规模FPGA/ASIC开发和系统设计,刚刚加入阿里云,负责FPGA/ASIC异构计算,So happy to be Ali Ren,很荣欣能在云栖社区和大家一起交流,学习!

  • 参会企业专题| 北京微视新纪元
    北京微视新纪元科技有限公司(微视图像)始于1994 年,专业从事图像采集卡、系统、软件、高清晰度摄像头、智能相机等自主产品的研发与销售,拥有雄厚的图像采集、硬件研发和软件自主开发能力,具备丰富的视觉系...... 程序世界 2018-05-25 | 搜狐 暮云
  • 四十余款破解工具携带病毒 盗取信用卡账户等隐私信息
    近日,火绒安全团队截获病毒“Socelars”,正通过KMSpico、Adobe Photoshop 等四十余款软件破解工具进行传播。该病毒会利用被感染用户的facebook临时登录凭证,专门窃取用户...... 程序世界 2018-05-25 | 搜狐 暮云
  • Web App开发:比起Web AppNative App更具优势,免编程就可制作
    Web App开发需要多少钱?与Native App有什么区别,哪一种好?哪一种才是趋势?这里对两者进行详细分析,让小白也可以快速理解区分。 Native App开发 就是常说的原生APP开发模式,利...... 程序世界 2018-05-25 | 搜狐 暮云
  • JAVA8之lambda表达式详解
    Lambda 表达式? Lambda允许把函数作为一个方法的参数(函数作为参数传递进方法中) Lambda表达式是JAVA8中提供的一种新的特性,它支持JAVA也能进行简单的“函数式编程”。 它是一个...... 程序世界 2018-05-25 | 搜狐 暮云
  • 区块链兄弟技术10问:以太坊的那些事
    区块链兄弟,区块链技术专业问答先行者,中国区块链技术爱好者聚集地 作者小以 来源区块链兄弟社区 原文链接http//www.blockchainbrother.com/article/edit...... 程序世界 2018-05-25 | 搜狐 暮云
  • 不锈钢水龙头激光焊接机厂家4轴自动激光焊接机-超米激光
    超米激光简讯随着大家生活品质的提高、对卫浴用品的要求也越来越高,不管是水龙头还是淋浴花洒还是菜盆脸盆,都是要求美观竞争、质量要求也是非常高,所以作为厂家的你如果达不到客户的要求基本很难在这个竞争激烈...... 程序世界 2018-05-25 | 搜狐 暮云
  • 新网站的优化步骤应该怎么走?
    其实这个话题已经是老生常谈了,原创先锋在官网已经发布过很多的类似文章,但是今天有合作过的客户咨询,那么小编想着,就再给大家分享一下。 一、选择关键词 对于关键词的选择小编也说过好几次了,之前也发布过关...... 程序世界 2018-05-25 | 搜狐 暮云
  • 技术流:Jmeter加密接口必备测试技能了解一下
    作者小倩子,融都科技质量管理部 编辑涨停板 随着互联网的发展,越来越多的系统开始提供接口调用。我们进行接口测试的时候,大多数接口或多或少的都使用了各种加密验证,保证接口的安全调用。如何使用jmet...... 程序世界 2018-05-25 | 搜狐 暮云
  • 限时下载 | 132G编程资料:Python、JAVA、C,C++、机器人编程、PLC,入门到精通~
    当程序员处瓶颈期应如何提高自己?有很多关于“学习编程”的资源,能够让人从 0 到新手(虽然这些资源中大多数的质量是值得商榷的),但是怎么样才能将中级水平提高到专家级? 良好的编程能力对于大多数工程师而...... 程序世界 2018-05-25 | 搜狐 暮云
  • 新手做网站建设有哪些基本流程
    网站建设,对于很多新手来说简直是一头雾水,很是迷茫。只要遇到问题就感觉无从下手,不知所措。这就造成在网站制作过程中,即使看了很多教程但是没有具体的系统性的学习,总还是存在很多问题,遇到问题之后又不知道...... 程序世界 2018-05-25 | 搜狐 暮云
  • 新手入门|速成应用免费教你如何制作微信小程序零基础开发搭建教程
    微信小程序已经迈入了爆发阶段,很多中小企业和商户正在不断涌入这个市场。但是很多不懂技术不懂代码的小白却不知道去哪里制作微信小程序,现在就以可视化小程序开发工具「速成应用」来告诉你们,如何制作出专属于自...... 程序世界 2018-05-25 | 搜狐 暮云
  • 中国工控|请善待每一个电气工程师!尊重每一位机械工程师!
    技术文章来源提供 什么是电气工程师? 去过设备调试现场的朋友,你常常会看见一个人,蜷缩着身子趴在桌上,盯着笔记本电脑屏幕,时而看看转动的机器,时而动动鼠标点点键盘,时而拭一拭额头的汗水…… 那么恭喜你...... 程序世界 2018-05-25 | 搜狐 暮云
  • 阻塞队列实现生产者消费者模式
    来源ImportNew - 刘志军 生产者消费者模式是并发、多线程编程中经典的设计模式,生产者和消费者通过分离的执行工作解耦,简化了开发模式,生产者和消费者可以以不同的速度生产和消费数据。这篇文章我...... 程序世界 2018-05-25 | 搜狐 暮云
  • 想多赚点钱?先来学学怎样成为合格的Java程序员
    每个Java程序员都有个高薪梦,高薪的前提是具备拿高薪的能力,本文就为大家介绍如何成为一个合格的Java程序员,帮你顺利拿高薪 在过去几年中,政府和社会一直在努力使“Geek”再次酷起来。总统和总理...... 程序世界 2018-05-25 | 搜狐 暮云
  • 只有20行Javascript代码!手把手教你写一个页面模板引擎!
    AbsurdJS 作者写的一篇教程,一步步教你怎样用 Java 实现一个纯客户端的模板引擎。整个引擎实现只有不到 20 行代码。如果你能从头看到尾的话,还能有不少收获的。你甚至可以跟随大牛的脚步也自己...... 程序世界 2018-05-25 | 搜狐 暮云
  • 54个国家大量路由器被僵尸网络VPNFilter控制
    E安全5月25日讯 思科和赛门铁克公司于美国时间2018年5月23日陆续发出安全预警黑客利用一个复杂的规模化恶意软件 VPNFilter,感染了全球54个国家的50万台路由器,并构建了庞大的僵尸网络...... 程序世界 2018-05-25 | 搜狐 暮云
  • NFS-Ganesha源代码分析
    人工智能+区块链的发展趋势及应用调研报告 1. NFSv4简要概述 NFS这个协议(NFSv2)最初由Sun Microsystems在1984年设计提出,由于存在一些不足,因此在随后由几家公司联合推...... 程序世界 2018-05-25 | 搜狐 暮云
  • 浅析敏捷测试及其实践运用
    人工智能+区块链的发展趋势及应用调研报告 引言 随着互联网技术的发展,产品的快速迭代且能适应市场需求已经成为各大公司的痛点。而传统的开发模式已经不再适用于快速迭代的产品,在这种情况下,敏捷开发模式因其...... 程序世界 2018-05-25 | 搜狐 暮云