• 検索結果がありません。

画像処理回路のASIC実装へ向けたHDL Coder適用事例

N/A
N/A
Protected

Academic year: 2021

シェア "画像処理回路のASIC実装へ向けたHDL Coder適用事例"

Copied!
30
0
0

読み込み中.... (全文を見る)

全文

(1)

部署名

第一要素技術事業部 ロジックIP開発部

ルネサス

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

氏名

神谷

2013/10/29

画像処理回路の

ASIC実装へ向けた、

HDL Coder適用事例

~手書き

HDLコード vs コード生成ツール~

(2)

Agenda

会社紹介

画像コア開発の課題

過去の試行状況

HDL Coderの試行

HDL Coderの適用

(3)

会社紹介

商号

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

(2013年10月ルネサス マイクロシステムとルネサス デザインが事業統合)

設立

: 1980年5月

1980年 日本電気アイシーマイコンシステム

設立

2001年 NECマイクロシステム

社名変更

2010年 ルネサス マイクロシステム

社名変更

2013年 ルネサス システムデザイン

社名変更

従業員数

: 1300名 [ 2013年10月1日現在 ]

事業内容

:

マイコン開発・設計

システム

LSI開発・設計

IP/アナログ/メモリ コア開発・設計

ASIC開発・設計

基盤技術開発・設計

マイコン

/システムLSI用 環境開発・設計 など

拠点

本社

: 神奈川県横浜市神奈川区

北伊丹事業所

: 兵庫県伊丹市

玉川事業所

: 神奈川県川崎市中原区

武蔵事業所

: 東京都小平市

高崎事業所

: 群馬県高崎市

(4)

最終的な絵は誰もわからない。

顧客の画像コアとの組み合わせるとどうなるのか

?

画像コア単独で主観評価できない。

顧客画像コアのアルゴリズムは教えて頂けない。

顧客の最終画像評価をアルゴリズムへフィードバックできない。

アルゴリズムから動画評価までの開発期間が非常に長い。

(数ヶ月)

チューニング

or 特定条件へのパッチ当て による改善が精一杯。

画像コア開発の課題

?

従来

技術

顧客

画像処理

(前処理)

アイデア

顧客

画像処理

(後処理)

仕様

C

(ビット精度)

C

HDL

生成

動画

評価

数ヶ月

顧客主観評価を

即座にフィードバックできる環境構築

が必要

(5)

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環境で実動作で比較 (弊社自作ボード)

(6)

従来設計手法との比較

現状 : 動画確認でNGは致命的

今後 : アルゴリズムを動画で即確認可能

アイデア MATLAB M言語 確認 完全一致 ボード

HDL

静止画

リアルタイム

顧客再生機器

顧客表示機器

顧客

判断

容易に 戻れない NG アイデア ブラッシュアップ C C : ビット精度

手作業 ハードル高い 確認 不一致 C C : ビット精度

手作業 ハードル高い

HDL

HDL SIM 手作業 ハードル高い 確認 完全一致

ROM

チューニング アイデア MATLAB M言語 ボード

HDL

顧客再生機器

顧客表示機器

顧客

判断

NG アイデア ブラッシュアップ

HDL

HDL

自動生成

ROM

M言語 ビット精度

自動生成

制約条件

C

組み込みソフト

手作業 ハードル高い C

組み込みソフト

ビット精度

ブラッシュアップ

アイデアまで簡単に戻れる ビット精度

(7)

MATLAB/Simulink HDL Coderによる開発フロー

理想的な開発フロー

現実的な開発フロー

アルゴリズム開発に使用したモデルからそのまま

HDL生成

SimulinkモデルとHDL Coderで生成されたHDLは等価

自由に設計したモデルから生成したHDLは回路規模(大)・動作周波数(低)

論理合成向けの

HDLを生成するためにはモデルの最適化が必須

モデルと

HDLの等価性は保証されていない

HDLシミュレーションによる検証が必要

仕様作成

(Simulinkモデル)

固定小数点化

(ビット精度有り)

(HDL Coder)

HDL自動生成

論理

合成

プロト

タイプ

Simulink

モデル最適化

HDL

SIM

仕様作成

(Simulinkモデル)

