新知一下
海量新知
5 9 9 2 7 4 7

复杂芯片项目里,我虽渺小亦是英雄

数字芯片实验室 | 前瞻性的眼光,和持之以恒的学习 2019/12/28 18:54

当今芯片 规模和复杂度 显著增加,为了方便项目管理,会将设计划分为多个层次结构。 同时,针对同样一个模块,不同岗位的工程师也会存在不同的视角( 算法行为 电路结构 物理实现

例如 加法

新知达人, 复杂芯片项目里,我虽渺小亦是英雄

算法行为 上看到的只是一个“+”符号,浮点的、定点的、有符号的和无符号的。


电路结构 上,可能是一个 行波进位加法器 或者 超前进位加法器


物理实现 上,Gate嘛,纯组合逻辑,怎么 怎么 都是后端的活


对于 K库 的工程师,这几十个晶体管,可是讲究得很啊。

新知达人, 复杂芯片项目里,我虽渺小亦是英雄


从上面这张图可以看出来,一个简单的模块, 横向 纵向 上都别有洞天。

为了能够处理更大的设计复杂度,必须划分清晰的设计 层次结构 换句话说,我们造轮子,但不用重复造轮子,不用所有人造轮子,我们造一个轮子可以用在很多地方。

在人力上,这种层次划分 简化了某一个岗位工程师的工作内容, 让专业的人做专业的事 ,也限制了其活动空间


所以,一个半导体行业的新人要么在一个大规模SoC芯片项目中当 螺丝钉 ,要么当一颗小芯片项目中的 锤子


当然了,大芯片还是小芯片,大公司还是小公司,当螺丝钉还是当锤子,各位看官肯定都各抒己见。


上面的图片将一个设计划分为三个维度: behavior structural physical 在每个维度中 又存在多个层次的设计抽象。

如果设计是在较高的抽象层次上描述的,就越难理解设计的最终形态(objective),就像我不理解High level synthesis是怎么处理时序问题的。

图中的虚线表示了设计从 behavior domain -> structural domain -> physical domain 的设计进程。


不同设计domain之间也很难理解。

工程师Chen 参与了一个AI芯片项目,但是他只是负责这个模块的时序收敛。可能到最后他也不会明白这颗芯片和AI有毛关系,除了从模块命名上能看出 一些 端倪


当然,负责这个模块功能实现的 工程师Wang 也不关心 不清楚 物理实现工程师用哪些Cell构成了我想要的逻辑。

新知达人, 复杂芯片项目里,我虽渺小亦是英雄

那么问题来了,芯片复杂地像一个宇宙,茫茫无边,你希望处在其中什么位置? 如何才能发挥创造力,为最终的产品添砖加瓦,为科技进步贡献自己的力量。

不管是优秀的算法工程师,还是一个K库的专家,截然不同的旅程可能达到同一个终点。

有的工程师,烦于芯片的底层实现,关注high level synthesis(HLS)或者high level language 到Verilog HDL的转换,期待在 behavior domain 快速地验证实现自己的Idea。 这虽然可以节省设计周期,快速进行设计迭代,但是这种思维不适合从事 逻辑综合 这样的岗位。

另一方面,由于现在综合工具的发展,前端设计人员确实可以将更多的精力关注到 电路设计,从电路具体实现中解脱出来。


因为有时候你精心进行的gate level描述,不见得比综合工具优化得好。


更短的设计周期,往往比更低的硬件开销和更高的性能具有更高的优先级。

Verilog是一个硬件建模语言。 对于 structural domain physical domain 的工程师而言,我觉得和原理图描述其实并无差别,无非是 模块例化 走线互连 而已。

对于 behavior domain 的前端设计和前端验证工程来说,利用综合工具从行为级Verilog HDL转变为结构级电路描述就尤为重要。


目前来看,Verilog HDL已经满足不了前端设计工程师,尤其是前端验证工程师的需求了,SystemVerilog/UVM 由此成为验证主流。

不同工程师在一个复杂芯片项目里有不同的角色,愿我们都能知道自己的意义,发现属于自己的那份 成就感

螺丝钉没关系,能发光就行。 在自己的岗位发光发热,就是英雄, 英雄是不应该分优劣的。


新知精选

更多新知精选