0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

揭秘FPGA设计难题:芯片出身也能影响性能表现

FPGA之家 ? 来源:云栖社区 ? 2024-04-26 09:54 ? 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

作者:隐达

(一)昨夜西风凋碧树。独上高楼,望尽天涯路

2000年的时候,做设计基本都是使用Xilinx公司的Virtex和Virtex-E系列芯片。那时候Altera技术实力还比较弱,基于Altera的芯片做设计是要被大家diss的。某天晚上大概十点多了吧,我正如痴如醉的沉浸在编码的快感当中。主管悄无声息的站到了我身后,我从显示器中看到了隐约的影子,转头一看果然是他老人家。

主管神色凝重,眉头紧蹙。我在脑子里迅速回顾了一下自己最近的所作所为,确信没干什么罪大恶极、自绝于人民的坏事儿,用颤抖的语气小心翼翼的问:老大,您找我?老大的神色迅速地转换,分明在说:蠢货,你又不是什么萌妹子,要是没事儿你以为我老人家愿意屈尊站到你这儿么?after一个蓝衣女子般的风情万种的白眼之后,老大终于开腔了。

“我们学理科的都不信鬼神对吧?”大哥,你这是什么开场白?!我那会儿不过才工作两年多,纯洁的像一张黑不溜秋的白纸,根本识别不了您这是准备给我刨什么坑好吧,为啥你要给我出这样的难题?老大露出了一些不耐烦:“几个月之前到现在,有一批单板邪门儿了,有的工作正常,有的就不断的出乱码。经过大家夜以继日没白没黑呕心沥血玩儿命的加班定位之后,大家一致认为问题出在这块单板上的FPGA上”。早说嘛,FPGA我熟啊。“老大,问题既然都定位了,那就解决嘛”。老大露出了诧异的神情:我X,你这货是怎么混进我司的?回头老子要找当初面试你的人算账!老大深吸了一口气,带着“老子再忍你十秒钟的神情”继续说:“这个FPGA一共9000多接近一万行代码,最关键的是,设计这个FPGA的同事三周前就离职了。现在虽然确定了问题出在这个FPGA,但是究竟是什么问题还不知道。所以呢,大家商量了一下,决定暂时把你抽调出来,全力投入这个事情。一呢,要搞清楚到底是什么问题,二呢,把问题彻底解决掉”。

要不怎么说当年的我就是纯洁啊,要是放到现在,这肯定是一个绝佳的跟老大讨价还价、多给自己争取个仨瓜俩枣的好机会啊。彼时单纯(其实就是弱智)的我却觉得天大的展示自己身手的时刻终于到来了,于是欣然接受。老大神情轻松了一些,但还带着少许疑惑:这货不知道行不行,但愿不要把老子也坑了。然后溜溜达达的走了。

(二)衣带渐宽终不悔,为伊消得人憔悴

我一夜无眠,小心脏一直在忽冬忽冬滴乱跳。第二天我一头扎进了封闭的实验室。实验室里堆了好多单板,好的一堆,坏的一堆,然后各种仪器和电脑。整整一周,我都在实验室里瞎折腾,除了一遍又一遍的证实了问题现象确实如老大所描述的,然后就是看那9000多行的HDL代码。写代码的同事不知道是故意的还是习惯如此:注释少的可怜、设计文档和实际代码差异极大(文档在说水果里面桃子最好吃,代码写的是大飞机C919很威武)、变量的命名也毫无规律,后缀_addr的变量居然是数据总线,而后缀_data的变量才是地址总线。我心说:“哥啊,地球人都知道花花轿子人抬人。你我素昧平生、素不相识、萍水那个从未相逢,可为神马你就知道我要被派来收拾你的烂摊子,这么多花样来收拾我涅?”

一周毫无进展,我很沮丧。浑浑噩噩的过了周末(其实也就是周日一天),周一继续钻进实验室。开放办公区里莺歌燕语,其乐融融,就我一个人傻兮兮的在实验室里古佛青灯兼顾影自怜,相当称得上凄凄惨惨戚戚。中间老大时不时的过来关心我一下,其实就是监工外加检查进度。可是没进度可言:我根本不知道问题出在哪里,这么短的时间把小一万行HDL代码都看明白也不可能。如果我能的话,那我应该去做老大的老大了(那会儿大家都崇拜技术牛人,普遍觉得谁技术牛谁就应该做老大)。

