PowerPoint プレゼンテーション

Download Report

Transcript PowerPoint プレゼンテーション

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