第3回:FPGA向けCAD - HirokiNakaharaOboe.Net

ソフトウェア工学特論
第3回
愛媛大学理工学研究科
電子情報工学専攻ソフトウェア分野
中原 啓貴
ソフトウェア工学特論
1
講義の内容
第1回:
第2回:
第3回:
第4回:
第5回:
第6回:
第7回:
FPGAをざっくり解説
FPGAのアーキテクチャ
FPGAの設計・CADツール
高位合成とFPGA
CPUやGPU等を取り込むFPGA
FPGAで電波望遠鏡・NIC・人工知能・株取引
FPGAでNES(ファミコン)を作る
ソフトウェア工学特論
2
今日の内容
• FPGAに回路をマッピングするCADツール
CADツールにかけると
こんな回路を実現する
コンフィギュレーション
(ビットストリーム)データ
が出力される
➔
一般的にはハードウェア記述言語
(VHDL/Verilog HDL)で
回路を記述する
ソフトウェア工学特論
3
FPGA設計フロー
ソフトウェア工学特論
4
ブーリアンネットワーク
• サイクルの無い有向グラフによる組合せ論理回路の表現
• 節点:論理ゲート、有向枝:入出力
ソフトウェア工学特論
5
論理合成
• HDL記述からブーリアンネットワークへ
input [3:0]X,Y;
output [7:0]Z;
Z=X*Y
ソフトウェア工学特論
6
マリオメーカーで論理演算!?
ソフトウェア工学特論
7
万能系
• 与えられた論理素子の集合で任意の論理関数を
表現可能
• e.g. NAND, NOR
• 定数(0,1)と組合せて合成
• 問:
• NANDからNOTを合成せよ
• NANDと定数からAND, ORを合成せよ
万能系が必要な理由?
ソフトウェア工学特論
8
論理合成ツールABC
• 2入力NANDに一旦落としてから最適化
ABCの作者
Dr. Alan Mishchenko
ソフトウェア工学特論
9
テクノロジマッピング
ソフトウェア工学特論
10
ツリー分解
• グラフカバリング問題に帰着
• 動的最適法を用いて深さ最適化を求める
ソフトウェア工学特論
11
分解とカバリング
分解
(Decomposition)
カバリング
(Covering)
ソフトウェア工学特論
12
Functional Decomposition
Decomposition
Chart
Free
00
Variables
X2=(x3, x4) 01
10
11
Bound Variables
X1=(x1, x2)

log 2 00 01 10 11
0
1
1
1
1
1
0
0
0
1
1
1
1
1
0
0
h(X1) 0 1 0 1
Column Multiplicity =2
X1 xx12
H
X2 xx34
G
f
f =g(h(X1),X2)
13
Example
X1=(x1, x2)
00 01 10 11
X2=(x3, x4)
00
01
10
11
0
1
1
1
1
1
0
0
0
1
1
1
1
1
0
0
h(X1) 0 1 0 1
=2
24x1=16 [bit]
x1
x2
h(X1)
x3,x4
0
0
0
00
01
10
11
0
1
1
1
0
0
1
1
1
0
0
1
1
1
1 h(X1)
1
1
0
0
22x1+23x1=12 [bit]
14
Functional Decomposition
using the Decision Diagram
x3
0
0
1
x2
x2
1
0
x1
x2
h(X1)
1
0
0
0
0
1
1
1
0
0
1
1
1
h(X1)
x1
0
1
x0
0 1
0
0
1
x1
x1
1
0
1
0
1
x0
0 1
0
x1
0
1
1
x3,
1 x4
0
00
01
10
11
0
0
1
1
1
1
1
1
0
0
0
0
1
1
1
1
1
1
0
0
15
Functional Decomposition
using the Decision Diagram
x3
0
0
1
x2
x2
1
0
1
x1
x2
h(X1)
0
0
0
0
1
1
1
0
0
1
1
1
h(X1)
x1
x1
0
1
0
1
0
1
x0
0 1
0
x3,x4
1
00
01
10
11
0
0
1
1
1
1
1
1
0
0
16
配置
• スロット(場所)にモジュール(論理ゲート)を配置
する問題に帰着
• 2次割り当て問題→NP完全問題
• 近似解放(焼きなまし法、ミンカット配置手法)
ソフトウェア工学特論
17
ミンカット配置手法
• モジュール集合と配置領域を再帰的に2分割
• 高速に准最適解が得られる
• 商用FPGA設計ツールで採用
ソフトウェア工学特論
18
配線
• 概略配線:大まかな配線経路を決定
• 詳細配線:配線セグメントやスイッチを決定
概略配線図
概略配線を詳細配線グラフに展開
ソフトウェア工学特論
19
実際にLチカを設計してみる
ソフトウェア工学特論
20
ソフトウェアだと
• 例えばArduino
ソフトウェア工学特論
21
まとめ
• FPGA上に回路を設計するツール群を紹介
• 論理合成
• テクノロジマッピング
• 配置・配線
• 実際にLチカを設計してみた
• 簡単な回路だとソフトウェアで十分ですよ
• FPGAは設計が大変…でもASICよりはマシ
ソフトウェア工学特論
22
次回は
• 高位合成(ソフトウェアから回路を合成)
高位合成を行うと
いきなりFPGAの回路に!
➔
C/C++やJavaで書いたコード
ソフトウェア工学特論
23