在线咨询
eetop公众号 创芯大讲堂 创芯人才网
切换到宽版

EETOP 创芯网论坛 (原名:电子顶级开发网)

手机号码,快捷登录

手机号码,快捷登录

找回密码

  登录   注册  

快捷导航
搜帖子
查看: 26555|回复: 44

[讨论] 数字设计的成长阶梯大讨论

[复制链接]
发表于 2013-3-28 21:17:58 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

x
本帖最后由 qiang0204 于 2013-4-4 16:20 编辑

2013年3月我先后走了杭州,上海,苏州拜访一些做IC的朋友。我和多个朋友讨论了数字设计的成长过程。大家一致的看法是数字设计可以分为几个不同的阶段。但对这几个阶段每个人都有自己的看法。为了抛砖引玉,我让苏州瑞晟的朋友将自己的经历总结了,具体如下:


数字设计工程师成长阶梯如下:
  • 建立数字电路设计的概念:先电路,后代码,RTL是用来描述电路的,而不是用来设计电路的。

    HDL的正确翻译是"硬件描述语言",不是"硬件设计语言"。刚刚走出大学的学生,有可能还没有到达第一阶段。因为在学校做课题,一般是先分析功能,然后就开始代码设计,拼拼凑凑,通过仿真来调整代码,最终"凑合"成一个可以运行的代码。如果采用这种方式设计电路,表示自己还没有入门。回想自己当初进入工作之前也是这样,喜欢倒腾代码,写程序,能够用仿真工具跑出自己心仪的波形,就很开心。后来在公司工作,才慢慢意识到自己根本就没有入门,没有理解数字电路设计的根本。

  • 掌握基本的设计电路设计方法和基础知识,可以独立设计验证基本模块单元。

    数字电路设计方法流程如下:

    • 先确定重点需求:需求不可能事先全部确定,大概70%左右重点需求确定下来就好。
    • 确定系统架构和基础算法
    • 划分子模块,确定重要界面
    • 模块设计:清晰界面定义,确定重要信号
    • 设计重要状态机,设计重要讯号的时序图
    • 编写RTL代码
    • 验证模块,优化。

    《注》:RTL代码编写在整个设计过程中占用的时间应该不是很多,反而是其他步骤需要花更多的时间。

    数字设计基础知识分两大块:运算和控制。

    运算包括基本的加减乘除等各种运算的设计,各种加法器,乘法器的结构和优缺点。对二进制码制(原码,补码)有深入理解。

    控制包括状态机的设计优化,流水线(PipeLine), 时序重排(Retiming),Folding/Unfolding等等。这些不同技术对电路速度、面积、功耗的影响。

    控制部分还需要加上异步电路设计基础。如何做不同时钟域的信息交互。

  • 精通至少一个复杂的协议,比如USB, PCIE, SATA, MIPI, DDR, NANDFLASH, MPEG, H264等,解决和此协议相关的模块设计调试问题。这个层级上主要掌握的是处理复杂性的问题。协议分层,不同的抽象级别对复杂问题的逐步简化。
    • 熟悉一个协议,能够接触到相对复杂的系统,物理层,Link层,协议层等等。
    • 掌握一些标准的Analog/Digital接口协议,比如UTMI、PIPE、DFI等。能够借鉴这些Interface定义的思想,引入到自己的设计界面中去。
  • 熟悉整体SOC架构,总线,模拟数字接口,知识面由精逐步扩展,越来越广。能够独当一面的负责整体IC规划。
    • 需要掌握计算机体系结构,总线外设的优化
    • 掌握信号处理知识。
    • 掌握一些流行算法。
    • 熟悉整个设计流程,扩展到后端。

这四个阶梯实际上也不是完全一步一步的,互相有可能有交叠。有的人第二阶段知识并不是很扎实,就可以跳入第三阶段,甚至第四阶段。不过没有第二阶段的扎实基础,后面阶段的发展有可能会遇到瓶颈。很多时候是,在跨入第三四阶段的时候,同时也在巩固第二阶段的基础内容。
第三四阶段和项目相关性很大,而前两个阶段和项目无关。公司社会招聘一般只会关注到后两个阶段的实力,而不会考虑前两个阶段,因为社会招聘是要找有经验的工程师。 而校园招聘一般比较看重前两个阶段,因为到公司之后有时间培养。公司培训的重点应该放在第一和第二阶断,后面两个阶段的发展靠个人在前两个阶段的背景下充分发挥了。

坛子里牛人众多,请大家也说说自己的看法。
发表于 2013-3-28 21:53:25 | 显示全部楼层
沙发,前排占座
发表于 2013-3-28 22:46:45 | 显示全部楼层
顶一下,学习了
发表于 2013-3-29 00:01:05 | 显示全部楼层
感觉前面几个阶段就应该扩展后端的知识
 楼主| 发表于 2013-3-29 01:00:04 | 显示全部楼层
如何做到先电路后代码?大家议议。
发表于 2013-3-29 10:10:10 | 显示全部楼层
回复 1# qiang0204


   
  • 划分子模块,确定重要界面
  • 模块设计:清晰界面定义,确定重要信号
  • 设计重要状态机,设计重要讯号的时序图


还不太理解者三点里面的一些概念, LZ是否可以详细描述. 感激不尽.

第一, "重要界面"是什么, 是谁和谁的界面?

第二, "重要信号"怎么判定, 根据哪些条件决定一个信号的重要性?

第三, 为什么把"状态机"和"时序图"同列为第三点, 这个"时序图"的设计能给设计带来什么好处?

平时综合和时序分析的时候, 总会接触到一些partition、hierarchy、timing, 但是不太理解怎么做partition.
发表于 2013-3-29 10:35:15 | 显示全部楼层
的确是要先电路,后代码,刚毕业才一年多,不过还是没有很好的理解电路~~
我也常常问导师如何做到先电路后代码,他也没说出什么门路,我觉得做了DC流程之后会有很好的理解~~
协议什么的现在还不懂,现在就只单独设计了ECC模块,其它的都还只是个纯粹新人~~
发表于 2013-3-29 10:53:59 | 显示全部楼层
研一新人,启发很大,
有时候在设计控制模块的电路时难免要用到仿真来调时序波形
发表于 2013-3-29 13:14:32 | 显示全部楼层
即将研一,研究生应该如何学习数字IC?
发表于 2013-3-30 20:00:47 | 显示全部楼层
感觉这个论坛的人都很上进啊,研一的我还在天天dota、想着找女朋友,呵呵!

问一下大家:本人目前从事硬件工程师,VHDL菜鸟级别,想转行IC设计,不知道前景几何?
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

站长推荐 上一条 /2 下一条


小黑屋| 手机版| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-11-22 13:30 , Processed in 0.028305 second(s), 9 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
快速回复 返回顶部 返回列表