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