Transcript Document
VLSI工学 (3)
松澤 昭
2004年 9月
2004年 9月
新大VLSI工学
1
集積回路
1. VLSIとは?
2.VLSIの設計から製造まで
3. MOSトランジスタとCMOS論理回路
3.メモリー回路
4. アナログCMOS回路
5. 回路・レイアウト設計
6. 論理設計とテスト
7. スケーリング則と低消費電力化設計
8.システムLSIとVLSIの今後
2004年 9月
新大VLSI工学
2
設計の各ステップとツール
•製造工程とマスクデータ
•回路設計
•レイアウト設計と配置配線
•スタンダードセルとライブラリ
•論理設計と論理合成
•設計検証
•アーキテクチャ設計と高位合成
•テストとテスト容易化
2004年 9月
新大VLSI工学
3
セルレイアウト
論理回路を構成する基本セルを設計する。
2入力NAND
(0.25um CMOS)
2004年 9月
新大VLSI工学
4
LSI 設計
設計仕様作成
• セルの設計
I2
セル設計
機能設計
論理設計
テスト設計
NAND
ゲート
I1
I2
O
I1
P拡散層
メタル第1層
VDD
レイアウト設計
レイアウト検証
Poly Si層
(1)論理図
EBデータ作成
O
N拡散層
LSI試作
VDD
GND
LSIテスト
(3)セルレイアウト図
O
I1
VDD
I2
入力端子
出力端子
GND
GND
(2)トランジスタ回路図
2004年 9月
新大VLSI工学
(4)セルモデル(両面端子の例)
2章
5
全加算器
2004年 9月
新大VLSI工学
6
LSI 設計
設計仕様作成
• セルライブラリの位置付け
セル設計
RTL データ
セルライブラリ
機能設計
論理設計
テスト設計
レイアウト設計
I1
I2
module add4(s,a,b);
output [4:0] s;
input [3:0] a,b;
assign s=a+b;
endmodule
O
I2
I1
レイアウト検証
VDD
VDD
VDD
VDD
EBデータ作成
O
ゲート論理データ
GND
GND
GND
GND
LSI試作
LSIテスト
I1
I2
module count4(out,ck);
output [3:0] out;
input ck;
reg [3:0] q;
always @(posedge ck)
begin
q <= q+1;
end
assign out=q;
endmodule
Flip
Flop
Flip
Flop
VDD
VDD
VDD
VDD
GND
O GND
GND
GND
レイアウトデータ
デザインルール
多結晶Si
メタル1
メタル配線
P拡散層
メタル2
多結晶Si
n拡散層
2004年 9月
新大VLSI工学
7
ライブラリ情報
1)基本論理関数や記憶素子の集合としてのライブラリ
2)上記集合の各素子のレイアウト
(プロセスのデザインルールに合致したプロセス固有のもの)
3)各素子の論理シミュレーション用のモデル
(論理機能,遅延情報,電気特性などシミュレータ固有のもの)
4)各素子の論理合成用のモデル
(論理機能,遅延情報,電気特性など論理合成系固有のもの)
5)各素子のレイアウトツール用のモデル
(論理機能,遅延情報,電気特性,レイアウト形状などレイアウトツー
ル固有のもの)
2004年 9月
新大VLSI工学
8
VLSI設計フロー
機能設計
論理合成
所望の動作を実現する為の HDLを論理合成ソフト
LSIの機能を機能図又は により論理図に変換
HDLで記述し検証
論理設計
マスク設計 プロセス
論理が正しいことを 論理図をもとに標準セル
シミュレーションで ROM/RAM等の部品を
確認
配置・配線
テスト
出来上がったチップの
動作の検証
タ イ ミン グ図
ck
(1 k H z)
k eyck
(2 5 H z)
r e s e t_
sw
res
0
res
1
re
s
機能図によるLSIの機能設計
module KeyScan(CLOCK,RESET,SIN,SCAN,VAL)
input
CLOCK,RESET
input
[3:0]
SIN;
output
[3:0]
SCAN,VAL;
reg
clk,rst;
論理図と論理シミュレーション
自動配置配
線
VDD
always @(posedge clk or psedge rst) begin
if(rst)
r_scan <= 4'd0;
else
case(Init)
1'b1:r_scan <= 4'd8; // Cobstant: r_scan[3:0]
1'b0:
case( Scanning )
1'b1:r_scan <= { r_scan[3] , r_scan[2] , r_scan
[1] }
1'b0:r_scan <= r_scan;
default: r_scan <= 4'bx;
endcase
default: r_scan <= 4'bx;
endcase
end
ハードウェア記述言語(HDL)
によるLSIの機能設計
2004年 9月
レチクル(ガラス原板)
VSS
MN3456
標準セル
1チップ自動レイアウト
新大VLSI工学
9
デジタルLSIの設計フロー
プロセス開発
アーキテクチャ設計
プロセスパラメータ
デバイス開発
アーキテクチャ
デバイスパラメータ
RTL設計
ライブラリ開発
HDL記述
論理合成
ライブラリ情報
ネットリスト
テスト生成
デザインルール
レイアウト設計
テストベクタ
テスト
機器の
制御パ
ラメータ
マスクデータ
製造プロセス
チップ
2004年 9月
新大VLSI工学
10
設計の各ステップとツール
•製造工程とマスクデータ
•回路設計
•レイアウト設計と配置配線
•スタンダードセルとライブラリ
•論理設計と論理合成
•設計検証
•アーキテクチャ設計と高位合成
•テストとテスト容易化
2004年 9月
新大VLSI工学
11
動作記述
2004年 9月
新大VLSI工学
12
-- KUE-CHIP2 RTL Description in VHDL Version 0.30 1997/Jul./07
-- Copyright 1997 ASTEM RI Written by H. Kanbara
library IEEE;
use IEEE.std_logic_1164.all;
use IEEE.std_logic_unsigned.all;
use WORK.pkg_kue2.all;
entity kue_chip2 is
port(CLOCK_p
: in std_logic;
RESET_p
: in std_logic;
DBI_p
: in std_logic_vector(7 downto 0);
SP_p
: in std_logic;
SI_p
: in std_logic;
SS_p
: in std_logic;
SET_p
: in std_logic;
ADR_INC_p
: in std_logic;
ADR_DEC_p
: in std_logic;
OBS_SEL_p
: in std_logic_vector(3 downto 0);
IBUF_FLG_IN_p : in std_logic;
OBUF_FLG_IN_p : in std_logic;
OP_p
: out std_logic;
PHASE_p
: out std_logic_vector(4 downto 0);
AB_p
: out std_logic_vector(8 downto 0);
OB_p
: out std_logic_vector(7 downto 0);
DBO_p
: out std_logic_vector(7 downto 0);
MEM_OB_p
: out std_logic;
MEM_RE_p
: out std_logic;
MEM_WE_p
: out std_logic;
IBUF_FLG_CLR_p : out std_logic;
IBUF_RE_p
: out std_logic;
PANEL_RE_p
: out std_logic;
OBUF_WE_p
: out std_logic
);
end kue_chip2;
2004年 9月
VHDL記述
論理回路の機能(加算、減算、乗算、
シフトなど)を記述したもの
新大VLSI工学
13
architecture PHASE of kue_chip2 is
type STATE is (P0, P1, P2, P3, P4);
signal CUR_STA, NXT_STA : STATE;
type MODE is (BAR, SP, SI, SS);
signal CUR_MODE, NXT_MODE : MODE;
type INSTRUCTION_SET is (NOP_i, HLT_i, OUT_i, IN_i, RCF_i, SCF_i,
BA_i, BVF_i, BNZ_i, BZ_i, BZP_i, BN_i, BP_i, BZN_i,
BNI_i, BNO_i, BNC_i, BC_i, BGE_i, BLT_i, BGT_i, BLE_i,
SRA_i, SLA_i, SRL_i, SLL_i, RRA_i, RLA_i, RRL_i, RLL_i,
LD_i, ST_i,
SBC_i, ADC_i, SUB_i, ADD_i, XOR_i, OR_i, AND_i, CMP_i);
signal INST : INSTRUCTION_SET;
type REGIST is (ACC_reg, IX_reg);
signal REG : REGIST;
type ADDRESS is (ACC_ea, IX_ea,
IMM_ea,
DIR_PROG_ea, DIR_DATA_ea,
IDX_PROG_ea, IDX_DATA_ea);
signal ADDR : ADDRESS;
type CONDITION is (WAIT_cnd, EXEC_cnd);
signal COND : CONDITION;
type MEMORY is (IN_mem, EX_mem);
signal MEM : MEMORY;
type OBSERVE is (MEM_P_obs, MEM_D_obs, PC_obs, FLAG_obs,
ACC_obs, IX_obs, DBI_obs, DBO_obs,
MAR_obs, IR_obs, CONT_obs);
2004年 9月
新大VLSI工学
14
-- ADDRESS BUS
process(CUR_MODE, OBS, CUR_STA, MAR, INST, ADDR) begin
case CUR_MODE is
when BAR =>
case OBS is
when MEM_P_obs => AB_p <= '0' & MAR ;
when MEM_D_obs => AB_p <= '1' & MAR ;
when others => AB_p <= '0' & MAR ;
end case;
when SI | SS | SP =>
case CUR_STA is
when P0 => AB_p <= '0' & MAR ;
when P1 => AB_p <= '0' & MAR ;
when P2 => AB_p <= '0' & MAR ;
when P3 => AB_p <= '0' & MAR ;
when P4 =>
case INST is
when LD_i =>
case ADDR is
when ACC_ea
=> AB_p <= '0' & MAR ;
when IX_ea
=> AB_p <= '0' & MAR ;
when IMM_ea
=> AB_p <= '0' & MAR ;
when DIR_PROG_ea => AB_p <= '0' & MAR ;
when DIR_DATA_ea => AB_p <= '1' & MAR ;
when IDX_PROG_ea => AB_p <= '0' & MAR ;
when IDX_DATA_ea => AB_p <= '1' & MAR ;
end case;
when ST_i =>
2004年 9月
新大VLSI工学
15
case ADDR is
when ACC_ea
=> AB_p <= '0' & MAR ;
when IX_ea
=> AB_p <= '0' & MAR ;
when IMM_ea
=> AB_p <= '0' & MAR ;
when DIR_PROG_ea => AB_p <= '0' & MAR ;
when DIR_DATA_ea => AB_p <= '1' & MAR ;
when IDX_PROG_ea => AB_p <= '0' & MAR ;
when IDX_DATA_ea => AB_p <= '1' & MAR ;
end case;
when SBC_i | ADC_i | SUB_i | ADD_i |
XOR_i | OR_i | AND_i | CMP_i =>
case ADDR is
when ACC_ea
=> AB_p <= '0' & MAR ;
when IX_ea
=> AB_p <= '0' & MAR ;
when IMM_ea
=> AB_p <= '0' & MAR ;
when DIR_PROG_ea => AB_p <= '0' & MAR ;
when DIR_DATA_ea => AB_p <= '1' & MAR ;
when IDX_PROG_ea => AB_p <= '0' & MAR ;
when IDX_DATA_ea => AB_p <= '1' & MAR ;
end case;
when others => AB_p <= '0' & MAR ;
end case;
end case;
end case;
end process;
2004年 9月
新大VLSI工学
16
Verilog-HDLの記述の構成
module module_name ( ポートリスト );
ポート宣言
reg , wire,
paramete 宣言
assign文
always文
case文
など
モジュール宣言
入力/出力端子の名前、ビット幅等を記述
入力/出力以外の信号の名前、
ビット幅等を記述やパラメタ宣言
回路の構造、動作を記述
endmodule
2004年 9月
新大VLSI工学
17
Verilog-HDLの記述の例(回路図)
SAMPLE
CLK
RST
4
4
A
F/F
D
4
D
Q
B
[0]
[1]
[2]
[3]
C
SEL
2004年 9月
新大VLSI工学
18
モジュール宣言
モジュールの宣言を行います。
module SAMPLE(CLK,
RST,
A,
B,
C,
D) ;
モジュールの名
前を記述する
2004年 9月
新大VLSI工学
端子名を
記述する。
19
ポート(端子)宣言
以下のことを記述します
○端子名
○方向 input / output / inout
○ビット幅
(例)
input
input
input
input
output
inout
端子の方向の
定義
[3:0]
[7:3]
MSB
2004年 9月
ビット幅の定義(1bit
の信号は指定しなくて
よい)
clk;
rst;
A;
B;
C;
D;
端子名の定義
(モジュール宣言での
端子名を書く)
LSB(0である必要はない)
新大VLSI工学
20
入出力端子以外の信号の宣言
信号の属性によりレジスタ(reg)とワイヤー
(wire)の種類に分けられる。
wire:ロジック(論理)出力
reg:レジスタ(フリップフロップ)出力
2004年 9月
新大VLSI工学
21
reg/wire宣言の信号
reg宣言
SAMPLE
wire宣言
CLK
RST
4
4
A
D
4
D
Q
B
C
SEL
2004年 9月
新大VLSI工学
22
reg/wire宣言の記述例
基本的にはポートの宣言と同じです
(例)
reg
wire
[3:0]
E;
F;
reg/wire宣言は基本的にはどこに記述してもよいことになってい
ますが、ポート宣言のあとにまとめて書くのを推奨します。
(コンパイラによってはエラーやワーニングを出すことがあります)
2004年 9月
新大VLSI工学
23
動作の記述(assign文)
簡単な論理回路を記述します。
(良い例)
a
assign c = a & b;
c
b
(悪い例)
HDLを記述では
文法的に間違っている
c = a & b;
信号cはwire宣言する必要があります!!
2004年 9月
新大VLSI工学
24
動作の記述(always文)(1)
順序回路の記述に使用します。
(主にレジスタの記述)
(例)
always@(posedge CLK or negedge RST) begin
if (!RST)begin
B <= 0;
イベントリスト
end
else begin
B <= A;
ステートメント
end
ノンブロッキング代入
(順序回路の記述で使用します)
2004年 9月
新大VLSI工学
A
D
Q
B
イベントリストのイ
ベントが生じたらス
テートメントの動作
を行います
25
動作の記述(always文)(2)
(例)
always(posedge CLK or negedge RST) begin
if (!RST)begin
B <= 0;
end
else begin
B <= A;
end
end
CLKの立ち上がりか、RSTの立
下りのイベントが起こったらその
後の記述の動作を行います
RSTが’0’やったら、Bを‘0’にし
まっせ。
RSTが’0’ 以外やったら、BにAを
代入しまっせ。
2004年 9月
新大VLSI工学
26
動作の記述(function文)
複雑な論理を記述する時に使用します。
(case文やif文を記述するときによく使用します)
(例)
function sample_func;
input [3:0] A;
input [3:0] B;
begin
C[3] = A[3] & B[3];
C[2] = A[2] | B[2];
C[1] = A[1] ^ B[1];
C[0] = ~(A[0] & B[0]);
end
endfuction
2004年 9月
新大VLSI工学
functionの名前を定義します
引数を定義します
(function内で使用する引数)
functionの論理の記述
endfunctionで記述を終了させ
ます
27
動作の記述(case文)
C言語のswitchにあたるもの。
(例)
function sample_case;
input [1:0] A;
input [3:0] B;
begin
case(A)
Aの値によりCの
値が選択できる
A[1:0]
2’b00 : C = B[0];
2’b01 : C = B[1];
2’b10 : C = B[2];
2’b11 : C = B[3];
default : C = B[3];
B[3:0]
2
4
[0]
[1]
[2]
[3]
00
01
10
else
endcase
defaultは上記の条件以外の値が
入力されたときのCの値。必ず
defaultは書いて下さい。
end
endfuction
2004年 9月
新大VLSI工学
28
動作の記述(if文)
(例)
function sample_if;
input [1:0] A;
input [3:0] B;
begin
if (A==2’b00) begin
C = B[0];
end
else if (A==2’b01) begin
C = B[1];
end
else if (A==2’b10) begin
C = B[2];
end
else begin
C = B[3];
end
end
endfuction
2004年 9月
新大VLSI工学
A=2’b00の時のC
の値を記述
A[1:0]
B[3:0]
2
4
[0]
[1]
[2]
[3]
00
01
10
else
A=2’b01の時のC
の値を記述
A=2’b11又はそれ以外の
時のCの値を記述
29
階層構造(サブモジュール呼び出し)
サブモジュールの呼び出し方
module名
インスタンス名
(例)
AAA AAA0(
モジュール名
.A
.B
.C
.D
.E
);
(A),
(B),
(C0),
(D0),
(E0)
.A
.B
.C
.D
.E
);
(C0),
(D0),
(C),
(D),
(E1)
2004年 9月
AAA
A
C
C
B
B
D D0
B
D
D
Z
Z
E
サブモジュールの端子
名と今のモジュールの
信号名が違っていても
よい
ZZZ ZZZ(
サブモジュールでの
端子名
C C0
同じモジュールを呼び
出す時はインスタンス名
を変える。
AAA AAA1(
.X
.Y
.Z
);
A
AAA
A
(E0),
(E1),
(Z)
今のモジュールでの
信号名
E
E0
ZZZ
E1
X
Y
ポイント
○サブモジュールの接続はポート名接続で行う。
○サブモジュールのモジュール名とインスタンス名は
違っていてもかまわない。
○サブモジュールの端子名と今のモジュールでの信
号名は違っていてもかまわない
新大VLSI工学
30
論理合成
論理機能から実際の論理回路を合成する。
(高速・低電力・小面積など目的によって合成結果が異なる)
2004年 9月
新大VLSI工学
31
論理合成の方法
ブール式からの合成
2004年 9月
消費電力を考慮した合成
新大VLSI工学
32
基本的な考え方(1)
遅延(delay)
FF1
A
論理
配線
B
FF2
論理回路や配線により、
信号には遅延が生じる。
最低でもこの遅延が
1サイクル以内である
必要がある。
CLK
A
delay
B
2004年 9月
新大VLSI工学
33
基本的な考え方(2)
Input delay
入力信号
A
論理
配線
B
FF2
このモジュールに
入力される前にも
遅延が生じている
入力信号には、その
モジュールに来るまでの
論理や配線により遅延が
生じています。
このinput delayとこの
モジュール内の遅延の
和が1サイクル以内である
必要がある。
CLK
A
Input delay
delay
B
2004年 9月
新大VLSI工学
34
基本的な考え方(3)
output delay
FF2
A
論理
配線
B
この信号の接続先
に遅延が生じている
出力信号には、そのモジュ
ールに出力されてからの
論理や配線により遅延が
生じています。
このoutput delayとこの
モジュール内の遅延の
和が1サイクル以内である
必要がある。
CLK
A
delay
B
output delay
2004年 9月
新大VLSI工学
35
基本的な考え方(4)
funout(ファンアウト)
ドライブ先が多い
多数の素子にドライブすると、
遅延は大きくなる。
信号がどれだけの素子にドライブ
しているかの数をfanoutといい、
遅延を減らすにはこれを小さくする
必要がある。
2004年 9月
新大VLSI工学
36
基本的な考え方(5)
set up time
FF1
A
B
FF2
このクロックの立ち上がりに
対してset up time より前に
Bは変化してないと、FF2は
Bのデータを取り込めない。
A
delay
B
set up time
2004年 9月
新大VLSI工学
37
基本的な考え方(6)
hold time
FF1
A
B
FF2
このクロックの立ち上がりに
対してhold time 分、Bは変化
してはいけない。変化すると
FF2はBのデータを取り込めない。
A
delay
B
hold time
2004年 9月
新大VLSI工学
38
設計の各ステップとツール
•製造工程とマスクデータ
•回路設計
•レイアウト設計と配置配線
•スタンダードセルとライブラリ
•論理設計と論理合成
•設計検証
•アーキテクチャ設計と高位合成
•テストとテスト容易化
2004年 9月
新大VLSI工学
39
論理検証
• 仕様・アーキテクチャ設計・RTL設計と論理設計
結果(ネットリスト)の等価性を確認する。
• シミュレーションと形式的検証
RTL設計
比較
検証入力
ネットリスト
2004年 9月
新大VLSI工学
40
LSI 設計
設計仕様作成
• 機能・論理設計
セル設計
機能A
機能設計
論理設計
テスト設計
機能分割
設計仕様
X+Y=Z
機能設計
Z-V=S
機能C
X*W=V
機能B
レイアウト設計
レイアウト検証
EBデータ作成
LSI試作
LSIテスト
検証環境
機能A
テストベンチ
機能C
テストベンチ
*************
*************
RTLデータ
****
機能B
テストベンチ
論理合成
論理シミュレーション
2004年 9月
新大VLSI工学
41
論理シミュレーション
2004年 9月
新大VLSI工学
42
LVS (Layout v.s. Schematic)
• ネットリスト通りレイアウトがなされている
かをチェックする
元のネットリスト
レイアウトデータ
比較(グラフの等価性判定)
回路抽出
ネットリスト
2004年 9月
新大VLSI工学
43
性能の検証
• 論理検証ー>遅延検証
• LVS ー>回路パラメータ抽出、回路シミュ
レーション(主にライブラリ開発で行う。)
2004年 9月
新大VLSI工学
44
設計の各ステップとツール
•製造工程とマスクデータ
•回路設計
•レイアウト設計と配置配線
•スタンダードセルとライブラリ
•論理設計と論理合成
•設計検証
•アーキテクチャ設計と高位合成
•テストとテスト容易化
2004年 9月
新大VLSI工学
45
アーキテクチャ設計
2004年 9月
新大VLSI工学
46
システムLSI設計のフロー
ツール
モデル化
シミュレーション
合成と最適化
解探索
評価
システム仕様
アーキテクチャ選択
HW・SW分割
HW合成
2004年 9月
システム記述法
アーキテクチャ記述
選択手法,探索
アーキテクチャ方式
分割手法
(評価と最適化)
SW合成
新大VLSI工学
47
ソフトウェア合成
ソフトウェア仕様
2004年 9月
プロセッサ
メモリの合成
基本ソフト
ウェアの合成
汎用・専用
データパス幅
命令体系など
コンパイラ
OS
Debugger
新大VLSI工学
応用プログ
ラムの合成
プログラムサイズ
データサイズ
性能,消費電力
48
ハードウェア合成
ハードウェア仕様
ハイレベル合成
モジュール選択
スケジューリング
論理合成
レイアウト合成
2004年 9月
新大VLSI工学
49
仕様記述言語
VLSIシステム
VHDL, Verilog, SpecC, System C...
DSP
COSSAP,...
連続系
MATLAB, MATRIXX,...
プロトコル SDLーCLOTOS, ESTELLE,..
同期システム
ESTEREL, STATECHART,..
プログラム C++, JAVA, C, FORTRAN,
高位ソフトウェア VDM, Z, B, FUNMATH,
各分野でそれぞれの言語がある.
表現力,解析力,汎用性
2004年 9月
新大VLSI工学
50
何が難しいか?
• モデル(Semantics)と文法(Syntax)
a:=b; b:=a; 同時?逐次?非決定的?
• 時間と順序関係
after 5ms;
after event b;
• 抽象化と詳細化
命令サイクル,クロックサイクル,実時間...
• 計算精度
ワード,バイト,ビット,アナログ,...
2004年 9月
新大VLSI工学
51
アーキテクチャの探索
• 部品の選択
– プロセッサ,メモリ,バスなど
•
•
•
•
•
2004年 9月
動作/変数/チャネルの分割
バインディング/アロケーション
結合の決定
スケジューリング
評価
新大VLSI工学
52
アーキテクチャの探索
Processor
Processor
DSP
専用回路
ROM
I/O
RAM
2004年 9月
新大VLSI工学
53
HW-SW分割
• 入力:
– 機能ブロックの集合
– 基本アーキテクチャ
– 設計目標と設計制約
• 出力
– 機能ブロックの実現形態(HW or SW)
2004年 9月
新大VLSI工学
54
HW-SW分割の概念
ソフトウェア
A
メモリ
CPU
B
D
専用
ハードウェア
C
機能ブロック
2004年 9月
ハードウェア
新大VLSI工学
55
HW-SW分割の仕組
機能ブロックの
集合
分割と割当て
設計制約と
設計目標
評価
HW-SW
コシミュレーション
探索戦略
2004年 9月
新大VLSI工学
56
システム設計の要素技術
• システムのモデル化
• 検証技術
– HW-SW コシミュレーション
– 検証パタンの生成
– 形式的検証
• 性能評価技術
• 最適化技術
2004年 9月
新大VLSI工学
57
ハイレベル合成
for i in 1 to 3 loop
z:= z + x(i) * y(i);
end loop;
MUL
MUL
MUX
Reg.
File
ADD
2004年 9月
新大VLSI工学
58
ソフトウェア合成
ソフトウェア仕様
2004年 9月
プロセッサ
メモリの合成
基本ソフト
ウェアの合成
汎用・専用
データパス幅
命令体系など
コンパイラ
OS
Debugger
新大VLSI工学
応用プログ
ラムの合成
プログラムサイズ
データサイズ
性能,消費電力
59
基本ソフトウェアの合成
• リターゲッタブルコンパイラ
– CPU, DSP, 専用プロセッサ
• GCC, Mimola, Valen-C, SUIF,...
• OSの合成
2004年 9月
新大VLSI工学
60
組み込みシステムのコンパイル技術
• プログラムはROMに固定される.
• プログラムの実行状況が予測しやすい.
• コンパイルに論理合成やレイアウト合成と
同じ程度の最適化努力が許される.
• プログラムに対してハードウェアを変更す
ることも出来る.
2004年 9月
新大VLSI工学
61
コンパイラによるシステム最適化
プログラム
プロセッサ
定義
コンパイル
広域コード配置
局所命令スケジューリング
2004年 9月
新大VLSI工学
62
設計の各ステップとツール
•製造工程とマスクデータ
•レイアウト設計と配置配線
•スタンダードセルとライブラリ
•論理設計と論理合成
•設計検証
•アーキテクチャ設計と高位合成
•テストとテスト容易化
2004年 9月
新大VLSI工学
63
集積回路のテスト
• 製造した半導体から良品と不良品を選別
する必要がある.
• 何らかの入力を印加し,その応答を見る.
→その応答によって良品と不良品の違い
を見極める.
• 多くの故障モデルとそれらに関連するテス
ト手法が提案されている.
2004年 9月
新大VLSI工学
64
故障モデル
•
•
•
•
2004年 9月
Single stuck-at faults(単一縮退故障)
Multiple stuck-at faults(多重縮退故障)
Bridging faults(ブリッジ故障)
Delay faults(遅延故障)
新大VLSI工学
65
故障の種類
Stuck at 0
遅延故障
2004年 9月
ブリッジ故障
Stuck at 1
新大VLSI工学
66
故障の検出
0
0
0
0
2004年 9月
1
1
1
1
新大VLSI工学
0
1/0
0/1
Stuck at 1
67
テスト技術の分類
• 外部テスト・・・チップ外のテスタを用いる.
– スキャン設計
– クロスチェック法
– IDDQテスト
• 組込み自己テスト(BIST, Built-In SelfTest)・・・チップ上に搭載された簡易なテス
タを用いてテストを行う.
2004年 9月
新大VLSI工学
68
外部テストと組込み自己テスト
BIST
外部テスト
入力
入力
テスト専用パス
テスト専用パス
CUT
CUT
テスト専用パス
テスト専用パス
応答
応答
2004年 9月
新大VLSI工学
69
LSI 設計
設計仕様作成
セル設計
• BIST(Built In Self Test)
テスト方式
テスタ
LSIチップ
機能設計
論理設計
・LSIチップ大規模化
テスト設計
レイアウト設計
LSIテスト
パターン
発生器
に対応して、
高検出率かつ高速
のアルゴリズム開発
が継続的に必要
レイアウト検証
比較器
EBデータ作成
LSI試作
数10MHz
LSIテスト
チップ内蔵
自己テスト
(BIST)
パターン
発生器
比較器
圧縮器
・LSIチッップ内の
高速回路で
ランダム法(乱数)で
テストパターン発生
・診断回路分の
チップ面積増加
数100MHz
2004年 9月
新大VLSI工学
2章
70
外部テスト
• 伝統的な手法.
• LSIテスタを用いて,被テストデバイス(Device Under Test)をテ
ストする.
• 外部テストで用いられるテストパタンはATPG(Automatic Test
Pattern Generation)によって作成される.
• DUTにはテスト専用パスが付加される.これをテスト容易化設
計(Design-for-Testability, DFT)という。
2004年 9月
新大VLSI工学
71
組込み自己テスト(BIST)
•
•
•
•
Built-In Self-Testの頭字語.
外部テストほどは用いられていない.
デバイス上に簡易なテスタを搭載する.
パタン発生器にLFSR(Linear Feedback Shift Register,線
形帰還レジスタ)などが,パタン圧縮器にMISR(Multiple
Input Signature Register)などが用いられる.
• 非効率的な乱数のテストパタン
2004年 9月
新大VLSI工学
72
LSI 設計
• テスト容易化設計
設計仕様作成
セル設計
ロジック・スキャン設計
機能設計
対象回路のレジスタ間にスキャンパスを生成し、
内部素子の状態を外部に出力して故障を検出
論理設計
テスト設計
レイアウト設計
スキャンチェーン
レイアウト検証
EBデータ作成
スキャンIN
LSI試作
SCAN
F/F
SCAN
F/F
スキャンOUT
LSIテスト
CLK
テスト入力
バウンダリ・スキャン設計
LSIのI/O素子にスキャン用
レジスタを付加し、チェーン
状に接続することで、LSI間
の接続状態をテスト
断線
テスト出力
TAP
シ
ョ
ー
ト
TAP
2004年 9月
新大VLSI工学
74
スキャンテスト
鈴木五郎 「システムLSI設計入門」 コロナ社
2004年 9月
新大VLSI工学
75
設計フローのまとめ
LSIの設計フロー
仕様設計
アーキテクチャ設計
機能設計
論理設計
レイアウト設計
テスト
1章
2004年 9月
新大VLSI工学
76
LSIの設計フロー
仕様設計
アーキテクチャ設計
製品の要求仕様を分析し、システムの外部仕様を決定
システムの方式やアルゴリズムの決定、CPU、ファーム
ウェアの選定等を行い、HWとSWで実現する機能を分割
機能設計
論理設計
レイアウト設計
1章
2004年 9月
HWで実現する部分を機能ブロックに分割し、HDLで記述
して動作検証を実施
RTLで論理検証後、論理合成を行い、ゲートレベルでの静的なタ
イミング検証と動的な検証を実施
製造
フロアプランを実施し、機能ブロックレベルの配置決定後、タイミ
ング制約に従って配置・配線を実施
テスト
製造されたシステムLSIの動作や電気的特性を検証
新大VLSI工学
77
トップダウン設計
性能
機能
高
規格
ニーズ
コスト
トップダウン
設計の流れ
要求仕様
設計資産
特許
要求
仕様
抽象度
ソフトウェア
アーキ
テクチャ
機能1
機能3
機能2
機能4
機能ブロック
マクロ
マクロ1
マクロ2
マクロ1
マクロ3
マクロ2
マクロライブラリ
D Q
セル
CK
低
セルライブラリ
1章
2004年 9月
新大VLSI工学
78
仕様設計
仕様設計
調査、規格、要求仕様 文章等
からシステムLSIに要求される
仕様を分析
機能・動作・性能を抽出
要求仕様の分析
アーキテクチャ設計
要求仕様書
機能設計
論理設計
レイアウト設計
製造
他社製品
要求仕様書
要求性能
外部仕様の決定
LSI外部仕様書
LSIが分担する
機能を決定
入力
出力
応用ソフト
の分担
LSI外部仕様書
システムLSIは複雑で大規模なシステムを組み込み可能
テスト
LSI設計者単独で開発できるレベルを超越
システム開発者、商品企画者等の参画が必要
1章
2004年 9月
新大VLSI工学
79
アーキテクチャ設計
仕様設計
SW処理で
速度は十分か?
LSI外部仕様書
アーキテクチャ設計
機能設計
CPU
の選定
ソフト
資産
設計資産の
流用可能か?
デバイスの
製造コストは?
LSIの
構成を決定
論理設計
レイアウト設計
アルゴ
リズム
ハード
資産
消費電力は?
製造
テスト
HW仕様書
SW仕様書
HW処理
SW処理
上位設計統合ツールには、設計戦略を評価できるツールがある
システムレベルの検証を行い、設計制約を与えて最適化する
1章
2004年 9月
新大VLSI工学
80
機能設計
仕様設計
アーキテクチャ設計
HW仕様書
インタフェースと機能
(外から見た振る舞い)
のみを定義
ビヘイビア
レベル設計
入力1
機能設計
入力2
機能検証
RTL設計比
記述量:1/10
検証速度:2~3桁倍
ビヘイビアレベル
で機能を記述
出力1
出力2
入力3
論理設計
RTL設計
レイアウト設計
入力1
機能検証
製造
機能A
機能B
出力1
機能C
出力2
入力2
入力3
テスト
以前はビヘイビアレベルで記述した後、人手でRTLに変換していたが、
最近では動作合成ツールにより自動的にRTLに変換するツールが登場している
SystemCやSpecCなど言語を使用し、更に抽象度の高いレベルでの設計も行われている
1章
2004年 9月
新大VLSI工学
81
論理設計
HDL
仕様設計
真理値表
論理変更
HDL
状態遷移
論理抽出と簡単化
アーキテクチャ設計
論理合成
Lib
テクノロジマッピング
機能設計
SCAN合成
NG
論理設計
レイアウト設計
仮負荷SIM
レイアウト設計
製造
LPE
テスト
実負荷SIM
NG
1章
2004年 9月
新大VLSI工学
Fanout数
等から推
定される
統計的な
負荷情報
で検証
レイアウト
から抽出
した抵抗
容量情報
で検証
最適化
ネットリスト
大
面積小
遅延大
面積大
遅延小
遅
延
面積
大
82
テスト容易化設計
テストパターンの評価 : 故障検出率
故障検出率(%)=検出された故障数/定義した故障数*100
テストパターン作成
シミュレーション
検出率OK?
容易化無
NG
大
%
ゲート単価
100
検
コ テスト
ス コスト
出
ト
率
大
大
0
ゲート規模
パターン作成工数
回路のHDL記述量<テストパターンの記述量
テスト容易化設計 : 論理設計時にテストを考慮して、製品の外部端子から
容易に内部の故障を検出できるように設計する
構造化手法(作成を容易化)
スキャン・パス
LSSD(Level Sensitive Design)
マルチプレクサ
1章
2004年 9月
組み込み自己試験(パターンの不要化)
LFSR(Linear Feedback Shift Register)
BILBO(Built-In Logic Block Observer)
メモリBIST(Built-In Self Test)
新大VLSI工学
83
形式検証
論理シミュレータ : 論理検証とタイミング検証を同時に実施
大規模LSIでは処理に時間がかかる
論理検証 : 形式検証(Formal Verification)
テストパターンを使用せず、数学的に論理の等価性をチェック
タイミング検証 : STA(Static Timing Analyzer)
テストパターンを使用せず、遅延計算を高速に処理する
HDL設計
論理合成
論理合成
組合せ回路
配置配線
形式検証
形式検証
論理合成、
SCAN合成
での論理変更
は無いか?
CTS、ECO
での論理変更
は無いか?
1章
2004年 9月
D Q
CK
ロジックコーン
単位で等価性比較
D Q
CK
組合せ回路
D Q
CK
D Q
CK
D Q
CK
D Q
CK
新大VLSI工学
組合せ回路
D Q
CK
ロジックコーン
FFを頂点とする
組合せ回路網
組合せ回路
D Q
CK
84
レイアウト設計
CTS(Clock Tree Synthesis)
仕様設計
フロアプラン
D Q
CK
CLK
T1
電源配線
組合せ
回路
D Q
CK
T2
クロック伝播遅延 T1<T2
アーキテクチャ設計
CLK
配置
機能設計
論理設計
レイアウト設計
製造
テスト
1章
2004年 9月
CTS
D Q
CK
CLK
T1
概略配線
組合せ
回路
D Q
CK
T2
クロック伝播遅延 T1=T2
詳細配線
ECO(Engneering Change Order)
エラー修正
レイアウト検証
セル セル
B
A
セル
C
セル セル
A B
セル
C
部分的に再配置配線
新大VLSI工学
85
タイミングドリブンレイアウト設計
RTL記述
合成制約
フロアプラン
・Setup/Hold
Timing Place
論理合成
Timing Optimize
CTS
ネットリスト
Timing Route
自動配置配線
・Max Fanout
・Max Capacitance
・Max Transition
タイミング
制約
Buffer Insert
Gate Re-size
Gate Move
Timing Optimize
STA
エラー修正
GDSⅡ
NG
Timing判定
レイアウト検証
1章
2004年 9月
新大VLSI工学
86
テスト
仕様設計
DCテスト
ピン接触テスト
チップに電源や信号を供給できない不良品を除去
ボンディングや組立工程に異常が無いかテスト
アーキテクチャ設計
機能設計
消費電流テスト
動作電流が規格内である事を確認
スタンバイ電流(無信号、非動作時の電流)を確認
製造プロセスに異常が無いかテスト
各入出力端子の電圧、電流が規格を満足しているか
確認
論理設計
レイアウト設計
製造
テスト
ファンクションテスト
論理回路(デジタル回路)で入出力のH/Lの真偽を
確認する
開発時の機能検証パターンで機能テスト
ACテスト
交流(AC)信号を扱うすべてのテスト
プリント基板上で他の部品と接続して使用する場合
のタイミング余裕が規格内であるかをテスト
出力遅延時間、setup/hold時間、
rise/fall時間
1章
2004年 9月
新大VLSI工学
87