21IC电子网 | 公众号精选

十年前的 ASIC/SoC 设计跟现在相比,发生了哪些变化?

OFweek维科网
2021-10-12 23:27
关键字: ASIC SoC
收藏
过去十年,我国的集成电路产业发展是比较快速的,技术日新月异,数字IC从ASIC到SoC的发展,无论是ASIC或者是带“核”的SoC,相信它们的设计技术跟流程在这十年里应该有所变化。另一方面,经过十年的发展,数字IC设计流程里面的流程大体相似,但是却又有点区别,比如综合策略,之前有自顶向下,自底向上,然后发展到ACS(自动芯片综合)技术。对于这十年来的变化发展,行业人士们有什么用的看法呢?本文整理汇总了多位知乎网友的观点,一起来听下他们的解读。


@马克:


近十年最大的变化是low power design。十年前,做low power主要是省动态功耗,各种clock gating,不用的模块不让它翻转。


而近十年静态功耗leakage成了耗电大户,因此除了之前的各种省动态功耗的方法外,power gating越来越成为主流的lower power处理方法。


早期的power gating多用手工的方法,用脚本往网表里插clamping和level shifter。


而近5,6年 cpf/upf的flow越来越成熟这些手工的工作大部分已经由eda tool实现了。并且upf已经能够直接反标到rtl上进行前端的仿真,大幅减少了lower power设计的工作量。


@Wang Kellen:


我维护过1997年的ASIC代码,我来说说几点比较受冲击的感受吧。


早期的时候电路设计上是非常走极端的,到处呈现出极简主义的特点。例如:


1、在芯片里大规模使用latch而不是寄存器以节省面积。


2、在非运算功能的组合电路中大量使用伪随机数生成器取代加法器或者减法器,比如典型的counter电路,由于本质上我们只关心counter的计算周期以及下溢出判断,而counter是不是从1数到16其实无所谓,于是就有了用伪随机数生成器代替counter来计数的办法,只要保证数字不重复地数一圈,数到0就下溢出即可,电路上只需要N个寄存器加一个同或门就够了,比加法器确实简单很多,只是用起来很折腾,配置初值要查表,比如你希望counter数个5,正常counter写个4的初值进去每时钟减1就可以了,而这种伪随机数生成电路你要先查表,看一下数5次以后变成0的那个初值应该是多少。


3、最不能忍的就是早期电路规模很小,所以对于地址空间的压缩简直令人发指。那时候系统的地址文档是读写功能分开的,大部分地址的读含义和写含义是完全不同的,也就是说地址利用率几乎是达到了极致,每个地址都被用上了,只读寄存器所在的地址一定也可以写,只是写功能分配给了另外一个只写寄存器。一般来说,那时候每个功能的读写特性也是高度压缩的,如果一个功能只需要能写入就可以生效,那么它就一定是不可读的,几乎很少有同时可写又可读的功能,当时的软件是没办法把一个值写入一个寄存器地址后又读出来确认是否正确的,因为如果每个寄存器都可以读写的话地址就不够用啦!地址段的划分也是粒度特别的小,分给某个模块的地址空间基本都是能用完的。


4、在硬件描述语言出现之前,电路是用门搭的,所以很多历史悠久的产品都曾经经历过把电路翻译成硬件描述语言的过程(甚至有的一开始入错VHDL的坑,等到Verilog出现后又重新翻译一次),当时的自动综合工具还是新鲜事物,功能也比较弱,主要还是靠工程师对电路和时序的准确把握来确保代码和综合结果的一致性。但是因为这个时期的工程师对电路的理解还是更加透彻的,所以经常可以见到一些非常规的电路被使用奇怪的表达方式设计出来。


@聪大大plus:


我一直在思考。3nm后,制程工艺的方向是什么?是换基质吗?还是继续推进?


我是比较倾向于硅基止步2nm。甚至2nm还是拖了很久(即3nm停留相当长时间)


那么对现在SOC的影响是什么?


制程工艺放缓,那只能在设计上下功夫。无论是引入npu,还是早期的ISP。其实SOC都在增加ASIC。即使是CPU,GPU都可以理解为ASIC。


未来SOC将引入更多的ASIC。


当然十年前的ASIC跟现在的有些不同了。现在的ASIC不单单追求定制,半定制。而是要变成可变定制。即FPGA,是英特尔发力方向。有大佬在b站科普,可以去看。


其实就是将ASIC的高效,与通用处理器的全能的结合。


当然,FPGA,难做,甚至本身就是方向错误(有致命缺陷)。


但SOC中,ASIC的集合会更多,这个方向不单单是可以肯定,更会是在做,特别是制程工艺推进放缓下。npu就不说了,非常明显的ASIC特征。后面还会切割那些功能来做ASIC,我们拭目以待。毕竟CPU,gpu其通行计算已经越来越不划算了。


这就是十年前后的差异。


@顽猴溜溜:


1,20年前的原始设计,往往直接就是网表,压根就没有RTL。在工艺迁移时,直接就是门级转换。然后跑仿真确定时序,同时做ECO修正。


2,因为原始设计就是网表,所以会有很多让人脑洞大开的底层实现。比如latch搭建控制寄存器,状态机使用RS触发器,关键电路双沿工作,格雷码计数器,手写的clock gate,以及大量的行波时钟。


3,20年的测试向量,是根据电路功能设计的,然后截取仿真波形制作pattern。那时的fault coverage可能70%就很不错了。由于电路规模很小,实际的产品合格率还是相当高的。有些极端的台湾公司,甚至不作测试,直接按照110%的量出货。


数字逻辑设计和20年前相比,最大最根本的变化,在于高级EDA工具的普遍运用,其中最最重要的是Scan。


为什么这几条后来运作不下去了呢?


1A,线延时所占的比重越来越大,门翻译在时序修正上浪费大量的时间。STA可以提高效率。


1B,由于流水线之间的不平衡,门翻译造成大量的性能损失。RTL Synthesis可以改善。


1C,网表上添加功能很难。RTL可以改善。


2A,Scan技术的采用,使得latch、RS-FF、双沿时钟被限制使用。


2B,FPGA验证的需求,使得手写的clock gate、行波时钟被限制使用。


2C,芯片越来越便宜,省面积的奇技淫巧被彻底放弃。


3A,设计测试向量,需要大量的仿真时间;而且pattern的质量较差,还浪费测试机台的时间。Scan可以解决。


3B,芯片越来越大,人工pattern的coverage远远不够。Scan可以解决。




相关推荐