Timing Optimization Techniques

Download Report

Transcript Timing Optimization Techniques

VLSI設計工学
1 LSI設計の流れ
藤田昌宏
東京大学大学院工学系研究科電子工学専攻
[email protected]
http://www.cad.t.u-tokyo.ac.jp
1
説明の流れ
•
•
•
•
•
•
•
•
•
•
LSIの種類
同期回路とは?
ハードウェア設計の流れ
論理関数と論理ゲート
設計記述とシミュレーション
動作合成
論理合成
配置・配線
テスト
検証
2
デジタルLSIとアナログLSI
• デジタルLSI
– 0,1などの特定の離散値のみを用いて計算
• 実際の信号値は0 ~ 2ボルトまでを信号値の0とみなし、3 ~
5ボルトまでは1とみなす
– 高集積化に向く
• 最先端LSIでは、2つの入力の間の積(AND)を計算する要素(
ゲートと呼ばれる)を数千万個集積できる
• アナログLSI
– 例: オペアンプなどの増幅、演算器、無線機
– 信号値は、連続的に変化
– 高集積化はたいへん
– ユーザインタフェイスは基本的にアナログ
• 本講義では、基本的にデジタルLSIを対象とする
• トランジスタは完全なスイッチとみなす
3
LSIの種類: 機能
• マイクロプロセッサ: 例 Pentium(パソコンなど)
– 算術演算、データ転送、条件分岐などの命令を逐次実行
• 特化プロセッサ: マルチメディアプロセッサ(デジタルテレビなど)
– マイクロプロセッサと同じだが、マルチメディアアプリケーション(画像処
理、音声処理など)用の専用命令を多く持つ
• 組み込み型プロセッサ: 例 DSP (携帯電話など)
– 命令数は少ないが、応用に合わせた特殊な命令をもつ
• 例: for (i=0;i<100;i++) c := c + a[i] + b[i] が1命令
• 専用ハードウェア(ASIC: Application Specific Integrated Circuit)
– 与えられた関数(数式など)を直接ハードウェアで実現
– その応用に限っては、もっとも小さくてかつ高性能。ただし、設計大変
• フィールドプログラマブルLSI: 例 FPGA(Field Programmable Gate
Array)
– チップを製造してから、チップの機能をプログラムできる
4
LSIの種類:作り方
• フルカスタム
– 全て手作り: 例えば、Pentium III
• セミカスタム: スタンダードセル、ゲートアレイ
– 使用できるセルの種類をあらかじめ決めて設計しておく
– 配線も、配線領域を設定してそこだけで行う
• FPGA(フィールドプログラマブルゲートアレイ)
– プログラム可能なセルを配置
– プログラム可能な配線領域を設定
– すべて、LSIを作ってからプログラムできる
• マイクロコントローラ+追加ハードウェア
– 基本的にソフトウェアプログラムで行う
– 速度など性能が不足する部分は追加ハードウェアで実行
5
フルカスタムLSI
• LSIの全ての部分を自由に設計する
– 自由度が大きい→高性能化が可能だが、一方自動設計は大変
– 設計効率から部分的にセミカスタムの手法を導入するのが普通
演算を
するところ
配線領域
6
セミカスタムLSI
• 演算をする部分と配線する領域を規則的に並べる
– 設計の自由度は制限されるが、自動設計は相対的に容易
– 設計期間は短くできる
– ASICと呼ばれているのもは、通常これ
演算を
するところ
配線領域
演算を
するところ
配線領域
演算を
するところ
7
フィールドプログラマブルゲートアレイ
• 演算をする部分と配線する領域は規則的に並べてあり、また、具体
的な演算の種類や配線の仕方は、LSIを製造してからプログラムで
きる
– 簡単にプロトタイプを作れる
– 最後の最後で仕様変更できる
演算を
するところ
演算を
するところ
演算を
するところ
演算の種類は
メモリに格納してある
配線領域
演算を
するところ
演算を
するところ
演算を
するところ
配線パターンは
メモリに格納してある
配線領域
演算を
するところ
演算を
するところ
演算を
するところ
8
マイクロコントローラ+追加ハードウェア
• 基本的にマイクロコントローラ(通常のマイクロプロセッサと同じ)上
でプログラムで実行
– 速度など性能不足の部分は、専用の追加ハードウェアで処理
– 最後の最後で仕様変更できる
マイクロ
コントローラ
(マイクロ
プロセッサ)
追加ハード
ウェア(専用
ハードウェア
)
プログラム
格納メモリ
9
組合せ回路と順序回路
• 組合せ回路
– 記憶を持たない回路、フィードバックループのない回路、現在の
入力のみで出力が決る
• 順序回路
– 記憶を持つ回路、フィードバックループのある回路、出力は現在
および過去の入力に依存
• 同期式順序回路
– クロック信号に同期して動作する順序回路
10
同期式順序回路の概念図
• 組み合せ回路とエッジトリガフリップフロップ
外部入力
n
m
外部出力
組み合せ回路
状態変数
(現状態)
k
k
状態変数
(次状態)
クロック
エッジトリガフリップフロップ
11
エッジトリガ フリップフロップ の動作
• クロックの変化時(立ち上りまたは立ち下がり)の入力を見て出力を
決める
– クロック変化の前(セットアップ)と後(ホールド)は入力が安定で
あること
入力
set-up
hold
クロック
delay
出力
12
同期回路の詳細なモデル
• レジスタ転送 (RT) レベル回路
組み合せ回路
組み合せ回路
組み合せ回路
組み合せ回路
クロック
13
設計の流れ(基本)
module WaitState(load,lo
input load;
input [1:0] loadValue
always @(positive Clk)
if (load)
仕様(RTL)
動作合成
論理合成
より詳細な設計レベルほど:
・ 面積・遅延見積もりはより正確
・ 回路変換の余地はより小さい
LSIの大規模化により、計算機
設計支援技術(CAD: Computer
Aided Design)なしでは設計で
きない!
配置
配線
14
実際のLSI設計
• 広く一般に使われる基本回路素子
– 基本ゲート
– 演算器
• 組合せ素子: 加算器、ALU、(掛算器)
• 順序素子: フリップフロップ、カウンタ、レジスタ
– 大きな回路ブロック(マクロ)
• レジスタファイル
• メモリ
• プロセッサ全体
• LSI=設計ごとに異なるもの+基本回路素子
– 設計ごとに異なるもの
• 全体を制御する制御回路(ランダムロジックとも呼ばれる)
– どの設計でもよく使われる回路
• ライブラリに登録してあるものから選ぶ
15
論理式と論理ゲート
• 基本論理演算
– AND 入力全てが1なら出力1、それ以外は0
– OR 入力の1つが1なら出力1、入力全て0なら出力0
– NOT 入力1なら出力0、入力0なら出力1
• 論理ゲート(テクノロジライブラリに登録されている)
– 半導体を作る上で作りやすいものを基準に構成される
– NAND=AND+NOT
– NOR=INV=OR+NOT
– AND-OR-INVERTER(AOI)
• AOI21: Out = ((a AND b) OR c)
a
Out
b
c
16
論理ゲート
• 論理回路を構成する基本単位
– AND, OR, NOT, NAND, NOR, EOR, ...
• 真理値表
a
a
a
b
c
c
b
b
a
b
abc
000
010
100
111
c
abc
001
011
101
110
a
b
abc
000
011
101
111
ab
01
10
c
abc
001
010
100
110
a
b
c
abc
000
011
101
110
17
論理ゲートの作り方
• MOSトランジスタは完全なスイッチとみなす
– pMOS: ゲートが0ならソースとドレインが導通
– nMOS: ゲートが1ならソースとドレインが導通
• CMOSゲート (complimentary MOS)
• NANDゲート、NORゲートなどは作りやすい
• ANDゲート、ORゲートなどはNAND+NOT、NOR+NOT
となる
18
論理合成とは?
• 与えられた論理式を簡単化し、テクノロジライブラリに登
録されたゲートのみの回路に変換すること
– 論理式簡単化
– テクノロジマッピング
• 主に、回路中のランダムロジックと呼ばれるものに適用さ
れる
19
積和形論理式簡単化
• 積和形論理式: 積項(変数のAND)をORでつなげたもの
– (a AND b AND (NOT c) OR ((NOT b) AND c)
– abc + bc
• 積項の縮小と拡大操作を繰り返して、積項数を最小化を試
みる操作
cd
cd
cd
ab
cd
cd
1
1
ab
1
1
1
1
abc + acd + bcd + abc
cd
cd
cd
1
1
ab
1
ab
1
ab
ab
cd
cd
ab
ab
ab
cd
cd
1
1
1
1
abc + abcd + abcd + abc
ab
1
ab
ab
1
1
1
abc + abd +20abc
多段化と多段論理式簡単化
• 積和形論理式の多段化
– 論理関数 F を「うまく割る」関数 D をみつける F = D • q + r
• 論理関数の因数分解(ただし、余りあり)
• ac+bc+ad+bd+ef=(a+b)(c+d)+ef
• 多段論理式簡単化
– 基本的に回路変換や接続変換でゲート数・配線数を
減らす
c
b
d
e
c
d
a
b
f
c
4
b
d
1
5
o1
2
6
3
X
7
8
1
9
o2
e
c
a
b
f
4
1
2
5
o1
8
9
o2
3
21
テクノロジマッピング
• ライブラリのセルを使って、分割された回路各々をカバーする、コス
ト最小のセルの集合求める
– カバー: 分割された回路の各ノードは、少なくとも1つのセルに含
まれること
NAND2
NAND3
INV
AOI21
NAND3
• 一般的な回路に対して、コスト最小のカバーを求める問題はNP完
全
22
設計記述とシミュレーション
•
•
•
プログラミング言語
– ソフトウェアプログラム(たとえば、マイクロプロセッサで実行)を記述する
ための言語: C、C++、Java、など
ハードウェア記述言語(HDL: Hardware Description Language)
– ハードウェア(たとえば、LSI)の動作を記述するための言語
– 歴史は、プログラミング言語と同じくらい古い
– 重要な概念
• メモリ、レジスタ: ものを記憶できる
• ターミナル、配線: 信号値はその場限りで忘れる
• クロック: 通常、同期回路を対象としている
• 並列動作: ハードウェアは、物理的に存在するものは基本的に並
列に動作する
• 回路遅延: 何を計算するにも時間がかかることを意識する
• ハードウェア量は一定: 実行中にハードウェアは追加できない
– スタックや再帰的呼び出しなどは認めない
• Cのポインタなどは、ハードウェアでの実現が不可能・困難
プログラミング言語を実行するように、HDLの実行できる
– 様々なHDLや設計レベルに応じたシミュレータが存在する
23
高位レベル合成(動作合成)とは?
• 入力: 与えられた動作記述
– Cなどのプログラミング言語の記述と同じように、ifthen-else, for loop, 代入、算術演算などを使って記述
• 出力: 算術演算などは演算マクロ(ブロック)へ、また、ifthen-elseなどの制御は論理式へ変換したもの
– ライブラリに登録されたマクロを利用
– 制御は、論理式に変換し、論理合成にかける
– 注意: すべて論理式に変換し、論理合成することも可
能だげ、良い回路は生成できない
24
動作合成例
Out = a*u + b*v + c*w + d*x - e*y
25
配置配線
•
•
•
•
•
配置: 各ゲートをLSI上に並べていく
配線: 各ゲート間をつなぐ
コスト関数
– 面積、総配線長
– 最長配線を短く
基本的に自動配置配線ツールを利用
– 大規模なので、時間のかかる処理
– もし、自動でできなかったときは:
• ツールのパラメータを変えて、もう一度
• 自分でつなぐ
フルカスタムの場合は、人手配置配線となることも多い
26
テスト
• 製造されたLSIが設計どおり動作するかを調べること
• LSIに入力信号を送り、所望の出力がでるかどうかを調
べる
• 完全に調べる=可能な全入力パターンを調べる=不可
能
• 可能性の高い故障モデルを作り、それのみを調べる
– 縮退故障=入力に関係なく出力値が固定される
– ブリッジ故障=回路中に配線のショートがある
– 電源消費が異常に大きくなる
• 通常、大規模回路のテストは大変なので、テスト容易化
設計が施される
– 内部のフリップフロップはすべて外部から見える
27
検証
• 設計が仕様を満たすか否かを調べる
• 通常は、いろいろなパターンでシミュレーションして、結果を
人手でチェック
– 自動化
• シミュレーションパターンの自動生成
• シミュレーション結果の自動解析
• 形式的検証: 設計の正しさを数学的に証明する
– 基本的には、すべての場合をしらみつぶしにチェックす
ることと等価
• 具体的問題
– 2つの設計の等価性検証
– ある設計が特定の性質を満たすかどうかの検証(プロパ
ティチェッキング)
• 今は、設計技術している時間よりも、設計の正しさを検証し
28
ている時間の方がずっと長い!
さて、これから
VLSI設計手法、設計支援手法(CAD)を広く (浅く) 説明
•
4月19日 LSI設計導入、論理関数、論理ゲート
•
4月26日 基本的な論理回路1(組合せ回路素子)
•
5月10日 基本的な論理回路2(順序回路素子)
•
5月17,24日 論理回路合成
•
5月31日 レジスタ転送レベル設計
•
6月7日 設計検証の基本的手法
•
6月14,21日 1回休講、1回設計の上位レベルからの合成(代講)
•
6月28日
•
7月5日
•
7月12日 LSIのレイアウト
•
7月19日 ハードウェア/ソフトウェア協調設計
LSIのテスト
各種設計記述のシミュレーション法
29