Upload
others
View
18
Download
0
Embed Size (px)
Citation preview
1© 2014 The MathWorks, Inc.
ASIC/FPGA設計を容易にするHDL Coderモデリングガイドライン
MathWorks Japan
アプリケーションエンジニアリング部松本 充史[email protected]
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
コードの最適化