本文主要是介绍做好芯片设计,这三种能力不可或缺,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
01
快速学习
芯片设计相关工作,有大量的知识和细节信息需要学习,而且是限时学习,快速学习的能力非常关键。
开发一颗芯片,需要广泛研究竞争对手的信息,学习相关行业标准,了解整机应用方案,调研各类供应商【IP,软件】的解决方案。
读文档是绕不过去的基本技能。
每一个竞品芯片的datasheet,行业标准,或者IP手册,都是大几百页,甚至上千页,有着不同的写作套路,需要快速地从这些大部头的文档资料中获取到有用的资料信息,用于设计决策,还是需要认真锻炼的。
拿到一份资料,要先看目录,再看基本介绍,快速了解基本内容概要,然后再针对感兴趣的部分细致阅读。
特别提一点:对于写文档的朋友,尤其是用word写完转pdf的朋友,请记得做好以下细节,会使得你的文档对用户更友好【也显得你比较专业】。
1、一定要有页码;
2、一定要有章节,并且转换为pdf的标签。
做好资料检索非常关键。
要有正确的信息渠道。向真正的专家咨询,从专业的文档找信息,有效利用搜索引擎解决普通的技术问题。
简单说,要找对人,看对书,还有不要懒,多搜索一下,基本都能搞定。然后不断总结,提高获取答案的速度和效率。
怎样问一个好问题?
怎样阅读一本书?
使用搜索引擎的基础技巧?
这些值得花几个小时研究一下,事半功倍。
构建个人系统知识体系是个长期过程。
要记得回顾,总结,输出分享,并且逐步地把外在的知识内化成个人的知识体系结构。
可以搜索一下【个人知识管理】,【个人笔记系统】等关键字,网上这类教程很多的。
很多知识大V的主要领域就是这一块,有很多好的方法和观点值得借鉴。
友情提醒:不要沉迷于工具,也不要沉迷于【学习学习】的过程。还是要立足解决自己的实际问题,没有完美的工具和方法,能解决问题最关键。
02
分析调试
发现问题,分析问题,解决问题。大学里面都讲过,关键看实际中怎么用。
就拿芯片设计与验证来说吧。
怎样快速发现问题?
采用先进的工具,方法学,还有规范的开发流程,能让问题及早暴露。
写代码的时候,要考虑出错的情况,尽可能【展示】错误而不是隐藏错误。比如,很多verilog的if else条件分支,对于不可能进入的分支,在仿真阶段加入【x】态描述。
先做lint后做仿真,先做仿真后做FPGA,先做cdc和sdc检查再做综合,先写文档再写代码,先做需求调研再做技术开发,每一条都值得深入贯彻。不要把前一阶段能够简单发现的问题,遗留到后一阶段。
怎样全面分析问题?
这里涉及逻辑分析能力,系统思考能力,还有经验,沟通能力。
前端设计中严重依赖eda工具,对于eda工具给出的log信息要认真对待。
log分三种信息,info,warning,error。
info告诉你工具在做什么。要注意检查流程步骤对不对,吃进去的数据版本,路径,文件列表,环境设置对不对。
warning是提示这里可能有问题。要细致检查是不是代码不规范,某个地方有潜在的bug,如果是,抓紧修复,如果不是,想办法做个自动化脚本或者加选项waive相关提示。带着一堆warning跑flow,迟早会出大问题,绝不是危言耸听。
error是好事,最起码指明了问题的大致方向。可以查阅eda工具的error code文档。
怎样从根本上解决问题?
dirty fix真的很dirty,大规模代码重构容易引入完美主义倾向。这两种要注意折中。
打patch很快,容易带来设计冗余。比如加个if else,把一大坨逻辑重写一遍,用开关来控制向后兼容。用的多了,总有一天自己也会掉坑的【各位老司机应该有体会】。
从根本上解决问题,要注意【根本】的范围定义。时间,风险,收益,是需要认真决策的,这不是一句空话。
03
高效沟通
沟通是信息的交互。
借用通信工程系统概念,可以分为信源【发送】,信道【传输】,信宿【接收】。
做一个好的接收机。
我们沟通的目的,主要是为了获取别人的帮助,因此,【听】比【说】更关键。
要注意同频共振,有效提高信噪比,做好接收缓冲区管理,然后才能接收更多更好的信息。
同频共振:你先学好基础知识,才更容易听懂别人高层次的信息。
信噪比:减少情绪化沟通,虚心,空杯,有效筛选。
缓冲区:听了要转化,该用的用,该存的存,该扔的扔。
利用各种形式的沟通渠道。
书面的,口头的,表情的,意会的。
写邮件,是很多大公司的必备技能之一。注:之二是开会,之三是甩锅。
微信拉群,打电话等近身沟通,是小公司的家常便饭。
要注意区分不同沟通方式的时效性,正式性,还有适应范围。
不是每个人都适合随时在微信群里@大老板,但是很多人都会在许多邮件里cc。
开会的事情,我认同这个观点:大会无大事,小会无小事。
看文档就能解决的问题,还非要开会,你要多想想这是为什么呢?
最后,要敢于表现。
大声说出你的观点,哪怕对方不同意。
勇敢展示你的代码,哪怕有很多bug。
努力写好文档PPT,节省别人的时间。
最后,要学会捧场。
网上看到的观点,写的很到位:
最高的沟通境界,就是认真地看着对方吹牛,等着他吹不下去的时候,给他个梯子让他继续吹。
最后,要怎样才能学会和提高这三种能力呢?
【未完待续,记得一键三连】
- THE END -
🍁
往期精选
【免费】FPGA工程师招聘平台
FPGA | Xilinx ISE14.7 LVDS应用
FPGA零基础学习:SDR SDRAM 驱动设计
FPGA之通信算法工程师面试题3
FPGA零基础学习:IP CORE 之 FIFO设计
一周掌握FPGA Verilog HDL语法 汇总篇
FPGA工程师各类研修班,总有你需要的!
这篇关于做好芯片设计,这三种能力不可或缺的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!