FPGA设计之“甩锅大法” | 凌云时刻

2023-10-30 17:20

本文主要是介绍FPGA设计之“甩锅大法” | 凌云时刻,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

凌云时刻 · 技术

导读:FPGA设计如何自证清白?

作者 | 隐达

来源 | 凌云时刻(微信号:linuxpk)

写在前面

这篇文章并不是教唆读者老爷们真的学习如何甩锅,否则,那谁谁很生气,后果很严重。本文说不定会成为我老人家在阿里的“遗作”:入职还没满月就早夭了,何其惨也。

因此本文的主旨是跟大家探讨如何“自证清白”,当然即使这么说仍是显得消极,正确的说法应该是:如何快速排除是否是FPGA本身的问题,从而提升问题的定位和解决效率。

如果我用论文的笔触来写这篇文章,读者老爷们肯定会勃然大怒:干活已经很辛苦了好吧,生活已经很艰难了好吧,房价已经很高了好吧,谁还愿意看你这味同嚼蜡的破文章?X之拂衣去,深藏功与名,徒留我一人,狂饮忘情水。

所以呢,必须有点趣味才能吸引读者老爷们宝贵的注意力,还有啥能比一个colorful的故事更吸睛的涅?所以,还得从N年前我老人家那次漂亮的“甩锅”说起…

插播一段声明:我的文章里的故事,出于各种考虑(不能泄露前雇主的商业机密,不能泄露前同事们的隐私,等等,等等,等等),不见得100%完全吻合当年的实际情况,但是保证95%的真实度。故事如果非本人亲自经历,我会醒目的进行说明,咱不干“抄袭琼瑶阿姨还死不承认”那么low的事儿。

故事

话说大约在夏季,应该是2005年五一前后(可能有误差,但是妹子们的穿着很清凉我是记得很清楚滴),我所在的产品正在如火如荼的开发之中,市场对于XX特性的单板需求之旺盛,使得产品上上下下如同打满了鸡血,员工在办公室、实验室通宵达旦司空见惯。产品一直处在一边不断发货,一边不断增加新特性的状态。

那时候火到什么程度呢,运营商的大货车天天在XX中心排长队,以至于每到饭点,公司得专门派两个保安,组织货车司机们去食堂吃饭。而各地运营商的各个老总纷纷给自己认识的X司的各级老总打电话:哈尼!亲!蜜糖!萨瓦迪卡!崩猪!务必先保证我的发货!我请你大宝剑滴干活,地方你挑(其实大宝剑这句是我加的,因为没人给我打电话,我也不知道有没有提及大宝剑)。

我当时带一个包括我在内一共15人的团队,开发ALTERA公司最高端、容量最大的一款FPGA,整块单板的XX特性基本全部通过这片FPGA来实现(开发这款FPGA的血泪史另文呈现)。经过单元测试、集成测试和系统测试,都顺利过关,我的团队也已经接受了新的开发任务,进入需求分析阶段了。

相对而言我和我的团队都比较轻松,完全可以一边高唱“我得意的笑,我得意的笑”,一边跳起不输广场大妈们的婀娜舞姿。但是人家软件、硬件的兄弟都在不眠不休,好比别人在饿肚子,我这边不但有肉包子吃,还边吃边吧唧嘴巴,何止是不厚道,简直就是不厚道嘛,所以我们也不好意思早点下班。

Well,老子说了:“祸兮福所伏,福兮祸所依”;古人说了:“人无远虑,必有近忧”;哲人说了:“生活总是在你嘚瑟的时候,狠狠地收拾你一回”。嗯,这个哲人就是我。

Suddenly吧,有一天吃过晚饭,一个同事跑到我的办公位说:老大找你。我虽然愚钝,还是从那个同事的表情中读出了一丝“小样儿,这下你要糗大了”的意思。我边走边琢磨:出问题了?不能够啊,虽然问题一直很多,但咱的FPGA一直很Solid啊,都证明了不是其他硬件就是软件的问题啊…

