开源EDA还有绿色生态的发展前景吗?
商业EDA软件仍然是主流是有原因的,PDK是其中的重要组成部分。优秀精准的PDK可以提高一次性完成设计的成功率,而PDK和EDA紧密相连,这也是很多EDA厂商直接与OEM工厂合作的原因。在这里,我们不仅要从EDA软件开发者的角度来看待问题,还要考虑OEM。
对于芯片开发来说,EDA是技术工程师吃饭的工具。然而,与其他软件开发生态系统不同,再加上IC设计本身的难度,EDA在半导体行业已经成为一个相对孤立的工具,催生了一个相对孤立的市场。可以说,开源生态在EDA领域更难介入。
谁来降低设计成本
选择开源EDA的另一个原因是成本。如果你参与过开源EDA社区的互动,你会发现大部分都是学生、老师、爱好者或者独立开发者。对他们来说,选择开源EDA是为了省钱。要知道,在大多数EDA厂商眼里,不仅仅是这些群体,甚至是一些小型初创公司,都要一视同仁,支付授权费。
图:IC设计成本趋势 / ZeroAsic
根据2018年物理设计国际会议上Zeroasic在晶体管数量几乎以线性速度增加的过程中,由设计成本和验证成本组成的总硬件开发成本呈指数级增长。然而,并不是每个人都在设计最先进技术的AD5620CRMZ-1芯片。有时候,为了验证一些理论,实际流片比追求最大性能更重要。因此,在选择开源EDA软件如Icarus、GHDL和Yosys时,可以直接节省成本。
缺失的PDK
商业EDA软件仍然是主流是有原因的,PDK是其中的重要组成部分。PDK是台积电、格芯、中芯国际等OEM工厂提供给Fabless设计公司的工具包,包括设计规则、物理限制、第三方IP库、设计规则检查等。优秀精准的PDK可以提高一次性完成设计的成功率,而PDK和EDA紧密相连,这也是很多EDA厂商直接与OEM工厂合作的原因。
然而,开源EDA是不同的。很多开源EDA之所以给人一种half-baked的感觉,是因为缺少PDK。在这里,我们不仅要从EDA软件开发者的角度来看待问题,还要考虑OEM。根据他们的观点,与几家EDA公司合作所花费的精力明显较少。更不用说对于台积电这样的厂商来说,PDK本身就是一个与开源无关的东西,比如3nm、5nm的工艺,只有重要的客户才能获得PDK。即使是成熟的工艺,也有各种保密协议需要签订。
目前,在一些愿意烧钱的龙头公司的推动下,开源PDK取得了一些进展。例如,Skywatertechnogies与谷歌合作,为他们的130nm节点推出了开源PDK,并提供了免费流量电影的机会。在一些EDA厂商的支持下,一些大学也开始推出自己的PDK,比如北卡罗来纳大学的FreePDK(15nm和45nm),亚利桑那州立大学的ASAP7PDK(7nm)也是开源的,但都是用于学术研究的PDK。
国内开源EDA推广
中国商业EDA软件的市场份额落后于国外大型工厂,开源EDA也落后于国外开源社区。然而,除了一些优秀的商业EDA公司仍在推陈出新之外,中国也开始推动开源EDA的发展。例如,南京集成电路设计服务产业创新中心有限公司(以下简称EDA创新中心),由华九天、东南大学等单位共同发起成立,成立了OpenEDA开源平台。
OpenEDA上的第一个项目是OpenEDI,一个数据基本组件。借助此组件,用户可以通过高效的内存和符号表管理功能,访问开源开放、接口丰富、统一高效的数据库、算法库和计算架构。由此产生的EDA工具没有数据壁垒,方便设计者在不同设计工具之间切换,不用担心数据丢失。这是开源EDA工具开发人员非常实用的基本组件。
然而,自2020年底成立以来,OpenEDA平台只发布了一个OpenEDI项目内开源EDA工具的发展和创新还有很长的路要走。EDA创新中心迈出了正确的第一步,然后有人会跟着这一步。
EDA也是一种语言
近日,中国科学院计算技术研究所副所长、香山处理器负责人鲍云刚在回答网友提问时表示,除了仿真验证工具、逻辑合成等传统EDA工具外,香山处理器使用的Chisel编程语言,用于生成verilog代码,降低前端开发og代码,降低前端开发和验证成本。毕竟,RTL编程语言也是提高开发效率的一种方式。
不过,他也表示,开源EDA应该是一个全过程的工具链,这与Cadence、Synopsys和Mentor相比,不可避免地缺乏质量。如果每个流程都有一定的质量不足,聚集在一起会导致芯片PPA远离商业EDA,这是开源EDA工具首先要解决的挑战。
结语
一般来说,如果你追求商业可用性,开源EDA工具永远不会是你的首选,也不会是开源EDA工具开发者的目标。毫无疑问,仅仅依靠开源社区的无私奉献,与在商业市场工作了几十年的EDA制造商竞争是愚蠢的。
这些制造商不介意开源EDA生态系统的发展,甚至愿意提供一些帮助,因为开源EDA可以带来更广泛的应用,有利于整个开发生态系统的发展。我们可能希望将开源EDA视为所有设计师小规模尝试的入口,以便他们有机会创建更多开源硬件。