Skip to content

IC设计与开发流程

学习verilog,重点不在于verilog语言本身,大家一致同意verilog比C语言简单。关键在于verilog代表了一个领域的跨越,实际上是从软件领域到IC领域的跨越。所以在此之前需要先了解目前芯片行业IC设计与开发的流程

IC开发流程

IC设计是一个自上而下的设计,这个很好理解,IC设计的整个周期长,很精细,如果需求不明确,那么后期很难修改。有点儿像盖房子,和现在的 互联网软件开发有比较明显的区别。

ic flow

目前来讲,行为级描述向RTL级的描述仍然是全手工完成的,RTL描述到门级网表可以使用综合工具来实现,再有自动布局布线工具来实现最终的物理版图。现在也有行为级能直接转换为RTL级的工具,虽然不成熟,但这是一种趋势。个人认为这种趋势是必然的,就像由机器码到汇编再到C语言以及更高级的语言。当然,在追求性能时,高级语言嵌入汇编也是必不可少的,HDL也应该具备这种能够嵌入的能力。

目前大家普遍采用 VCS + Verdi + UVM 的开发验证方案

            |--------------------------------------------------------------------------------------
            |                                                                                     |
    |-----------------| input  ***************                                                    |
    |   RTL xxxx.v    | ------>*             *                                                    V
    |-----------------|        *             *                                           **********************
                               *     VCS     *                                           *                    *
    |-----------------| input  *             *    output   |--------------|    input     *                    *
    |   testbech.v    | ------>*   compile   * ----------->|  xxxx.fsdb   | ------------>*        Verdi       *
    |-----------------|        *             *             |--------------|              *                    *
                               *             *                                           *                    *
    |-----------------| input  *             *                                           **********************
    |   filelist.f    | ------>*             *                                                     ^
    |-----------------|        ***************                                                     |
            |                                                                                      |
            |---------------------------------------------------------------------------------------

功能仿真(前仿真)

对建模文件进行编译,对模型电路进行功能上的仿真验证,查找设计的错误并修正。

此时的仿真验证并没有考虑到信号的延迟等一些 timing 因素,只是验证逻辑上的正确性。

逻辑综合

综合(synthesize),就是在标准单元库和特定的设计约束的基础上,将设计的高层次描述(Verilog 建模)转换为门级网表的过程。逻辑综合的目的是产生物理电路门级结构,并在逻辑、时序上进行一定程度的优化,寻求逻辑、面积、功耗的平衡,增强电路的可测试性。

但不是所有的 Verilog 语句都是可以综合成逻辑单元的,例如时延语句。

布局布线

根据逻辑综合出的网表与约束文件,利用厂家提供的各种基本标准单元库,对门级电路进行布局布线。至此,已经将 Verilog 设计的数字电路,设计成由标准单元库组成的数字电路。

时序仿真(后仿真)

布局布线后,电路模型中已经包含了时延信息。利用在布局布线中获得的精确参数,用仿真软件验证电路的时序。单元器件的不同、布局布线方案都会给电路的时序造成影响,严重时会出现错误。出错后可能就需要重新修改 RTL(寄存器传输级描述,即 Verilog 初版描述),重复后面的步骤。这样的过程可能反复多次,直至错误完全排除

IC基础

Wafer和Die

wafer是成品的晶圆,是原始的硅锭,经过溶解光刻胶,蚀刻,离子注入,电镀,铜层生长等操作之后的成品,将wafer切开,得到一个个CPU的核心,Die. CPU会内置很多gate,在binning阶段,封测发现问题就会封闭出现错误的部件。CPU的成本一个重要的参考量是每个wafer能制造多少个Die,Die的大小会影响Wafer的浪费比例,也会影响Die的良率(yield).

频率和电压

频率能够提高CPU的性能,但因为门延迟的问题存在,组成CPU的FET充放电都需要一定的时间,频率高于这个时间,CPU就会运行错误。提高电压能够提高FET的充放电速度,因此,频率的提高一般需要伴随着电压的提高。 光速大概是每秒30w公里,我们可以计算一下在固定频率下,电信号的传播距离。比如10GHz, 那么就是30w/10GHz = 30mm,假设一个die的宽度是10mm, 那么CPU的主频理论上不会超过30GHz。

老化(burn-in)

片间互联

一个package封装多个独立的Die