asic/fpga設計を容易にする hdl coderモデリング …...hdl modeling guideline とは?...

Post on 27-Jan-2020

7 Views

Category:

Documents

0 Downloads

Preview:

Click to see full reader

TRANSCRIPT

1© 2014 The MathWorks, Inc.

ASIC/FPGA設計を容易にするHDL Coderモデリングガイドライン

MathWorks Japan

アプリケーションエンジニアリング部松本 充史Atsushi.Matsumoto@mathworks.co.jp

2

アジェンダ

HDL Coder利用時に陥る課題

ガイドラインとは?

汎用シミュレータSimulinkにガイドラインが必要な理由

ガイドラインによる問題解決例

HDL Modeling Guidelineの今後

3

モデルを作成してHDL生成してみましょう!

4

モデルの外観は同一だが・・・論理合成結果

修正前 修正後

ModelName gdemo_err2 gdemo_okFmax (MHz) 10.42 117.25Critical Path Delay -> Delay2 filter|mux1_serializer->deserializerLogic Element 2661 6259Conbinational 1421 2241Registers 1313 6172Memory bits 352 5534DSP Block 104 4Warning Infer Latch

5

ユーザは試行錯誤を経て最終デザインに到達している

※ ルネサスシステムデザイン株式会社 神谷衛様 MATLAB EXPO2013講演資料

未対応ブロック判明モデルを作り直し

1M Gate

Fmax 2.49MHz

速度が全く出ず

最終デザイン175k Gate

Fmax 127.49MHz

6

改善前:生成HDLコードの課題

ラッチ推定

リソース共有不備

除算、乗算の使用ラッチ推定

コード生成時エラー

実行時エラー

elseなしif文

Fmax = 10MHz

7

短期間で結果を出すためにはモデリングの指針情報が

役立つのでは?

8

アジェンダ

HDL Coder利用時に陥る課題

ガイドラインとは?

汎用シミュレータSimulinkにガイドラインが必要な理由

ガイドラインによる問題解決例

HDL Modeling Guidelineの今後

9

ガイドラインとは?

罫線。政府や団体が指導方針として掲げるおおまかな指針。– 指針:物事を進めるうえでたよりとなるもの。参考となる

基本的な方針。手引き。

※出展:三省堂 大辞林、デジタル大辞泉

ガイドライン自体は強制力を持つものではない。どこまで沿うかは使う側次第。

10

コーディングガイドライン

MISRA-C

– Motor Industry Software Reliability Associationが開

発したC言語のためのソフトウェア設計標準規格。

– ANSI/ISO/IEC規格のC言語で記述する組み込みシステ

ムで、安全性と可搬性(移植性)と信頼性を確保すること

を目的としている。

11

MISRA-C:2004の例switch文はすべて最後にdefault節を置かなければならない。※

default節には適切な例外処理を記述する必要がある。

可読性や保守性の面からdefault節は最後に記述する。

※ 組込み開発者におくるMISRA-C 組込みプログラミングの高信頼化ガイドMISRA-C研究会著

int16 s16_v1, s16_v2;

switch( s16_v1 )

{

case 0:

s16_v2 = 1;

break;

case 1:

s16_v2 = 2;

break;

default:

s16_v2 = 0;

break;

}

int16 s16_v1, s16_v2;

switch( s16_v1 )

{

case 0:

s16_v2 = 1;

break;

case 1:

s16_v2 = 2;

break;

}

/* s16_v1が1または2以外の場合の処理がなく、説明もない*/

OK NG

12

モデリングガイドライン

Control Algorithm Modeling Guidelines Using

MATLAB, Simulink and Stateflow

JMAAB(Japan MBD Automotive Advisory Board)

– 自動車用制御装置のモデルを運用する上で、作成者と

使用者の間で容易に共通の理解が得られるように、

Simulink/Stateflowモデルの記述について重要な基本

的なルールを規定したものである。※

※ JMAABガイドライン「はじめに」から抜粋

