IC系统设计概述


IC设计有两个发展趋势:宏观上向系统级演化,即所谓的片上系统;微观上,进入纳米尺度的设计范畴。

片上系统是采用基于IP的开发方式,所面临的问题:

1、如何进行设计复用;

2、如何验证别人的IP

3、如何将IP集成在一起,并使其协调工作;

4、如何进行系统验证;

5、如何进行软硬件协同设计和验证

深亚微米设计中,比较棘手的问题有:

1、连线延时的估计;

2、串扰的分析与处理;

3、电源线上的欧姆压降的处理;

4、低功耗的设计;

通常一个IC系统的组成部分如下:数字部分、模拟部分、I/O部分、存储器、连线部分。IC的设计过程实际上是在性能、面积和功耗之间进行平衡。现代IC系统设计可以分为三大部分:系统设计、电路/逻辑设计、物理设计,还有一个嵌入式软件设计,不过这里不作为IC设计的内容。

系统设计主要包括算法设计和架构设计,具体内容:给出浮点数算法、进行软硬件划分、给出数据的定点表示、结构的并行性及流水线设计、存储器分配。

电路/逻辑设计是将系统设计的算法和架构付诸实现的过程,分为数字设计和模拟设计。对于数字设计,多采用verilog/VHDLRTL级实现并综合生成网表;对于模拟设计,一般采用电路图与SPICE完成设计。

物理设计是IC设计的最后一步,物理设计得到的GDSII文件被送到工厂进行生产。对于模拟电路和有特定要求的数字电路采用定制的办法完成物理设计;对于一般的数字设计,采用自动布局布线方法完成设计。对于深亚微米的谁,上述开发流程不再是顺序执行,而是互相迭代。

(一)系统设计

系统设计主要包括规范制定、算法设计与架构设计。算法或者行为模型可以看做是一个IC系统的可执行规范。对于通信、视频这类包含大量数字信号处理的系统,算法设计尤其重要。算法设计工程师要用C语言或者matlab,现在也用systemC来研究算法。架构设计是系统设计的重要步骤,通过性能估算和仿真,设计者可以确定设计中所采用的数据通路结构:例如设计中采用并行还是串行、是否需要流水线、数据宽度确定等。这些都是架构设计的范畴。架构设计和算法设计紧密联系。架构设计需要确定各模块如何划分、模块如何相连、存储器如何分配等问题。同时,在架构设计过程中,要仔细设计模块之间的接口、把芯片实现的功能和时序局部化。还需要考虑哪些设计需要IP完成,哪些设计需要*实现。IP分为三类:软核:可综合的RTL模型,可重复使用,灵活性高;固核是带有布局规划信息的网表;硬核是经过流片验证的版图。

系统设计对设计者提出了非常高的要求。设计者往往要具备嵌入式处理器、 数字信号处理器、 存储器、 系统总线等各方面的知识, 能够平衡系统存储器带宽和DSP的处理功能两方面的要求, 并且能够与软件开发者协同工作。

(二)电路、逻辑设计

这一部分分为数字电路设计和模拟电路设计。先介绍一下数字电路设计。数字电路设计一般从RTL级开始,代码完成之后进行仿真保证设计功能正确。然后进行用逻辑综合工具将RTL代码转化为门级网表。如下图所示,虚线上面是逻辑设计,下面是物理设计:

 IC系统设计概述

在一些深亚微米的设计中,物理设计和逻辑综合融合在一起,即物理综合。物理综合流程中,可以在芯片规划Floorplan之后,采用物理综合工具对网表进行反复的综合和布局。由于这时工具能够得到每个单元上较为准确的连线信息,因此可以消除设计不收敛的问题,提高芯片的性能。物理综合流程如图所示:

 IC系统设计概述

逻辑设计需要设计者对设计要求、基本电路结构、综合库、RTL语言、逻辑仿真等非常熟悉,并了解可测性设计、低功耗设计、可复用设计等技术。

模拟设计一般从经晶体管级开始,采用手工设计生成最终网表,如下为其设计流程:

IC系统设计概述

实际的IC设计一般都是数模混合系统,如下是数模混合仿真流程图:

 

 IC系统设计概述

(三)物理设计

上面已经提到对于模拟电路和有特定要求的数字电路采用定制的办法完成物理设计,也就是全定制电路的版图设计;对于一般的数字设计,采用自动布局布线方法完成设计,也就是自动布局布线的版图设计。下面是自动布局布线(APR)流程:

1)顶层规划:在实际的大型芯片设计中,往往很早就确定了芯片中各个块的位置。也就是说,芯片的顶层规划常常在逻辑设计的时候就开始了。如下为顶层规划步骤,在此过程要考虑如何缩小芯片面积、宏单元与PAD的连接、引脚方案、分析布线信息:

 IC系统设计概述

2)布局布线:一般分为布局、扫描链的优化(降低布线复杂度)、时钟树的综合及布线(在PR中称为时钟树综合)、布线。