做好芯片设计,这三种能力不可或缺

2023-11-09 14:59

本文主要是介绍做好芯片设计,这三种能力不可或缺,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

​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工程师各类研修班,总有你需要的!

这篇关于做好芯片设计,这三种能力不可或缺的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



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

相关文章

如何将Python彻底卸载的三种方法

《如何将Python彻底卸载的三种方法》通常我们在一些软件的使用上有碰壁,第一反应就是卸载重装,所以有小伙伴就问我Python怎么卸载才能彻底卸载干净,今天这篇文章,小编就来教大家如何彻底卸载Pyth... 目录软件卸载①方法:②方法:③方法:清理相关文件夹软件卸载①方法:首先,在安装python时,下

Redis实现延迟任务的三种方法详解

《Redis实现延迟任务的三种方法详解》延迟任务(DelayedTask)是指在未来的某个时间点,执行相应的任务,本文为大家整理了三种常见的实现方法,感兴趣的小伙伴可以参考一下... 目录1.前言2.Redis如何实现延迟任务3.代码实现3.1. 过期键通知事件实现3.2. 使用ZSet实现延迟任务3.3

Java图片压缩三种高效压缩方案详细解析

《Java图片压缩三种高效压缩方案详细解析》图片压缩通常涉及减少图片的尺寸缩放、调整图片的质量(针对JPEG、PNG等)、使用特定的算法来减少图片的数据量等,:本文主要介绍Java图片压缩三种高效... 目录一、基于OpenCV的智能尺寸压缩技术亮点:适用场景:二、JPEG质量参数压缩关键技术:压缩效果对比

C语言实现两个变量值交换的三种方式

《C语言实现两个变量值交换的三种方式》两个变量值的交换是编程中最常见的问题之一,以下将介绍三种变量的交换方式,其中第一种方式是最常用也是最实用的,后两种方式一般只在特殊限制下使用,需要的朋友可以参考下... 目录1.使用临时变量(推荐)2.相加和相减的方式(值较大时可能丢失数据)3.按位异或运算1.使用临时

Java终止正在运行的线程的三种方法

《Java终止正在运行的线程的三种方法》停止一个线程意味着在任务处理完任务之前停掉正在做的操作,也就是放弃当前的操作,停止一个线程可以用Thread.stop()方法,但最好不要用它,本文给大家介绍了... 目录前言1. 停止不了的线程2. 判断线程是否停止状态3. 能停止的线程–异常法4. 在沉睡中停止5

Linux配置IP地址的三种实现方式

《Linux配置IP地址的三种实现方式》:本文主要介绍Linux配置IP地址的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录环境RedHat9第一种安装 直接配置网卡文件第二种方式 nmcli(Networkmanager command-line

Linux下修改hostname的三种实现方式

《Linux下修改hostname的三种实现方式》:本文主要介绍Linux下修改hostname的三种实现方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教... 目录linux下修改ho编程stname三种方式方法1:修改配置文件方法2:hFvEWEostnamectl命

Go语言中三种容器类型的数据结构详解

《Go语言中三种容器类型的数据结构详解》在Go语言中,有三种主要的容器类型用于存储和操作集合数据:本文主要介绍三者的使用与区别,感兴趣的小伙伴可以跟随小编一起学习一下... 目录基本概念1. 数组(Array)2. 切片(Slice)3. 映射(Map)对比总结注意事项基本概念在 Go 语言中,有三种主要

Spring IOC的三种实现方式详解

《SpringIOC的三种实现方式详解》:本文主要介绍SpringIOC的三种实现方式,在Spring框架中,IOC通过依赖注入来实现,而依赖注入主要有三种实现方式,构造器注入、Setter注入... 目录1. 构造器注入(Cons编程tructor Injection)2. Setter注入(Setter

linux报错INFO:task xxxxxx:634 blocked for more than 120 seconds.三种解决方式

《linux报错INFO:taskxxxxxx:634blockedformorethan120seconds.三种解决方式》文章描述了一个Linux最小系统运行时出现的“hung_ta... 目录1.问题描述2.解决办法2.1 缩小文件系统缓存大小2.2 修改系统IO调度策略2.3 取消120秒时间限制3