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

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

N/A
N/A
Protected

Academic year: 2021

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

Copied!
42
0
0

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

全文

(1)
(2)

出展:日本経済新聞

2012/7/3記事

(3)

3

© 2012 The MathWorks, Inc.

VHDL/Verilogによるコードベースから

Simulinkによるモデルベースへ

MathWorks Japan アプリケーションエンジニアリング部 シニアアプリケーションエンジニア 松本 充史

(4)

アジェンダ

HDLプロダクツ概要と採用実績

HDL生成と検証のための基本機能

より高度な使い方

設定による回路パフォーマンスの違い

HDLとFPGAのテスト検証

(5)

5

HDL Coder

MATLAB, Simulink,

Stateflowから

HDL生成

MathWorksが提供するHDL関連製品

アルゴリズム開発

システム設計

実装

Virtual Platform Processor C, C++ SystemC 生成 検証 VHDL, Verilog FPGA ASIC

Filter Design

HDL Coder

フィルタのHDL生成

HDL Verifier

HDLとFPGAの検証

SystemC生成

(6)

日本国内HDL Coder 新規ライセンス導入数推移

産業別とアプリケーション別

※2012年は

(7)

7

アジェンダ

HDLプロダクツ概要と採用実績

HDL生成と検証のための基本機能

より高度な使い方

設定による回路パフォーマンスの違い

HDLとFPGAのテスト検証

(8)

一般的なRTL設計:同期回路設計とは

一般的にFPGA/ASIC設計には同期回路設計が用いられる

フリップフロップ(FF)の間に挟んだ論理回路で構成

論理回路の転送時間がCLK周期を超えないよう設計

FF間の転送時間だけ考えれば良いので設計が容易

FF

FF

FF

FF

clk

(9)

9

同期回路設計を考慮したSimulinkモデル

オレンジ色は FFに相当する Delayブロック 

FFに相当するDelayブロックと処理ブロックで構成

⇒動作合成ではない 

Delayブロックのパラメータによる自動挿入機能

⇒ Distributed Pipelining ⇒元モデルはデバイス依存しない(再利用性高い)設計資産 

低~高抽象度まで用意されたブロック

⇒低抽象度:+, ×, ANDなどHDL記述同等 ⇒高抽象度:Sin/Cos, フィルタ, 誤り訂正(RS)、FFT、ベクタ信号等

(10)

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)

11

HDL Coderモデルの作成

対応するエントリ

M

ATLAB

Stateflow

ステートマシン コントロールロジック

S

imulink

データパス系 システム全体

M

ATLAB

データパス コントロールロジック HDL生成 HDL生成

ブロック生成

(12)

固定小数点データ型設定

設定内容は生成HDLに反映

丸め設定 オーバーフロー処理 Inherit(継承) double, single, int8, 16, 32 fixdt(任意ビット幅) Product(乗算)ブロックの設定画面

(13)

13

HDLブロックプロパティ / コードプロパティ

モデルから多様なHDL生成するためのパラメータ

Area/Speedに影響

多入力時の構造、 入出力パイプラインレベル BlackBox化、 パイプライン挿入、 階層フラット化、 リソースシェア フィルタの回路アークテクチャ (Distributed Arithmetic, Parallel, Serial)

(14)

コード生成レポートで得られる情報

リソース数 (乗算、加算、 レジスタ、RAMなど) HDLプロパティによる 最適化結果 モデル⇔HDL 双方向対応表 モデルの表示 VHDL/Verilog (HTML形式で表示) モデル上の名前を継 承(ポート、信号線、 process) 双方向リンク 対応箇所を ハイライト表示 VHDL/Verilog (HTML形式で表示)

(15)

15

MATLABコードからHDL生成

HDLシミュレーション・検証

HDL/MATLAB Functionブロック生成

HDLプロパティ設定(最適化、スタイル)

自動固定小数点化(テストベンチ基準)

GUI起動

アルゴリズムとテストベンチを作成

 最適化機能 • RAM Mapping • Distributed Pipelining • Resource Sharing • Loop Unrolling

(16)

HDL協調シミュレーションとFPGA-in-the-Loop

HDL Verifier提供機能

MATLABとSimulinkをHDLやFPGAのテスト環境として利用

