...

VHDL/Verilogによるコードベースから Simulinkによるモデルベースへ

by user

on
Category: Documents
37

views

Report

Comments

Transcript

VHDL/Verilogによるコードベースから Simulinkによるモデルベースへ
VHDL/Verilogによるコードベースから
Simulinkによるモデルベースへ
MathWorks Japan
アプリケーションエンジニアリング部
シニアアプリケーションエンジニア
松本 充史
© 2012 The MathWorks, Inc.1
出展:日本経済新聞
2012/7/3記事
2
アジェンダ

HDLプロダクツ概要と採用実績

HDL生成と検証のための基本機能

より高度な使い方
設定による回路パフォーマンスの違い

HDLとFPGAのテスト検証
3
MathWorksが提供するHDL関連製品
アルゴリズム開発
HDL Coder
HDL Verifier
MATLAB, Simulink,
Stateflowから
HDL生成
システム設計
生成
Filter Design
HDL Coder
フィルタのHDL生成
HDLとFPGAの検証
SystemC生成
検証
実装
C, C++
VHDL,
Verilog
SystemC
Processor
FPGA
ASIC
Virtual
Platform
4
日本国内HDL Coder 新規ライセンス導入数推移
産業別とアプリケーション別
※2012年は
10/17までのデータ
5
アジェンダ

HDLプロダクツ概要と採用実績

HDL生成と検証のための基本機能

より高度な使い方
設定による回路パフォーマンスの違い

HDLとFPGAのテスト検証
6
一般的なRTL設計:同期回路設計とは

一般的にFPGA/ASIC設計には同期回路設計が用いられる
– フリップフロップ(FF)の間に挟んだ論理回路で構成
– 論理回路の転送時間がCLK周期を超えないよう設計
– FF間の転送時間だけ考えれば良いので設計が容易
FF
FF
FF
FF
clk
7
同期回路設計を考慮したSimulinkモデル

FFに相当するDelayブロックと処理ブロックで構成
⇒動作合成ではない

Delayブロックのパラメータによる自動挿入機能
⇒ Distributed Pipelining
⇒元モデルはデバイス依存しない(再利用性高い)設計資産

低~高抽象度まで用意されたブロック
⇒低抽象度:+, ×, ANDなどHDL記述同等
⇒高抽象度:Sin/Cos, フィルタ, 誤り訂正(RS)、FFT、ベクタ信号等
オレンジ色は
FFに相当する
Delayブロック
8
HDL Coderを使ったASIC/FPGA実装フロー
MATLAB/Simulink
Simulinkリファレンスモデル設計
実装用モデル作成
Fixed-Point Toolbox
Simulink Fixed Point
固定小数点化
HDLプロパティ設定
HDL Coder
HDL生成チェッカー
HDL生成
HDL Verifier
(ModelSim, Incisive)
論理合成ツール
(Design Compiler, RTL Compiler
SynplifyPro, QuartusⅡ, ISEなど)
HDLシミュレーション・検証
論理合成・配置配線
ASIC
FPGA
9
HDL Coderモデルの作成
対応するエントリ
S imulink
データパス系
システム全体
ブロック生成
M ATLAB
データパス
コントロールロジック
Stateflow
M ATLAB
ステートマシン
コントロールロジック
HDL生成
HDL生成
10
固定小数点データ型設定
設定内容は生成HDLに反映
Product(乗算)ブロックの設定画面
丸め設定
オーバーフロー処理
Inherit(継承)
double, single,
int8, 16, 32
fixdt(任意ビット幅)
11
HDLブロックプロパティ / コードプロパティ


モデルから多様なHDL生成するためのパラメータ
Area/Speedに影響
多入力時の構造、
入出力パイプラインレベル
BlackBox化、
パイプライン挿入、
階層フラット化、
リソースシェア
フィルタの回路アークテクチャ
(Distributed Arithmetic,
Parallel, Serial)
12
コード生成レポートで得られる情報
VHDL/Verilog
(HTML形式で表示)
リソース数
(乗算、加算、
レジスタ、RAMなど)
モデル上の名前を継
承(ポート、信号線、
process)
HDLプロパティによる
最適化結果
双方向リンク
対応箇所を
ハイライト表示
モデル⇔HDL
双方向対応表
VHDL/Verilog
(HTML形式で表示)
モデルの表示
13
MATLABコードからHDL生成
アルゴリズムとテストベンチを作成
GUI起動
自動固定小数点化(テストベンチ基準)
 最適化機能
