Comments
Description
Transcript
フォトアーキテクチャ
今さら聞けない高位合成 ~一から学ぶ高位合成~ から学ぶ高位合成 シャープ株式会社 電子デバイス事業本部 副参事 山田 晃久 1 ハードウェア設計と抽象度 動作仕様 設計制約(コスト 性能 消費電力) 設計制約(コスト、性能、消費電力) 要求仕様 システムの実現方式を決定 (アーキテクチャ、アルゴリズム) ゴ ズ システム分割(HW/SW)→機能ブロック システム設計 (動作レベル設計) RTL記述 機能設計 (RTL設計) 論理合成 ゲートレベル記述 論理設計 レイアウト設計 ハードウェアの処理を設計 (データ処理回路と制御回路) クロックレベルのタイミング設計 論理素子(AND/OR/NOTなど)と 記憶素子(フリップフロップ)による回路設計 フロアプラン決定 配置配線 ©2009 SHARP CORPORATION 2 ハードウェア設計と抽象度 動作仕様 設計制約(コスト 性能 消費電力) 設計制約(コスト、性能、消費電力) 要求仕様 動作レベル記述 システムの実現方式を決定 (アーキテクチャ、アルゴリズム) ゴ ズ システム分割(HW/SW)→機能ブロック システム設計 (動作レベル設計) 高位合成 (動作合成) RTL記述 機能設計 (RTL設計) 論理合成 ゲートレベル記述 論理設計 レイアウト設計 ハードウェアの処理を設計 (データ処理回路と制御回路) クロックレベルのタイミング設計 論理素子(AND/OR/NOTなど)と 記憶素子(フリップフロップ)による回路設計 フロアプラン決定 配置配線 ©2009 SHARP CORPORATION 3 動作レベル設計とRTL設計 動作レベル設計 z 動作(アルゴリズム)を設計 z How のみを設計 z ハードウェアによる実装とは独立 RTL(Register Transfer Level)設計 z クロック毎のレジスタ間のデータ転送を設計 z How と When と by What を設計 z レジスタや演算回路とそれらの制御を設計 (ある程度ハードウェアが見えている) ©2009 SHARP CORPORATION 4 高位合成とは 設計対象の回路の動作・アルゴリズムか 設計対象の回路の動作 アルゴリズムか らレジスタ転送レベル(RTL)の回路を自 動で合成する技術 High level synthesisの和訳 和訳 動作合成(Behavioral synthesis)とも 呼ばれる ©2009 SHARP CORPORATION 5 高位合成処理 HDL中の演算の 1. 実行するサイクルを決定し(スケジュー ( リング)、 2. 各演算を演算器に割り当て、必要に応 じて接続し(アロケ ション) じて接続し(アロケーション)、 3 3. それらの回路要素を制御する回路を 生成する(制御回路生成)。 ©2009 SHARP CORPORATION 6 スケジューリング Y = a * b * c * d; データフローグラフ a bc Step 0 a Mult b Reg 2 d Step 1 * c d 1 * * 3 * Step 2 * 1 2 Step 3 * 1 1 リソース制約: 使用できる乗算器数は1個 ©2009 SHARP CORPORATION 7 アロケーション Step 0 a Mult Reg b 2 Step 1 * c d 1 3 * Step 2 1 2 Step 3 * b a c d s1 Q R1 s2 * Q R2 s3 s4 s5 Q R3 1 1 データパスの構成 スケジ スケジューリング結果 リング結果 演算器やレジスタなどの演算資源をどのように割当て、 共有するか(リソ スシェアリング)を決定 共有するか(リソースシェアリング)を決定 ©2009 SHARP CORPORATION 8 制御回路生成 Step 0 Step 1 St 2 Step Step 3 Mult Reg a b 2 * c d 1 3 * 1 2 * 1 1 スケジューリング結果 スケジュ リング結果 s1 b a c d Q s4 R1 s2 * Q R2 s5 Q s3 R3 s1 s2 s3 s4 s5 R1 R2 R3 Step 0 1 0 X X X 1 1 0 Step 1 0 1 0 0 0 1 1 1 Step 2 X X 1 1 1 0 0 1 Step 3 X X X 0 1 0 0 1 ©2009 SHARP CORPORATION 9 RTL設計 設計の焦点 z クロック毎のレジスタ間のデータ転送をどのように するか?(同期設計) z レジスタ間のデータ処理と制御を検討 設計手法 z RTレベルのハ ドウ ア記述言語を使用 RTレベルのハードウェア記述言語を使用 z 論理合成を利用 - コストや性能の制約にもとづいてさまざまな組合せ回路 を合成(レジスタ構造は固定) ©2009 SHARP CORPORATION 10 RTL記述 z レジスタや演算回路とそれらの制御を記述 z クロック毎のレジスタ間のデータ転送を記述 レジスタ レジスタ 組合 せ回 路 外部入力 外部出力 クロック クロ ク データ処理回路(データパス) 制御回路(状態遷移機械) ©2009 SHARP CORPORATION 11 動作レベル設計 設計の焦点 z どのようなアルゴリズムで機能を実現するか? z デ タフ データフローを検討 を検討 設計手法 z システム全体をまとまった機能ブロックに分割 全体をまとま た機能ブ ク 分割 z 動作レベルのハードウェア記述言語を使用 z 高位合成を利用 - コストや性能の制約、入出力の制約(順序制約やタイミング制約) コストや性能の制約 入出力の制約(順序制約やタイミング制約) を与えてさまざまな構成の回路を合成 ©2009 SHARP CORPORATION 12 設計抽象度の差(1) 動作レベル Y = a * b * c * dd; 動作レベルでは ハードウェア実装を 意識しない RTレベル Q * Q Q * Q … * Q Q * コントローラ Q 回路1 … 回路n ©2009 SHARP CORPORATION 13 設計抽象度の差(2) 動作レベル architecture hit t b h i off MUL4 is behavior i begin MULT:process(a,b,c,d) begin y <= < a*b*c*d d; end process ; end behavior; 行数で数~10倍 7行 RTレベル architecture RTL1 of MUL4 is signal aa, bb, cc, dd: unsigned(7 downto 0); begin MULT:process(CLK) begin g if CLK’event and CLK = 1 then aa <= a; bb <= b; cc <= c; dd <= d; y <= (aa * bb) * (cc * dd); end if; end process ; end RTL1; 11行 architecture RTLn of MUL4 is signal mul: unsigned(7 downto 0); signal g m1,, m2: unsigned(7 g ( downto 0); ); ….. begin MULT:process(CLK) begin g if CLK’event and CLK = 1 then mul <= m1 * m2; end if; end p process ; SEL1:process(CLK) begin if CLK’event and CLK = 1 then if stage g = 1 then m1 <= a; else m1 <= mul; end if;; end if; end process ; …. y <= mul;; end RTLn; ©2009 SHARP CORPORATION 48行 14 動作レベル設計とRTL設計 動作レベル設計 z How のみを設計 どのような処理を行うか? RTL設計 z How と When と by What を設計 いつその処理を 行うか? スケジューリング どの演算器がその処理を 行うか? アロケーション ©2009 SHARP CORPORATION 15 Cベース設計 C ス設計 (アルゴリズム/仕様設計) C HW/SW分割 C (SW) HW仕様 Cコンパイラ Cコンハ イラ オブジェクトコード RTL記述 記述 論理合成 SoC ©2009 SHARP CORPORATION 16 Cベース設計 C ス設計 (アルゴリズム/仕様設計) C HW/SW分割 C (HW) HW/SW検証 C (SW) Cコンパイラ Cコンハ イラ オブジェクトコード RTL記述 記述 論理合成 SoC ©2009 SHARP CORPORATION 17 Cベース設計 C ス設計 (アルゴリズム/仕様設計) C HW/SW分割 C (HW) HW/SW検証 C (SW) Cコンパイラ Cコンハ イラ 高位合成 オブジェクトコード RTL記述 記述 論理合成 SoC ©2009 SHARP CORPORATION 18 Cベース設計 C ス設計 (アルゴリズム/仕様設計) C Cベースの動作レベル設計 C (HW) HW/SW分割 HW/SW検証 C (SW) Cコンパイラ Cコンハ イラ 高位合成 オブジェクトコード RTL記述 記述 論理合成 SoC ©2009 SHARP CORPORATION 19 Cベースの動作レベル設計のメリット 期待できるメリット z 記述量が少なくなる z 高速に機能検証が行える z 検証した機能がそのまま回路になる z 早い段階で回路規模、性能が見積もれる z たくさんのCプログラム資産が利用できる ©2009 SHARP CORPORATION 20 高位合成のターゲット回路 外部入力 データ処理用の回路 ((データパス)) 演算結果 外部出力 制御信号 制御回路 ©2009 SHARP CORPORATION 21 高位合成技術の適用範囲 (1) 入力 処理1 処理2 出力 イベント ハンドラ 疑問:どの部分に高位合成を適用すべきか? ©2009 SHARP CORPORATION 22 高位合成技術の適用範囲(2) ●各ブ ●各ブロックの処理が簡単な場合 ク 処理が簡単な場合 入力 処理1 一つの動作で記述して高位合成 処理2 出力 イベント ハンドラ ●各ブロ クの処理が複雑な場合 ●各ブロックの処理が複雑な場合 別々のブロックにした方が考えやすい ©2009 SHARP CORPORATION 23 シャープでの取り組み システムの並行性をCSP (Communicating Sequential Processes)として表現 各逐次プロセスを高位合成技術で合成 入力 処理1 処理2 出力 イベント ハンドラ par 入力; 処理1; 処理2: 出力; イベントハンドラ; ©2009 SHARP CORPORATION 24 上流設計の考え方 各ブロックの高位合成 ブロック間の接続 (計算機の仕事) 設計対象をCSP として表現 (設計者の仕事) 動作仕様 入力 処理1 処理2 出力 イベント ハンドラ 論理合成可能なRTL回路 このような上流設計が可能となる設計環境を構築する ©2009 SHARP CORPORATION 25 Bachシステム Bach C言語 動作仕様 入力 処理1 処理2 出力 Bach B h コンパイラ イベント ハンドラ 論理合成可能なRTL回路 Bach Cシミュレータ サイクル精度Cシミュレータ ©2009 SHARP CORPORATION 26 Bachを用いた設計フロー 仕様 Bachシステム Untimed検証 Bachシミュレ ション Bachシミュレーション デバッグ Bach C記述 入出力のチェック 高位合成 (Bachコンパイ ラ) 回路スペックの確認 Timed検証 サイクル精度C シミュレーション RTLシミュレーション デバッグ 動作の確認 サイクル精度 C記述 RTL記述 スループット・ レイテンシのチェック 既存設計手法 既存RTL記述 RTLシミュレーション RTL シミュレーション 論理合成 LSI レイアウト ©2009 SHARP CORPORATION 27 適用事例 MPEG-4 コーデックLSI IrSimpleフォトアダプタ用画像処理エンジン CCDカメラ、CMOSセンサカメラ用DSP ワンセグ受信用マルチメディア処理LSI ©2009 SHARP CORPORATION 28 フレームレート変換LSI設計への適用 60フレーム/秒の入力動画を120フレーム/秒に変換 60フレーム/秒 120フレーム/秒 中間のフレームを生成 外部仕様 z 入力:60 フレーム/秒 z 出力:120フレーム/秒 z 画像サイズ : フルスペックHD (1920 x 1080) ©2009 SHARP CORPORATION 29 FRC LSIの設計/検証フロー アルゴリズム検証 R&D部門 デバイス開発 部門 シミュレーション ション C シミュレ デバッグ Bach C Untimed シミュレーション デバッグ ソース Cソース Bach システム 検証 Timed 検証 RTL シミュレーション BachC記述 高位合成 RTL 記述 既存設計手法 エミュレーション 既存RTL記述 RTL 検証 論理合成 レイアウト LSI ©2009 SHARP CORPORATION 30 動作レベル設計(C → Bach C) 1. C言語で設計する部分とそれ以外の切り分け z C言語で設計しなかった回路 言語 設計しなか た回路 - 2. アナログ回路 単相片エッジのクロックで動作しない回路 既設計の回路 テスト回路 全体のデータ・制御の流れを決定 z C言語ベース設計といえどもトップダウンのアプローチ は必要 ©2009 SHARP CORPORATION 31 FRCアルゴリズム Motion vector estimation Input 60p Pre-processing Motion vector estimation Interpolation Frame interpolation Up-converted output p 120p p ©2009 SHARP CORPORATION 32 動作レベル設計(C → Bach C) 1. C言語で設計する部分とそれ以外の切り分け z C言語で設計しなかった回路 - 2 2. 3. アナログ回路 単相片エッジのクロックで動作しない回路 既設計の回路 テスト回路 全体のデータ・制御の流れを決定 全体のデ タ 制御の流れを決定 z C言語ベース設計といえどもトップダウンのアプローチ は必要 サブモジュールの詳細化 z 固定小数点化 ビット幅指定 並列化 固定小数点化、ビット幅指定、並列化、、、 ©2009 SHARP CORPORATION 33 FRC LSIの設計/検証フロー アルゴリズム検証 R&D部門 デバイス開発 部 部門 シミュレーション レ ション C シミ デバッグ Bach C Untimed シミュレーション デバッグ ソ ス ソース Cソース Bach システム 検証 Timed 検証 RTL シミュレーション BachC記述 高位合成 RTL 記述 既存設計手法 エミュレーション 既存RTL記述 RTL 検証 論理合成 レイアウト LSI ©2009 SHARP CORPORATION 34 Bach C → RTレベル回路 1. Bach Cレベルでuntimedな検証 2. 高位合成 3. 単体でRTレベル検証し 処理サイクルを確認 単体でRTレベル検証し、処理サイクルを確認 4. スループット、回路規模のチューニングが必要なら ル ット、回路規模のチ ングが必要なら Bach Cコードを修正し1へ。 5. システム全体でRTレベル検証 ©2009 SHARP CORPORATION 35 各工程の検証時間 Original ANSI C 79秒 Bach C 49秒 Emulator 45秒 RTL simulator 228時間 (見積もり) ・入力5フレーム分の検証時間 ・CPU: CPU インテル Xeon5160 X 5160 ©2009 SHARP CORPORATION 36 FRC LSIの設計/検証フロー コードカバレージ 100% 機能カバレージ 100% 機能検証 テストデータ R&D部門 デバイス開発 部 部門 アルゴリズム検証 シミュレーション レ ション C シミ デバッグ Bach C Untimed シミュレーション デバッグ ソ ス ソース Cソース Bach システム 検証 Timed 検証 RTL シミュレーション BachC記述 高位合成 RTL 記述 出力結果の完全一致 1 ….. ○ 2 ….. ○ 3 ….. ○ 4 ….. ○ チェックリスト(500項目以上) を作成 を作成して確認 確認 既存設計手法 エミュレーション 既存RTL記述 アサーションベース検証 で一致を確認 出力タイミング仕様 RTL 検証 一発動作 発動作 論理合成 レイアウト LSI ©2009 SHARP CORPORATION 37 設計結果 回路全体の90%以上をBach C言語で設計 アルゴリズムがFixしてから約2ヶ月でテープアウト完了 ©2009 SHARP CORPORATION 38 設計工程 アルゴリズム設計 (C言語) アルゴリズムと回路の並行開発 動作レベル設計(Bach C言語) 論理合成 RTL検証 仮レイアウト 本レイアウト レイアウトまで含めた並行開発 時間 時間 ©2009 SHARP CORPORATION 39 設計結果 回路全体の90%以上をBach C言語で設計 アルゴリズムがFixしてから約2ヶ月でテープアウト完了 リスピンなしで量産化 当社製アクオスに搭載し、 フレームレート変換機能付きフル スペックHD液晶テレビを 「世界で初めて」商品化。 「世界で初めて」商品化 ©2009 SHARP CORPORATION 40 C+高位合成を使った設計の課題 タイミング収束 z 静的検証 z 動作レベルとRTレベル等価性検証 ECOへの対応 z 高位合成時の見積り精度 抽象度と解析容易性のトレードオフ 記述スタイルの確立 ©2009 SHARP CORPORATION 41 C+高位合成を使った設計での注意点 すべての回路をC言語で設計するのが良いと は限らない 良い合成ツールがあれば良い回路ができるわ けではない C言語を使えば高速に検証できるわけではない ©2009 SHARP CORPORATION 42