生成/手書きHDLの検証

豊富な信号生成、可視化解析機能を利用

S

imulink

M

データ通信

HDL Simulator

FPGA Board

信号パターン 制御入力 期待値 可視化、解析 プラントモデル アナログ回路

TCP/IP, Shared Mem

(17)

17

HDLワークフローアドバイザ

提供するワークフロー

FPGA-in-the-Loop

Turnkey

Generic FPGA

包含する機能

FPGAプロジェクト生成

HDLチェック・生成・検証

論理合成・配置配線

(FPGAベンダツール連携)

バックアノテーション

(18)

アジェンダ

HDLプロダクツ概要と採用実績

HDL生成と検証のための基本機能

より高度な使い方

設定による回路パフォーマンスの違い

HDLとFPGAのテスト検証

(19)

19

よくある質問

HDL Coderで生成した

回路のパフォーマンスは?

(Area/Speed)

使用するブロック

モデルの書き方/設定に

依存します。

(20)

同じ処理でも表現の抽象度を選択可能

例:FIR/IIRフィルタの実装に使用できるブロック

• Simulink基本ブロックを使用 • FDATool, FilterBuilderから モデル生成可能

◎既存の構造にない柔軟なカスタマイズが可能

△修正が面倒(個別のブロックを修正)だがライブラリ化(マ

スクブロック化)することも可能

Delay(FF) Gain(乗算) Add(加算) 要素ブロックで構成

(21)

21

同じ処理でも表現の抽象度を選択可能

例:FIR/IIRフィルタの実装に使用できるブロック

• Tapped Delayとベクタ演算 でGain/Productを使用

◎修正が比較的容易、可読性高い

△構造変更出来ない

シフトレジスタ (ベクタ出力) 乗算 (ベクタ同士の要素 ごとの演算) ベクタデータの総和

(22)

同じ処理でも表現の抽象度を選択可能

例:FIR/IIRフィルタの実装に使用できるブロック

◎抽象度が高く、パラメータ、構造の修正容易

◎Distributed Arithmeticやシリアル化など豊富な

実現構造を選択可

• DSP System Toolboxの Digital/FIR/Biquad Filterを使用 • FDATool, FilterBuilderからモデ ル生成可能

(23)

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低下

(24)

設定の最適化を行う固定小数点ツールGUI

Simulink Fixed Point提供機能

一覧を表示: ブロック、固定小数点設定、 シミュレーションMin/Max オーバーフロー警告 最適化の方法、安全マージン 一時的にデータ型変更 (浮動小数点)に設定 理想状態を確認 オーバーフロー警告

(25)

25

固定小数点ツール実行前後の回路面積比較

ツール実行の効果 オーバーフローの解消と 冗長ビットが削減される ことで回路面積(LE数) が5987⇒5612に縮小 (6.3%削減)

左:実行前

右:実行後

(26)

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)

27

各Sin計算ブロックの回路パフォーマンス

Device: Cyclone IV EP4CE115F29C7

左から、Trigonometric, 1-D LUT, Sine, NCO

• CORDIC(Trigonometric)は速度・面積共にバランス良

• 1-D Lookup Tableはビット幅によって大きく異なる

Logic Element DSP Fmax

8bit

入出力

12bit

入出力

(28)

回路面積(演算器の使用個数)の低減

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 36

(29)

29

パイプライン自動挿入によるクロック速度の向上

HDLブロックプロパティ:Distributed Pipelining

Pipelineが自動挿入 Pipelineレジスタ 複数パス間の タイミング調整用レジスタ 設定画面

(30)

リソースシェアリング(左)とパイプライン挿入(右)の結果

• Sharing:DSP使用個数を低減

• OutputPipelineの効果はあるレベルで飽和

Logic Element DSP Fmax 左からOutputPipeline = [0, 4, 8, 12, 16] 左からSharingFactor = [0, 3, 6, 12]

(31)

31

HDL生成+論理合成+パフォーマンス評価の自動化

プログラミングで自動化とカ

スタマイズを行い、様々なパ

ターンでコード生成を行った。

合成レポートファイルからデータ収集 システムコマンドによる合成ツール実行 HDL生成 >>makehdl 論理合成スクリプトの設定(デバイス) forループによるパラメータ変更 Forループ