• RAM Mapping
• Distributed Pipelining
• Resource Sharing
• Loop Unrolling
HDLプロパティ設定(最適化、スタイル)
HDL/MATLAB Functionブロック生成
HDLシミュレーション・検証
14
HDL協調シミュレーションとFPGA-in-the-Loop
HDL Verifier提供機能



MATLABとSimulinkをHDLやFPGAのテスト環境として利用
生成/手書きHDLの検証
豊富な信号生成、可視化解析機能を利用
データ通信
TCP/IP, Shared Mem
信号パターン
制御入力
期待値
可視化、解析
プラントモデル
アナログ回路
S imulink
HDL Simulator
TCP/IP
M ATLAB
FPGA Board
15
HDLワークフローアドバイザ

提供するワークフロー
– FPGA-in-the-Loop
– Turnkey
– Generic FPGA

包含する機能
– FPGAプロジェクト生成
– HDLチェック・生成・検証
– 論理合成・配置配線
(FPGAベンダツール連携)
– バックアノテーション
16
アジェンダ

HDLプロダクツ概要と採用実績

HDL生成と検証のための基本機能

より高度な使い方
設定による回路パフォーマンスの違い

HDLとFPGAのテスト検証
17
よくある質問
HDL Coderで生成した
回路のパフォーマンスは?
(Area/Speed)
使用するブロック
モデルの書き方/設定に
依存します。
18
同じ処理でも表現の抽象度を選択可能
例:FIR/IIRフィルタの実装に使用できるブロック
• Simulink基本ブロックを使用
• FDATool, FilterBuilderから
モデル生成可能
Delay(FF)
Gain(乗算)
Add(加算)
要素ブロックで構成
◎既存の構造にない柔軟なカスタマイズが可能
△修正が面倒(個別のブロックを修正)だがライブラリ化(マ
スクブロック化)することも可能
19
同じ処理でも表現の抽象度を選択可能
例:FIR/IIRフィルタの実装に使用できるブロック
• Tapped Delayとベクタ演算
でGain/Productを使用
シフトレジスタ
(ベクタ出力)
乗算
(ベクタ同士の要素
ごとの演算)
ベクタデータの総和
◎修正が比較的容易、可読性高い
△構造変更出来ない
20
同じ処理でも表現の抽象度を選択可能
例:FIR/IIRフィルタの実装に使用できるブロック
• DSP System Toolboxの
Digital/FIR/Biquad Filterを使用
• FDATool, FilterBuilderからモデ
ル生成可能
◎抽象度が高く、パラメータ、構造の修正容易
◎Distributed Arithmeticやシリアル化など豊富な
実現構造を選択可
21
回路面積:固定小数点設定による影響
使用ブロック:Discrete FIR Filter
入力ビット幅:[8, 12, 16, 18, 22, 26]
に変更
Logic
Element
DSP
Fmax
• 自動生成~MATLABでグラフ化
• 入出力ビット幅の増加に伴いLE数増加、Fmax低下
FIR symmetric 24 tap
Device: Cyclone IV EP4CE115F29C7
22
設定の最適化を行う固定小数点ツールGUI
Simulink Fixed Point提供機能
一時的にデータ型変更
(浮動小数点)に設定
理想状態を確認
一覧を表示:
ブロック、固定小数点設定、
シミュレーションMin/Max
オーバーフロー警告
オーバーフロー警告
最適化の方法、安全マージン
23
固定小数点ツール実行前後の回路面積比較
ツール実行の効果
オーバーフローの解消と
冗長ビットが削減される
ことで回路面積(LE数)
が5987⇒5612に縮小
(6.3%削減)
左:実行前
右:実行後
24
ブロックによる生成コードの違い: Sin/Cos
Simulink/
Math Operations/
Trigonometric Function
CORDICアルゴリズム使用
ビット幅だけでなく「繰り返し回数」
設定で精度が変化
Simulink/
Lookup Tables/
1-D Lookup Table
1周期分フルにLUTを使用
入力、出力のTableを自分で定義
Simulink/
Lookup Tables/
Sine
1/4波長のTableデータの符号と向
きを切り替えて使用。
マスクサブシステム内の設定を変
更して使用する必要あるので注意
DSP System Toolbox/
Signal Operations/
NCO(Numeric
Controlled Oscillator)
本来は信号生成用に使用する。
設定によりSIN/COS計算が可能。
1/4波長LUTを使用
現在さらにパフォーマンスUPに向
けて、開発継続中
25
各Sin計算ブロックの回路パフォーマンス
12bit入出力
8bit入出力
Logic
Element
DSP
Fmax
左から、Trigonometric, 1-D LUT, Sine, NCO
• CORDIC(Trigonometric)は速度・面積共にバランス良
• 1-D Lookup Tableはビット幅によって大きく異なる
Device: Cyclone IV EP4CE115F29C7
26
回路面積(演算器の使用個数)の低減
HDLブロックプロパティ:Sharing
複数の乗算器やサブシステムの
処理を、時分割で共有して計算。
回路面積の低減
2
9
8
5
4
8
6
2
8
4
3
5
1
9
24
パラレル化
35
36
6
4
7
6
1
3
7
4
シリアル化
27
パイプライン自動挿入によるクロック速度の向上
HDLブロックプロパティ:Distributed Pipelining
設定画面
複数パス間の
タイミング調整用レジスタ
Pipelineが自動挿入
Pipelineレジスタ
28
リソースシェアリング(左)とパイプライン挿入(右)の結果
Logic
Element
DSP
Fmax
左からSharingFactor = [0, 3, 6, 12]
左からOutputPipeline = [0, 4, 8, 12, 16]
• Sharing:DSP使用個数を低減
• OutputPipelineの効果はあるレベルで飽和
29
HDL生成+論理合成+パフォーマンス評価の自動化