一转眼就到周五下午了,我在实验室里垂头丧气。双手捂着脸,开始埋怨自己为什么接任务的时候才出现智商余额不足的fatal error。大显身手是彻底的forget about it了,弄不好倒可能因此把自己给葬送了。继而开始埋怨主管:我一直是顺民,挺听话也挺出活,你为啥要给我刨这么大的一个坑涅?百撕不得奇解啊。一头雾水兼百无聊赖,我拿起一块单板,盯着那片FPGA。嗯,这里写着Malaysia,没想到Xilinx在大马还有工厂。换一块单板,嗯,还是Malaysia。这不是废话么,买一批至少也是几千片,当然都是Malaysia。正要仰天长叹“天亡我也,非我不能也”,忽然瞥见另一块单板的FPGA上印的似乎不是Malaysia,拿起一看,果然印的是Taiwan。终于找到一点有意思的事情做了,于是再拿一块,嗯,Taiwan,再拿一块,嗯大马。拿着拿着,忽然发现一个规律:从那堆坏板子里拿的都是印着Malaysia;从那堆好板子里拿的都是印着Taiwan。

(三)众里寻他千百度,蓦然回首,那人却在,灯火阑珊处

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

我冲出实验室,一溜小跑去了焊板实验室。找到了焊板的同事,让他现场给我焊两块单板,一块必须用产自大马的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异构计算。

审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • FPGA
    +关注

    关注

    1646

    文章

    22097

    浏览量

    620692
  • 芯片
    +关注

    关注

    460

    文章

    52736

    浏览量

    444084
  • Virtex
    +关注

    关注

    1

    文章

    36

    浏览量

    21233

原文标题:阿里云专家讲FPGA设计遇到的奇葩问题:“芯片也要看出身”

