...

C - ISITカーエレクトロニクス研究会

by user

on
Category: Documents
18

views

Report

Comments

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
Fly UP