登录注册   忘记密码

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

philewar | 2017/7/20 10:53:17

1.过去十年,我国的集成电路产业发展应该是是比较快速的,技术日新月异,数字IC从ASIC到SoC的发展,无论是ASIC或者是带“核”的SoC,相信它们的设计技术跟流程在这十年里应该有所变化,希望前辈们畅所欲言。
2.经过十年的发展,数字IC设计流程里面的流程大体相似,但是却又有点区别,比如综合策略,之前有自顶向下,自底向上,然后发展到ACS(自动芯片综合)技术。相信工业级界跟科研界也是有区别,希望前辈们能码一下你们的感觉。
3.无论是工业界还是科研界,应该很少人能够亲身经历设计规划到工艺制造,每个人应该都是负责自己的工作岗位的一部分,希望大家结合自己的岗位,发表一下自己的见解。


  • Wang Kellen  |   2017/7/20 10:56:16

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

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

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

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

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

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


  • forever snow  |   2017/7/20 16:22:55

    我将从工艺、数字后端、数字前端、验证、高层次综合几个方面进行比较。

    大神摩尔镇楼!

    TIM截图20170720161504.jpg

    工艺 

    * 这十年集成电路的发展基本遵循了“摩尔定律”

    当价格不变时,集成电路上可容纳的元器件的数目,约每隔18-24个月便会增加一倍,性能也将提升一倍。

    39f4250949816d3de6bd37afa5b6ff0e_b.jpg

    * 十年前我们还在讨论,硅工艺的极限是40nm,还是28nm。

      今天我们在讨论,硅工艺的极限是不是5nm?

    * 十年前我们还在讨论,哪种MOS的结构才是未来。

      今天FINFET晶体管,已经在16nm已下广泛使用,我们在讨论未来代替它的结构式是管状晶体管,还是超浅沟道晶体管? 

    3af1dc9c2ba289769de4aa68aad5ec1c_b.jpg

    数字后端

    * 十年前我们还不考虑芯片走线之间的SI (信号完整性)。

      今天SI的影响,变成了影响线延时的主要因素之一。

    * 十年前我们还在讨论,如何使刻线的尺寸达到更小。

      今天我们开发了 double pattern 技术, triple pattern技术,自对准技术,等等。工艺复杂度是之前的很多倍。

    8926f92d09f0e2903d89e70c7b8367e7_b.png

    *十年前后端设计中,主要的延时还是来自于基本单元。

     在今天,14nm,10nm的节点,线上的延时已经占了总延时的30%以上。

    *十年前芯片内部的可靠性检查还不多。

     在今天,ESD (Electro-Static discharge), EM(电子迁移) 等可靠性检查,成为必须检查的部分。

    *十年前低功耗设计概念刚刚进入大家的视野。

     在今天,low power design 已经成为各大公司的标配。在现在性能过剩的时代,大家都在比拼到底谁的功耗更低。

    203a5533ceee79bf0a4be74818674c16_b.jpg

    *十年前光刻当中的光衍射效应对于光刻没有什么影响。

     在今天,光刻检查(Lithography Friendly Design rules)已经成为了必要的检查。


    数字前端

    *十年前,VHDL语言和VERILOG语言还能平分秋色。

     现在VERILOG语言的普及率已经远远超过VHDL. 

    *十年前,电路性能只关注两个指标:时钟频率和面积。

     在现在,不提供电路功耗就是在耍流氓。

    *十年前,ARM总线搞定一切总线互连

     在现在,异构多核架构的巨大需求使得NoC技术迅速推进并应用。

    52f3894119d347b392a7465bfd69fda9_b.jpg

    验证

    *十年前,前端工程师自己就可以手动用verilog验证。

     在现在,验证工程师比前端工程师还多  


    高层次综合

    *十年前,硬件描述语言已经成为主流

     在现在,高层次综合已经在xilinx等几个厂商的领导下,逐步推进

     也许未来,Verilog也会跟手动画图的方式一样被淘汰。

    f1124032a17c45c4ad6281dcdd14f531_b.png


  • chadwick bi  |   2017/7/21 10:29:26

    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可以解决。