221
东东东东 东东东东东东 东东东东东东东东东东东东 1/935 东 10 东 东东 VLSI 东 东东东东

第 10 章 数字 VLSI 系统设计基础

  • Upload
    lani

  • View
    251

  • Download
    4

Embed Size (px)

DESCRIPTION

第 10 章 数字 VLSI 系统设计基础. 10.1 HDL 语言简介. 10.1.1 Verilog HDL 语言介绍. Verilog 的特点. • 可用于算法级、门级、寄存器级、开关级建模; 可用时序建模; 大量的 Verilog 仿真器; 与 C 语言类似,许多结构借鉴 C 语言; 具备扩展的建模能力; 语言标准为 IEEE Std 1364-1995(1995 年 ) 。. 1. 模块. • 模块是基本的电路描述单位,用于描述具体的设计。 可描述模块的外部端口,以便于模块间的通信和系统设计。 模块间可相互调用。. 实例:半加器. - PowerPoint PPT Presentation

Citation preview

Page 1: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 1/935

第 10 章 数字 VLSI 系统设计基础

Page 2: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 2/935

10.1 HDL 语言简介

Page 3: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 3/935

10.1.1 Verilog HDL 语言介绍

Page 4: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 4/935

• 可用于算法级、门级、寄存器级、开关级建模;•可用时序建模;•大量的 Verilog 仿真器;•与 C 语言类似,许多结构借鉴 C 语言;•具备扩展的建模能力;•语言标准为 IEEE Std 1364-1995(1995 年 ) 。

Verilog 的特点

Page 5: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 5/935

• 模块是基本的电路描述单位,用于描述具体的设计。•可描述模块的外部端口,以便于模块间的通信和系统设计。•模块间可相互调用。

实例:半加器

module HalfAdder (A, B, Sum, Carry); input A, B; output Sum, Carry; assign #2 Sum = A ^ B; assign #5 Carry = A & B;endmodule

模块 说明语句执行语句

1. 模块

Page 6: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 6/935

Verilog 模块有四种描述方式:1) 数据流描述方式 ;

2) 行为描述方式 ;

3) 结构描述方式 ;

4) 混合描述方式。

Page 7: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 7/935

2. 数据流描述方式

module HalfAdder (A, B, Sum, Carry); input A, B; output Sum, Carry; assign #2 Sum = A ^ B; assign #5 Carry = A & B;endmodule

基本机制:使用连续赋值语句

•以 assign 为前缀的语句是连续赋值语句;•连续赋值语句是并发执行的,执行顺序 与描述顺序无关。

例如:

Page 8: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 8/935

2-4 解码器电路 ` timescale 1ns/ 1nsmodule Decoder2x4 (A, B, EN, Z) ;input A, B, EN;output [ 0 :3] Z;wire Abar, Bbar;assign #1 Abar = ~ A; assign #1 Bbar = ~ B; assign #2 Z[0] = ~ (Abar & Bbar & EN ) ; assign #2 Z[1] = ~ (Abar & B & EN) ; assign #2 Z[2] = ~ (A & Bbar & EN) ; assign #2 Z[3] = ~ ( A & B & EN) ; endmodule

Page 9: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 9/935

` timescale 1ns/ 1nsmodule Decoder2x4 (A, B, EN, Z) ;input A, B, EN;output [ 0 :3] Z;wire Abar, Bbar;assign #1 Abar = ~ A; assign #1 Bbar = ~ B; assign #2 Z[0] = ~ (Abar & Bbar & EN ) ; assign #2 Z[1] = ~ (Abar & B & EN) ; assign #2 Z[2] = ~ (A & Bbar & EN) ; assign #2 Z[3] = ~ ( A & B & EN) ; endmodule

Page 10: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 10/935

3. 行为描述方式•使用下述过程语句描述:   1) initial 语句: 此语句只执行一次。    2) always 语句:此语句总是循环执行。•initial 和 always 语句中被赋值的对象只能是寄存器型。•语句 initial 和 always 在 0 时刻开始并发执行。

Page 11: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 11/935

1 位全加器电路 module v3 (A, B, Cin, Sum, Cout) ;input A ;input B ;input Cin ;output Sum ;output Cout ;reg Sum, Cout;reg T1, T2, T3;

always @ ( A or B or Cin ) begin Sum = (A ^ B) ^ Cin; T1 = A & Cin; T2 = B & Cin; T3 = A & B; Cout = (T1| T2) | T3; end

endmodule

Page 12: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 12/935

