画像処理回路のasic実装へ向けた、 hdl coder適用事例 · gui による設定と ......

30
部署名 第一要素技術事業部 ロジックIP開発部 ルネサス システムデザイン株式会社 氏名 神谷 ©2013 Renesas System Design Co., Ltd. All rights reserved. 1 / 30 2013/10/29 画像処理回路のASIC実装へ向けた、 HDL Coder適用事例 ~手書きHDLコード vs コード生成ツール~

Upload: duongbao

Post on 18-Aug-2018

245 views

Category:

Documents


0 download

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ブロックプロパティ設定。論理合成。

ルネサス システムデザイン株式会社

※本資料に掲載している登録商標または商標・標章・ロゴ・商号・商品名に関する権利は、個々の権利の所有者に帰属します。

©2013 Renesas System Design Co., Ltd. All rights reserved. 30 / 30