プログラミングで自動化とカ
スタマイズを行い、様々なパ
ターンでコード生成を行った。
forループによるパラメータ変更
論理合成スクリプトの設定(デバイス)
Forループ
HDL生成 >>makehdl
システムコマンドによる合成ツール実行
合成レポートファイルからデータ収集
30
HDL生成+論理合成+パフォーマンス評価の自動化

プログラミングで自動化とカ
スタマイズを行い、様々なパ
ターンでコード生成を行った。
forループによるパラメータ変更
論理合成スクリプトの設定(デバイス)
Forループ
HDL生成 >>makehdl
システムコマンドによる合成ツール実行
合成レポートファイルからデータ収集
31
HDL生成+論理合成+パフォーマンス評価の自動化

プログラミングで自動化とカ
スタマイズを行い、様々なパ
ターンでコード生成を行った。
forループによるパラメータ変更
論理合成スクリプトの設定(デバイス)
Forループ
HDL生成 >>makehdl
システムコマンドによる合成ツールの実
行
合成レポートファイルからデータ収集
32
HDL生成+論理合成+パフォーマンス評価の自動化

プログラミングで自動化とカ
スタマイズを行い、様々なパ
ターンでコード生成を行った。
forループによるパラメータ変更
論理合成スクリプトの設定(デバイス)
Forループ
HDL生成 >>makehdl
システムコマンドによる合成ツール実行
合成レポートファイルからデータ収集
33
HDL生成+論理合成自動化に役立つコマンド
コマンド
説明
例
makehdl(modelName, 'TargetDirectory', dir,…
'EDAScriptGeneration','on',…
'HDLSynthTool','Quartus',…
'HDLSynthInit',SynthScript)
makehdl
HDL生成
get_param
Simulinkブロック
プロパティの取得
get_param(gcb, ‘Gain')
set_param
Simulinkブロック
プロパティの設定
set_param(gcb, ‘Gain‘, ‘15’)
hdlget_param
HDLブロック
プロパティの取得
hdlget_param(gcb, ‘SharingFactor’)
hdlget_param(gcb, ‘all’) % 全て取得
hdlset_param
HDLブロック
プロパティの設定
hdlset_param(gcb, ‘SharingFactor’,4)
fixdt
固定小数点
データ型設定
regexp
正規表現文字列
の検索
dos/system
システムコマンド実行
dtInput = fixdt(1, 16, 14);
% 符号付き16bit 小数部14bit
regexp(textData,';+¥s+[¥d,¥d]+¥s',…
'match','warnings')
% ¥s スペース, ¥d 数値の文字列検索
dos(‘quartus_sh –t tclfilename’)
34
アジェンダ

HDLプロダクツ概要と採用実績

HDL生成と検証のための基本機能

より高度な使い方
設定による回路パフォーマンスの違い

HDLとFPGAのテスト検証
35
可視化・解析環境としてのMATLABを利用したデバッグ


数値演算・解析・可視化のプログラミング関数を豊富に提供
ユーザがプログラミングする手間と時間を削減
制御系の各種応答
周波数スペクトル
画像、3D表示
フィルタ設計・解析
36
デザインのテストベンチとしてのSimulink

Simulink基本機能
– 連続・離散のソルバ(アナログ・デジタル)
– 各ドメインを数式化してモデリング(アナロ
グ・デジタル回路、メカ、油圧など)
– 時間軸シミュレーション

オプション製品
– 信号処理、通信、画像処理、制御などアプリ
ケーションに特化したブロック
– 物理モデリングに対応したブロック:
電気回路、RF特性(S-Parameter)、
モーター、バッテリー、メカ、油圧など
37
HDLシミュレータとの連携テスト
HDL Verifier機能

手書きHDLの場合
– HDLシミュレータとのインターフェースを生成
SimulinkブロックまたはMATLABコード
>> cosimWizard

HDL Coderで自動生成
– 協調シミュレーションモデルを自動生成
GUIまたはコマンド
>> makehdltb(gcb)
38
FPGAボードとの連携テスト(HDL Verifier機能)
FPGA-in-the-Loop Simulation(FIL)

手書きHDLの場合
– FPGAボードとのインターフェースブロックを生成
SimulinkブロックまたはMATLABコード
>> filWizard

HDL Coderで自動生成
– HDLワークフローアドバイザでFPGA-in-the-Loopを選択
FILモデルが自動生成

汎用開発ボードとカスタムボードに対応
– Xilinx:ML401/2/3, ML505/6/7, ML605, SP601/5, XUP Atlys
Spartan-6, XUPV5-LX110T
– Altera:ArriaII GX, Cyclone III, IV GX, DE2-115, NIOS II EEK
– カスタムボード登録ウィザード >>fpgaBoardManager
39
ユーザ導入効果とシミュレーション高速化
FPGA-in-the-Loop Simulation(FIL)
ユーザ
効果
Simulink
従来検証方法
(論理合成後ゲートレベル)
FIL
時間
60分
200時間以上
4分30秒
13倍

2000倍
テストボード:ML605
適用回路:無線デジタル信号処理回路
論理規模:FF:25,000, LUT:20,000,
36KBRAM:150, DSP48E1:130
FIL高速化のポイント
– 期待値との照合はTo Fileブロックを使用
(Simulinkモデルと照合しない)
– フレームベース信号の利用(DSP System Toolbox機能)
– アクセラレータの使用
40
まとめ

HDL生成によりデザインの設計期間が短縮

使用ブロックやHDLプロパティ設定により
様々なパターンでHDL生成可能
⇒HDL Coderの回路パフォーマンスはモデル次第

MATLABプログラムによりHDL生成や論理合成
の作業を自動化

HDLやFPGAの検証環境として
MATLAB/Simulinkの可視化・解析機能を利用
41
お問合せ先

お問い合わせ先
– email : [email protected]
– TEL : 03-6367-6700

この資料に関する技術的なご質問、デモプログラムの
お問い合わせ先
– MathWorks アプリケーションエンジニアリング部
松本 充史
– email : [email protected]
42
Fly UP