initial 语句的实例:` timescale 1ns / 1nsmodule Test (Pop, Pid ) ; output Pop, Pid; reg Pop, Pid; initial begin Pop = 0; Pid = 0; Pop= # 5 1; Pid = # 3 1; Pop= # 6 0; Pid = # 2 0; endendmodule

initial 语句中包含一个顺序过程。

Pop

Pid

Page 13: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 13/935

4. 结构描述方式•结构描述方式使用的结构:

1 )开关级原语 ( 在晶体管级 ) ;2 )内置门原语或用户定义的原语 ( 在门级 ) ;3 )模块实例 ( 创建层次结构 ) 。

•结构间通过使用连线来相互连接。

Page 14: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 14/935

全加器电路实例module FA_S (A, B, Cin, Sum, Cout);

input A, B, Cin;output Sum, Cout;wire S1, T1, T2, T3;

xor X1 (S1, A, B), X2 (Sum, S1, Cin);and A1 (T3, A, B), A2 (T2, B, Cin), A3 (T1, A, Cin),or O1 (Cout, T1, T2, T3);

endmodule

•内置门的实例语句。•门实例由连线类型变量 S1 、 T1 、 T2 和 T3 互连。

Page 15: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 15/935

5. 混合描述方式1 位全加器的实例: module FA_M (A ,B ,Cin ,Sum ,Cout);

input A ,B ,Cin; output Sum ,Cout; reg Cout ,T1 ,T2 ,T3; wire S1;

xor X1(S1, A, B); // 门实例语句。 always @ ( A or B or Cin ) // always 语句。 begin T1 = A & Cin; T2 = B & Cin; T3 = A & B; Cout = (T1| T2) | T3; end assign Sum = S1 ^ Cin; // 连续赋值语句。endmodule

结构行为

数据流

Page 16: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 16/935

6. 语言要素 •标识符、•注释、•数值、•编译指令、•系统任务、•系统函数、•连线、•寄存器。

Page 17: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 17/935

标识符、注释和语言书写的格式•标识符是任意一组字母、数字、 $ 和下划线的组合 ;•标识符的第一个字符必须是字母或下划线 ;•标识符区分大小。

Count 、 COUNT 、 _R1_D2 、 R56_68 、 FIVE$转义符常用于打印或显示的控制,它以 \( 反斜线 ) 开头。

\ 7 4 0 0\ . * .$\ { * * * * * * }\ ~Q

Page 18: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 18/935

关键词总是小写 : 如 always 、 begin 等等。两种注释形式,与 C++ 语言相同: 形式一: /* 注释字符串 */ ,可以扩展至多行。 形式二: // 注释字符串,在本行结束。采用自由格式书写,其语句可以跨行编写,也可在一行内编写。

module FAM (A ,B ,Cin ,Sum ,Cout); input A,B,Cin; output Sum,Cout; reg Cout,T1,T2,T3; wire S1;

xor X1(S1, A, B); // 门实例语句。 always @ ( A or B or Cin ) /*always 语句 */ begin T1 = A & Cin; T2 = B & Cin; T3 = A & B; Cout = T1|T2|T3; end assign Sum = S1 ^ Cin; /* 连续 赋值 语句 */endmodule

Page 19: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 19/935

1. 整数型整型数有两种书写方式:1 )简单的十进制数格式;2 )基数格式。简单的十进制数格式如:

32 、- 15 。基数格式的形式为: [ 位长 ] ' [ 基 ][ 值 ]其中,位长是可选的。基有: o(O)(8 进制 ) ;

b(B)(2 进制 ) ; d(D)(10 进制 ) ; h(H)(16 进制 ) 。

5'O37 //5 位 8 进制数4'D2 //4 位 10 进制数4‘B1x01 //4 位二进制数7'Hx //7 位 x ,即 xxxxxxx4'hZ //4 位 z ,即 zzzz‘o721 //9 位八进制数‘hAF //8 位十六进制数10‘b10 // 左边添 0 ,得 000000001010'bx0x1 // 左边添 x ,得 xxxxxxx0x13‘b10010011 // 最左边的位被截断, 得 3'b011

x/z :在 16 进制值中代表 4 位 x/z , 在 8 进制中代表 3 位 x/z , 在 2 进制中代表 1 位 x/z 。基数格式的数为无符号数。

Page 20: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 20/935

2. 实数实数可以用下列两种形式定义:1) 十进制计数法; 2.0 5.678 11572.12 0.1 2. // 非法:小数点两侧必须有 1 位数字2) 科学计数法; 23_5.1e2 23510.0; 忽略下划线 3.6E2 360.0 (e 与 E 相同 ) 5E - 4 0.0005

实数通过四舍五入被转换为最相近的整数。 42.446 , 42.45 转换为整数 42 92.5,92.699 转换为整数 93 - 15.62 转换为整数- 16 - 26.22 转换为整数- 26

Page 21: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 21/935

3. 字符串字符串用双引号给出,例如 : "INTERNAL ERROR" ,字符串是 8 位 ASCII 值的序列,存储“ INTERNAL ERROR”需要 8*14 位。

reg [1: 112] Message; Message= "INTERNAL ERROR" ;

反斜线 (\) 用于对确定的特殊字符转义,例如: \n 换行符、 \t 制表符、

Page 22: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 22/935

数据类型Verilog 有两大类数据类型:

连线类型:元件间的物理连线,值由驱动元件的值决定, 例如门的输出。 如果没有驱动元件连接到连线,连线的缺省值 为 z 。寄存器类型:抽象的数据存储单元,它只能在 always 语句 和 initial 语句中被赋值; 寄存器中的值在两次赋值之间保持不变。 寄存器类型变量缺省值为 x 。

Page 23: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 23/935

1. 连线类型连线数据类型表示结构实体之间的物理连接,连线数据类型有多种: • wire • tri ,可用于描述多个驱动源驱动同一根线的连线类型 • wor , trior , wand , triand , trireg , tri1 , tri0 , supply0 , supply1 。

用于连接单元的连线是最常见的连线类型, wire 与 tri 的语法和语义一致;连线类型 wire/tri 的说明语法为: wire/tri [m :l ] 数据 1, 数据 2,..., 数据 N;连线中的值被解释为无符号数。

wire R, S; //2 个 1 位的连线。wire [2:0] A; //A 是 3 位向量连线。

当有多个驱动器时, wire/tri 变量会产生不确定值。

Page 24: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 24/935

多个驱动源驱动一个连线,连线的有效值如下:

wire [3:1] Cla, Pla, Sla;assign Cla=Pla & Sla;...assign Cla=Pla ^ Sla;

Cla 是一个向量, Cla 有两个驱动源,每位的计算是相关的。如果第一个右侧表达式的值为 01x,并且第二个右测表达式的值为 11z , 那么 Cla 的有效值是 x1x 。

Page 25: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 25/935

2.向量和标量连线•  定义向量连线时可用 scalared 或 vectored 。• 一个 vectored 连线,不允许位选择和部分选择操作, 只能整体赋值,例如: wire vectored [3:1] G; //不允许位选择 G[2] 和 // 部分选择 G[3:2] 。 wire scalared [4:0] B; //允许位选择 B[2] 和 // 部分选择 B[3:1] 。• 如果没有定义关键词,缺省值为标量。

Page 26: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 26/935

3. 寄存器类型  寄存器是数据存储单元的抽象,寄存器有多种类型: • reg • integer • time • real • realtime其中,典型的是 reg 和 memory 。  

Page 27: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 27/935

(1) reg 寄存器类型 reg 最常见: reg [msb: lsb] 寄存器名 1, 寄存器名 2,... 寄存器名 N; msb 和 lsb 定义范围,均常数。 范围定义的缺省值是 1 位寄存器。 实例: reg [3:0] S; // S 为 4 位寄存器。 reg C; //1 位寄存器。 reg [1:32] K,P,L; 寄存器可以取任意长度。 寄存器中的值为无符号数 , 例如: reg [1:4] C;

reg [1:4] C; C= - 2; //C 的值为 1110 , 1110 是 2 的补码。 C=5; //C 的值为 0101 。

Page 28: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 28/935

存储器是一个寄存器数组,说明语句的形式如下: reg [m:1] 名 1[上限 1: 下限 1] ,名 2[上限 2: 下限 2] , ... ;

例如: reg [0:3] M [0:63] ; //M 为 64 个 4 位寄存器的数组。 reg B[1:5] ; //B 为 5 个 1 位寄存器的数组。 reg [1:8] R [15:0], D;

R 是存储器,是 16 个 8 位寄存器数组,而 D 是 8 位寄存器。

Page 29: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 29/935

存储器赋值不能在一条赋值语句中完成,但是寄存器可以。例:reg [1:5] D; //D 为 5 位寄存器。reg B [1:5]; //B 为 5 个 1 位寄存器的存储器。 ... D=5'b11011; // 赋值正确。 B=5‘b11011; // 赋值不正确。 B[1]=1‘b1; // 赋值正确。

B[2]=1‘b1; B[3]=1‘b0; B[4]=1‘b1; B[5]=1‘b1;对存储器赋值的方法是分别对存储器中的每个字赋值,例:

reg [0:3] X[1:4] ... X[1]=4'hA; X[2]=4'h8; X[3]=4'hF; X[4]=4'h2;

Page 30: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 30/935

不允许对存储器变量值部分选择或位选择,例如:reg[1:8] A , D[0:63];D[60][2] //错。D[60][2:4] //错。

在存储器中读取一个位或部分选择一个字的方法: 1) 将存储器单元赋值给寄存器变量, 2) 然后对寄存器变量采用部分选择或位选择操作。例如, A[2] 和 A[2:4] 是合法的表达式。

Page 31: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 31/935

( 2 ) Integer 寄存器类型 整数寄存器包含整数值,典型应用为高层次行为建模。 整数寄存器说明形式: integer int1, int2 ,... intN [msb:1sb] ; msb 和 lsb 是常量表达式,数组界限的定义是可缺省的。 一个整数最少容纳 32位。 实例: integer A, B, C; // 三个整数型寄存器。 integer Hist [3:6]; //一组四个寄存器。 整数型寄存器可存储有符号数,对算术操作符提供 2的补码 运算结果。 整数不能作为位向量访问,例如: B[6] 和 B[20 :10 ] 是非法的。

Page 32: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 32/935

截取位值的方法:将整数赋值给 reg 类型变量,对 reg操作后,赋还给整数。 reg [31:0] R; integer I; ... I[ 6 ] 和 I[ 2 0 : 1 0 ] 是不允许的。 ... R =I; R[ 6 ] 和 R[ 2 0 : 1 0 ] 是允许的 . I=R; 类型转换自动完成 . 不必使用特定的函数。 integer J; reg [3:0] Bcq; J = 6; // J 的值为 3 2 ' b 0000 0000 0000 0000 0000 0000 0000 0110 。 Bcq = J; // Bcq 的值为 4 ' b 0110 。 Bcq = 4'b0101. J = Bcq; //J 的值为 32 ' b 0000 0000 0000 0000 0000 0000 0000 0101 。 J = - 6; // J 的值为 32 ' b 1111 1111 1111 1111 1111 1111 11111010 。 Bcq = J; //Bcq 的值为 4 ' b 1010 。

Page 33: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 33/935

(3)time 类型time 类型寄存器用于存储和处理时间。time 类型寄存器说明方式 : time timeid1, timeid2 , . . ., timeidN [ msb:1sb] ;msb 和 lsb 是表明范围界限的常量表达式。如果未定义界限,每个标识符存储一个至少 64 位的时间值。时间型寄存器只存储无符号数 , 例如 : time Events[0:31]; // 时间值数组。 time CurrTime; //CurrTime 存储一个时间值。

Page 34: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 34/935

(4) real 寄存器和 realtime 寄存器类型 说明方式: real real_reg1, real_reg2, . . ., real_regN; 实数时间说明: realtime realtime_reg1,realtime_reg2,...,realtime_regN; realtime 与 real 类型完全相同 , 例如 : real Swing, Top; realtime CurrTime; real 说明的变量的缺省值为 0 。 不允许对 real声明值域、位界限或字节界限。 当将值 x 和 z 赋予 real 类型寄存器时,这些值作 0处理。 real RamCnt; ... RamCnt= 'b01x1Z; RamCnt 在赋值后的值为 'b01010 。

Page 35: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 35/935

位选择从连线向量或寄存器向量中抽取特定的位, 形式如下: 对象名 [ 选择表达式 ]

State[1] && State [4] // 寄存器位选择。 Prt[0] | Bbq // 连线位选择。  选择表达式的值为 x 、 z 或越界,则位选择的值为 x , 例如: S[x] 值为 x 。   部分选择是选择连线或寄存器向量中的连续序列, 形式如下: 对象名 [ 常数表达式 1 : 常数表达式 2] State [1:4] // 寄存器部分选择。 Prt[1:3] // 线网部分选择。 选择范围越界或为 x 、 z 时,部分选择的值为 x 。

位选择和部分选择

Page 36: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 36/935

  参数是一个常量,常用于定义时延和变量的宽度。 说明形式: parameter 参数 1= 表达式 1, 参数 2= 表达式 2,…, 参数 n= 表达式 n ; 实例: parameter LOAD=12 ; parameter LINELENGTH=132, ALL_X_S= 16'bx; parameter BIT=1, BYTE = 8, PI = 3.14; parameter STROBE_DELAY=(BYTE+BIT)/2; parameter TQ_FILE="/home/bhasker/TEST/add.tq" ;

参数

Page 37: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 37/935

表达式与操作符

常数、参数、连线、寄存器、位选择、部分选择、存储器单元、函数调用。

算术操作符关系操作符、相等操作符、逻辑操作符;按位操作符;归约操作符;移位操作符;条件操作符;连接和复制操作符。

表达式 ::==操作数 +操作符;

操作数 操作符

Page 38: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 38/935

操作符的优先级:高低

相同

Page 39: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 39/935

可用圆扩号改变优先级的顺序: 1+2*4-4/6=1+8-0=9 ( 1+2 ) *4-4/6=121. 算术操作符

+/ - ( 一元和二元加 /减 ) 、 *(乘 ) 、 /(除 ) 、 %(取模 ) 。算术表达式结果的长度由最长的操作数决定。例: wire[4:1]B,D; wire[1:5]C; wire[1:6]P; wire[1:8]A;

...assign A=(B+C)+(D+P); 表达式左端的操作数长为 8 ,所有的加操作 使用 8 位进行。

Page 40: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 40/935

1. 算术操作符执行算术操作时,须区分无符号数和有符号数。无符号数存储在:线网、寄存器和基数格式的 整数中。有符号数存储在:整数寄存器和十进制形式的 整数中。reg [0:5] B;integer T; ...B= - 4'd12; // B 值为 110100 , B 是无符号数。T= - 4‘d12; //T 值为 110100(即 -12 ),是有符号数。

Page 41: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 41/935

2. 关系操作符 >( 大于 ) 、 <( 小于 ) 、 >=(不小于 ) 、 <=(不大于 ) 。

关系操作符的结果为真( 1 )或假( 0 )。如果操作数中有一位为 X 或 Z ,那么结果为 X 。例: 23 > 45 ,结果为假; 52< 8'hxFF ,结果为 x 。如果操作数长度不同,长度较短的操作数从左方开始添 0补齐。例: 'b1000 > = 'b01110 等价于: 'b01000 > = 'b01110 ,结果为假。

Page 42: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 42/935

3. 相等关系操作符 = =(逻辑相等 ) 、 ! = (逻辑不等 ) 、 = = =( 全等 ) 、 != =( 非全等 ) 逻辑比较:操作数包含 x 或 z ,结果为未知。 全等比较:严格按位比较。不进行解释, 结果一定可知。例 : D='b11x0 ; A='b11x0 ; 那么: D = =A 的值为 x , D = = =A 的值为 1 。

Page 43: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 43/935

如果操作数的长度不相等,长度较小的操作数在左侧添 0补位,例如: 2'b10 = = 4'b0010与下面的表达式相同: 4'b0010 = = 4'b0010结果为真( 1 )。

Page 44: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 44/935

4. 逻辑操作符 &&(逻辑与 ) 、 ||(逻辑或 ) 、! (逻辑非 )操作符在逻辑值 0 或 1上操作,操作结果为 0 或 1 。若操作数包含 x ,则结果为 x 。

!x 结果为 x

C='b0; //0 为假D='b1; //1 为真

C && D 结果为 0 (假 )C || D 结果为 1 ( 真 )! D 结果为 0 (假 )

对于向量操作 , 非 0向量作为 1处理。

A='b0110;B='b0100;

A||B; 结果为 1A&&B; 结果为 1!A,!B; 结果均为 0 。

Page 45: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 45/935

5. 按位操作符 ~( 一元非 ) 、 &( 二元与 ) 、 |( 二元或 ) 、 ^( 二元异或 ) 、 ^~( 二元异或非 )

Page 46: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 46/935

5. 按位操作符 ~( 一元非 ) 、 &( 二元与 ) 、 |( 二元或 ) 、 ^( 二元异或 ) 、 ^~( 二元异或非 )

假定 : A = 'b0110; B = 'b0100; 那么 : A | B 结果为 0 1 1 0 A & B 结果为 0 1 0 0 如果操作数长度不等 , 长度较小的操作数在 左侧补 0: 'b0110 ^ 'b10000 'b00110 ^ 'b10000 结果为 : ' b10110 。

Page 47: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 47/935

6. 归约操作符 在单一操作数所有位上操作,产生 1 位结果。• & (归约与 ) 如果存在位值为 0,那么结果为 0 ;• ~& (归约与非 ), 与 & 相反 ;• | (归约或 ) 如果存在位值为 1 ,那么结果为 1 ;• ~| (归约或非 ), 与 | 相反。• ^(归约异或 )如果操作数中有偶数个 1, 结果为 0 ;否则结果为 1 。• ~^(归约异或非 ), 与 ^ 相反。如果存在位值为 x 或 z ,则结果为 x 。归约异或操作符用于决定向量中是否有位为 x 。

假定 : A = 'b0110;B = 'b0100;C='b01x0 ,则 :^C 结果为 x 。|B 结果为 1&B 结果为 0~^A 结果为 1

Page 48: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 48/935

7. 移位操作符移位操作符有: <<( 左移 ) , >>(右移 ) 。移位操作的格式: < 变量 > << 移位次数、 < 变量 > >> 移位次数。例如: reg [0:7] Q ; Q=8'b00000111; 那么:

Q>>2 是 8'b00000001

Page 49: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 49/935

8. 条件操作符 条件操作符根据条件表达式的值选择表达式: 条件表达式 ? 表达式 1 :表达式 2 如果条件表达式为真,选择表达式 1 ;否则选择表达式 2 。 例: wire [0:2] S= M>18 ? A : C;

Ctr= (Ctr!=25) ? (Ctr+1) : 5; always #5 Ctr = (Ctr!=25) ? (Ctr+1) : 5;

Page 50: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 50/935

9. 连接操作  将短表达式合并成长表达式的操作 : { 表达式 1, 表达式 2, ... , 表达式 N}  例如 : wire [7:0] D; wire [11:0] A; assign D [7:4] = {D[0], D[1], D[2], D[3]}; // 以反转的顺序将低端 4 位赋给高端 4 位。 assign D = {D[3:0], D[7:4]}; //高 4 位与低 4 位交换。 不允许连接非定长常数,例如下式非法: {D, 5} //5没有说明长度。

Page 51: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 51/935

10. 复制操作 通过指定重复次数来执行操作: {重复次数 { 表达式 1, 表达式 2, ..., 表达式 N}} 实例: A={3{4'b1011}}; // 位向量 12'b1011_1011_1011 。 A={{4{D[7]}},D}; // 符号扩展。 {3{1'b1}} ; // 结果为 111 。 {3{Abc}} // 为 {Abc,Abc,Abc} 。

Page 52: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 52/935

10.1.2 硬件描述语言 VHDL

Page 53: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 53/935

VHDL VHSIC Hardware Description Language .VHSIC Very High Speed Integrated Circuit .VHDL 的标准版本1987 年 IEEE-Std 1076-19871993 年 IEEE-Std 1076-1993

Page 54: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 54/935

1. 实体• 一个电路单元在 VHDL 中称为实体( design entity )。• 实体 = 实体说明 + 结构体。• 一个实体可有多种构造形式。

architecture test_arch of test isbegin -- <<enter your statements here>>end test_arch;

VHDL 程序实例

entity test is port ( a,b: in STD_LOGIC; c:out STD_LOGIC );end test;

library IEEE;use IEEE.std_logic_1164.all;

库说明实体说明

结构体

Page 55: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 55/935

实体说明的一般形式为: entity (实体名) is (外观说明); end(实体名);

例如:一个全加器的外观:全加器

Full_adder

xy

cin

sum

cout

全加器的实体说明为: entity full_adder is port (x, y, cin: in Bit; sum, cout: out Bit); end full_adder ;

Page 56: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 56/935

端口 port提供了动态信息通道;每个 port都必须有 : 名字; 通信模式; 数据类型。VHDL提供了 4 种端口模式: in ; out ; inout ; buffer 。inout 和 buffer 的相似之处是可读可写,而不同之处是 buffer 端口只能有一个源。

entity full_adder is port (x, y, cin: in Bit; sum, cout: out Bit);end full_adder ;

全加器实体说明的分析全加器

Full_adder

xy

cin

sum

cout

Page 57: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 57/935

2. 结构体结构体用来描述实体的内部情况,一般形式为 : architecture(结构体名) of(实体名) is ( 说明 ) ; begin (构造语句); end (结构体名);实现构造所需的 : 内部连线、 变量、 常量、 元件等均在 begin之前加以说明。

Page 58: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 58/935

结构体构造的不同方法:1. 行为级构造

2. 数据流级构造3. 结构级构造

Page 59: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 59/935

1. 行为级构造

全加器Full_adder

xy

cin

sum

cout

全加器功能表

输入 输出

(x,y,cin)= 输入中有 1

的数目 N Sum Cout

000 0 0 0

001, 010, 100 1 1 0

011, 110, 101, 2 0 1

111 3 1 1

entity full_adder is port (x, y, cin: in Bit; sum, cout: out Bit);end full_adder ;architecture behavior of full-adder isbegin process variable N : Integer ; constant Sum_vector : Bit_vector(0 to 3) :=“0101” ; constant Carry_vector : Bit_vector(0 to 3) :=“0011”; begin wait on x,y,cin; N := 0; if X =‘1’then N := N+1 ; end if ; if Y =‘1’then N := N+1 ; end if ; if Cin =‘1’then N := N+1 ; end if ; Sum<= Sum_vector(N); Cout<= Carry_vector(N); end process ;end behavior ;

Page 60: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 60/935

entity full_adder is port (x, y, cin: in Bit; sum, cout: out Bit);end full_adder ;architecture behavior of full-adder isbegin process variable N : Integer ; constant Sum_vector : Bit_vector(0 to 3) :=“0101” ; constant Carry_vector : Bit_vector(0 to 3) :=“0011” ; begin wait on x,y,cin; N := 0; if X =‘1’then N := N+1 ; end if ; if Y =‘1’then N := N+1 ; end if ; if Cin =‘1’then N := N+1 ; end if ; Sum<= Sum_vector(N); Cout<= Carry_vector(N); end process ;end behavior ;

•进程结构;•顺序执行语句;•只描述了全加器的外部行为、功能和性能指标,没有涉及内部。•可用于仿真,但不能进行逻辑综合,变量之间没有显式逻辑关系。

Page 61: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 61/935

2. 数据流级构造• 数据流级 ( 寄存器传输级 RTL:Register Transfer Level) 构造。• 这种构造不仅能用于仿真,而且可以进行逻辑综合。

entity full_adder is port (x, y, cin: in Bit; sum, cout: out Bit);end full_adder ;

architecture RTL of full-adder is signal S : Bit begin S<= x xor y after 10 ns ; Sum <=S xor cin after 10 ns ; cout <=(S and cin) or (x and y) after 20 ns ;end RTL ;

Page 62: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 62/935

architecture rtl of full-adder is signal S : Bit begin S <= x xor y; Sum <= S xor cin; cout <= (S and cin) or (x and y);end rtl ;

cinScinyxsum yxcinSyxcinyxcout

全加器的输出与输入之间的逻辑关系为:

S 是引入的一个内部信号,上两式描绘了从输入到输出的数据流。

Page 63: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 63/935

• 构造中“ <=” 为信号赋值符,• 关键字 and 、 or 和 xor 分别表示逻辑“与”、“或”和“异或”。• 这种构造比行为描述要具体,但仍未反映实体内的具体结构。

architecture rtl of full-adder is signal S : Bit begin S<= x xor y; Sum <=S xor cin; cout <=(S and cin) or (x and y);end rtl ;

Page 64: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 64/935

3. 结构级构造U1半加器

half-adder U2半加器

half-adder

xy

a

b

cin U3或门

or-gate

c cout

sum

全加器的一种逻辑结构图• 三个元件:两个半加器、一个或门;• 元件之间、元件与实体端口之间用信号线相连。

Page 65: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 65/935

U1半加器

half-adder U2半加器

half-adder

xy

a

b

cin U3或门

or-gate

c cout

sum

• 定义了两类元件的名称 half-adder/or-gate及各自的端口;• 定义构造中的内部信号线: a 、 b 、 c ;• U1 、 U2 和 U3 是三个引用元件的标号;

Page 66: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 66/935

architecture structure of full-adder iscomponent half-adder port ( A, B : in Bit ; S, C : out Bit );end component ;component or-gate port ( In1, In2 : in Bit; Out1 : out Bit );end component;signal a,b,c;begin U1: half-adder port map ( x, y, a, b ); U2: half-adder port map ( a, cin, sum, c ); U3: or-gate port map ( b, c, cout );end structure;

U1半加器

half-adder U2半加器

half-adder

xy

a

b

cin U3或门

or-gate

c cout

sum

• 端口映射 port map 建立元件及各端口所连信号的对应关系。• 整个构造直接对应逻辑图。

Page 67: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 67/935

3. VHDL 中的对象和数据类型

Page 68: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 68/935

VHDL 有三类对象( object ): 1) 常量( constant ); 2) 变量( variable ); 3) 信号( signal )。 对象的赋值: 1) 常量( constant ); 定义时赋值! 2) 变量( variable ); 赋值后立即生效! 3) 信号( signal )。 赋值后经延迟才能 生效!

entity full_adder is port (x, y, cin: in Bit; sum, cout: out Bit);end full_adder ;architecture behavior of full-adder isbegin process variable N : Integer ; constant Sum_vector : Bit_vector(0 to 3) :=“0101”; constant Carry_vector : Bit_vector(0 to 3) :=“0011”; begin wait on x,y,cin; N := 0; if X =‘1’then N := N+1 ; end if ; if Y =‘1’then N := N+1 ; end if ; if Cin =‘1’then N := N+1 ; end if ; Sum<= Sum_vector(N); Cout<= Carry_vector(N); end process ;end behavior ;architecture rtl of full-adder is signal S : Bit begin S <= x xor y; Sum <= S xor cin; cout <= (S and cin) or (x and y);end rtl ;

Page 69: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 69/935

259 , 0 , 10E4 , 16#D2#( 16 进制), 8#702#( 8 进制), 2#11010010#( 2 进制), 1.0 , 0.0 , 8#43.6#E-4 , 4 3.6E-4 。

‘a’(字符)、 “ abcd”(字符串)。 B“10101000”( 2 进制位串)、 X“AC”( 16 进制位串)、 O“574”( 8 进制位串)。 2.3ns(物理数)、 15 kohm( 15kΩ物理数) ns 、 kohm 是专门定义的物理单位。

下划线与可读性: 65_971.333_333 , B”1010_1011_1100”

对象的数据类型 1) 整数; 2)浮点数; 3) 字符; 4) 字符串; 5) 位串; 6)物理数。

Page 70: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 70/935

数据类型数据类型由 type 语句定义,数据类型分纯量类型和复合类型。 1. 纯量类型 纯量类型对象只能保存一个数。 形式: type < 数据类型名 > is < 类型定义 > ; 例如: type Integer is range -2147483648 to 2147483647; type Real is range -16#0.7FFFFF8#E+32 to 16#0.7FFFFF8E+32; type Bit is (‘0’,‘1’); 枚举方法 type Boolean is (False, True); 枚举方法 均是 VHDL预定义的。 可以用 type 语句定义其他的纯量数据类型。

Page 71: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 71/935

物理数的定义: 数值范围 +物理单位。例如下面是“时间”的定义: type Time is range –(2**31–1) to (2**31–1) units fs; ――fs, 是基本单位。以下为导出单位 ps = 1 000 fs; ―― ps ns = 1 000 ps; ―― ns us = 1 000 ns; ―― us ms = 1 000 us; ―― ms sec = 1 000 ms; ――s min =60 ps; ―― min hr = 60 min; ―― h end units;

Page 72: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 72/935

2. 数组类型 复合数据类型,数组元素数据类型相同。 定义数组类型用关键字 array : type Word is array (15 downto 0) of Bit;

下标范围不定,如: type Bit_vector is array ( Natural range <>) of Bit;

下标的数据类型为自然数 Natural , VHDL预定义数据类型, 具体定义某个对象时,再确定对象的下标范围。

Page 73: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 73/935

3.记录类型记录是复合数据类型、由多个元素组成;各个元素有各自的名字和不同的数据类型。用关键字 record ,要说明记录中每个元素的名字及其数据类型。实例:

type Regist is recordF0, F1: Real;R0, R1: Integer;

end record;

Page 74: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 74/935

对象的说明 使用的对象都要预先说明,对象说明的一般形式为

< 对象类型 > < 对象名 > : < 数据类型 > := <初值 >

实例: constant A : Bit_vector ( 0 to 3 ); variable N : Integer : = 0 ; signal S : Bit ;

Page 75: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 75/935

枚举形式 :constant A : Bit_vector : =(‘0’,‘0’,‘1’,‘0’);constant A : Bit_vector : =(3=>‘0’,2=>‘1’,1=>‘0’,0=>‘0’);constant A : Bit_vector : =( 2=>‘1’,others=>‘0’);

constant A : Bit_vector : = “0010” ; 0123

Page 76: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 76/935

先定义类型: type Rational is record

Numerator : Integer; Denominator : Integer;

end record; 再定义对象 S :

signal S : Rational : = (155,2077); signal S : Ratoinal : = (Denominator =>2077 , Numerator=>155) ; 使用: S.Numerator <= 2077;

Page 77: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 77/935

VHDL 中数的运算

•求模与求余两种运算必须是整数。•整数的必须是正整数。•浮点数的乘方运算的幂是整数。•两运算数的类型必须相同。

VHDL的预定义算符 运算种类 算符 运算

+ 正号 - 负号

Abs x 单目运算

not 非 + 加 - 减 * 乘 / 除

Mod 求模 * * 乘方 & 连接

Rem 求余 and 与 Or 或

nand 与非 = 相等 /= 不等于 < < > > <= 小于等于 >= 大于等于 nor 或非

双目运算

xor 异或

Page 78: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 78/935

type Arr is array ( Natural range <> ) of Integer;

constant A1 : Arr := ( 3,4);

constant A2 : Arr := ( 5,6);

constant B1 : Integer :=1;

constant B2 : Integer :=2;

constant A3 : Arr := A1&A2 ――( 3,4,5,6);

constant A4 : Arr := B1&A3&B2 ――(1,3,4,5,6,2);

Page 79: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 79/935

10.2 数字系统结构设计

Page 80: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 80/935

仙童公司的 CPU芯片照片

VLSI 的规模 : 80 年代, 2万〜 50万个晶体管。

Page 81: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 81/935

•80 年代,出现了超大规模集成电路 (VLSI) , 采用计算机辅助设计 (CAD) 和辅助工程技术 (CAE) 进行 芯片的设计和生产;•90 年代,出现了甚大规模集成电路 (ULSI),

采用电子设计自动化( EDA )技术进行芯片的设计;

Page 82: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 82/935

•到了 21 世纪初,出现了 SOC 技术,半导体工艺和电路设计 水平的发展已使在一个芯片上集成一个系统成为可能;

SOC芯片实例: Intel手机芯片 PXA800F

主频为 312MHz 的 XScale处理器 ;4兆片上集成闪存 ;512K 的 SRAM;

Page 83: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 83/935

‣ 著名的摩尔定律还将使用至少 10 年! ‣ 目前的工艺仍有巨大的改进潜力,作为 VLSI 基础的

CMOS 工艺到了 0.1微米以下将进入纳米时代,纳米 技术将为 SOC技术的实现提供更加优越的基础。

‣ 目前 90纳米 CMOS 工艺已经加入量产阶段;‣ 65纳米工艺已经加入最后实验阶段, 30 、 10纳米工艺已 进入研究计划;

‣ 目前主流工艺从 0.18微米 CMOS向 0.13微米 CMOS 工艺过渡, 设计方法将有很大变化。

Page 84: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 84/935

10.2.1 主要设计方法—自顶向下方法采用自顶向下( Top-down )方法进行设计,设计次序:

行为设计结构设计逻辑设计电路设计版图设计

Page 85: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 85/935

行为设计阶段要确定芯片的功能、性能、面积、工艺和成本。

根据芯片的特点,将其分解为接口清晰、关系明确、尽可能简单的子系统; 利用子系统设计出一个较好的总体结构。( 子系统举例:算术运算单元、控制单元、数据通道 、算法状态机等。 )

结构设计阶段

Page 86: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 86/935

考虑各功能模块的具体实现问题;同一功能块可能有多种实现方法,要尽可能采用规则结构;要充分利用已经过考验的逻辑单元或模块。(各种 IP核,如: ARM核, M-Core核, Altera核, Xilinx核等 )

逻辑设计阶段

Page 87: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 87/935

逻辑图将进一步转换成电路图,在这个阶段,一般需要进行硬件仿真,以确定逻辑设计的正确性。电路设计阶段

要根据电路图绘制用于生产的电路版图。版图设计阶段

Page 88: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 88/935

10.2.2 设计流程中的重点问题设计流程可分 3 个综合阶段:高层综合、逻辑综合和物理综合。

行为设计结构设计逻辑设计电路设计

版图设计

高层综合

逻辑综合

物理综合

Page 89: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 89/935

在英语文献中,表现综合的词是 Synthesize , Synthesize 的原义是合成、综合,意指用合成方法合成出新的事物,在集成电路设计领域,综合是指将一种形式的设计转换成另一种设计形式的过程。

Page 90: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 90/935

高层综合也称行为级综合( behavioral synthesize ),高层综合就是将系统的行为、各个组成部分的功能及其输入和输出,用硬件描述语言 HDL( VHDL 、 Verilog )加以描述 , 然后进行行为级综合,同时通过高层次硬件仿真进行验证。 例如: Xilinx,Altera’s FPGA

Developer’s Kit and system

1. 高层综合

Page 91: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 91/935

高层综合的任务是将一个设计的行为级描述转换成寄存器传输级的结构描述。它首先翻译和分析用 HDL语言描述的设计,并在给定的一组性能、面积或功耗的约束条件下,确定需要哪些硬件资源,如执行单元、存储器、控制器、总线等,以及确定在这一结构中各种操作的次序。还可通过行为级和寄存器传输级硬件仿真进行验证。

Page 92: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 92/935

一个设计可能有多种硬件结构实现方式,因此,高层综合要在满足目标和约束的条件下,找到一个代价最小的硬件结构,并使设计的功能最佳化。

Page 93: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 93/935

逻辑综合将逻辑级行为描述转换成使用门级单元的结构描述(门级结构描述称为网表描述),同时还要进行门级逻辑仿真和测试综合。

2. 逻辑综合

Page 94: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 94/935

逻辑级行为描述可以是状态转换图、有限状态机、也可以是布尔方程、真值表或硬件描述语言。

Page 95: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 95/935

逻辑综合过程还包括一系列优化步骤,如资源共享、连接优化和时钟分配等。优化的目标是面积、速度、功耗等指标中的一种或几种的折衷。

优化

Page 96: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 96/935

逻辑综合一般分两个阶段: ( 1 )与工艺无关的阶段,采用布尔操作 或代数操作技术来优化逻辑; ( 2 )工艺映射阶段,根据电路性质 (如组合或时序型)及采用的结构 (多层逻辑、 PLD 或 FPGA )做出 具体的映象,将与工艺无关的描述 转换成门级网表、 PLD 或 FPGA 中的一种的执行文件。 工艺无关阶段 工艺映射阶段

Page 97: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 97/935

在逻辑综合的过程中,需要进行细致的时序和时延分析,以及逻辑仿真,逻辑仿真是保证设计正确的关键步骤,过去通常采用软件模拟的方法,近年来则强调硬件仿真手段,如通过PLD 或 FPGA 进行仿真。

Page 98: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 98/935

测试综合是提供测试图形的自动生成,为可测性设计提供高故障覆盖率的测试图形,测试综合还可消除设计中的冗余逻辑,诊断不可测的逻辑结构,还能自动插入可测性结构。

Page 99: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 99/935

一个芯片可封装几百万到 1亿个晶体管,测试图形的数目急剧增加,导致测试周期变长,工作站资源耗尽。解决办法:( 1 )测试模式压缩,压缩比为 20% 至 60% 。( 2 )找到在 64 位操作系统上可运行的测试软件。 ( 3 )测试软件面临着深亚微米工艺和频率提高所带来的新问题。 测试静态阻塞 (stuck-in)故障的 ATPG测试模式已不再适用, 较好的方式是,对过去的功能模式组进行分类以判断哪些 故障无法检测,然后创建 ATPG 模式来捕获这些遗漏的 故障类型。

Page 100: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 100/935

物理综合也称版图综合 (layout synthesis) ,物理综合将网表描述转换成版图。这时对每个单元确定其几何形状、大小及位置,确定单元间的连接关系。它的任务是将门级网表自动转换成版图。

3. 物理综合

Page 101: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 101/935

布图的详细步骤电路图(网表输入)布图规划( floorplan )布局( placement )

全局布线( global routing )详细布线( detailed routing )版图参数提取( LPE )

一致性检查( LVS )后模拟( post simulation )版图生成( layout )

物理综合 (续 1)

Page 102: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 102/935

布图规划是对设计进行物理划分,同时对设计的布局进行规划和分析。在这一步骤里,面向物理的划分,其层次结构可以与逻辑设计时的划分有所不同;布图规划可以估算出较为精确的互连延迟信息、预算芯片的面积以及分析得到何处为拥挤的布线区域。

Page 103: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 103/935

布局是指将模块安置在芯片上的适当位置,并能满足一定的目标函数。一般布局时总是要求芯片面积最小、连线总长最短、电性能最优并且容易布线。布局又分为初始布局和迭代改善两个子步骤 : ( 1 )初始布局的目的是为了提高布局的 质量以及减少下一阶段的处理次数 . ( 2 )迭代改善是一个优化的过程,它是 决定布局质量的关键。

Page 104: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 104/935

布线是根据电路的连接关系,在满足工艺规则和电学性能的要求下,在指定的区域(面积、形状、层次等)内完成所需的全部互连;对连线长度和通孔数目尽可能地进行优化。

Page 105: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 105/935

一般有两种布线方法 : (1)直接布线方法。 它是直接对整个电路进行布线, 布线时通常采取顺序方式; (2) 分级布线方法。 它将布线问题分为全局布线和 详细布线; 这种方法通过适当的划分,将 整个布线区域分为若干个布线 通道区,然后进行适当的布线 分配,接着进行详细布线,对 分配到当前通道区中的所有线 网段的集合,确定它们在通道 中的具体位置。

Page 106: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 106/935

在完成布局布线后,要对版图进行设计规则检查、电学规则检查以及版图与电路图的一致性检查,在版图寄生参数提取的基础上,再次进行电路分析 ( 即后模拟 ) 。只有在所有的检查都通过并证明正确无误后,才可将布图结果转换为掩膜文件,掩膜文件最终还要转换成掩膜版。

Page 107: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 107/935

前端设计完成后将网表交给版图设计人员,在过去,一般只要布线能布通,时序基本上能满足。

行为设计结构设计逻辑设计电路设计

版图设计

前端设计

后端设计

设计流程的习惯分法:前端设计和后端设计。

网表和单元库沟通接口

Page 108: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 108/935

10.3 逻辑综合

Page 109: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 109/935

自顶向下设计的过程就是不断进行综合的过程。 自动综合是自顶向下设计方法的特点之一。 综合 (synthesis): 概念化的设计形式具体的设计形式。 早期的综合由人来完成 : 自动逻辑综合:把逻辑真值表转换成逻辑图; 自动布图综合:把逻辑图转换到版图; 把电路图转换成版图。

Page 110: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 110/935

逻辑综合: 根据系统逻辑功能要求和性能约束,在一个元件库 的支持下,寻找一个逻辑网络结构的最佳或较佳的 实现方案。 元件库 :

包含众多结构、功能、性能的逻辑元件库。

Page 111: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 111/935

逻辑综合过程包含两个主要方面: 1 )逻辑结构的生成和优化。 主要进行逻辑化简与优化,达到尽可能地用较少的 元件和连线形成一个逻辑网络结构(逻辑图), 满足系统逻辑功能的要求。

Page 112: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 112/935

逻辑综合过程包含两个主要方面: 2 )逻辑网络的性能优化。 利用给定的逻辑单元库,对已生成的逻辑网络进行 元件配置,进而估算性能与成本。 性能:芯片的速度。 成本:芯片的面积与功耗。

Page 113: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 113/935

逻辑综合有 3 种类型: 两级组合逻辑; 多级组合逻辑; 时序逻辑; 两级逻辑综合是多级逻辑综合的特例。 多级逻辑综合是时序逻辑综合的特例(零状态)。 一般性介绍以两级组合逻辑为主。的逻辑综合方法为主;

Page 114: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 114/935

组合电路与时序电路;基本逻辑门 -- 与门、或门、非门等;组合逻辑电路的行为可以用一个布尔函数表示:

组合逻辑综合问题可以表述为如何产生一个用布尔函数描述的行为的电路并满足一定约束条件的问题。

}'0','1{'B,BB:f nm

Page 115: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 115/935

实际情况:许多电路并不是用布尔函数描述的。真实描述电路需要 3 种状态: {‘0’,‘1’,‘-’}描述电路行为用函数 :

其中 :

nm YB:f

}'','1','0{'Y

Page 116: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 116/935

对于电路的每个输出 ,输入信号的状态空间可划分成 3 个集合: 导通集合 on-set 、 断开集合 off-set 、 不确定集合 dc-set 。采用 3- 集合方法的好处是: 逻辑综合工具可以决定 dc-set 中的点: 哪些可以产生‘ 0’输出; 哪些可以产生‘ 1’输出。一个 dc-set 为空的布尔函数是完备的。

Page 117: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 117/935

可以用 来指定 中的点。例如 中的点 {‘1’,‘0’,‘1’} 代表

))mi1(x i mB

3B 321 xxx

Page 118: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 118/935

组合逻辑电路综合需要解决两个问题 : ( 1 )布尔函数的规范型的压缩: 替代技术是二元选择图技术 (binary-decision diagram BDD)

( 2 )获得一个最小的和 -积表达式: 两级逻辑综合。

Page 119: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 119/935

实例:library ieee;use ieee.std_logic_1164.all;entity example is port(x1,x2,x3,x4,x5:in std_logic; y1,y2:out std _ logic);end example

architecture behavioral of example isbegin react: process(x1,x2,x3,x4,x5) begin if x1=‘1’ and x2=‘0’ then y1<=x3 and x4; y2<=x3 or x4; elsif x2=‘1’ then y1<=not(x3 and (x4 or x5)); y2<=‘-’; else y1<=‘-’; y2<=‘0’; end if; end process react;end behavioral;

Page 120: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 120/935

architecture behavioral of example isbegin react: process(x1,x2,x3,x4,x5) begin if x1=‘1’ and x2=‘0’ then y1<=x3 and x4; y2<=x3 or x4; elsif x2=‘1’ then y1<=not(x3 and (x4 or x5)); y2<=‘-’; else y1<=‘-’; y2<=‘0’; end if; end process react;end behavioral;导通集 on-set :

)xx(xxxxxxxxy 54322143211 )xx(xxy 43212

逻辑综合系统的翻译结果:

不是规范形表示!使用基本的布尔代数就可完成翻译工作!

Page 121: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 121/935

architecture behavioral of example isbegin react: process(x1,x2,x3,x4,x5) begin if x1=‘1’ and x2=‘0’ then y1<=x3 and x4; y2<=x3 or x4; elsif x2=‘1’ then y1<=not(x3 and (x4 or x5)); y2<=‘-’; else y1<=‘-’; y2<=‘0’; end if; end process react;end behavioral;

逻辑综合系统的翻译结果:

不确定集 dc-set :2211 xxxy

2212 xxxy

Page 122: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 122/935

architecture behavioral of example isbegin react: process(x1,x2,x3,x4,x5) begin if x1=‘1’ and x2=‘0’ then y1<=x3 and x4; y2<=x3 or x4; elsif x2=‘1’ then y1<=not(x3 and (x4 or x5)); y2<=‘-’; else y1<=‘-’; y2<=‘0’; end if; end process react;end behavioral;

逻辑综合系统的翻译结果:

不确定集 dc-set :2211 xxxy

2212 xxxy

翻译方法 :if - 语句: 条件项then- 语句: 与操作else 语 - 句: 或操作

Page 123: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 123/935

10.3.1 逻辑综合的流程RTL描述

翻译

非优化的中间结果

逻辑优化

工艺映射和优化

优化的门级描述

设计约束条件门和单元库(工艺库)

Page 124: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 124/935

1.RTL 描述· 设计者在高层用 RTL 结构对电路进行描述。

· 设计者的主要精力花在功能验证上,以保证 RTL 代码 的功能正确性, · 功能验证完毕, RTL 代码就交给逻辑综合工具。

Page 125: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 125/935

2.翻译 · RTL 描述被综合工具翻译成未优化的、中间过程的 表达形式。这个过程称为翻译。

· 翻译器翻译 HDL 描述中所采用的操作符和属性,在 翻译阶段,不考虑面积、时序、功耗等约束条件。 · 在翻译阶段,综合工具仅对中间资源进行简单的分配。

Page 126: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 126/935

3.逻辑优化 · 对逻辑结构进行优化 , 去除冗余逻辑。 这一步使用多种布尔逻辑运算技术和逻辑优化算法,如 ROBDD图技术、 Minato 算法、立方体技术等等,这是 逻辑综合中非常重要的一步。

Page 127: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 127/935

4. 工艺映射和优化 · 这一步中,逻辑综合工具使用工艺库中提供的单元代替 前面的中间描述。 设计映射到特定的工艺库中。

Page 128: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 128/935

假设使用的是 TSMC公司的制造技术, TSMC公司有一套 0.35mCMOS 工艺 TSMC35 , TSMC35就是目标工艺。优化后的电路的内部结果必须用 TSMC35 工艺中提供的单元完成门级设计,这就是工艺映射。完成的门级网表要符合时序、面积和功耗等约束条件。

Page 129: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 129/935

5. 工艺库工艺库包含了众多的库单元。 标准单元库和工艺库是相互独立的,可 以交互使用。 在建单元库时, TSMC公司确定功能 范围,然后提供库单元。 库单元有基本逻辑门、加法器, ALU 、 选择器和触发器等单元。 库单元的物理版图完成之后,每块单元 的面积就可计算出来。同时需要对每个 单元的时序和功耗特征进行建模,这个 过程称为单元标准化。

Page 130: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 130/935

工艺库 ( 续 ) 最后,每个单元以逻辑综合工具能够 理解的格式表示。 单元描述应该包括如下信息:

单元的功能,单元版图的面积,单元的时序信息,单元的功耗信息。 这些单元的集合就是工艺库。逻辑综合 工具利用这样的单元完成设计。

工艺库中单元的好坏直接影响综合结果 的好坏。如果工艺库中单元的选择受到 限制,逻辑综合工具在对时序、面积和 功耗进行优化时就同样受到限制。

Page 131: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 131/935

6. 设计约束条件 1) 时序—电路必须满足时序的要求, 由一个内部的时钟分析程序检验时序 是否正确;

2) 面积—最终版图的面积不应超过某 个特定值;3) 功耗—电路的功耗不应超过某个阈 值

总的说来,时序和面积是相互制约的。 为了得到更快的电路,必须采用并行电路 结构进行并行处理,那么整个电路的面积 就要增大; 为了缩小面积,设计者就可能要牺牲电路 速度。

Page 132: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 132/935

设计约束条件(续)时序和面积的关系:

工作环境因素如输入输出延迟、驱动能力和带负载能力也会影响目标工艺的优化。为了保证在特定的环境下优化,环境数据必须输入到逻辑综合工具中。

时间

面积

Page 133: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 133/935

7. 最优化的门级描述 在工艺映射完成之后,就生成了以目标工艺库单元表示的优化门级网表。如果结果网表满足设计约束条件,则将被送至 TSMC公司制作版图。寻求满足设计约束条件的网表是个反复迭代的过程。在这个过程中,常常需要重新修改 RTL 代码。TSMC公司根据网表进行布局布线,制作版图,再做时序检查,以验证电路是否满足时序要求。如果一切正常, TSMC公司开始制作芯片。

Page 134: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 134/935

最优化的门级描述 在逻辑综合过程中有三点需要注意:

•对于非常高速的电路,厂家的工艺库很难满足设计要求。设计者需要从厂家得到更细致的制造工艺信息。•翻译、逻辑优化和工艺映射是在逻辑工具内部完成的,一旦工艺确定,设计者只能控制 RTL 描述和设计约束条件。•进行逻辑综合时,书写高效的 RTL 描述、正确定义设计约束条件、计算设计折衷点和利用好的工艺库对于生成最优化数字电路是非常重要的。•对于深亚微米设计,连线延迟占主导地位。逻辑综合工具在 RTL 级设计时需要和物理综合紧密结合。新的趋势是逻辑和物理的综合的融合。 (Synopsys)

Page 135: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 135/935

一个从 RTL 级到门级转化的实例 一个 4 位比较器 :

两个 4 位输入信号 A 和 B ,不出现 x 或 z状态;电路速度尽可能快 , 面积折中考虑。

4 位比较器A

B

A_gt_B ( A > B )A_lt_B ( A < B )A_eq_B ( A = B )

Page 136: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 136/935

比较器的 RTL 描述: module magnitude_comparator (A_gt_B, A_lt_B,A_eq_B, A,B ); output A_gt_B, A_lt_B, A_eq_B;

input [3:0] A, B;

assign A_gt_B = ( A > B ); //A 大于 B assign A_lt_B = ( A < B ); //A 小于 B assign A_eq_B = ( A = = B ); //A 等于 Bendmodule

Page 137: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 137/935

工艺库 采用 TSMC公司 0.35微米 CMOS 工艺 : TSMC35 。 TSMC35 包括以下库单元: VNAND //2-input nand gate VAND //2-input and gate VNOR //2-input nor gate VOR //2-input or gate VNOT //not gate VBUF //buffer NDFF //Negative edge triggered D flip-flop PDFF //Positive edge triggered D flip-flop 工艺库的标准格式可与逻辑综合工具衔接。 库单元包括:功能、时序、面积和功耗信息。

Page 138: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 138/935

设计约束条件 优化的约束条件是速度,没有面积约束。逻辑综合 逻辑综合工具读入: RTL 描述、 设计约束条件、 工艺库。 经过优化,产生基于 TSMC35 工艺库的最优化门级描述。

A

B

Page 139: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 139/935

VNAND U24 ( .in0(n57), .in1(n52), .out(n54) );VAND U12 ( .in0(n40), .in1(n42), .out(n48) );VNAND U25 ( .in0(n53), .in1(n44), .out(n64) );VOR U13 ( .in0(n58), .in1(B[3]), .out(n42) );VOR U26 ( .in0(n62), .in1(B[2]), .out(n46) );VNAND U14 ( .in0(B[3]), .in1(n58), .out(n40) );VNAND U27 ( .in0(n64), .in1(n46), .out(n65) );VNAND U15 ( .in0(B[1]), .in1(n59), .out(n55) );VNAND U28 ( .in0(n65), .in1(n40), .out(n43) );VOR U16 ( .in0(n59), .in1(B[1]), .out(n52) );VNOT U29 ( .in(A[3]), .out(n58) );VNAND U17 ( .in0(B[0]), .in1(n60), .out(n56) );VNAND U18 ( .in0(n56), .in1(n55), .out(n51) );VNAND U19 ( .in0(n50), .in1(n44), .out(n61) );VAND U2 ( .in0(n38), .in1(n39), .out(A_eq_B) );VNAND U3 ( .in0(n40), .in1(n41), .out(A_lt_B) );VNAND U4 ( .in0(n42), .in1(n43), .out(A_gt_B) );VAND U5 ( .in0(n45), .in1(n46), .out(n44) );VAND U6 ( .in0(n47), .in1(n44), .out(n39) );endmodule

基于 TSMC35 工艺库的门级网表描述 :

module magnitude_comparator (A_gt_B, A_lt_B, A_eq_B, A, B);input [3:0] A;input [3:0] B;out_put A_gt_B, A_lt_B,A_eq_B;wire n60,n61,n50,n63,n51,n64,n52,n65,n40,n53, n41,n54,n42,n55,n43,n56,n44,n57,n45,n58,n46, n59,n47,n48,n49,n38,n39;VAND U7 ( .in0(n48), .in1(n49), .out(n38) );VAND U8 ( .in0(n51), .in1(n52), .out(n50) );VAND U9 ( .in0(n54), .in1(n55), .out(n53) );VNOT U30 ( .in(A[2]), .out(n62) );VNOT U31 ( .in(A[1]), .out(n59) );VNOT U32 ( .in(A[0]), .out(n60) );VNAND U20 ( .in0(B[2]), .in1(n62), .out(n45) );VNAND U21 ( .in0(n61), .in1(n45), .out(n63) );VNAND U22 ( .in0(n63), .in1(n42), .out(n41) );VAND U10 ( .in0(n55), .in1(n52), .out(n47) );VOR U23 ( .in0(n60), .in1(B[0]), .out(n57) );VAND U11 ( .in0(n56), .in1(n57), .out(n49) );

Page 140: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 140/935

RTL 设计技巧影响逻辑综合后门级网表的优劣。高效的电路描述需要一定的技巧。 RTL 描述在保持抽象度优势的前提下,应尽可能逼近实际电路结构。抽象度和可控制性结构之间的平衡点。在高层次上进行设计,逻辑综合工具会产生无法预料的结构;在低层次上进行设计,会丢失独立于工艺的优势。不同的逻辑综合工具所需要的良好设计风格有一定的共性。

10.3.2 Verilog HDL 与逻辑综合

Page 141: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 141/935

给信号和变量取有意义的名字 -- 可增加代码的可读性。 避免上升沿和下降沿触发器的混合使用—可避免时钟的不对称。 基本单元与 assign 表达式 --应有一个折衷: assign 可使描述简洁,但综合后的逻辑结构不一定是对称的,且附加的随机逻辑较多。 采用基本单元产生对称的设计,逻辑综合优化会得到更小的模块。 采用模块设计不够简洁,模拟时会降低速度。

Page 142: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 142/935

//风格 1:module mux2_1L32 (out, a, b , select); output [31:0] out; input [31:0] a, b; wire select; assign out = select? a : b ;endmodule

//风格 2: module mux2_1L32(out,a,b, select); output [31:0] out; input [31:0] a,b; wire select; mux2_1L8 m0(out[7:0], a[7:0], b[7:0], select); //bits 7 through 0 mux2_1L8 m1(out[15:8], a[15:8], b[15:8], select); //bits 15 through 8 mux2_1L8 m2(out[23:16], a[23:16], b[23:16], select); //bits 23 through 16 mux2_1L8 m3(out[31:24], a[31:24], b[31:24], select); //bits 31 through 24endmodule

风格 2 的电路性能要优于 风格 1!

Page 143: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 143/935

选择器的实例化与 if-else /case 表达式 if-else/case 表达式在硬件上被综合为选择器。 如需要结构化的设计,最好用选择器模块,因为 if-else/case 表达式在综合时会产生一些不需要的随机逻辑。 实例化的选择器可以更好地控制结构规模,其缺点是与工艺相关,并且 RTL 的描述较长。 if-else/case 的优点在于简洁性,可以产生和工艺无关的RTL 描述。

Page 144: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 144/935

使用括号来优化逻辑结构 通过括号实现设计分组,可控制最后的逻辑结构,并增加可读性。 例如: out = a+b+c+d;

out=(a+b)+(c+d);  

+ab +c +d

out

+ab

+c+d

out

效果是:速度提高!

Page 145: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 145/935

使用 *, /, 和 % 与设计模块 执行乘、除和取模运算在逻辑结构上很复杂,在芯片面积上占用很大,成本较昂贵。 这些算术运算符可以简洁地表达所需要的功能,并且和工艺无关。 设计乘、除和取模运算模块需要较长时间,它们的 RTL描述和工艺关系密切相关。

Page 146: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 146/935

注意对同一变量的多重赋值 对同一个变量的多重赋值会导致不需要的逻辑结构,前面的赋值可能被忽略,而只有后面的赋值起作用。例如 always @(posedge clk) if (load1) q<= a1; always @(posedge clk) if (load2) q<=a2; 逻辑综合工具认为是两个触发器的输出连接到一起产生输出变量 q 。这样的设计应尽量避免。

clk

a1

clk

a2

q

Page 147: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 147/935

明确定义 if-else/case 表达式 使用 if-else/case ,所有可能的分支都要明确定义,否则,电平敏感的锁存器可能代替选择器:always @(control or a ) 不明确的定义,锁存器 if (control) out<=a; always @(control or a or b) 明确的定义,选择器 if(control) out<=a; else out<=b;

Page 148: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 148/935

10.4 数字系统的 FPGA/CPLD硬件验证

Page 149: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 149/935

  IC 设计分成 : 全定制 IC ,半定制 IC 。 全定制 IC 大多是专用集成电路 (ASIC:Application-Specified IC)。 全定制 IC 的特点:速度高、 功耗低、 成本低、 保密性好、 批量大、 研制风险大。 全定制 IC 研制过程复杂:电路版图设计 工艺制作 封装 测试,需要上百个环节。

Page 150: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 150/935

半定制 IC 设计的基础:半导体厂家的半成品 IC芯片。 (Altera/Xilinx)

设计者通过对半成品 IC 进行布线设计以完成最终设计。 设计交给 IC 制造厂,由 IC 制造厂生产最终产品。

Page 151: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 151/935

半定制方法的特点:设计周期短、 费用低、 依赖工艺、 布局不易优化、 冗余部件多、 电路速度低(相对全定制而言)。 主要用途: 小批量生产、 ASIC 设计的逻辑验证。

Page 152: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 152/935

半成品 IC 即可编程逻辑器件。可编程逻辑器件的功能可通过编程而改变。用户通过对器件进行编程参与 IC 的设计。

Page 153: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 153/935

门阵列 GA( Gate Array ):将基本门电路按阵列排列在 芯片内,由厂家做成半成品 IC 。GA 工作原理:用户完成金属布线设计,由厂家完成金属 布线的制作和芯片封装。GA 的形式: 1 ) 行阵列形式; 2 ) 门海 (sea-of-gate) 。

10.4.1 GA概述

Page 154: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 154/935

行阵列形式的 GA 门海形式的 GA

行阵列形式 GA :按行排列门电路,行间留作布线沟道。门海形式 GA : 在行和列两个方向上排列门电路, 门电路四周均留有布线沟道。

Page 155: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 155/935

OUT

IN1

GND

VDD

IN2

NMOS

PMOS

GND

VDD

Metalpossiblecontects

Poly-SiIN3 IN4

GA 内门单元布线之前的版图 将单元布线成 4输入或非门的版图

Page 156: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 156/935

10.4.2 PLD概述

Page 157: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 157/935

PLD 的基本结构可编程逻辑器件 PLD(Programmable Logic Device)通过改变内部的连接关系改变电路的功能。

Page 158: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 158/935

PLD 的结构: “与阵列”实现“与” 运算, “或阵列”实现“或”运算, “反馈通道”实现时序逻辑。

输入电路

与阵列

或阵列

输出电路

输入 输出

输入项 乘积项 或项

反馈通道

Page 159: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 159/935

可编程逻辑器件的编程方式: 1 )可编程熔丝; 2 )紫外擦除,电可编程; 3 )电可擦除,电可编程。

Page 160: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 160/935

Page 161: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 161/935

PLD 的分类 按照“与阵列”、“或阵列”和“输出电路”是否可编程, PLD 分成 4 类 :

1 ) PROM(Programmable ROM) : 可编程只读存储器; 2 ) PLA(Programmable Logic Array) : 可编程逻辑阵列; 3 ) PAL(Programmable Array Logic) : 可编程阵列逻辑; 4 ) GAL(Generic Array Logic) : 通用阵列逻辑;

Page 162: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 162/935

PROM阵列结构I1 I3I2

与阵列(固定)

或阵列(可编程)

O1 O3O2

“或阵列”用作存储矩阵,“与阵列”用作译码器。

Page 163: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 163/935

I1 I3I2

与阵列(固定)

或阵列(可编程)

O1 O3O2

PROM阵列用于存放数据或微程序。但不适合于逻辑函数实现。N 个输入端对应于 2n 个 2n输入与门, 3 个输入端对应 8 个 6输入门。PROM 可用来制作函数表,或实现译码显示。

Page 164: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 164/935

10.4.3. FPGA(Field Programmable Gate Array)现场可编程门阵列 (FPGA) 和复杂可编程逻辑器件( CPLD )是更为复杂的 PLD ,其内部集成了更多简单的 PLD 。为了与 CPLD 相区别, PLD 一般也称为简单的 PLD( SPLD)。

Page 165: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 165/935

FPGA 是单元型高密度可编程逻辑器件,逻辑粒度小、延时小、布线灵活,应用广泛。FPGA 的一般结构:

Page 166: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 166/935

FPGA 内部主要由三种逻辑块构成: 输入输出块 IOB( I/O Block ); 可重构逻辑块 CLB( Configurable Logic Block ); 开关矩阵 SM( Switch Matrix )。

Page 167: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 167/935

1.输入输出块 IOB

输入方式:1 )直接输入;2 )触发器输入;3 ) CMOS/TTL 电平输入;4 )上拉电阻输入。输出方式为: 1 )直接输出 /触发器输出; 2 )反相 /不反相输出; 3 )三态输出 /导通态 / 截止态; 4 )全速输出 /限速输出; 5 )三态反相输出。当处于双向模式时,由三态控制信号控制其方向。

Page 168: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 168/935

1:输出接上拉电阻

Page 169: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 169/935

1:直接输出

Page 170: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 170/935

1: 反相

Page 171: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 171/935

转换速率控制位: 对于关键的信号延迟路径,可选择该 控制位使输出以全速转换方式工作, 对于延迟要求不高的输出,可选择 低速输出方式以减小负载最大电流 并降低系统噪声。

Page 172: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 172/935

1 :输出 缓冲器 为高阻态0 :输出 缓冲器 使能信号 有效, 信号 可通过 输出缓冲器。

Page 173: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 173/935

电平转换

Page 174: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 174/935

时钟可在 CK1 、 2 中挑选,极性可选,CK1 、 2 是芯片某一条边上的 IOB共用的。

Page 175: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 175/935

2.可重构逻辑块 CLB( Configurable Logic Block )

5 变量布尔函数组合逻辑块,有 a 、 b 、 c 、 d 、 e 五个输入和QX 、 QY 两个触发器反馈输入,有 F 和 G 两个输出。

Page 176: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 176/935

两个触发器

两个触发器的激励输入可来自外部数据输入,也可以来自组合逻辑输出 F 和 G 。

Page 177: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 177/935

两个触发器

触发器时钟由外部提供,极性可编程。触发器的输出可以送至相应的输出端,也可反馈到组合逻辑阵列。如用作组合逻辑电路,则组合逻辑阵列可跨过触发器直接输出。触发器的复位方式有外信号直接复位和芯片内部全局复位两种。

Page 178: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 178/935

可实现 5 变量的任意函数或两个 4 变量的任意函数。通过编程可得到各种联接方式:

阵列的延时是固定的。

Page 179: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 179/935

(a) 可构成两个独立的任意逻辑功能函数,每个函数最多可有 4 个输入变量。 (b) 可构成 5输入变量的任意逻辑功能。 (c) 可实现 6 个或 7 个输入变量的任意逻辑功能。

Page 180: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 180/935

3.开关矩阵 SM( Switch Matrix )FPGA 中有极丰富的可编程互连线( PI )资源,通过编程,将 CLB 和 IOB 组合在一起实现逻辑功能。

Page 181: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 181/935

开关矩阵 SM就是通用 PI 交叉处的转接控制逻辑。 在 PI 中,有一种通用连线,它们 5根一排,整齐地铺设在 CLB矩阵行与行、列与列之间的网格上,CLB 的输出可通过最近的“通用 PI” 连到目标 CL

B 或 IOB上。

Page 182: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 182/935

开关矩阵 SM每边有 5 个连接点,共有 20 种转接方式 .通过 SM 的转接,可以将某 CLB 的输出,以接力的方式,用 PI 一段一段地传送到芯片的任一位置。

Page 183: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 183/935

FPGA芯片的其它两种可编程连线:

1 )直接 PI ; 2 )长线 PI 。

Page 184: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 184/935

直接 PI 是:每个 CLB 与相邻的 4 个 CLB之间、 最外层 CLB 与相邻 IOB 间的可编程互连。

Page 185: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 185/935

长线则是贯穿整个芯片的连接线。

Page 186: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 186/935

各种单元之间的连接通过可编程开关 SM 控制,SM 开关的通和断通过可重构存储器 (SRAM)内部的信息进行控制。

Page 187: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 187/935

重构存储器是静态存储器,可靠性高、抗干扰能力强和综合可测能力,但断电时,该存储器存储的信息会丧失。FPGA 须和 EPROM配合,编程信息存在 EPROM 中,通电时,将 EPROM 的编程信息传到 FPGA 的可重构存储器中,然后才能投入运行。

Page 188: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 188/935

10.4.4   PLD 的开发 PLD 的开发环境和开发流程:

采用电路图、状态机、 HDL语言进行电路描述选择合适的器件实现电路的功能PLD编程(编制JEDEC文件)

PLD实际测试

将PLD插入PCB板与计算机进行连接

PLD开发的软件工具

计算机 PCB板 逻辑仿真

功能验证

把编程数据通过计算机加载到PLD中

通讯附件

测试仪器PLD开发环境

开发流程

Page 189: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 189/935

选择合适的器件,利用逻辑综合工具和器件模型进行仿真,要满足正确性和时序要求。EDA 工具可以产生设计的 JEDEC文件, JEDEC 是电子器件工程联合会( Join-Electronic Device Engineering Council)的缩写, JEDEC文件就是按 JEDEC 所制定的标准格式编写的关于器件编程信息的计算机文件,它是以二进制码形式表示,习惯上称为熔丝图。硬件仿真的优点在于测试结果更接近于目标结果。

采用电路图、状态机、 HDL语言进行电路描述选择合适的器件实现电路的功能PLD编程(编制JEDEC文件)

PLD实际测试

将PLD插入 PCB板与计算机进行连接

逻辑仿真

功能验证

把编程数据通过计算机加载到 PLD中

开发流程

Page 190: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 190/935

10.5 自动布局布线

Page 191: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 191/935

数据准备和输入

布局规划预布线布局

时钟树

布线

设计规则检查和一致性检查

输出结果

自动布局布线的一般方法和流程

Page 192: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 192/935

• 自动布局布线将门级网表转换成版图 ;

• 版图设计有两个层次: 1 )门级 2 )芯片级。• 门级版图设计以晶体管为构造单元; 芯片级版图设计以加法器、寄存器和 FSM 等大模块作为构造单元。• 自动布局布线主要讨论芯片级版图设计;• 芯片级版图设计是一个折衷的过程;

Page 193: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 193/935

1. 数据准备和输入三个重要文件:网表文件、标准逻辑单元库文件和约束文件;网表文件 : 逻辑综合生成的逻辑网络;标准逻辑单元库: foundary 、 EDA厂商等提供; ( Artisan Components 的 TSMC 0.25um CMOS 标准单元库和输入 /输出单元库 ; )标准逻辑单元库:每个库单元有不同的表示形式,以满足不同阶 段的 ASIC 设计的需求。

Page 194: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 194/935

标准逻辑单元库包括:1) 核心逻辑单元库,组合和时序电路单元,如 ADD 、 NAND、 DFF 和 XOR 等;2) I/O 单元,包括 I/O 、双向总线单元以及电源和地单元、拐角 单元等等;3) 硬核模块,如 RAM 、 ROM 等等。

Page 195: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 195/935

标准单元库又分成:1) 逻辑综合库 -- 用于综合器读入,并对 RTL 级的 verilog程序 进行综合;2) 单元的仿真库 --每个单元的逻辑功能,以及对应于不同的 工作环境的延时模型;3) 物理版图 -- 用于自动布局布线;4) 延时模型 -- 器件延时和连线延时的模型;5) 库单元电路的原理说明;单元库相应的文档说明;

Page 196: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 196/935

2. 布局规划、预布线、布局共分为 3 个阶段: 1) 模块布置; 2) 全局路由设计 ; 3) 局部路由设计;

Page 197: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 197/935

布局规划是面向物理的划分,与逻辑设计时的划分有所不同;布局规划可估算出较为精确的互连延迟信息、预算芯片的面积,分析布线的稀疏度。布局规划将划分的功能块按一定的距离约束要求进行位置摆放。

DSP

I/O

RAM

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O

I/O I/O

I/O I/OI/O I/O I/O

RO

M

PLL CPU

Page 198: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 198/935

深亚微米设计,连线总延时超过了门延时的比重,而逻辑综合时对连线延时采用连线延时模型进行估计的误差,会导致布线后的芯片时序不收敛。

Page 199: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 199/935

A

B C

A

B C通道1

通道2 通道1通道2 通道3

布线通道的不同划分

Page 200: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 200/935

Vss

Vdd

电源分配一般结构

• 电源分配: 需要解决两个问题: 1 )足够的线宽,以保证需要的电源电流并且不会烧线; 2 )设计一个金属的电源分配网络,布置 VDD 和 VSS 线。• 电源走线面临金属迁移率问题:当过大的电流通过一条金属线 时,电子产生聚集,金属线将很快烧断。• 电源线通常按树状走线:

• 电源和地走根和主干,逻辑门连接在树支上。

Page 201: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 201/935

• 电源从根部出发,逻辑门连到电源树的树枝上;• 每个分支必须具有足够的线宽度以运载电流。•计算电源线宽度的方法: 计算每个分支上的门数, 计算每个门需要的电流量, 计算主干上分支总数; 求和算出总电流,根据金属线电流密度,计算 电源线宽度。

Vss

Vdd

Page 202: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 202/935

PLA

VDD

VSS

BELLMAC-32A 位微处理器电源总线 :

• 电源焊盘布置在两端,可以减少电源总线噪声约 4倍,因为阻 抗和开关电流被切成了两半。• 通过仿真,可以发现由阻抗引入的噪声有 2V 的摆幅,大的电 压尖峰的出现是由 PLA 的预充电产生的,预充电产生与时钟 共同作用,就产生大的电压尖峰。• 增加电源焊盘不足以减少电源总线噪声,解决办法是改变 PLA预充电周期的相位。

Page 203: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 203/935

预布线包括宏单元的电源、地、信号的布线,焊盘单元的布线以及芯片核心逻辑部分的电源环、电源网络的布线。电源压降对芯片的整体性能有很大影响,合理设计电源环、电源带以及电源焊盘很重要。

内核

Pad1 VDD

Pad2Order[0]

Pad3Order[1]

Pad4Order[2]

Pad14clk

Pad13en[2]

Pad12en[1]

Pad8Key[1]

Pad9Key[2]

Pad10Key[3]

Pad11en[0]

Pad7Key[0]

Pad6VSS

Pad5Order[3]

Page 204: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 204/935

布局就是进行网表中单元的放置,这一步可以使用综合时产生的时序约束来驱动布局,以使布局后的连线延时更接近综合的连线延时模型,可以更快地达到时序收敛的结果。根据芯片的布局情况可能对综合时产生的扫描链 (scan chain) 进行重排,以减少不必要的连线长度。布局要求将模块在满足一定的目标函数的前提下布置在芯片上的适当位置,并要求芯片面积最小、连线总长最短、电性能最优并且容易布线。

Page 205: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 205/935

3. 时钟树综合 在芯片版图设计中,时钟树的设计是非常重要的,数字系统绝大多数电路行为都是在时钟的严格同步下进行的。系统中的时钟负载很大,而且遍布整个芯片。这样就造成了较大的本地时钟间的相对延时,也叫时钟偏斜 (Clock Skew) 。时钟偏斜严重影响电路的同步,如果不加以处理,往往会造成电路的时序紊乱。

Page 206: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 206/935

为了减少各时钟端的时钟偏差,通常需要对整个时钟网络进行重新设计,用来保证分布在整个芯片中的时钟网络的相对延时保持在设计容限之内,以确保设计的时序要求。时钟树综合就是为了保证时钟的设计要求,对芯片的时钟网络进行重新设计的过程,包括 : 时钟树的生成、 缓冲的插入、 时钟网络的分层。

Page 207: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 207/935

时钟树设计是一个布局问题,因为时钟延迟与时钟点所在的位置有关:delay=max

delay=0

存储单元应该接在等高线上!Alpha processor 的设计人员,通过上述图,选择版图的设计!

Page 208: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 208/935

改善时钟分布有两种方法:•版图设计:通过版图设计使时钟延迟相等,或者 至少增加可预测性。•电路设计:通过设计多段驱动器来驱动时钟分布 网络,使各个点的时钟延迟最小。

Page 209: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 209/935

时钟分配网络的物理设计—版图,两种最常用的时钟网络是 H-树和平衡树,如图:

(a)H- 树 (b) 平衡树 最常用的两种时钟网络

• H-树是一种非常规整的分配网络,它的时钟延迟是可预测的。• 平衡树是一种与具体电路特点密切相关的的分配网络,它的时 钟延迟需要仔细计算合分析。

Page 210: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 210/935

• H-树是一种递归结构,第一级 1 个 H-树,第二级 4 个小 H-树;• H-树的线宽可以根据负载电容的大小进行计算,以平衡整个 H- 树的时钟歪斜。•H-树中可以增加缓冲器,以增加驱动能力;•延迟与分支的长度有关,所以存储单元要成组接在 H-树上位置 位置距离相同的地方。

Page 211: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 211/935

•平衡树是一种由布局布线工具产生的树,存储单元成组地接在 平衡树上。•成组用来引导布局,而平衡树可以根据存储单元组的相对延迟来 生成。•平衡树是一种形状不规则的树,但是可以平衡各个组的时钟歪斜。•平衡树同样可以增加缓冲器,以增加驱动能力;•平衡树的线宽同样可以根据负载电容的大小进行计算,以平衡整 个树的时钟歪斜。

Page 212: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 212/935

不含时钟树 零歪斜时钟树 可变时间时钟树

一些时钟树的实例

Page 213: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 213/935

一个插入驱动的时钟分配树

时钟信号延时与具体的版图密切相关,所以在逻辑综合的时候一般忽略时钟的处理,而在布局布线设计中进行插入时钟树操作。为了尽可能地缩短时钟信号的延迟和扭曲,对时钟信号进行树状插入驱动 (buffer) 。

Page 214: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 214/935

时钟驱动器

时钟驱动器

时钟驱动器预处理

时钟产生器DEC Alpha 21164 CPU 时钟树的例子

Alpha 21164 是第一个浮点计算速度超过 1G FLOPS 的 64 位芯片,Alpha 服务器系统在 SPEC 、 SPECweb 、 tpmC 、浮点运算等方面指标曾经在相当长的时间内都居领先地位;基于 Alpha 21164芯片的群集系统主要用于高性能技术计算领域,如超级浮点计算等。

Page 215: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 215/935

在时钟树综合过程中对版图设计做了一些改动,增加了时钟驱动单元。这些改动需要反映到设计的网表中,以保证后面的设计验证和 LVS检查能够通过。一般的版图设计工具中可以生成与综合器对应的脚本,通过脚本程序完成网表中的改动。

Page 216: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 216/935

4. 布线布线是根据电路连接的关系,在满足工艺规则和电学性能的要求下,在指定的区域内完成所需的全部互连,同时尽可能地对连线长度和通孔数目进行优化。完成预布线以后,一些特定网络的布线,如时钟、总线等一些关键路径需要严格保证其时序要求;在布线中,这些关键路径的布线被赋予较高的优先级,有时甚至进行手工布线。

Page 217: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 217/935

布线工具首先把版图区域划分为不同的布线单元, 同时建立布线通道; 对连线的网络连接方向和占用的布线资源 (布线通道和过孔 )、 连线的最短路径等进行确定; 对布线的拥塞程度进行估计,调整连线网络过度拥塞的部分。

Page 218: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 218/935

在全局布线完成后, 需要将连线网络所对应的布线资源分配到布线网格中; 需要分配路径 (Assign Track); 使用交换单元 (Switch Box)进行局部单元的详细布线;完成最终的布线连接。

Page 219: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 219/935

5. 设计规则检查 (DRC) 和一致性 (LVS)检查布局布线完成后,要对版图进行设计规则、电学规则以及版图与电路图的一致性检查,在版图寄生参数提取的基础上,再次进行电路分析 ( 即后仿真 )。

Page 220: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 220/935

所有检查验证无误,布图结果转换为 GDSII 格式的 掩膜文件。 然后通过掩膜版发生器或电子束制版系统,将掩膜文件转换生成掩膜版。

6. 输出结果

Page 221: 第 10 章 数字 VLSI 系统设计基础

东南大学 无线电工程系 射频与光电集成电路研究所 221/935

7. 其他考虑在完成版图设计之后,需要对整个芯片作参数提取,以得到准确的门延时和连线延时数据;同时考虑芯片内部寄生电阻和电容引起的额外信号延时;增加寄生参数以后进行的仿真才是最接近于芯片最终的工作情况的。芯片后仿真包括逻辑仿真、时序分析、功耗分析、可靠性分析等等,由相应的工具来完成。