Comments
Description
Transcript
C - ISITカーエレクトロニクス研究会
第9回 カーエレクトロニクス研究会 MATLABとC言語ベース高位合成の連携 によるハードウエア設計事例 2011年10月14日 富士通九州ネットワークテクノロジーズ株式会社 第一開発統括部 第一技術部 斎藤 睦巳 富士通九州ネットワークテクノロジーズ株式会社秘密情報 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED Agenda 会社紹介 モデルベース設計の導入 高位合成について MATLAB+高位合成の設計手法 コード変換 Cコードの検証 設計事例 社内のコミュニティ活動 第9回 カーエレクトロニクス研究会 1 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 会社紹介 【社名】 富士通九州ネットワークテクノロジーズ株式会社 (QNET) (Fujitsu Kyushu Network Technologies Limited) http://jp.fujitsu.com/group/qnet/ 【所在地】 本社:福岡市早良区百道浜2-2-1 富士通九州R&Dセンター 広島事業所:広島市南区段原南1-3-53 広島イーストビル 【事業内容】 ネットワークシステム・端末のソフトウェア・ファームウェア・ハードウェア の開発設計、 コンサルティング、システム構築業務、製造、販売 各種信号処理機能の開発設計 キーデバイス(ASIC/ FPGA)の開発設計 広島 福岡 【社員数】 841名 (2011年4月1日現在) 第9回 カーエレクトロニクス研究会 2 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 会社紹介(弊社事業ドメイン) システム・ソリューション サービス・マネージメント・ソリューション ネットワーク・マネジメント・ソリューション ネットワーク・テクノロジー IP系システム開発 フォトニック系システム開発 ・IPネットワーク技術 ・IPトランスポート技術 ・有線系アクセス技術 ・WDM技術 ネットワーク制御技術 移動無線ネットワーク技術 ・WCDMA技術 ・FMC技術 ・モバイル系アクセス技術 キー・テクノロジー ネットワークアプリケーション技術 リアルタイムシステム技術 通信プロトコル技術 画像処理技術 ASIC/FPGA設計技術 アナログ設計技術 ディジタル信号処理技術 IP電話制御技術 実装/構造設計技術 etc 応用技術 応用分野 モバイル端末 デジタル家電 セキュリティ技術 バイオメトリックス技術 第9回 カーエレクトロニクス研究会 モバイル系システム開発 3 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 会社紹介 モデルベース設計の導入 高位合成について MATLAB+高位合成の設計手法 コード変換 Cコードの検証 設計事例 社内のコミュニティ活動 第9回 カーエレクトロニクス研究会 4 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED モデルベース設計の導入 背景 QNETではMATLABでモデリングする事例が多い MATLABモデルからのハードウエア化のニーズが増加 システムの複雑化,設計の短期間化への対応が必須 モデルベース設計への挑戦 C言語からの高位合成は社内で実績がある 同様にMATLABモデルからの設計ができないか? MATLABモデルをベースとした設計手法を検討・導入 第9回 カーエレクトロニクス研究会 5 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED MATLABとは? 制御系・信号処理システムのモデリングツール システムのふるまいをシミュレーションによって検証 モデリングには2通りのスタイルがある コード記述(MATLAB) ブロック線図(Simulink) (ブロック線図) (コード記述) function [dist,result] = detect(in,dict) in_sel = zeros(256,size(dict,2)); In_t = in.‘; in_sel(find(dict)) = in_t(find(dict)); dist = sum(sum(abs(in_sel - dict))); if dist < 500 result = 1; else result = 0; end 第9回 カーエレクトロニクス研究会 6 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 弊社におけるMATLABの活用 無線通信向けが中心 90年代後半に導入 主にモデリングツールとして利用 ここ数年で利用プロジェクトが急増 適用分野が拡大 Simulink®よりもMATLABコードでのモデリングが多い モデルからFPGA/DSPへの実装のニーズが増加 ハードウエア実装 従来は実装用コードは手書き(上位モデルを参考に) 短期開発の要求からモデルベース開発のニーズが高まる 第9回 カーエレクトロニクス研究会 7 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED MATLABのモデルベース設計(ハードウエア) Simulinkには専用ツールがあるがMATLABには無い (コード記述) 直接合成 するツール がない × 本当はこれ をやりたい のだが… Simulink® HDL Coder™ System Generator DSP Builder HDL 第9回 カーエレクトロニクス研究会 専用ツール による自動 設計 HDL 8 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED MATLABコードのハードウエア化 Cコードを経由してハード化する方法を新規に検討・実現 ハード化を前提とした MATLAB→Cコード化を 工夫 直接合成 するツール がない Cコード化 × HDL 第9回 カーエレクトロニクス研究会 Cコード 高位合成 高位合成は既に社内 で実績・ノウハウがあ る (ANSI-C入力) 9 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED MATLABコードのハード化 設計手法の比較 概要 案1 設計仕様書を作成し 良い点 課題 評価 設計期間・工数が増大 × Simulinkから直 MATLAB→Simulinkへ 接HDLを合成可能 の置換の手間 △ 品質が安定 HDLを手設計 案2 MATLAB→Simulinkへ 置換え、専用ツールで 合成 案3 MATLAB→Cコードの変 短期開発が可能 MATLAB→C変換 換とCベース高位合成 ○ 高位合成は社内 で実績あり 我々は案3(Cコード変換+高位合成)を推奨 第9回 カーエレクトロニクス研究会 10 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 会社紹介 モデルベース設計の導入 高位合成について MATLAB+高位合成の設計手法 コード変換 Cコードの検証 設計事例 社内のコミュニティ活動 第9回 カーエレクトロニクス研究会 11 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 高位合成ツールとは? CコードからHDL(RTL記述)を自動生成するツール • HDL:Hardware Description Language (ハードウエア記述言語) • RTL:Register Transfer Level HDL (Verilog,VHDL) Cコード filter(int *in, int *out){ int reg[N]; ・・・ for (i=N-1; i>=0; i--) { acc += reg[i] * coef[i]; } ・・・ 高位合成 データパス インタフェース仕様 アーキテクチャ を指定 S1 S3 S2 ステート マシン 製品例:Catapult® C Synthesis(メンター・グラフィクス社) 第9回 カーエレクトロニクス研究会 12 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 高位合成のメリット・課題 メリット 抽象度の高いC言語(ソフトウエア)から回路を合成可能 HDL手設計に比べ、設計期間の大幅な短縮が可能 C言語モデルで高速な検証が可能 課題 従来とは異なる設計スタイル(検証など) Cコードの記述により合成後の回路の性能が異なる • ハードウエアを意識したコード記述のスキルが必要 入力形式がツールによって異なる(デファクトが無い) • ANSI-C、SystemC、C言語の独自拡張・・・ 第9回 カーエレクトロニクス研究会 13 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 弊社の高位合成への取り組み 高位合成の適用実績 2004年度:音声認識ソフトウエアのLSI試作 ツールの開発停止により取り組みが一時中断 2007年度:メディア信号処理(Audio codec)への適用 携帯端末信号処理への適用 2008年度:携帯機器向け画像システムLSIへの適用 2009年度:IP伝送装置内パケット多重部への適用 無線信号処理装置におけるHW実現性検討 伝送処理HW実現性検討での適用 光伝送装置用信号処理LSI開発 2010年度:無線システムLSIモデム処理への適用 誤り訂正処理への適用検討 光伝送システム向け信号処理LSI ここ数年で実開発への適用事例が急増 第9回 カーエレクトロニクス研究会 14 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 会社紹介 モデルベース設計の導入 高位合成について MATLAB+高位合成の設計手法 コード変換 Cコードの検証 設計事例 社内のコミュニティ活動 第9回 カーエレクトロニクス研究会 15 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED コード変換の流れ MATLAB→高位合成用Cへの変換事例 MATLAB ANSI-C Algorithmic-C (高位合成用コード) 高位合成用 の記述形式 に書換え 第9回 カーエレクトロニクス研究会 ich=in.*coef1; qch=in.*coef2; out=complex(ich,qch); ベクトル演算 をforループ に展開 float in[100],・・・ for (i = 0; i < 100; i++) { out[i].re = in[i] * coef1[i]; out[i].im = in[i] * coef2[i]; } MATLAB モデル Cモデル ac_int<10,true> in[100]; ac_complex<ac_int<10,true> > out[100]; ・・・ for (i = 0; i < 100; i++) { out[i].r() = in[i] * coef1[i]; out[i].i() = in[i] * coef2[i]; } 16 モデルのリファイ ンメントの流れ Cモデル (高位合成用) 高位合成 HDL Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED コード変換の課題 課題になったのはMATLAB→Cコード化 MATLABは複雑な計算も簡単に記述できてしまうため,実装用 のCコードへの書き換えが大変な場合がある. MATLABコード C = A * B; スカラー値の乗算 同じ記述でも 3通りの可能 性がある 複素数の乗算 行列の乗算 Cコード MATLAB x_prd = A * x_est; 行列の乗算の場合 for (r1=0; r1<6; r1++) { for (r2=0; r2<6; r2++) { x_prd[r1] += A[r1+6*r2] * x_est[r2]; }・・・ ⇒ 手作業では書換・検証に手間がかかる 第9回 カーエレクトロニクス研究会 17 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED Cコード生成 オプション機能によるCコード生成機能を活用 Embedded MATLAB+Real-time Workshop function y = kalman02(z) ・・・・・・ x_prd = A * x_est; 自動 生成 ・・・・・・ /* Function Definitions */ void kalman(real_T z, real_T y[2]) { int32_T r1; real_T x_prd[6]; ・・・・・・ for (r1 = 0; r1 < 6; r1++) { x_prd[r1] = 0.0; for (r2 = 0; r2 < 6; r2++) { x_prd[r1] += iv0[r1 + 6 * r2] * x_est[r2]; } ・・・・・・ 自動生成されたCコードを参考にして,ハード化に 適したCコードへ書き直す(翻訳作業) 第9回 カーエレクトロニクス研究会 18 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED コード変換を行う際の注意点 ハードウエア化を意識したモデリングが重要 MATLABの段階でハードウエアを意識したブロック化を行う 各関数はCコード化・高位合成を考慮してコンパクトに記述する 長々と コードを記述 MATLABコード 失敗例 X_prd = A * x_est; P_prd = A * p_est * A’ + Q; x_est = x_prd + klm_gain; p_est = p_prd – klm_gain; ・・・・・・ ・・・・・・・・・・・・・・・・・・・・ for (r2 = 0; r2 < 2; r2++) { for (k = 0; k < 6; k++) { b_klm_gain[k + 6 * r2] = Y[r2 + (k << 1)]; ・・・・・・・・・・・・・・・・・・・・ X_prd = A * x_est; for (r1=0; r1<6; r1++) { x_prd[r1] += A[r1] * x; Cコード HDL 性能が得られ ない場合あり 1つの関数をコ ンパクトに 成功例 期待する性能 を実現 MATLABモデルの段階でハードを意識することが必要 第9回 カーエレクトロニクス研究会 19 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED Cコードの検証 作成したCコードをMATLABモデル上で検証 高位合成用Cコードの検証も可能 一部をCコード化した シミュレーション環境 MATLABコードのみの シミュレーション環境 func1.m func2.m コード変換 func1.c func1.mexw32 MEX compile func2.m ・・・ ・・・ ・・・ ・・・ Cコード化前後の特性を比較し,作成した Cコードに問題がないことを確認する 第9回 カーエレクトロニクス研究会 20 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED Cコードの検証 Simulink上に検証環境を構築 高位合成用Cコードの検証も可能 Simulink 伝搬路モデル 変調部 信号生成 処理A フェージング 復調部 処理E Cコード エラー率算出 Blockset 第9回 カーエレクトロニクス研究会 処理F 処理B 処理D Embedded MATLAB Function 21 高位合成用C コード 処理C S-Function (Cコード) ノイズ S-Function化した 高位合成用Cコード Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED Cコードの検証 (高位合成ツールとの連携) 高位合成ツールのMATLAB用ラッパー生成機能を利用 高位合成用 Cコード 自動でラッパー生成 • MATLAB用カスタム関数として実 行可能 Catapult MATLAB向け ラッパー生成 MATLAB/Simulinkにて検証 • HDLと同じ演算精度でシミュレー ションが可能 高位合成 MEX compile MATLAB/ Simulink 検証環境構築が容易に • 簡単に高位合成用Cコードの検証 環境を作成可能 モデル上 で検証 第9回 カーエレクトロニクス研究会 C/C++ 22 カスタム関数 HDL 精度等価 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 会社紹介 モデルベース設計の導入 高位合成について MATLAB+高位合成の設計手法 コード変換 Cコードの検証 設計事例 社内のコミュニティ活動 第9回 カーエレクトロニクス研究会 23 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 設計事例 次世代通信向けシステムLSI開発 LSIに内蔵するモデム回路開発を受託 方式開発はMATLAB(コード記述)にて実施 開発上の課題 要求仕様が不確定→方式変更の可能性 超短期開発 効率的な設計が不可欠 MATLABと高位合成の連携による設計手法を適用 第9回 カーエレクトロニクス研究会 24 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 設計事例(工夫点) 新しい設計手法の導入に関して 受託が確定する前に設計手法を先行的にトライアル 関係者への事前の説明(根回し) モデル作成 MATLABモデルの段階で回路化をイメージ 関数をコンパクトに作成(Cコード化/高位合成が容易に) チーム編成 作業プロセスを分け、各プロセスにエキスパートを配置 従来よりも大幅に工程を短縮 第9回 カーエレクトロニクス研究会 25 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 設計事例(チーム編成) チーム編成の工夫 3つのプロセスに分割 担当者間の連携を密にし、後工程の課題を上流にフィードバック 方式 開発者 MATLAB モデル Aさん 方式開発 関数構成の修正 翻訳者 LSI 設計者 第9回 カーエレクトロニクス研究会 Cモデル Bさん M→C変換 Cさん Cモデル (高位合成用) Catapult 向け最適化 26 Catapult用の最適なC モデル記述スタイル の指摘 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 設計事例(開発成果) 開発プロセスの改善 モデルベース設計により、開発期間を手設計の6割程度に圧縮 従 来 基本検討 設計仕様 外部仕様 設計仕様書 Mモデル 基本検討 今 回 外部仕様 HDL Cモデル HDL -SIM M修正→C→HDL HDL 環境構築後はM→HDL化 が非常に速い 第9回 カーエレクトロニクス研究会 HDL-SIM 実機試験(FPGA) 実機試験(FPGA) Cモデル SIM Mモデル HDL設計 27 従来は仕様書修正やHDL 手修正のために時間がか かっていたものが、短期 間で修正可能に Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 設計事例(MATLAB+高位合成の適用効果) 方式開発者とLSI設計者が同じコード(モデル)上で相談 →モデルベース設計の有効性を実感 処理を追加したい が大丈夫か? ich=in.*coef1; qch=in.*coef2; out=complex(ich,qch); 処理E 処理F 方式 開発者 for (i = 0; i < 100; i++) { out[i].re = in[i] * coef1[i]; out[i].im = in[i] * coef2[i]; } 処理D この記述だと性能が 出ないので、少し書 き換えてもらえない か 処理C LSI 設計者 翻訳者 プロジェクト内でエキスパートが協働できると この効果は非常に大きい 第9回 カーエレクトロニクス研究会 28 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 会社紹介 モデルベース設計の導入 高位合成について MATLAB+高位合成の設計手法 コード変換 Cコードの検証 設計事例 社内のコミュニティ活動 第9回 カーエレクトロニクス研究会 29 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 社内のコミュニティ活動 「MATLABコミュニティ」と「高位合成コミュニティ」 ユーザ間の情報共有と社内への設計技術の普及を図る • MATLAB/Simulink・高位合成ツールに関する最新情報の交換 • 設計事例やノウハウの交換 活動内容 メーリングリストでの情報交換 • 新しいツールの情報 • ツール利用の工夫点 顔を合わせての定例会 • 各部門の状況,事例 社内の入門セミナーを開催 社外での講演も積極的に実施 第9回 カーエレクトロニクス研究会 30 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 社内のコミュニティ活動 CQ出版のWebサイトで紹介しています TechVillage「組み込みネット」→コラム記事 第9回 カーエレクトロニクス研究会 31 Copyright 2011 Fujitsu Kyushu Network Technologies LIMITED 第9回 カーエレクトロニクス研究会 32 32 Copyright 2011 Fujitsu Kyushu Network 2010 Technologies Copyright FUJITSULIMITED LIMITED