(32)

HDL生成+論理合成+パフォーマンス評価の自動化

プログラミングで自動化とカ

スタマイズを行い、様々なパ

ターンでコード生成を行った。

合成レポートファイルからデータ収集 システムコマンドによる合成ツール実行 HDL生成 >>makehdl 論理合成スクリプトの設定(デバイス) forループによるパラメータ変更 Forループ

(33)

33

HDL生成+論理合成+パフォーマンス評価の自動化

プログラミングで自動化とカ

スタマイズを行い、様々なパ

ターンでコード生成を行った。

合成レポートファイルからデータ収集 システムコマンドによる合成ツールの実 行 HDL生成 >>makehdl 論理合成スクリプトの設定(デバイス) forループによるパラメータ変更 Forループ

(34)

HDL生成+論理合成+パフォーマンス評価の自動化

プログラミングで自動化とカ

スタマイズを行い、様々なパ

ターンでコード生成を行った。

合成レポートファイルからデータ収集 システムコマンドによる合成ツール実行 HDL生成 >>makehdl 論理合成スクリプトの設定(デバイス) forループによるパラメータ変更 Forループ

(35)

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 数値の文字列検索

(36)

アジェンダ

HDLプロダクツ概要と採用実績

HDL生成と検証のための基本機能

より高度な使い方

設定による回路パフォーマンスの違い

HDLとFPGAのテスト検証

(37)

37

可視化・解析環境としてのMATLABを利用したデバッグ

数値演算・解析・可視化のプログラミング関数を豊富に提供

ユーザがプログラミングする手間と時間を削減

制御系の各種応答

フィルタ設計・解析

画像、3D表示

周波数スペクトル

(38)

デザインのテストベンチとしてのSimulink

Simulink基本機能

連続・離散のソルバ(アナログ・デジタル)

各ドメインを数式化してモデリング(アナロ

グ・デジタル回路、メカ、油圧など)

時間軸シミュレーション

オプション製品

信号処理、通信、画像処理、制御などアプリ

ケーションに特化したブロック

物理モデリングに対応したブロック:

電気回路、RF特性(S-Parameter)、

モーター、バッテリー、メカ、油圧など

(39)

39

HDLシミュレータとの連携テスト

HDL Verifier機能

手書きHDLの場合

HDLシミュレータとのインターフェースを生成

SimulinkブロックまたはMATLABコード

>> cosimWizard

HDL Coderで自動生成

協調シミュレーションモデルを自動生成

GUIまたはコマンド

>> makehdltb(gcb)

(40)

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)

41

ユーザ導入効果とシミュレーション高速化

FPGA-in-the-Loop Simulation(FIL)

テストボード:ML605 適用回路:無線デジタル信号処理回路 論理規模:FF:25,000, LUT:20,000, 36KBRAM:150, DSP48E1:130

13倍

2000倍

FIL高速化のポイント

期待値との照合はTo Fileブロックを使用

(Simulinkモデルと照合しない)

フレームベース信号の利用(DSP System Toolbox機能)

アクセラレータの使用

ユーザ 効果

Simulink

従来検証方法 (論理合成後ゲートレベル)

FIL

時間

60分

200時間以上

4分30秒

(42)

まとめ

HDL生成によりデザインの設計期間が短縮

使用ブロックやHDLプロパティ設定により

様々なパターンでHDL生成可能

HDL Coderの回路パフォーマンスはモデル次第

MATLABプログラムによりHDL生成や論理合成

の作業を自動化

HDLやFPGAの検証環境として

MATLAB/Simulinkの可視化・解析機能を利用

参照

関連したドキュメント

どにより異なる値をとると思われる.ところで,かっ

[r]

方法 理論的妥当性および先行研究の結果に基づいて,日常生活動作を構成する7動作領域より

  「教育とは,発達しつつある個人のなかに  主観的な文化を展開させようとする文化活動

テキストマイニング は,大量の構 造化されていないテキスト情報を様々な観点から

このように、このWの姿を捉えることを通して、「子どもが生き、自ら願いを形成し実現しよう

自発的な文の生成の場合には、何らかの方法で numeration formation が 行われて、Lexicon の中の語彙から numeration

化管法、労安法など、事業者が自らリスク評価を行