固定小数点化

(ビット精度有り)

(HDL Coder)

HDL自動生成

論理

合成

プロト

タイプ

期待

実際

(8)

仕様作成

(Simulinkモデル)(1)

紙仕様書からSimulinkモデルを作成

実行可能な仕様書

仕様の定義漏れの洗い出しが可能

手戻り防止

紙仕様書

Simulinkモデル

(9)

仕様作成

(Simulinkモデル)(2)

MATLAB Functionブロックを用いてM言語による記述が可能

高抽象度でモデルを作成

シミュレーション&HDL生成可能(記述の仕方によっては制限有り)

(10)

固定小数点化

(ビット精度有り)(1)

固定小数点アドバイザー機能

浮動小数点モデルを固定小数点化する準備を対話形式で可能

固定小数点ツール機能

シミュレーション結果からのオートスケーリングが可能

オーバーフロー、アンダーフロー、桁落ちを検出可能

ビット精度はテストベクタ

(入力)に依存

既存ブロックとの接続で事前にビット精度制約は手入力で設定も可能

範囲指定の派生によるスケーリングが可能

(11)

固定小数点化

(ビット精度有り)(2)

抽象度の高い浮動小数点モデルと、固定小数点モデルを比較しながら

ビット精度を詰めることができる

画像への影響を即座に判断できるため、作業効率が高い

浮動小数点モデル

固定小数点モデル

(12)

HDL自動生成(HDL Coder)(1)

HDLコードの生成には3種類の手段がある。

1.

MATLABコマンド

予め設定したパラメータの組み合わせでコード生成するスクリプト用

2.

GUIによる設定と生成の実行

コンフィギュレーションパラメータを

Cut&Try

(13)

HDL自動生成(HDL Coder)(2)

3.

HDLワークフローアドバイザーの使用

Simulinkモデルの設定確認

HDLコード生成

ISE(Xilinx社) と Quartus II(Altera社)プロジェクト生成

論理合成、クリティカルパスのバックアノテーション

といった一連の作業をガイドフローに従い作業。

(14)

HDL自動生成(HDL Coder)(3)

パイプラインステージやリソース共有オプションを指定することで、共通のモ

デルから異なるHDLを生成できる

最初はパイプラインを意識せずに設計し、後からパイプラインを挿入す

るといった手法が可能。

OutputPipelineを指示したブロック

自動的にパイプラインが挿入される

HDLブロックプロパティ

(15)

HDL自動生成(HDL Coder)(4)

コード生成レポートが自動生成される

自動生成された

HDLコードとSimulinkモデルがリンクしており、コードと

Simulinkブロックの対応が一目瞭然

コード生成

結果サマリ

Simulink

モデル

HDL

コード

モデルエクスプローラ

HDL

一覧

Web表示レポート

人が理解できる

(16)

HDL協調シミュレーション

MATLABが生成するテストベンチ上でHDL協調シミュレーション可能

Incisive(Cadence社)、ModelSim(Mentor社)へ対応

テストベンチはSimulinkモデルから自動生成

ユーザーはSimulink用のテストベクタをそのまま実行できる

Incisive

テストベンチ

(17)

論理合成

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) ---

(18)

Simulinkモデル最適化

MATLAB Functionブロックを利用すれば高い抽象度でモデルを記述する

ことが可能だが、論理合成向けのHDL生成には不向きな場合が多い。

パイプライン挿入のコントロールに制約がある

生成された

HDLコードが複雑で可読性が低い

Simulink標準ブロックで記述すれば、手書きHDLに近くなる。

ただし、抽象度が下がるため記述の手間はかかる

MATLAB Functionブロック

を用いて記述したモデル

Simulinkの標準ブロックを

用いて記述したモデル

動作周波数が低い

回路規模増大

(19)

MATLAB/Simulink HDL Coder 生成の経緯

仕様作成

