您的位置:首页 > 其它

工作随笔

2011-11-13 22:41 225 查看
时间流逝,不知不觉已工作两年多了。这两年来做了不少项目,从SMB Router到dump Switch再到Managed Switch,学到了很多,进步了不少。这个过程纠结过、郁闷过、被打击过、开心过、兴奋过,自然我自身是在慢慢成长的,不仅仅是专业知识上、设计经验上,也是心态及处理事情方式上。

当然,每个项目总不会那么的顺利,从前期新产品研究报告研究(芯片方案选型,看能否满足产品需求,同时考虑系统整体设计方案的可行性)--->原理图设计和相关文档撰写(开始很是不喜欢写文档,慢慢发现很有必要,帮助自己重新梳理设计思想,也是方便他人查阅与理解)--->PCB设计与打样(这主要由CAD mm帮忙搞定了,不过HW Engineer还得主控全局,包括布局布线,虽然PCB Layout不需要自己亲自处理,但得告诉她们如何进行布局布线。同时,需要和结构工程师、平面工程师一同讨论样机壳体及平面丝印布局配合问题)--->样机制作与调测(以前是由专门的样机制作人员制作样机,经常会遇到短路啊少焊错焊器件的麻烦,所以每次制作十几台样机要全部初步调试好都得花不少时间,后来SMB产品都要求到工厂制作,那样样机一致性会很好,此外出错概率非常小。样机初步调测OK后就要进行详细调试与测试了,要从电气参数上测试验证设计的合理性,当然也要测试验证功能和性能,包括高低温环境适应性测试。最后还得进行认证预扫,要进行RE、CE、ESD、Surge和安规等测试,毕竟产品都得经过各项认证才能进行销售的)--->提交测试部进行系统测试(这个过程一般会遇到很多BUG,特别是一个全新方案的项目,首先得大致区分硬件BUG还是软件BUG,然后是重新复现BUG,分析定位并解决它。最麻烦的是有些BUG出现概率极低,如开关机到一两千次时出现某些端口不link或不转发数据包,抑或是在高温高湿环境下出现CPU死机,这些BUG有个共性就是得花大量时间守候它再次出现。曾经为了分析定位高温高湿下DUT死机问题,足足守候老化箱一个月,都被同事戏称“老化王子”了,呵呵
)--->试产(数量几百到几K不定。测试部验证OK后,说明该产品研发初步完成,可以出BOM及首批单进行试产验证了,毕竟研发做的样机有限,一般就10PCS左右,如产品存在一些隐性的概率性问题的话,研发测试很可能是测试不出来的,在试产大量机型中就可能会暴露出来,这时还能补救进行对应修改解决,当然如果是硬件上需要修改就很麻烦了,有些只是添加某些预留的器件,记得有款产品研发一直顺顺利利,几乎没有什么BUG,但试产老化出现问题,和FAE一起去工厂产线上排查,最后确定需要添加EEPROM,幸亏设计时预留了EEPROM焊盘,只能麻烦工厂重新人工焊接那么多器件了,当然有些硬件更改必须得重新设计PCB,那后果就很严重了;如果是软件上可解决的就谢天谢地了,因为这样不会造成项目delay,不会影响产品上市)--->量产(当试产总结认为该产品符合出货要求后,该项目可以圆满画上句号了。今后的事情就是工厂按照客户订单定时制作就好了,当然同时该产品进入维护阶段,根据客户使用反馈的问题进行解决,大多是更新升级软件解决,要是要从硬件上解决且必须这么做的话,就得重新立项对该产品进行版本升级)。

上述只是大致工作的流程,其中每个过程涉及到的东西太多太杂,知识的全面性和专业性决定了系统设计的好坏,当然选用的芯片方案也是决定该产品性能好坏的一个重要因素。此外,就是与人沟通问题,作为系统硬件工程师,从项目前期调研到最后试产完成,其中需要与软件工程师、产品工程师、CAD工程师、结构工程师、平面文档工程师、采购工程师等合作,沟通合作的能力的强弱决定了项目进度的快慢,毕竟我们是一个Team,很多东西需要大家一同努力才能完成的。当然,过程中也会经常同芯片厂商的FAE联系沟通,以最大可能熟悉使用的芯片特性,了解的越多才能对自己设计的产品信心更足嘛。

