CatCoding

我曾经干了 3 年 EDA

2022-08-28

这周末在上海和几个前同事聚了聚,勾起我的一股回忆。

今天就写写 EDA,因为我的第一份工作就是加入了上海的一个创业公司,我们做的就是 EDA 行业中自动化形式验证工具。

这个行业如今被卡脖子,资本涌入,有人称之为国内的风口,但我加入的那时候就像是一个老鼠洞。我毕业那会儿正好看了《黑客与画家》,所以选择了一个创业公司,走了一条更少人走的路。

不过短短三年,我也只是在这个行业浅尝辄止。下面这些谈谈我的经历和感受,凭回忆写写有可能不够准确。

不得不说,美国人卡得很准,中国不是要大力发展芯片么,没有 EDA 这种工具要做芯片简直就是天方夜谭,EDA 软件实际上已经成为中国高端芯片的命门所在。

电子设计自动化(Electronic design automation,缩写:EDA),这个行业的发展伴随着 1980 年后的芯片革命和硅谷的崛起。芯片本质上是很多个物理逻辑门的组合,在芯片的早期,因为复杂度和集成度远不如现在,设计人员还可以手动完成电路设计和布线。

然后芯片的复杂度越来越高,自然人们开始想,如果能够使用软件来描述硬件设计就好了。1986 年,硬件描述语言 Verilog 推出,1987 年 VHDL 推出,各种仿真器开始出现,这些仿真器可以解析 Verilog/VHDL,并对设计的芯片进行仿真,这样使得芯片设计可以在真正被应用前进行严格的验证。

如今,EDA 工具已经成为芯片设计行业的标准工具,涵盖了芯片设计、布线、验证和仿真的所有流程。

EDA 行业的三巨头是 Synopsys、Cadence、Mentor,这些公司比我们大部分现在的程序员年龄都大,其中 Mentor 成立于 1981 年,另外两个分别成立于 1985 和 1986,这些公司如今已经成为事实上的垄断,占据 80% 左右的市场份额。

2011 年,我加入 NextOp 的时候,公司已经创立了 5 年并开始进入了稳定期。市场人员在美国,主要研发人员在上海,这种模式和现在 zoom 这类公司很像。两个创始人都是 90 年左右去美国,读了博士之后进入了这个行业。

他们发现了一个比较细分的市场,因为日常工作中经常需要人为地去写 Property,所以就想如何能在仿真器运行之后自动生成 Property 就好了。Property 类似于我们写程序中的断言,可以当作硬件的一部分 spec,也可以用于硬件开发中的 regression testing,如果一个断言被触发了,可能是一个 Bug,也可能是一个之前漏掉的 coverage。因为硬件的 Bug 非常非常值钱,如果能在芯片设计阶段发现 Bug,那么这个工具将非常有用,我们的产品名称就叫做 BugScope。

我记得当时我们的一个重要里程碑就是找到了苹果的 Bug,可以感受到公司上下都非常有成就感,因为发现一个苹果的硬件 Bug 可以减少很多可能的损失,这非常能证明工具的价值。

这里面有很多技术上的难点,自动生成 Property 可以用到的输入有两方面,仿真器的运行数据和 Verilog/VDHL 代码。如何把仿真器里的运行数据搞出来,如何节省磁盘,我当时看着那些几十年的 C 头文件,去调试仿真器的 hook 函数,有时候盯着下面这种信号仿真看,如今想来都头大。

更难的是如何去自动发现数据里的规律,结合 Verilog 代码去生成 Property,如何写出足够简单而不会自相矛盾的 Property。这些会涉及到 Model checking、SAT solver 之类的算法,Model checking 的开山鼻祖 E. M. Clarke 为创始人的博士生导师,所以作为了公司的顾问。他因为 Model checking 的开拓性工作获得了 2007 年的图灵奖。

虽然公司很小,但技术氛围很好,有些像个实验室,开发人员基本都是来自中科大、上交大、电子科大。作为刚毕业的小白,我在这个公司待的三年还是能学到了不少东西。里面的代码主要是几十万行的 C/C++,任何产品的 crash 都是在客户的机器上,所以对代码质量要求很高。回想起来 Software Engineering 做得非常不错,代码测试覆盖率几乎 100%,还有一堆 fuzz testing,为了解决内存问题 valgrind 在自动化测试中用了很多。

这个行业门槛太高,因为涉及到多个方面,需要一些硬件背景,最好有一些芯片从业经验,还需要好的软件工程能力。具体到我们的问题,比如 Property 怎么生成,就需要不少行业积累和手工打磨,一个个 case 去琢磨,当时公司 10 来个人也只有两三个做这块。我跟着做过一小段时间,发现自己做不来,我的耐心和相关知识都不够。

EDA 行业那时候就已经非常稳定,黄金时期已经过去。有个老板经常感叹,整个 EDA 行业的大小好不如香蕉行业。

我们那时候已经有一些稳定的客户,最大的客户应该是苹果,在上海的时候我也去 Marvell、中兴这些公司做现场调试。

2013 年我们公司被印度人主导的公司 Atrenta 收购了,过了几年 Atrenta 又被 Synopsys 收购了,我在 2014 年因为想去深圳就离职了。在这个稳定的行业,如果想做也是可以一直做下去的,我之前的同事们,有一部分还在 Synopsys 做,有一部分去了美国,有一部分在国内出来创业一圈,随着我国大力支持 EDA 行业,他们又回到了这个行业继续奋斗。

我国是否能自研出来这些 EDA 工具?我们几十亿,几百亿地往里面砸钱,总能激起一些浪花,民族之光华为总能做出来吧?

我不确定,能不能做出来是一回事,好不好用或者能到什么深度又是另一回事。比如现在国内 EDA 工具的领头华大九天能做出部分 5 nm 芯片的国产替代,但 3nm 及以下的高端芯片就被美国卡脖子了。

EDA 这类工具在硅谷自然生长出来,而不是资本催生出来的,也不是一个或者两个公司做出来的。

行业迅猛发展有其时代的背景,因为有了些实际的需求和一定的行业积累,自然会有些人去解决问题和创新,完善的产权保护机制让人能够去解决一些看似小的问题,成为创业企业养活自己,比如像 Verilog/VHDL 这类的 Parser 是一个小公司 Verific 做的,我现在还记得是因为他们每年给客户送上一张巨大的卡通硅谷地图。

像我所在的公司这种一再被并购,大鱼吃小鱼的过程一直在发生,这些 EDA 巨头就是从无数个收购中发展起来的。

我国不缺软件开发人才和资金,但缺既有软件开发能力和这个行业背景,又能解决一些基础数学问题的人,据说国内 Synopsys 已经被挖走了一大半。也许我们短时间能好好追赶一阵,但彻底解决卡脖子的问题估计需要更多年了。

如今想起还有些怀念,单纯的一段技术工作体验。我那时候还是浮躁,要是能更多一些纯粹的好奇心就好了,这样会有更深入的体验。

但这次我们这几个聚会的同事,大多都跳出了这个行业,主要因为我们对这行没有特别大的兴趣和优势,另外想法比较多吧,总之跳了出来就不可能再回去了吧。

公号同步更新,欢迎关注👻
Tags: 写作