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