(Simulinkモデル) Simulink モデル最適化 固定小数点化 (ビット精度有り) HDL自動生成 (HDL Coder) HDL SIM 論理合成 (FPGA向け) プロトタイプ FPGA評価ボード 紙仕様書 Simulink モデル作成 HDL生成対応 ブロックに置換 回路規模縮小 最適化 bit幅詰め (手設定) 動作周波数 75MHz目標 最適化 パイプライン 挿入 127.49MHz 175KGate 1920x1080 @30Hz 686KGate 2.81MHz 未対応ブロック 判明 固定小数点化 (自動) リソース共有 オプション 1MGate 2.49MHz 278KGate 16.59MHz リソース共有 無効 222KGate 76.29MHz リソース共有 すると間欠動 作になること が判明 800x600 @75Hz リソース共有 一部無効& パイプライン 挿入 80KGate 52.96MHz リソース共有 オプション& パイプライン 挿入 bit幅詰め (手設定)

(20)

試行結果

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評価ボードでは

リアルタイムでの動画評価可能

(21)

製品適用のモデル説明

画像フィルタの1つへ適用。

フィルタ全体適用は外部IFとの兼ね合いでまだ実施していない。

(22)

フィルタの主演算部

120個の差分に対する処理

・処理をサブシステム化

(23)

120個の差分に対する処理記述

ブロック線図の手書きは非現実的

スクリプトで自動生成

(自動配置・配線) Simulinkブロック数:1893

ベクター記述

(24)

不要なパイプラインを削除

(手作業でverilogを修正)

削除

削除

削除

(25)

適用結果比較

結果比較

1: 手書きHDLをベースに変更した場合の予想値

手書きHDLとほぼ同等な結果

目標の存在が大きい

(ゲート削減へのモチベーション)

– どこかに無駄なゲートが無いか?

– 記述に工夫点無いか?

HDL Coderに大きな可能性がある。

回路規模

ターゲット周波数

120[MHz]

188[MHz]

257[MHz]

手書き

HDL ※1

136[KGate]

150[KGate]

172[KGate]

(26)

ASIC適用には

設計者のスキル向上

従来設計手法の

HDLと比較すると回路規模が大きくなってしまったが、

設計担当者のスキル差もある。

良い

HDLを書けるエンジニアが良いモデルを書ける。

どんな

HDLが生成されるかイメージしながらモデルを設計することが重要。

ツールの改善

現状、論理合成のためには手作業によるモデルの最適化が必須。

現在モデルで表現できない

HDL記述をしたい場合がある

– 『 HDLをこういう風に書けば最適なんだけど、

そんな

HDLを自動生成させるモデルの書き方が分からない…』

ツールの不具合もまだある。

MathWorks社へ要求しており、今後のバージョンアップに期待したい。

(27)

MATLAB/SimulinkとSystemCの比較(1)

SystemCによる高位設計

Cベースによるアルゴリズム設計

SystemCからHDLへ動作合成

HDL設計と比較して、

– 設計記述量削減

– 検証早期化

– 検証高速化

– 仕様変更容易化

このあたりのメリットは

MATLAB/Simulink

と共通している

(28)

MATLAB/SimulinkとSystemCの比較(2)

MATLAB/SimulinkとSystemCの相違点

MATLAB/Simulink

– モデルベース

– Cと比較してアルゴリズム検討に優れる

– シミュレーションとツールのサポート機能により固定小数点化が容易

SystemC

– コードベース

– SLEC(Calypto社)によるSystemC-HDLの等価性検証が可能

(29)

作業期間

期間 作業 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除去)。完了。

(30)

参照

関連したドキュメント

3) Sato T, Kase Y, Watanabe R, Niita K, et al: Biological Dose Estimation for Charged-Particle Therapy Using an Improved PHITS Code Coupled with a Microdosimetric Kinetic

 中国では漢方の流布とは別に,古くから各地域でそれぞれ固有の生薬を開発し利用してきた.なかでも現在の四川

主として、自己の居住の用に供する住宅の建築の用に供する目的で行う開発行為以外の開

Visual Studio 2008、または Visual Studio 2010 で開発した要素モデルを Visual Studio

実習と共に教材教具論のような実践的分野の重要性は高い。教材開発という実践的な形で、教員養

4G LTE サービス向け完全仮想化 NW を発展させ、 5G 以降のサービス向けに Rakuten Communications Platform を自社開発。. モデル 3 モデル

はじめに

欄は、具体的な書類の名称を記載する。この場合、自己が開発したプログラ