忐忑滴我走进了实验室,机架周围全是人,产品老大黑着脸,嗯,比李逵和张飞加起来都黑。

“你过来”。

我小碎步上前:“Yes Sir?”

“之前呢,大家也怀疑过FPGA的问题,当然后来也都定位清楚了不是,但是这次不一样。过去三天,软硬件的团队用了各种方式进行定位和确认,大家一致认为这次肯定是FPGA的问题,所以才把你叫过来看看怎么解决。”

老大不愧是老大,绝不拖泥带水:“出问题的是XX客户,对我们构建当地市场格局至关重要,因此必须以最快的速度彻底解决问题!”

我听着听着汗就下来了,因为一般情况下,出了问题大家肯定要吵吵一番,软件怪硬件,硬件怪逻辑,逻辑怪网管,网管怪天气…这次人家做了如此充分的准备,又是如此的同仇敌忾,看来此番凶多吉少、在劫难逃啊… 

众目睽睽之下,我努力让自己镇定下来,当然脑袋没闲着,诸如“是福不是祸,是祸躲不过”、“脑袋掉了碗大个疤”等等豪言壮语,还有黄继光江姐等伟岸形象在脑海中来回闪现。“既然大家都认为是FPGA的问题,那我们马上进行定位和解决”。

围观的群众脸上都露出了蒙娜丽莎般的微笑:小样儿,挺住哈,我们终于也可以喘口气了。我开始挨个给几个主要团队成员打电话,让他们马上到公司来。有人明显不情愿,显然嘛,人家正吃着火锅唱着歌,跟女朋友卿卿我我,享受着女友的秋菠,我这不是给人添堵么?

尽管如此,一个小时之内,人还是到齐了。我把情况简单说了一下,大家分头行动。问题确实比较让人头痛:因为要重现并不容易,我们也没有发现重现的规律,跟进了原始森林之后迷了路差不多。一天过去了,nothing changed;又一天过去了,same as yesterday;第三天也快过去了,same old same old。

团队的士气明显低落且有些抵触了:凭啥就认定是我们的问题呢?

这三天,我在旁边看着他们忙活,一直在琢磨:怎么才能证明问题没有出在FPGA呢?How?大概后半夜吧,我开始安排团队成员各自去睡觉(实验室里有垫子),忽然灵光一闪:你送给我啥,我不做任何处理,原封不动给你返回去,如果还是有问题,不就说明不是FPGA的问题了么?

这跟现在收快递是一样一样滴:当你的面我没拆封,东西却坏了,这肯定不是我的责任嘛。

实现其实很简单,就是做一个环回(术语叫Loop Back):把FPGA接收到的数据,不做任何处理,直接拉到输出的管脚上去。布局布线遇到了一些问题:因为逻辑资源的使用率已经很高(超过了80%,布线资源尤其紧张,因为时钟频率很高),增加的逻辑虽然不多,但总是要耗费资源。长话短说,这个问题最终解决了。上电测试,果然OK,保险起见,跑上24小时,若没有误码,就说明问题不在FPGA之前的数据链路中。

24小时过去,OK。我有些沮丧:因为问题不在FPGA之前的数据链路,那问题出在FPGA的概率反而增大了。

怎么进一步验证呢?很简单,再增加第二个环回:FPGA处理后的数据不送给后续芯片,而是直接返回上游。如果24小时测试能pass,那么可以证明不是FPGA的问题;反过来,如果测试fail了,可以100%确定就是FPGA本身的问题。 

又一个24小时过去,没问题。为了保险起见,我又去协调了几块单板,全部加载带第二环回的逻辑,所有单板再跑上24小时。结果大家也猜到了,测试通过。

我去找老大,把定位、验证的过程汇报了,老大眉头紧蹙:Are you sure?我点点头。老大拍了一下脑袋:shit!