13

JMAABガイドライン例:Switchブロックの使用方法

※ JMAABガイドラインjc_0141

14

LSI設計におけるガイドライン

RTL設計スタイルガイド(VHDL/Verilog HDL編)– STARC(半導体理工学研究センター)が2003年に発行

– 目的:SoC設計力の強化、IP(設計資産)の再利用と流通

– 日本におけるVHDL/Verilog記述の基本ルールとなっている。

– 章構成:

基本設計制約

RTL記述テクニック

RTL設計手法

検証のテクニック

– 日本のLSI設計会社は、これに独自の項目を追加して運用

– Spyglass, LEDA, HDL Designer, Alintなどのチェッカツール

※ LSI設計者の基本 RTL設計スタイルガイド STARC監修

15

STARCガイドライン2.10.6.6: 除算は使用しない(2の累乗で割る場合は除外)※

除算演算子(/)に非対応の論理合成ツールがある

合成できてもFmaxが低い場合がある

除数が2のべき乗ならシフト演算となるので使用可

※ LSI設計者の基本 RTL設計スタイルガイド STARC監修

out_temp_1 = ({1'b0, in0_1}) / 8'b00000011;

out0_1 = out_temp_1[9:0];

NG

out_temp_1 = ({1'b0, in0_1}) / 8'b00000010;

out0_1 = out_temp_1[9:0];

OK

16

HDL Modeling Guidelineとは?

目的– HDL Coderの利用を前提としたSimulink, Stateflow, MATLABコー

ドの適切な利用、設定方法

– 目的に応じた回路パフォーマンス(速度、面積)のコントロール

– 生成されたHDLコードの「RTL設計スタイルガイド」への準拠

コンセプト– ハードウェア設計初心者、経験者両方が使える

– HDL Coder評価~HDL Coderを使った実設計での利用を想定

関係者の知識を集約して作成– 日本オフィスを中心に、US本社、欧州オフィスの

Application Engineer, Pilot Engineer, Development

– お客様からの協力

17

アジェンダ

HDL Coder利用時に陥る課題

ガイドラインとは?

汎用シミュレータSimulinkにガイドラインが必要な理由

ガイドラインによる問題解決例

HDL Modeling Guidelineの今後

18

Simulink環境とは?

視覚的に表現されたシステムレベル設計ツール• ブロック線図、ステートマシン、MATLAB記述によるモデリング• 階層構造• アルゴリズムの実現方法を検討

ダイナミックシステムを設計・開発するためのモデリング環境• コントローラ、補償器、制御アルゴリズム• フィルタ、センサなどの信号処理、画像処理、通信システム• 電気回路、油圧、メカなどの物理モデル

設計解析、改良、妥当性確認のためのシミュレーション環境• コンセプトやアイデアを実証

• システムレベルモデルはリファレンスとしてテスト環境として利用

• コード生成により等価なアルゴリズムを実装

• システムをブロック線図で表現することにより万人が理解可能

19

Simulink例題:連続系制御モデル

標準的な連続系制御モデル– 連続系可変ステップソルバを使用

– s領域の伝達関数を使用してコントローラとプラントをモデリング

– 目的:制御系の方式検討

>> penddemo

20

Simulink例題:通信システムベースバンドモデル

通信システムベースバンド送受信モデル– シミュレーション高速化のためフレームベース信号を利用

– 高抽象度ブロックを多数使用

– 目的:通信システムのアルゴリズム検討

>> commdvbs2

21

Simulink例題:組み込みCコード生成用モデル

組み込みCコード生成用コントローラモデル(TypeA)– トップレイヤ/トリガレイヤ/構造体レイヤ/データフローレイヤと階層が

別れている。(JMAAB:jc_0301)

– Function Callによるタスク制御

– StorageClass = ExportedGlobalにするとチューナブルパラメータ化

>> rtwdemo_async

22

Simulink例題:HDLコード生成用モデル

HDLコード生成用モデル– パイプラインレジスタ用ブロックの配置/パラメータ設定

– RAM、ビット操作などディジタル回路設計用ブロックの使用

– HDLブロックプロパティの設定

>>

23

Simulinkは汎用性が高いが故に

特定領域での使用には

制約を与える必要がある

24

アジェンダ

HDL Coder利用時に陥る課題

ガイドラインとは?

汎用シミュレータSimulinkにガイドラインが必要な理由

ガイドラインによる問題解決例

HDL Modeling Guidelineの今後

25

改善前:生成HDLコードの課題

ラッチ推定

リソース共有不備

除算、乗算の使用ラッチ推定

コード生成時エラー

実行時エラー

elseなしif文

Fmax = 10MHz

26

動作原理:MCU/MPU vs. ASIC/FPGA

動作原理プログラム読み出し⇒命令デコード⇒演算(パイプライン有)⇒レジスタ(メモリ)に保存

逐次処理

1サイクル周期:kHz~数MHz

動作原理演算に必要な回路を合成して論理回路を形成、同期回路

並列処理

1サイクル周期:MHz~数百MHz

MCU/MPU ASIC/FPGAMultiCore, GPU, etc

内部レジスタ(演算結果保存)

演算回路

プログラムメモリ命令デコード

27

Data Out

Single-MAC Unit

Coefficients

1.2 GHz

200 clock cycles= 6 MSPS

200 clock

cycles

needed

Data In

X

+

Reg

並列処理

600 MHz

1 clock cycle= 600 MSPS

Data Out

200 operations

in 1 clock cycle

Data In

X

+

C0 C0XC1 XC2 XC3 XC199…R

eg

Reg

Reg

Reg

逐次処理

ハードウェア設計では逐次/並列処理を意識した設計が必要

ソフトウェア/ハードウェア用アーキテクチャ

ハードウェア用アーキテクチャ

28

HDL Coderはパラメータ設定でリソース共有

回路の乗算器数 = ブロック数/Sharing Factor

29

HDL Modeling Guidelineサンプル

ガイドライン作成中

30

同期回路を意識したモデリングを行う

Logic

Logic Logic

データ

クロック

Logic

Tdly

D D QQ

タイミングが満たせない場合はパイプラインレジスタを挿入

31

分散パイプライン挿入(Distributed Pipelining)に関連するパラメータ

どれを設定したら、どう影響するのかわからない・・・– ブロック:Input/OutputPipeline, DistributedPipelining

– グローバル:遅延の均衡化、分散型パイプライン方式の優先順位、

階層分散型パイプライン方式、設計遅延の保持、

クロックレートパイプライン

Logic

Logic D QD QLogicD Q

32

どのパラメータをどう設定すべきか分散パイプライン設定 決定木

ガイドライン作成中

33

ラッチ推定

リソース共有不備

除算、乗算の使用ラッチ推定

コード生成時エラー

実行時エラー

elseなしif文

Fmax = 10MHz

ガイドライン適用により解決した問題

34

Lookup Tableから除算演算子(/)生成を回避するためのガイドライン⇒Fmaxを大幅改善

ガイドライン作成中

35

ラッチ推定回避のためのガイドライン

ガイドライン作成中

36

HDL記述のガイドラインに準拠するための「コーディング標準」ペイン

国内の標準的なルールに沿ったコードに変更

レポート生成

37

ガイドライン適用により解決した問題

ラッチ推定

リソース共有不備

除算、乗算の使用ラッチ推定

コード生成時エラー

実行時エラー

elseなしif文

Fmax = 10MHz

✓✓

38

StateflowからIf/elseのelse項が生成されるためのガイドライン

ガイドライン作成中

39

ガイドライン適用により解決した問題

ラッチ推定

リソース共有不備

除算、乗算の使用ラッチ推定

コード生成時エラー

実行時エラー

elseなしif文

Fmax = 10MHz

✓✓

40

ガイドライン適用による性能向上結果

修正前 修正後

ModelName gdemo_err2 gdemo_okFmax (MHz) 10.42 117.25Critical Path Delay -> Delay2 filter|mux1_serializer->deserializerLogic Element 2661 6259Conbinational 1421 2241Registers 1313 6172Memory bits 352 5534DSP Block 104 4Warning Infer Latch

41

アジェンダ

HDL Coder利用時に陥る課題

ガイドラインとは?

汎用シミュレータSimulinkにガイドラインが必要な理由

ガイドラインによる問題解決例

HDL Modeling Guidelineの今後

42

HDL Modeling Guidelineの今後

HDL Modeling Guidelineは2014年内にリリース予定– 製品ページよりダウンロード予定

– 英訳して全世界展開

今後の構想(未確定)– ユーザ会でノウハウの共有

– 項目を追加・整理してVer Up

– モデルアドバイザによる

自動チェック

– ツール側の制限を緩和

⇒ソフト/ハード移行を容易に

43

Programmable SoCをターゲットとしたソフトウェア・ハードウェアのパーティショニング

システムモデルからソフト/

ハードウェアモデルへの切り分けは手作業

ガイドラインに沿ってモデリングすることでソフトウェア⇔ハードウェア移行が容易に

パーティショニングを容易にする機能がVer Upにより追加

FPGA

ARM ARM

I/O &

Pe

rph

era

ls

実装

設計

アルゴリズム 要求仕様

Cコード HDLコード

ソフトウェアモデル

ハードウェアモデル

システムモデル

44

これまでのC/HDLモデリング(~R2014a)チューナブルなGain

Cモデリング ブロックパラメータをTunable

Parameterに設定

HDLモデリング ポートを作成して外部から信号入力

real32_T g = 0.131106436F;

・・rtb_s1 = g * Filter0_DW.Delay_DSTATE;

input signed [15:0] g;・・・assign s_1_mul_tmp = g * Delay_out1;

45

R2014b新機能Simulink.ParameterをPortマッピング

ソフト/ハード用の作り変えが不要となりパーティショニングを容易に⇒Zynq/Altera SoC

input signed [15:0] g;・・・assign s_1_mul_tmp = g * Delay_out1;

>> g = Simulink.Parameter;

>> g.CoderInfo.StorageClass = 'ExportedGlobal'

46

ユーザ事例のような結果を早期に達成できるようになるのがガイドラインの目的

※ ルネサスシステムデザイン株式会社 神谷衛様 MATLAB EXPO2013講演資料

47

まとめ:HDL Modeling Guideline

経験が必要だったHDL Coderの活用を早期に立ち上げ

HDL Coderを使用したハードウェア設計におけるパフォーマンス改善に有用なノウハウが満載

2014年内にPublicリリース予定

48

HDL Coderトレーニング

Simulinkモデルから、HDL Coderを使って効率のよい VHDL/Verilog

を生成する際の手順やコシミュレーションによるHDL検証のための手順を学ぶことが出来ます。

受講者の声 簡単な演習から徐々に目標にステップアップしていく形式が非常にわかりやす

かったです。 話を一方的に聞くだけでなく、演習をこなして常に手を動かすことで、「手」にコツ

を覚えこませることができました。 独学では気づかない便利なツールや考えなどが本トレーニングを通して沢山学

べ、とても役立つと思います。

スケジュール:

日程 概要 9 10 11 12 1 2 3 4 5

1日目

- HDLコードの生成

- 固定小数点演算を考

慮したモデル作成

- HDLコードの最適化

2日目

- MATLAB Function

からのコード生成

- 外部HDLとの統合

- コシミュレーション

コード解析と固定小数点の

精度の制御

外部HDLコードと

生成されたHDLの

インターフェイス

コシミュレーション

によるHDLの検証

HDLコード生成の

ためのモデル準備

MATLAB Function

ブロックからの

HDLコード生成

マルチレート

モデル用の

HDLコード

生成されたHDL

コードの最適化

top related