systemcを用いた チップ設計および検証事例 · 2016-07-03 ·...

24
1 © SystemC

Upload: others

Post on 04-Mar-2020

0 views

Category:

Documents


0 download

TRANSCRIPT

1第第44回回SystemCSystemCフォーラムフォーラム Copyright, 2004 © Fujitsu Network Technologies Limited

SystemCを用いた

チップ設計および検証事例

由利英介富士通ネットワークテクノロジーズ(株)

2Copyright, 2004 © Fujitsu Network Technologies Limited

第1部 設計編

目的:音声認識および信号処理SWアルゴリズムをHW化結果:開発期間を1/3短縮し、期限内にHW化を達成した。・開発言語   :SystemC(100%)使用・動作合成   :SystemC Compiler™ ※1(ver2002.05-SP1)・シミュレータ :Incisive™※2 (ver5.0-s001)

※1 Synopsys社 ※2 CADENCE社 Incisive Unified SimulatorTM

第1章 SystemC導入

第2章 開発フロー

第3章 適用事例

第4章 設計編のまとめ

3Copyright, 2004 © Fujitsu Network Technologies Limited

第1章 SystemC導入

動機顧客からの要求

顧客のもつ音声認識SWを100%HW化して欲しい。

タイトなスケジュール(ボード、FW、ボード制御SW、FPGAを

動作合成ツール

Synopsys社 SystemC CompilerTMの使用方法について、

社内の信号処理アプリケーションで実験済

VHDL-SystemCの混在シミュレーション

CADENCE社 Incisive Unified Simulator™の導入

新技術への挑戦

設計手法 :短期間開発を目指してより上流へ

ビジネス面:信号処理のHW化サービス

機は熟した

4Copyright, 2004 © Fujitsu Network Technologies Limited

効果

抽象度と言語の大きなギャップにより再利用は困難

精度検討Cモデル

RTLモデル設計 検証

精度検討概念+機能モデル

動作モデル設計

検証

機能モデルを再利用しながら、動作合成ツールでRTLを生成

RTLに比べて高速なシミュレーションが可能

約1/3短縮

従来の開発フロー

(6ヶ月)

今回の開発フロー(4ヶ月)

C/C++言語 HDL

C/C++/SystemC

5Copyright, 2004 © Fujitsu Network Technologies Limited

概念モデル

期待値照合アーキテクチャ設計• 並列性の抽出• I/Fはsc_fifoチャネル

動作合成可能なモデル• クロック・リセット実装• 通信部の詳細化• メモリ・マッピング

動作/論理合成

RTL(HDL)

Incisive™• 通信プロトコルの検証

• SystemC Compiler™• FPGA CompilerII™

Net list

メモリ lib.

実機評価

機能モデル

動作モデル

構造解析• 実行順序の把握• 共有変数の明確化

期待値照合

期待値照合

SystemC/C++SystemC/C++

設計フェーズ設計フェーズ

合成フェーズ合成フェーズ

検証フェーズ検証フェーズ

顧客/自社ソース・コード

第2章 開発フロー

FPGA/ASICfitting/layout

6Copyright, 2004 © Fujitsu Network Technologies Limited

抽象度の定義

概念モデル時間の概念のないモデル。処理は逐次的に実行される。

精度検討(ビット幅の決定)を行う。

機能モデル各機能(関数)から並列性を抽出し、モジュールとして統合・分割する。

データ通信はsc_fifoを使用する。

動作モデルインタフェース部分はsc_signalであり、クロックサイクルで動作する。

2種類の記述方法

RTL記述の場合は内部もサイクル精度で記述(レジスタ、FSM)

ビヘイビア記述の場合はアルゴリズムを記述(データ処理や演算部)

#動作合成ツールの記述スタイルに合わせる。

7Copyright, 2004 © Fujitsu Network Technologies Limited

リファインメント顧客のソース・コード(顧客のソース・コード(C++C++)) 機能モデル(機能モデル(SystemCSystemC))

モジュール1 モジュール2

関数A()

関数B()

変数1

Class A

関数A(変数1)ローカル変数2

関数B(変数1)

変数1関数

概念モデル(概念モデル(CC))

プロセスA()

変数1

プロセスB()

プロセスC()

変数1

プロセスA()

変数1

モジュール1

動作モデル(動作モデル(SystemC)SystemC)

プロセスB()

プロセスC()

変数1

モジュール2

sc_fifo(T) ポート

CLK,RESET

変数2変数1は関数A、Bがアクセスする。変数2は関数Aだけがアクセスする。

変数2

変数2

関数

A objA ;

sc_signal(T)

合成可能

リファインメント

リファインメント

8Copyright, 2004 © Fujitsu Network Technologies Limited

SystemC-HDLの混在検証

SystemC:DUV

SystemC:TB

clk

SystemC:sc_top

SystemC: sc_main

SystemC:TB

clk

SystemC: sc_top

VHDL

合成後

シェルを被せる

IncisiveIncisive™™使用時使用時Reference SimulatorReference Simulator使用時使用時

1.sc_mainをはずす2.ncshellコマンドでシェルを生成3.シェルのポートの型をトップに合わせる4.top.hにシェルのヘッダをinclude

1.top(例:sc_top)階層を作成する2.クロックもtopで定義する3.sc_mainはtopをインスタンスするだけ

※ver5.1ではsc_mainをはずす必要はない。

9Copyright, 2004 © Fujitsu Network Technologies Limited

第3章 適用事例

事例1:音声認識ソフトウェアのHW化

事例2:難聴者に向けた音声強調アルゴリズムのHW化

第1章 SystemC導入の動機

第2章 開発フロー

第3章 適用事例

第4章 設計編のまとめ

10Copyright, 2004 © Fujitsu Network Technologies Limited

事例1:音声認識ソフトウェアのHW化

■■ AmiVoiceAmiVoice DSR DSR ※※のハードウェア化のハードウェア化※株式会社アドバンスト・メディア様の分散型音声認識ソフトウェア

特徴・人の音声をサーバ、クライアント双方で分割し、 認識・処理します。・クライアント側で入力した音声の特徴データを30分の1まで 圧縮し、サーバ側に送信します。・サーバ側だけで認識・処理する一般の方式に比べて、高品質な音声で、 多彩な音声認識 サービスを実現できます。

クライアント(音声入力機器)認識結果

実装されるデバイスを100%SystemCを使用しハードウェア化しました。

圧縮データ

サーバ 評価ボード

11Copyright, 2004 © Fujitsu Network Technologies Limited

事例2:難聴者に向けた音声強調アルゴリズムのHW化

出力フィルタバンク

振幅圧縮

FFT

音声

騒音 増幅率算出

音環境

解析処理

周波数解析

補聴処理

パラメータ調整

入力 出力

■■産官学連携プロジェクト産官学連携プロジェクト※※

※ 富士通ネットワークテクノロジ-ズ(株)  および福岡県、九州大学にて共同開発

アルゴリズム1アルゴリズム1

アルゴリズム2アルゴリズム2

社会の高齢化によって、難聴者の数が増加し、難聴に対する補聴技術が必要になります。このプロジェクトでは音響機器等に組込む補聴専用LSIの開発を目指しています。SystemCを用いることによって、これまでにC言語ベースで研究開発されたアルゴリズムを短期間でハードウエア化することに成功しました。

SystemCでハードウェア化したものをFPGAに実装し、ボード上でアルゴリズムを切り替えて評価します。

12Copyright, 2004 © Fujitsu Network Technologies Limited

第4章 設計編のまとめ抽象度の定義とリファインメント

リファインメントを繰返すことで、比較的安全に下位モデルへブレイクダウンできる。

同じ言語で最初から最後まで

概念モデルから動作モデルまで同じ言語でシームレスに行える。

アルゴリズムを下位のモデルで再利用可能

動作合成ツールの導入

RTLよりも動作レベル記述の方がはるかに簡単→記述量が約1/10設計者談「RTLで設計していたら、スケジュールに間に合わなかっただろう」

シミュレーション速度が速い

RTLより上位レベルのデバッグで効果あり (動作モデル40s vs. RTL1h )SystemC-HDL混在シミュレータの導入

テストベンチの再利用により検証期間を約1/3短縮

動作合成後のRTLのシミュレーションは必須(動作合成の手続きミス3件発見)

13Copyright, 2004 © Fujitsu Network Technologies Limited

SystemC Compiler™について

使用した感想アルゴリズミックな処理(演算が沢山あるアプリ)の合成に向いている。

製品にも十分使える。

パケット処理など通信系のデータパスだと?

RTLで記述すべきところはRTLで記述する。(CPU-I/F、FSM、S/P etc)

改善要求(Synopsysさんへ)

極稀に合成前後で論理が一致しないことがある。

memwrapやBCViewをなくさないで!

動作合成後のRTLモデルが構造記述に近い→RTLらしく出して欲しい。

インタフェース合成(ex sc_fifoからsc_signalのハンドシェーク実装など)

SystemC Compiler™は使えるツールです。

SystemCにもっと力を入れてください!!! m(_ _)m

14Copyright, 2004 © Fujitsu Network Technologies Limited

第2部 検証編

目的:チップの信頼性向上結果:SCV※のランダマイゼーション機能を用いることで、

検証項目を10件追加し、信頼性を向上させることができた。・検証言語   :HDLとSystemCおよびSCV混在・シミュレータ :IncisiveTM(ver5.0-s007)

※SystemC Verification library (SystemC検証ライブラリ)

第1章 SCV導入

第2章 適用事例

第3章 検証編のまとめ

15Copyright, 2004 © Fujitsu Network Technologies Limited

第1章 SCV導入

動機設計チームからの要求

SystemCを使いたいが、DUV(VHDL/VerilogのRTL)は既にある。

テストベンチで使用したい。

SCVで何をやるか/何ができるか

ランダマイズ機能により様々なデータを発生→ コーナーケース検証

トランザクション・レコーディング機能によりデバッグを視覚的に容易化

Incisive Unified Simulator™の導入

SystemC+HDL +SCVの混在シミュレーションが可能

新技術への挑戦

SCV体験(当時はβ版を使用、03'12/5 SCV1.0正式リリース)

トランザクション・レベル検証

機は熟した

16Copyright, 2004 © Fujitsu Network Technologies Limited

第2章 適用事例

事例1:メディアデータ処理チップの検証

事例2:IPパケット処理チップの検証

第1章 SCV導入

第2章 適用事例

第3章 検証編のまとめ

17Copyright, 2004 © Fujitsu Network Technologies Limited

事例1メディアデータ処理チップの検証

■■ SystemCSystemC((Test bench) Test bench) ににVerilog(DUV) Verilog(DUV) をインスタンスをインスタンスSystemCトランザクタ

SystemCモジュールシグナルトランザクション TR

Shell

ShellDUV(HDL)

CLK1

テストベンチテストベンチ((SystemC)SystemC)

CPU

CPUシナリオ1.DMA 起動レジスタ設定2.終了割込み検出3.ステータスレジスタ確認4.データチェック5.Sim停止

TR TR RAM (A)

TR RAM (B)

TR RAM (C)SC Shell

CLK2

CLK1CLK1

REQ

ACK ランダム

DMA①

DMA②

18Copyright, 2004 © Fujitsu Network Technologies Limited

トランザクション・レベル検証CPUモジュール

port.write(0x1234,0xFFFF)data = port.read(0x1234)

記録したトランザクションをグラフィカルにチェック可能可視性・デバッグ性が向上

トランザクタ

トランザクション・レコーディング

信号トランザクション

DUV

19Copyright, 2004 © Fujitsu Network Technologies Limited

DMAランダム起動

【CPU】 DMA起動タスク ×8(ランダムに起動)

write()

転送元アドレス設定

write()

転送先アドレス設定

転送サイズ設定 ステータス確認

DMA起動 ステータスクリア

write() write()IRQ監視

read() write()

設定1 設定2

設定1 設定2

タスク間にも、ランダムにインターバルを設定【DUV】

DMA転送0

DMA転送1

複数のDMA転送が並列実行される

DMA転送7 設定1

20Copyright, 2004 © Fujitsu Network Technologies Limited

事例2 IPパケット処理チップの検証■■ VHDLVHDLににSystemCSystemC(フレーム発生器)(フレーム発生器) をインスタンスをインスタンス

SystemCトランザクタ

SystemCモジュールシグナルトランザクション TR

Shell

DUV+

テスト部品(VHDL)

テストベンチ(テストベンチ(VHDL)VHDL)

フレーム発生器1

フレーム・データをランダム生成

CLK2CLK1

タイプ別のフォーマットに変換信号レベル(8ビット)へ変換ランダム生成 フレーム間ギャップ エラー発生

TR1フレーム発生器2TR2

VHDL SHELL VHDL SHELL

21Copyright, 2004 © Fujitsu Network Technologies Limited

フレーム・データのランダマイズ

フレーム・タイプ4種に対する重み付け(20,20,20,40)

送信/FCS/HCSエラー確率(1/1000)

フレーム間ギャップ範囲(1~150CLK)

データヘッダ

可変長ランダムアドレスに制約あり

可変長ランダム制約なし

フレーム・タイプ4種

ランダム発生ヘッダ データ

タイプ1 タイプ2 タイプ4 タイプ3タイプ4

22Copyright, 2004 © Fujitsu Network Technologies Limited

第3章 検証編のまとめランダマイゼーション機能

HDLでは困難なテストデータを比較的簡単に作成可能

DUVの信頼性、検証に対する網羅性が向上(コーナーケース検証)

SCVトランザクション・レベル検証

データ発生部分の再利用性が向上

DUVの抽象度に対応したテストベンチを作成可能

SystemCトランザクション・レコーディング

デバッグの容易性

結果の視認性を向上

SCV、Incisive Unified Simulator™

23Copyright, 2004 © Fujitsu Network Technologies Limited

SCVおよびIncisive™について

データのランダマイズ

β版だが安定している。(現在は正式版がSCV1.0がリリースされている)

トランザクション・レコーディング

結果は見易くなるが、記述が難しい。

ドキュメント、サンプルの作成依頼済み

C++について

C++の知識が必須(クラス、継承、テンプレートなど)

コンパイル時間

SCVを使用するとg++でのコンパイル時間が長くなる。

IncisiveTMだとg++より更に2割ほど長くなる。

HDLのコンパイル並みに速くして欲しい→改善要求済み

Incisive Unified Simulator™は使えるツールです。

もっと高速に、そしてデバッグ環境をさらに改善してください!!! m(_ _)m

24Copyright, 2004 © Fujitsu Network Technologies Limited

総括

SystemCはチップの開発に対して

モデリングに使えた!!!

設計 に使えた!!!みんなで

盛り上げよう検証 に使えた!!!