我也理解老大的举动:我只是证明了FPGA的清白,但是问题依然在那里,仍然没有定位啊。为了表示对老大的理解和支持,我还问候了老大一句雷布斯版的“Are U OK”?其他各个团队的扛把子陈浩南们和各自手下的山鸡们都被召回到公司,个个都瞪着我,原因就不用说了。我耐心的把整个验证过程解释给他们听,再说不耐心也不行,他们人多,打不过啊。话说理工男的可贵品质之一就是讲道理、讲逻辑。在我说的口干舌燥,几次导致局部有雨之后,大家终于认可了我的结论。 

我跟我的团队自此始终跟攻关的其他团队一起定位问题(实际上,在定位和解决各种问题的过程中,FPGA和软件同样灵活的可编程特性,起到了很大的作用,这是题外话了)。大概又过了两周之后,问题终于被定位:公司自研的一款ASIC,在特定情况下,会非法改写某块内存。定位是定位了,一时半会儿却无法解决:ASIC做一次EC要不少银子不说,关键是时间至少也要半年啊。最终还是FPGA对问题进行了规避,同时马上启动ASIC的EC。 

经过这次折腾,我意识到环回是个好东西,应该大力推广,广而告之:毕竟,一花独放不是春,万紫千红才是春对吧;大家好才是真的好,对吧。征求了部门老大的意见后,我花了几天的时间,写了“大规模FPGA环回功能设计指导书”,把部门的高手都召集起来进行了几轮评审,就作为强制性规范发布了。其核心内容就是在常规功能之外增加数据刚进入FPGA和FPGA刚处理完之后的两个环回功能,用于精确定位是否是FPGA的问题。环回功能用一个简单的开关控制,缺省是关闭的。 

效果还是灰常立竿见影的,真正的做到了“用过的都知道”:问题定位周期缩短了至少30%。有的资源比较富裕的设计还会在FPGA内部再增加一到两个环回,帮助定位问题出在具体哪个模块。一年时间内,我加了三次薪,可谓春风得意马蹄疾,而且年底又无耻的拿了一次最高荣誉奖。 

后记

2005年过去了,我很怀念它:轻轻的一个奖,叫我思念到如今。从那之后,每当我在KTV深情唱起“当我想你的时候,我的心在颤抖;当我想你的时候,泪水已悄悄的滑落”的时候,不明就里的吃瓜群众都认为我在追忆某个未曾到手的妹子,其实,我只是在怀念我的2005。

END

往期精彩文章回顾

Kafka从上手到实践 - 初步认知:MQ系统

进阶之路:深入解读 Java 堆外内存

干货:一文看懂Apache Ranger

吴翰清:有变革的需求,才有技术的诞生

云原生时代,消息中间件的演进路线

如何提升微服务的幸福感

OceanBase 连破纪录的背后,是技术人的砥砺前行

重磅!解读国内唯一入选全球顶会SIGCOMM论文

长按扫描二维码关注凌云时刻

每日收获前沿技术与科技洞见

这篇关于FPGA设计之“甩锅大法” | 凌云时刻的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/309434

相关文章

不懂推荐算法也能设计推荐系统

本文以商业化应用推荐为例,告诉我们不懂推荐算法的产品,也能从产品侧出发, 设计出一款不错的推荐系统。 相信很多新手产品,看到算法二字,多是懵圈的。 什么排序算法、最短路径等都是相对传统的算法(注:传统是指科班出身的产品都会接触过)。但对于推荐算法,多数产品对着网上搜到的资源,都会无从下手。特别当某些推荐算法 和 “AI”扯上关系后,更是加大了理解的难度。 但,不了解推荐算法,就无法做推荐系

业务中14个需要进行A/B测试的时刻[信息图]

在本指南中,我们将全面了解有关 A/B测试 的所有内容。 我们将介绍不同类型的A/B测试,如何有效地规划和启动测试,如何评估测试是否成功,您应该关注哪些指标,多年来我们发现的常见错误等等。 什么是A/B测试? A/B测试(有时称为“分割测试”)是一种实验类型,其中您创建两种或多种内容变体——如登录页面、电子邮件或广告——并将它们显示给不同的受众群体,以查看哪一种效果最好。 本质上,A/B测