文章出处:【微信号:zhuyandz,微信公众号:FPGA之家】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    Kuikly鸿蒙版正式开源 —— 揭秘卓越性能适配之旅

    和Kotlin Native可以直调、无额外跨VM/语言调用开销。除了早期CAPI版本存在一些Bug和功能缺失等问题,CAPI方案在开发难度、复杂性上更高,但为了追求极致性能表现
    发表于 06-04 16:46

    Altera Agilex 5 D系列FPGA性能

    随着边缘计算领域的迅速发展,许多应用日益依赖于内存技术来实现更高的性能或每瓦性能。Altera 的 Agilex 5 D 系列 FPGA 可提供一系列经过精心设计的内存选择,助力用户轻松采用先进的内存技术,满足网络、云、广播和嵌
    的头像 发表于 03-27 13:36 ?700次阅读

    SM5102芯片解决干电池难题,3A大电流供电,设备续航飙升

    SM5102 芯片解决干电池难题,3A 持续放电、1A 快充,有全场景安全防护与智能功耗管理,无感替代干电池
    的头像 发表于 02-15 16:04 ?848次阅读
    SM5102<b class='flag-5'>芯片</b>解决干电池<b class='flag-5'>难题</b>,3A大电流供电,设备续航飙升

    ?性能猛兽降临!RK3588 Mini PC 惊艳亮相

    还在为找不到一款性能炸裂又功耗友好的迷你主机而发愁吗?今天,必须给大家重磅揭秘这款 RK3588 Mini PC,绝对打破你对迷你主机的固有印象! ?它搭载 Rockchip 新一代旗舰 AIoT
    发表于 02-15 11:51

    FPGA驱动AD芯片之实现与芯片通信

    概述:?利用FPGA实现AD芯片的时序,进一步实现与AD芯片数据的交互,主要熟悉FPGA对时序图的实现,掌握时序图转换Verilog硬件描述语言技巧后与其它
    的头像 发表于 12-17 15:27 ?1173次阅读
    <b class='flag-5'>FPGA</b>驱动AD<b class='flag-5'>芯片</b>之实现与<b class='flag-5'>芯片</b>通信

    NTC温度传感器解决储领域难题

    NTC温度传感器解决储领域难题。随着社会逐步发展,受双碳战略及区域能源结构影响,储领域已经成为全球持续讨论的话题。储领域分别包括风力储
    的头像 发表于 12-02 10:09 ?656次阅读
    NTC温度传感器解决储<b class='flag-5'>能</b>领域<b class='flag-5'>难题</b>

    FPGA与ASIC的区别 FPGA性能优化技巧

    编程来配置以实现特定的功能 为特定应用定制设计的集成电路,需要根据特定的需求从头开始设计和制造 设计与制造 预先制造好,用户可以根据需要通过编程来定制其功能 设计和制造过程是一次性的,一旦制造完成,其功能就固定了 成本 包括购买FPGA芯片的成本和编程成本
    的头像 发表于 12-02 09:51 ?1179次阅读

    天玑9400技术详解:如何蝉联GPU性能效双冠军

    全新高度,引发了广泛好评。 天玑9400搭载全新顶级12核GPU G925,相较上代拥有超过41%的峰值性能飞跃,在保持与上一代相同的峰值性能下功耗节省接近一半。在媒体测评中,无论是极限性能还是日常使用,天玑9400在全
    的头像 发表于 11-07 14:00 ?897次阅读
    天玑9400技术详解:如何蝉联GPU<b class='flag-5'>性能</b>、<b class='flag-5'>能</b>效双冠军

    名单公布!【书籍评测活动NO.50】亲历芯片产线,轻松图解芯片制造,揭秘芯片工厂的秘密

    。 还有很多同类书没有介绍的独家内容,补全讲解从人员、产品、资金、产业到工厂揭秘,犹如跟随作者亲历芯片制造产线,沉浸式体验和感受芯片制造各流程。 本书虽以芯片制造技术入手,但图解内容轻
    发表于 11-04 15:38

    如何优化FPGA设计的性能

    优化FPGA(现场可编程门阵列)设计的性能是一个复杂而多维的任务,涉及多个方面和步骤。以下是一些关键的优化策略: 一、明确性能指标 确定需求 :首先,需要明确FPGA设计的
    的头像 发表于 10-25 09:23 ?1039次阅读

    芯片封测揭秘:核心量产工艺全解析

    在半导体产业链中,芯片封测作为连接设计与制造的桥梁,扮演着至关重要的角色。它不仅关乎芯片的最终性能表现,还直接影响到产品的市场竞争力和成本效益。随着科技的飞速发展,
    的头像 发表于 10-15 11:17 ?1965次阅读
    <b class='flag-5'>芯片</b>封测<b class='flag-5'>揭秘</b>:核心量产工艺全解析

    FPGA做深度学习走多远?

    中的性能和效率。同时,可能会出现一些新的基于 FPGA 的深度学习算法创新,拓展其应用领域。 ? 应用领域的拓展:除了在图像识别、语音处理、自动驾驶等领域的应用,FPGA 在深度学习
    发表于 09-27 20:53

    谷景科普一体成型电感性能不良有哪些表现

    谷景揭秘一体成型电感性能不良有哪些表现编辑:谷景电子一体成型电感作为电子电路中非常重要的一种电子元器件,它的性能的好坏将会直接影响到电路运行的稳定性,以及设备的
    发表于 09-16 23:06 ?0次下载

    频率越高越好?深度揭秘不同频率下的性能表现

    纷纷推出自家的高频内存,超频这件事渐渐在普通用户之间普及开来。 不过毕竟关乎到兜里的钱,大家对不同频率之间性能差距还是比较关心的。刚好最近紫光国芯旗下的云彣(UniWhen?)上架了一系列国风内存,独特的设计语言让我一时没忍住下单,所以这次就
    的头像 发表于 09-13 09:22 ?803次阅读
    频率越高越好?深度<b class='flag-5'>揭秘</b>不同频率下的<b class='flag-5'>性能</b><b class='flag-5'>表现</b>

    克服设计难题-实现高性能接口

    电子发烧友网站提供《克服设计难题-实现高性能接口.pdf》资料免费下载
    发表于 08-28 09:41 ?0次下载
    克服设计<b class='flag-5'>难题</b>-实现高<b class='flag-5'>性能</b>接口