ソフトウェア工学特論 第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
© Copyright 2024 ExpyDoc