画像処理回路のasic実装へ向けた、 hdl coder適用事例 · gui による設定と ......
TRANSCRIPT
部署名 第一要素技術事業部 ロジックIP開発部 ルネサス システムデザイン株式会社
氏名 神谷 衛
©2013 Renesas System Design Co., Ltd. All rights reserved. 1 / 30
2013/10/29
画像処理回路のASIC実装へ向けた、 HDL Coder適用事例 ~手書きHDLコード vs コード生成ツール~
©2013 Renesas System Design Co., Ltd. All rights reserved. 2 / 30
Agenda
会社紹介
画像コア開発の課題
過去の試行状況
HDL Coderの試行
HDL Coderの適用
©2013 Renesas System Design Co., Ltd. All rights reserved. 3 / 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. 4 / 30
最終的な絵は誰もわからない。
顧客の画像コアとの組み合わせるとどうなるのか?
画像コア単独で主観評価できない。
顧客画像コアのアルゴリズムは教えて頂けない。
顧客の最終画像評価をアルゴリズムへフィードバックできない。
アルゴリズムから動画評価までの開発期間が非常に長い。(数ヶ月)
チューニング or 特定条件へのパッチ当て による改善が精一杯。
画像コア開発の課題
? 従来 技術
顧客 画像処理 (前処理)
新 アイデア
顧客 画像処理 (後処理)
仕様 C C
(ビット精度) HDL 生成
動画 評価
数ヶ月
顧客主観評価を即座にフィードバックできる環境構築が必要
©2013 Renesas System Design Co., Ltd. All rights reserved. 5 / 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. 6 / 30
従来設計手法との比較
現状 : 動画確認でNGは致命的
今後 : アルゴリズムを動画で即確認可能
アイデア
MATLAB
M言語
確認
完全一致
ボード
HDL
静止画 リアルタイム
顧客再生機器
顧客表示機器
顧客判断
容易に
戻れない
NG
アイデア
ブラッシュアップ
C
C : ビット精度無 手作業
ハードル高い
確認
不一致
C
C : ビット精度有 手作業
ハードル高い HDL
HDL SIM 手作業
ハードル高い
確認
完全一致
ROM
チューニング
アイデア
MATLAB
M言語 ボード
HDL
顧客再生機器
顧客表示機器
顧客判断
NG
アイデア
ブラッシュアップ
HDL
HDL 自動生成
ROM
M言語
ビット精度有 自動生成 制約条件
C
組み込みソフト 手作業
ハードル高い
C
組み込みソフト
ビット精度
ブラッシュアップ
壁
アイデアまで簡単に戻れる
ビット精度無
©2013 Renesas System Design Co., Ltd. All rights reserved. 7 / 30
MATLAB/Simulink HDL Coderによる開発フロー
理想的な開発フロー
現実的な開発フロー
アルゴリズム開発に使用したモデルからそのままHDL生成
SimulinkモデルとHDL Coderで生成されたHDLは等価
自由に設計したモデルから生成したHDLは回路規模(大)・動作周波数(低)
論理合成向けのHDLを生成するためにはモデルの最適化が必須
モデルとHDLの等価性は保証されていない
HDLシミュレーションによる検証が必要
仕様作成 (Simulinkモデル)
固定小数点化 (ビット精度有り)
HDL自動生成 (HDL Coder)
論理 合成
プロト タイプ
Simulink モデル最適化
HDL SIM
仕様作成 (Simulinkモデル)
固定小数点化 (ビット精度有り)
HDL自動生成 (HDL Coder)
論理 合成
プロト タイプ
期待
実際
©2013 Renesas System Design Co., Ltd. All rights reserved. 8 / 30
仕様作成(Simulinkモデル)(1)
紙仕様書からSimulinkモデルを作成
実行可能な仕様書
仕様の定義漏れの洗い出しが可能
手戻り防止
紙仕様書 Simulinkモデル
©2013 Renesas System Design Co., Ltd. All rights reserved. 9 / 30
仕様作成(Simulinkモデル)(2)
MATLAB Functionブロックを用いてM言語による記述が可能
高抽象度でモデルを作成
シミュレーション&HDL生成可能(記述の仕方によっては制限有り)
MATLAB Functionブロック
©2013 Renesas System Design Co., Ltd. All rights reserved. 10 / 30
固定小数点化(ビット精度有り)(1)
固定小数点アドバイザー機能
浮動小数点モデルを固定小数点化する準備を対話形式で可能
固定小数点ツール機能
シミュレーション結果からのオートスケーリングが可能
オーバーフロー、アンダーフロー、桁落ちを検出可能
ビット精度はテストベクタ(入力)に依存
既存ブロックとの接続で事前にビット精度制約は手入力で設定も可能
範囲指定の派生によるスケーリングが可能
©2013 Renesas System Design Co., Ltd. All rights reserved. 11 / 30
固定小数点化(ビット精度有り)(2)
抽象度の高い浮動小数点モデルと、固定小数点モデルを比較しながら
ビット精度を詰めることができる
画像への影響を即座に判断できるため、作業効率が高い
浮動小数点モデル
固定小数点モデル
©2013 Renesas System Design Co., Ltd. All rights reserved. 12 / 30
HDL自動生成(HDL Coder)(1)
HDLコードの生成には3種類の手段がある。
1. MATLABコマンド
予め設定したパラメータの組み合わせでコード生成するスクリプト用
2. GUIによる設定と生成の実行
コンフィギュレーションパラメータをCut&Try
makehdl(‘modelname’, ‘Option’, ‘Parameter’);
©2013 Renesas System Design Co., Ltd. All rights reserved. 13 / 30
HDL自動生成(HDL Coder)(2)
3. HDLワークフローアドバイザーの使用
Simulinkモデルの設定確認
HDLコード生成
ISE(Xilinx社) と Quartus II(Altera社)プロジェクト生成
論理合成、クリティカルパスのバックアノテーション
といった一連の作業をガイドフローに従い作業。
HDLワークフローアドバイザー
©2013 Renesas System Design Co., Ltd. All rights reserved. 14 / 30
HDL自動生成(HDL Coder)(3)
パイプラインステージやリソース共有オプションを指定することで、共通のモ
デルから異なるHDLを生成できる
最初はパイプラインを意識せずに設計し、後からパイプラインを挿入す
るといった手法が可能。
OutputPipelineを指示したブロック
自動的にパイプラインが挿入される
HDLブロックプロパティ
©2013 Renesas System Design Co., Ltd. All rights reserved. 15 / 30
HDL自動生成(HDL Coder)(4)
コード生成レポートが自動生成される
自動生成されたHDLコードとSimulinkモデルがリンクしており、コードと
Simulinkブロックの対応が一目瞭然
コード生成 結果サマリ
Simulink モデル
HDL コード
モデルエクスプローラ
HDL 一覧
Web表示レポート
人が理解できる
©2013 Renesas System Design Co., Ltd. All rights reserved. 16 / 30
HDL協調シミュレーション
MATLABが生成するテストベンチ上でHDL協調シミュレーション可能
Incisive(Cadence社)、ModelSim(Mentor社)へ対応
テストベンチはSimulinkモデルから自動生成
ユーザーはSimulink用のテストベクタをそのまま実行できる
Incisive
テストベンチ
©2013 Renesas System Design Co., Ltd. All rights reserved. 17 / 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. 18 / 30
Simulinkモデル最適化
MATLAB Functionブロックを利用すれば高い抽象度でモデルを記述する
ことが可能だが、論理合成向けのHDL生成には不向きな場合が多い。
パイプライン挿入のコントロールに制約がある
生成されたHDLコードが複雑で可読性が低い
Simulink標準ブロックで記述すれば、手書きHDLに近くなる。
ただし、抽象度が下がるため記述の手間はかかる
MATLAB Functionブロックを用いて記述したモデル
Simulinkの標準ブロックを用いて記述したモデル
動作周波数が低い
回路規模増大
©2013 Renesas System Design Co., Ltd. All rights reserved. 19 / 30
MATLAB/Simulink HDL Coder 生成の経緯
仕様作成 (Simulinkモデル)
Simulink モデル最適化
固定小数点化 (ビット精度有り)
HDL自動生成 (HDL Coder)
HDL SIM 論理合成 (FPGA向け)
プロトタイプ FPGA評価ボード
紙仕様書
Simulink モデル作成
HDL生成対応 ブロックに置換
回路規模縮小 最適化
bit幅詰め (手設定)
動作周波数 75MHz目標 最適化
パイプライン 挿入
175KGate 127.49MHz
1920x1080 @30Hz
686KGate 2.81MHz
未対応ブロック 判明
固定小数点化 (自動)
リソース共有 オプション
1MGate 2.49MHz
278KGate 16.59MHz
リソース共有 無効
222KGate 76.29MHz
リソース共有すると間欠動作になることが判明
800x600 @75Hz
リソース共有一部無効&
パイプライン挿入
80KGate 52.96MHz
リソース共有 オプション&
パイプライン挿入
bit幅詰め (手設定)
©2013 Renesas System Design Co., Ltd. All rights reserved. 20 / 30
試行結果
Simulinkブロック数:1273
従来設計手法のHDLと比較すると回路規模が増大
モジュールごとに見れば同等の規模の場合もある
ビット精度の異なるHDLを簡単に生成可能
動作周波数に問題なし
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用
回路規模が問題とならないFPGA評価ボードでは リアルタイムでの動画評価可能
©2013 Renesas System Design Co., Ltd. All rights reserved. 21 / 30
製品適用のモデル説明
画像フィルタの1つへ適用。
フィルタ全体適用は外部IFとの兼ね合いでまだ実施していない。
HDL生成対象フィルタ
©2013 Renesas System Design Co., Ltd. All rights reserved. 22 / 30
フィルタの主演算部
120個の差分に対する処理 ・処理をサブシステム化 ・スクリプトを作成し120個のサブシステムを自動配置
©2013 Renesas System Design Co., Ltd. All rights reserved. 23 / 30
120個の差分に対する処理記述
ブロック線図の手書きは非現実的
スクリプトで自動生成(自動配置・配線) Simulinkブロック数:1893
ベクター記述
Simulinkブロック数:103
©2013 Renesas System Design Co., Ltd. All rights reserved. 24 / 30
不要なパイプラインを削除(手作業でverilogを修正)
削除
削除
削除
削除
©2013 Renesas System Design Co., Ltd. All rights reserved. 25 / 30
適用結果比較
結果比較
※1: 手書きHDLをベースに変更した場合の予想値
手書きHDLとほぼ同等な結果
目標の存在が大きい(ゲート削減へのモチベーション)
– どこかに無駄なゲートが無いか?
– 記述に工夫点無いか?
HDL Coderに大きな可能性がある。
回路規模
ターゲット周波数 120[MHz] 188[MHz] 257[MHz]
手書きHDL ※1 136[KGate] 150[KGate] 172[KGate]
HDL Coder 135[KGate] 147[KGate] 164[KGate]
©2013 Renesas System Design Co., Ltd. All rights reserved. 26 / 30
ASIC適用には
設計者のスキル向上
従来設計手法のHDLと比較すると回路規模が大きくなってしまったが、
設計担当者のスキル差もある。
良いHDLを書けるエンジニアが良いモデルを書ける。
どんなHDLが生成されるかイメージしながらモデルを設計することが重要。
ツールの改善
現状、論理合成のためには手作業によるモデルの最適化が必須。
現在モデルで表現できないHDL記述をしたい場合がある
– 『 HDLをこういう風に書けば最適なんだけど、
そんなHDLを自動生成させるモデルの書き方が分からない…』
ツールの不具合もまだある。
MathWorks社へ要求しており、今後のバージョンアップに期待したい。
©2013 Renesas System Design Co., Ltd. All rights reserved. 27 / 30
MATLAB/SimulinkとSystemCの比較(1)
SystemCによる高位設計
Cベースによるアルゴリズム設計
SystemCからHDLへ動作合成
HDL設計と比較して、
– 設計記述量削減
– 検証早期化
– 検証高速化
– 仕様変更容易化
このあたりのメリットはMATLAB/Simulinkと共通している
©2013 Renesas System Design Co., Ltd. All rights reserved. 28 / 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. 29 / 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ブロックプロパティ設定。論理合成。