总的来说,项目尤其是全新方案项目中可能会经常遇到一些棘手的问题,每个问题可能都不一样,要具体问题具体分析解决,但可以从以下三方面进行分析与解决:

一、芯片级别BUG

对于此类的问题,作为HW Engineer一般很无奈,我们并不懂IC里面是怎么设计的,但为了验证是芯片问题我们可以也必需进行N多测试,比如从上电开始每个时刻相关重要信号的捕获与分析,看是否符合芯片initial阶段的动作,看flash是否正常响应,看bootload是否正常,看内存是否正常工作。当然,这些的前提是对芯片启动特性很了解,否则你也不知道捕获的波形是否正确。

之前有使用一款全新芯片,其中有一个全新的接口DDR SSSMII(MAC和PHY之间百兆通信接口),相对传统SSSMII接口,该接口节省了一半信号线,方便布线。它是在时钟上升沿传递奇数端口数据,而在下降沿传递偶数端口数据,收发都有各自的时钟和同步信号,保证通信的准确性。但正是这全新接口“害得”我很惨,因为这种接口在特定复位时会出现lock up现象,导致对应的PHY工作不正常。当初为分析问题,将该接口上电复位后及特定复位时TXCLK信号都进行详细测量与对比,并告之芯片厂商,其回复表明该款芯片确实存在BUG。

这次事件给我的警示是芯片也是被设计出来的,一些成熟方案芯片出BUG概率会小些,但对于那些全新的芯片,得注意了,其存在的BUG可能性很大。当你不幸遇到这种情况,也不必过于沮丧。问题得从两面来看,其实这正是锻炼你的时候,只有遇到问题尤其是这种高级别的问题才能让你成长。

二、自身问题

遇到的问题是不是自己设计的电路不够好造成的呢?对于新人来说,设计一种电路功能时可能经常考虑不周到或是不准确的。一个系统中包含的电路模块很多,但总体来说可概括为电源模块、时钟模块、复位模块、指示模块,当然还有些CPU系统包括的子系统模块及MAC芯片包含的数据通信接口和管理接口模块等。很多模块都是成熟的设计,有些可能较不同项目有所不同,这时需要查阅相关资料弄懂该种新电路模块,尽量考虑的周到,必要时预留一些设计,以防不时之需。

遇到问题,追个排查,不要怕。每个新人都是慢慢成长的,可能都会遇到些低级的设计问题,只是个人基本功不同犯错几率及性质不同罢了。但要及时总结,是自身的问题,一定弄明白原因,同样的错误是不允许再犯的!只有从错误中认识错误,吸取教训才能成长。

当然,除了设计问题还有可能是自己测试方面失误造成的。比如一个问题,你测试的信号不对或不准确,这会造成你对问题定位、分析不准确,由此引出来一系列耗时不得力的事情。因此,作为一名硬件工程师,尤其是优秀的硬件工程师,良好的测量技术也是必需的。

三、他人---团队合作问题

有些问题可能是他人造成的,比如软件工程师某句代码在不该出现的地方出现了,特别是与底层相关的软件。有时你会很纳闷,为什么样机运行UBOOT好好的,使用软件就出问题了。你得明白,UBOOT毕竟是最基本的少量的代码,能保证样机正常启动并使能相关接口就好,而软件要复杂很多,得有一个完整的操作系统。

对于这些与硬件相关性很大的BUG,要排查起来得和相关软件工程师一同合作才成。因此,作为一名优秀的硬件工程师,基本的软件知识也得具备,这样的话解决这些与软件相关的BUG时会更得心应手些。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: