画像処理回路の ASIC 実装へ向けた HDL Coder 適用事例 ~ 手書き HDL コード vs コード生成ツール ~ ルネサスシステムデザイン株式会社 部署名 第一要素技術事業部ロジックIP 開発部 氏名 神谷衛 2013/10/29 2013 Renesas System Design Co., Ltd. All rights reserved. 1 / 30
Agenda 会社紹介 画像コア開発の課題 過去の試行状況 HDL Coderの試行 HDL Coderの適用 2013 Renesas System Design Co., Ltd. All rights reserved. 2 / 30
会社紹介 商号 : ルネサスシステムデザイン株式会社 (2013 年 10 月ルネサスマイクロシステムとルネサスデザインが事業統合 ) 設立 : 1980 年 5 月 1980 年日本電気アイシーマイコンシステム設立 2001 年 NECマイクロシステム社名変更 2010 年ルネサスマイクロシステム社名変更 2013 年ルネサスシステムデザイン社名変更 従業員数 : 1300 名 [ 2013 年 10 月 1 日現在 ] 事業内容 : マイコン開発 設計 システムLSI 開発 設計 IP/ アナログ / メモリコア開発 設計 ASIC 開発 設計 基盤技術開発 設計 マイコン / システムLSI 用環境開発 設計など 拠点 本社 : 神奈川県横浜市神奈川区 北伊丹事業所 : 兵庫県伊丹市 玉川事業所 : 神奈川県川崎市中原区 武蔵事業所 : 東京都小平市 高崎事業所 : 群馬県高崎市 2013 Renesas System Design Co., Ltd. All rights reserved. 3 / 30
画像コア開発の課題 最終的な絵は誰もわからない 顧客の画像コアとの組み合わせるとどうなるのか? 画像コア単独で主観評価できない 顧客画像コアのアルゴリズムは教えて頂けない 顧客の最終画像評価をアルゴリズムへフィードバックできない アルゴリズムから動画評価までの開発期間が非常に長い ( 数ヶ月 ) チューニング or 特定条件へのパッチ当てによる改善が精一杯 顧客画像処理 ( 前処理 ) 従来技術 新アイデア 顧客画像処理 ( 後処理 )? 仕様 C C ( ビット精度 ) HDL 生成 動画評価 数ヶ月 顧客主観評価を即座にフィードバックできる環境構築が必要 2013 Renesas System Design Co., Ltd. All rights reserved. 4 / 30
HDL Coder の試行 出会い Simulink HDL Coder 無料セミナ受講 : 2011 年 9 月 Simulink HDL Coder 無料ワークショップ受講 : 2012 年 2 月 試行 2012 年 5 月から評価ライセンスで試行開始 画像処理コアを対象 手書き C モデルと検証済み HDL が既に存在 作業担当者は Simulink も Verilog も VHDL も知らない 仕様書のみ参照 手順 1. システム仕様書をベースに Simulink に手変換 2. Simulink 化はあくまでアルゴリズム開発の手順に沿うように記述 3. 整数化 固定小数点化を実施 4. 手書き HDL との SIM 比較を Co-Sim で比較 5. HDL コーダからの出力結果との Co-Sim で比較 6. FPGA 環境で実動作で比較 ( 弊社自作ボード ) 2013 Renesas System Design Co., Ltd. All rights reserved. 5 / 30
アイデア 従来設計手法との比較 現状 : 動画確認で NG は致命的 アイデアブラッシュアップ MATLAB M 言語 手作業 ハードル高い 確認完全一致 C : ビット精度無 C 手作業 ハードル高い 手作業 ハードル高い 確認不一致 C : ビット精度有 C 組み込みソフト C 手作業 ハードル高い 確認完全一致 HDL SIM HDL 容易に戻れない 静止画 壁 NG リアルタイム 顧客再生機器 ROM ボード HDL 顧客表示機器 顧客判断 チューニング 今後 : アルゴリズムを動画で即確認可能 アイデア アイデアブラッシュアップ MATLAB ビット精度無 M 言語 制約条件 自動生成 ビット精度ブラッシュアップ ビット精度有 M 言語 自動生成 HDL HDL 組み込みソフト C 顧客再生機器 ROM ボード HDL 顧客表示機器 アイデアまで簡単に戻れる NG 顧客判断 2013 Renesas System Design Co., Ltd. All rights reserved. 6 / 30
MATLAB/Simulink HDL Coder による開発フロー 理想的な開発フロー 仕様作成 (Simulink モデル ) 固定小数点化 ( ビット精度有り ) HDL 自動生成 (HDL Coder) 論理合成 プロトタイプ 期待 アルゴリズム開発に使用したモデルからそのまま HDL 生成 Simulink モデルと HDL Coder で生成された HDL は等価 現実的な開発フロー 仕様作成 (Simulink モデル ) Simulink モデル最適化 固定小数点化 ( ビット精度有り ) HDL 自動生成 (HDL Coder) HDL SIM 論理合成 プロトタイプ 実際 自由に設計したモデルから生成したHDLは回路規模 ( 大 ) 動作周波数( 低 ) 論理合成向けのHDLを生成するためにはモデルの最適化が必須モデルとHDLの等価性は保証されていない HDLシミュレーションによる検証が必要 2013 Renesas System Design Co., Ltd. All rights reserved. 7 / 30
仕様作成 (Simulink モデル )(1) 紙仕様書 Simulink モデル 紙仕様書から Simulink モデルを作成実行可能な仕様書 仕様の定義漏れの洗い出しが可能手戻り防止 2013 Renesas System Design Co., Ltd. All rights reserved. 8 / 30
仕様作成 (Simulink モデル )(2) MATLAB Function ブロック MATLAB Function ブロックを用いて M 言語による記述が可能 高抽象度でモデルを作成 シミュレーション &HDL 生成可能 ( 記述の仕方によっては制限有り ) 2013 Renesas System Design Co., Ltd. All rights reserved. 9 / 30
固定小数点化 ( ビット精度有り )(1) 固定小数点アドバイザー機能 浮動小数点モデルを固定小数点化する準備を対話形式で可能 固定小数点ツール機能 シミュレーション結果からのオートスケーリングが可能 オーバーフロー アンダーフロー 桁落ちを検出可能 ビット精度はテストベクタ ( 入力 ) に依存 既存ブロックとの接続で事前にビット精度制約は手入力で設定も可能 範囲指定の派生によるスケーリングが可能 2013 Renesas System Design Co., Ltd. All rights reserved. 10 / 30
固定小数点化 ( ビット精度有り )(2) 抽象度の高い浮動小数点モデルと 固定小数点モデルを比較しながらビット精度を詰めることができる 画像への影響を即座に判断できるため 作業効率が高い 固定小数点モデル 浮動小数点モデル 2013 Renesas System Design Co., Ltd. All rights reserved. 11 / 30
HDL 自動生成 (HDL Coder)(1) HDL コードの生成には 3 種類の手段がある 1. MATLAB コマンド 予め設定したパラメータの組み合わせでコード生成するスクリプト用 makehdl( modelname, Option, Parameter ); 2. GUI による設定と生成の実行 コンフィギュレーションパラメータを Cut&Try 2013 Renesas System Design Co., Ltd. All rights reserved. 12 / 30
HDL 自動生成 (HDL Coder)(2) 3. HDL ワークフローアドバイザーの使用 Simulink モデルの設定確認 HDL コード生成 ISE(Xilinx 社 ) と Quartus II(Altera 社 ) プロジェクト生成 論理合成 クリティカルパスのバックアノテーション といった一連の作業をガイドフローに従い作業 HDL ワークフローアドバイザー 2013 Renesas System Design Co., Ltd. All rights reserved. 13 / 30
HDL 自動生成 (HDL Coder)(3) HDL ブロックプロパティ OutputPipeline を指示したブロック 自動的にパイプラインが挿入される パイプラインステージやリソース共有オプションを指定することで 共通のモデルから異なる HDL を生成できる最初はパイプラインを意識せずに設計し 後からパイプラインを挿入するといった手法が可能 2013 Renesas System Design Co., Ltd. All rights reserved. 14 / 30
HDL 自動生成 (HDL Coder)(4) Web 表示レポート コード生成結果サマリ HDL コード HDL 一覧 Simulink モデル モデルエクスプローラ コード生成レポートが自動生成される 自動生成されたHDLコードとSimulinkモデルがリンクしており コードと Simulinkブロックの対応が一目瞭然 人が理解できる 2013 Renesas System Design Co., Ltd. All rights reserved. 15 / 30
HDL 協調シミュレーション MATLAB が生成するテストベンチ上で HDL 協調シミュレーション可能 Incisive(Cadence 社 ) ModelSim(Mentor 社 ) へ対応 テストベンチは Simulink モデルから自動生成 ユーザーは Simulink 用のテストベクタをそのまま実行できる テストベンチ Incisive 2013 Renesas System Design Co., Ltd. All rights reserved. 16 / 30
論理合成 FPGA 向けの合成スクリプトはツールが自動生成 ISE(Xilinx 社 ) と Quartus II(Altera 社 ) に対応 自動生成された HDL に手を加えることなく合成完了 ASIC 向け合成もエラーなく完了 HDL チェック (SpyGlass) ではエラーを検出 ビット幅が明確に指示されていない箇所があった (R2012a) 今後も随時 STARC ルールへ準拠とのこと --------------------------------------------------------------------------------------------- Results Summary: --------------------------------------------------------------------------------------------- Command-line read : 0 error, 0 warning, 0 information message Design Read : 0 error, 60 warnings, 2 information messages Found 1 top module: AAA_hdl (file:../hdl/aaa_hdl.v) Blackbox Resolution: 0 error, 0 warning, 0 information message SGDC Checks : 0 error, 0 warning, 0 information message Policy starc2002 : 0 error, 896 warnings, 0 information message ** Policy lint : 2 errors, 0 warning, 0 information message Policy clock-reset : 0 error, 0 warning, 1 information message ------------------------------------------------------------------------------------- Total : 2 errors, 956 warnings, 3 information messages Total Number of Generated Messages : 961 (2 errors, 956 warnings, 3 Infos) Number of Reported Messages : 961 (2 errors, 956 warnings, 3 Infos) ---------------------------------------------------- 2013 Renesas System Design Co., Ltd. All rights reserved. 17 / 30
Simulink モデル最適化 MATLAB Functionブロックを利用すれば高い抽象度でモデルを記述することが可能だが 論理合成向けのHDL 生成には不向きな場合が多い パイプライン挿入のコントロールに制約がある 生成された HDL コードが複雑で可読性が低い 動作周波数が低い 回路規模増大 Simulink 標準ブロックで記述すれば 手書き HDL に近くなる ただし 抽象度が下がるため記述の手間はかかる MATLAB Function ブロックを用いて記述したモデル Simulink の標準ブロックを用いて記述したモデル 2013 Renesas System Design Co., Ltd. All rights reserved. 18 / 30
MATLAB/Simulink HDL Coder 生成の経緯 仕様作成 (Simulink モデル ) Simulink モデル最適化 固定小数点化 ( ビット精度有り ) HDL 自動生成 (HDL Coder) HDL SIM 論理合成 (FPGA 向け ) プロトタイプ FPGA 評価ボード 紙仕様書 Simulink モデル作成 固定小数点化 ( 自動 ) 未対応ブロック判明 HDL 生成対応ブロックに置換 1MGate 2.49MHz リソース共有オプション 686KGate 2.81MHz 回路規模縮小最適化 bit 幅詰め ( 手設定 ) リソース共有オプション & パイプライン挿入 80KGate 52.96MHz リソース共有一部無効 & パイプライン挿入 222KGate 76.29MHz リソース共有すると間欠動作になることが判明 リソース共有無効 278KGate 16.59MHz 800x600 @75Hz 動作周波数 75MHz 目標最適化 bit 幅詰め ( 手設定 ) パイプライン挿入 175KGate 127.49MHz 1920x1080 @30Hz 2013 Renesas System Design Co., Ltd. All rights reserved. 19 / 30
試行結果 Simulink ブロック数 :1273 HDL ビット精度 回路規模 周波数 備考 手書きHDL 整数 190[KGate] 216[MHz] ASIC 用 HDL Coder 出力 (1) 固定小数点 175[KGate] 127[MHz] FPGA 用 HDL Coder 出力 (1) 固定小数点 447[KGate] 238[MHz] ASIC 用 HDL Coder 出力 (2) 整数 388[KGate] 338[MHz] ASIC 用 従来設計手法の HDL と比較すると回路規模が増大モジュールごとに見れば同等の規模の場合もある ビット精度の異なる HDL を簡単に生成可能 動作周波数に問題なし 回路規模が問題とならない FPGA 評価ボードではリアルタイムでの動画評価可能 2013 Renesas System Design Co., Ltd. All rights reserved. 20 / 30
製品適用のモデル説明 画像フィルタの 1 つへ適用 フィルタ全体適用は外部 IF との兼ね合いでまだ実施していない HDL 生成対象フィルタ 2013 Renesas System Design Co., Ltd. All rights reserved. 21 / 30
フィルタの主演算部 120 個の差分に対する処理 処理をサブシステム化 スクリプトを作成し 120 個のサブシステムを自動配置 2013 Renesas System Design Co., Ltd. All rights reserved. 22 / 30
120 個の差分に対する処理記述 ブロック線図の手書きは非現実的 スクリプトで自動生成 ( 自動配置 配線 ) Simulink ブロック数 :1893 ベクター記述 Simulink ブロック数 :103 2013 Renesas System Design Co., Ltd. All rights reserved. 23 / 30
不要なパイプラインを削除 ( 手作業で verilog を修正 ) 削除 削除 削除 削除 2013 Renesas System Design Co., Ltd. All rights reserved. 24 / 30
適用結果比較 結果比較 回路規模 ターゲット周波数 120[MHz] 188[MHz] 257[MHz] 手書きHDL 1 136[KGate] 150[KGate] 172[KGate] HDL Coder 135[KGate] 147[KGate] 164[KGate] 1: 手書き HDL をベースに変更した場合の予想値 手書き HDL とほぼ同等な結果 目標の存在が大きい ( ゲート削減へのモチベーション ) どこかに無駄なゲートが無いか? 記述に工夫点無いか? HDL Coder に大きな可能性がある 2013 Renesas System Design Co., Ltd. All rights reserved. 25 / 30
ASIC 適用には 設計者のスキル向上 従来設計手法の HDL と比較すると回路規模が大きくなってしまったが 設計担当者のスキル差もある 良い HDL を書けるエンジニアが良いモデルを書ける どんな HDL が生成されるかイメージしながらモデルを設計することが重要 ツールの改善 現状 論理合成のためには手作業によるモデルの最適化が必須 現在モデルで表現できない HDL 記述をしたい場合がある HDL をこういう風に書けば最適なんだけど そんな HDL を自動生成させるモデルの書き方が分からない ツールの不具合もまだある MathWorks 社へ要求しており 今後のバージョンアップに期待したい 2013 Renesas System Design Co., Ltd. All rights reserved. 26 / 30
MATLAB/Simulink と SystemC の比較 (1) SystemC による高位設計 C ベースによるアルゴリズム設計 SystemC から HDL へ動作合成 HDL 設計と比較して 設計記述量削減 検証早期化 検証高速化 仕様変更容易化 このあたりのメリットは MATLAB/Simulink と共通している 2013 Renesas System Design Co., Ltd. All rights reserved. 27 / 30
MATLAB/Simulink と SystemC の比較 (2) MATLAB/Simulink と SystemC の相違点 MATLAB/Simulink モデルベース C と比較してアルゴリズム検討に優れる シミュレーションとツールのサポート機能により固定小数点化が容易 SystemC コードベース SLEC(Calypto 社 ) による SystemC-HDL の等価性検証が可能 2013 Renesas System Design Co., Ltd. All rights reserved. 28 / 30
作業期間 期間 作業 4 ~ 4/E Simulink 事前勉強 5 ~ 5/E Simulinkモデル (floating) 作成 6 ~ 1W Simulinkモデル修正 ~ 2W MATLAB/Simulink 環境修正 ~ 3W 固定小数点化開始 未対応ブロック修正 ~ 4W HDL 生成完了 HDLシミュレーション環境整備 7 ~ 1W 論理合成完了 ~ 2W HDLシミュレーション完了 ~ 3W HDLブロックプロパティ試行 ~ 4W HDL 生成を補助するスクリプトの作成 不具合整理 8 ~ 1W HDLオプション変更で面積小 Simulinkモデル最適化 ( 面積小 ) ~ 2W Simulinkモデル最適化 ( 面積小 ) ~ 8/E Simulinkモデル最適化 ( 面積小 ) 9 ~ 1W Simulinkモデル最適化 ( 面積小 ) 論理合成完了 ~ 2W 高速化用 HDLブロックプロパティ設定 ~ 3W FPGA 実装作業 ~ 4W ASIC 向け合成 10 ~ 1W Simulinkモデル最適化 (MATLAB Function 除去 ) ~ 2W Simulinkモデル最適化 (MATLAB Function 除去 ) ~ 3W Simulinkモデル最適化 (MATLAB Function 除去 ) 完了 ~ 4W HDLブロックプロパティ設定 論理合成 2013 Renesas System Design Co., Ltd. All rights reserved. 29 / 30
ルネサスシステムデザイン株式会社 本資料に掲載している登録商標または商標 標章 ロゴ 商号 商品名に関する権利は 個々の権利の所有者に帰属します 2013 Renesas System Design Co., Ltd. All rights reserved. 30 / 30