怎么让1台电脑共享给7人同时流畅设计

在当今的创意设计与数字内容生产领域,图形工作站以其强大的计算能力、专业的图形处理能力和稳定的系统性能,成为了众多设计师、动画师、视频编辑师等创意工作者的必备工具。 设计团队面临资源有限,比如只有一台高性能电脑时,如何高效地让七人同时流畅地进行设计工作,便成为了一个亟待解决的问题。 一、硬件升级与配置 1.高性能处理器(CPU):选择多核、高线程的处理器,例如Intel的至强系列或AMD的Ry

基于51单片机的自动转向修复系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订阅👇🏻 单片机

SprinBoot+Vue网络商城海鲜市场的设计与实现

目录 1 项目介绍2 项目截图3 核心代码3.1 Controller3.2 Service3.3 Dao3.4 application.yml3.5 SpringbootApplication3.5 Vue 4 数据库表设计5 文档参考6 计算机毕设选题推荐7 源码获取 1 项目介绍 博主个人介绍:CSDN认证博客专家,CSDN平台Java领域优质创作者,全网30w+

单片机毕业设计基于单片机的智能门禁系统的设计与实现

文章目录 前言资料获取设计介绍功能介绍程序代码部分参考 设计清单具体实现截图参考文献设计获取 前言 💗博主介绍:✌全网粉丝10W+,CSDN特邀作者、博客专家、CSDN新星计划导师,一名热衷于单片机技术探索与分享的博主、专注于 精通51/STM32/MSP430/AVR等单片机设计 主要对象是咱们电子相关专业的大学生,希望您们都共创辉煌!✌💗 👇🏻 精彩专栏 推荐订

Spring的设计⽬标——《Spring技术内幕》

读《Spring技术内幕》第二版,计文柯著。 如果我们要简要地描述Spring的设计⽬标,可以这么说,Spring为开发者提供的是⼀个⼀站式的轻量级应⽤开发框架(平台)。 作为平台,Spring抽象了我们在 许多应⽤开发中遇到的共性问题;同时,作为⼀个轻量级的应⽤开发框架,Spring和传统的J2EE开发相⽐,有其⾃⾝的特点。 通过这些⾃⾝的特点,Spring充分体现了它的设计理念:在

开题报告中的研究方法设计:AI能帮你做什么?

AIPaperGPT,论文写作神器~ https://www.aipapergpt.com/ 大家都准备开题报告了吗?研究方法部分是不是已经让你头疼到抓狂? 别急,这可是大多数人都会遇到的难题!尤其是研究方法设计这一块,选定性还是定量,怎么搞才能符合老师的要求? 每次到这儿,头脑一片空白。 好消息是,现在AI工具火得一塌糊涂,比如ChatGPT,居然能帮你在研究方法这块儿上出点主意。是不

创业者该如何设计公司的股权架构

本文来自七八点联合IT橘子和车库咖啡的一系列关于设计公司股权结构的讲座。 主讲人何德文: 在公司发展的不同阶段,创业者都会面临公司股权架构设计问题: 1.合伙人合伙创业第一天,就会面临股权架构设计问题(合伙人股权设计); 2.公司早期要引入天使资金,会面临股权架构设计问题(天使融资); 3.公司有三五十号人,要激励中层管理与重要技术人员和公司长期走下去,会面临股权架构设计问题(员工股权激

分布式文件系统设计

分布式文件系统是分布式领域的一个基础应用,其中最著名的毫无疑问是 HDFS/GFS。如今该领域已经趋向于成熟,但了解它的设计要点和思想,对我们将来面临类似场景 / 问题时,具有借鉴意义。并且,分布式文件系统并非只有 HDFS/GFS 这一种形态,在它之外,还有其他形态各异、各有千秋的产品形态,对它们的了解,也对扩展我们的视野有所俾益。本文试图分析和思考,在分布式文件系统领域,我们要解决哪些问题、有