SlideShare une entreprise Scribd logo
1  sur  32
SystemCVerification
Methodology
@LSI設計雑記帳
2013/6/21 - SystemC Japan 2013
SystemC/TLM
• SystemCモデル
• サイクルベース
• 高位合成を対象
• TLMモデル
• トランザクションベース
• ソフトウェア開発環境を対象
SystemCモデル検証
• 課題はありますか?
SystemCモデル検証
• いいえ。ありません!(キリッ
_人人人人人人_
>そんなバカな!<
 ̄Y^Y^Y^Y^Y ̄
SystemCモデル設計
• C/C++のアルゴリズムが存在
機能(処理)を流用してモデリング
• RTLスタイル(RTL→SystemC)
※PSYスタイルではありません
• コード上にデバッグコードを書かない
SystemCモデル検証
• 検証環境の構築は?
• アルゴリズム環境を流用
• RTL検証手法を適用
• 等価性検証は?
• 静的:SLEC, HECTOR
• 動的:SystemC-RTLシミュレーション
RTL検証手法
• ダイナミック
• ランダム
• アサーション
• カバレッジ
• フォーマル
• UVM/OVM/VMM
• エミュレーション
• FPGAボード
SystemC検証への適用
• ダイナミック
• ランダム
• アサーション
• カバレッジ
• フォーマル
• UVM/OVM/VMM
• エミュレーション
• FPGAボード
有償シミュレータであれば
三角マークは解消!
ランダム生成(SCV)
• ランダム分布指定
• 重み付けランダム
• 値そのもの/値の範囲
• 制約付きランダム
http://lsifrontend.blog100.fc2.com/blog-category-27.html
項目 ツール or 手法 コメント
アサーション PSL ほどほど
カバレッジ JEDA/gcov ほどほど
フォーマル SLEC/HECTOR ほどほど
UVM/e Co-Simulation 敷居高い
SystemCモデル検証
とある実験結果
• SystemCモデル作成
• SystemCモデル検証
• 高位合成
• RTLシミュレーション
• カバレッジ結果(Line)
SystemC→高位合成
• SystemCモデル作成
• SystemCモデル検証
• 高位合成
• RTLシミュレーション
• カバレッジ結果(Line)
SystemC→高位合成
100%
99%
SystemC検証環境は
重要!!!
• アルゴリズムの機能保証
• SystemCモデルの品質確保
• 高位合成後のRTL品質に直結
• RTLシミュレーションへの移植性
• Interface合成などSystemCモデルに無い
EDAベンダーが
いつかはやる・・・
でも、趣味で
やってみっか!
SystemCVerification
Methodology
項目 ライブラリ リリース予定
アサーション svm_ovl 2013/11
カバレッジ svm_cover_xxx 201x/xx/xx
フォーマル ー むりぽー
UVM/e svm_xxx 2013/12
作ります。
assertion:svm_ovl
• OVL(OpenVerication Libraryベース)
• 基本Cycleベース(clock→event)
• 独自な部分はこれから検討
coverage:svm_coverx
http://www.design-reuse.com/
articles/26688/coverage-driven-
verification-to-improve-the-quality-
of-ip.html
Unified Coverage
Interoperability Standard
(UCIS)
platform:svm_xxx
• svm_env/agent/driver/monitor/scoreboad
• svm_sequence/_item/sequencer
• svm_test/factory/register
作る上で・・・
SystemC難しい><
こんなの作りながら
悩んでます。
全階層信号波形取得
• svm_waves(char* tf, sc_module top);
#include “svm.h”
int sc_main( int argc, char* argv[] ) {
top utop("utop");
svm_waves(“systemc”, utop);
sc_start();
return 0;
}
全階層がVCD形式で出力
・sc_in/out/inout
・sc_signal
※標準SystemCでは無理です
get_child_object()
inline svm_waves::svm_waves(const char* tf_name, const sc_module& m_top){
create( tf_name );
std::vector<sc_object*> children = m_top.get_child_objects();
svm_trace(tf, children);
}
void svm_waves::svm_trace(sc_trace_file *tf, std::vector<sc_object*>& children){
for (std::vector<sc_object*>::iterator i = children.begin(); i != children.end(); i++){
if ( std::string((*i)->kind())=="sc_module" ) {
sc_module* mptr = dynamic_cast<sc_module*>(*i);
std::vector<sc_object*> r_children = mptr->get_child_objects();
svm_trace(tf, r_children);
}else if(std::string((*i)->kind()) == "sc_in" || std::string((*i)->kind()) == "sc_out"
|| std::string((*i)->kind()) == "sc_inout" || std::string((*i)->kind()) == "sc_signal"){
(*i)->trace(tf);
}
}
}
pre/post_random()
struct packet : public svm_sequence_item {
svm_rand<int> a;
svm_rand<double> b;
svm_rand<sc_int<8> > c;
packet() {
svm_sequence_item::regist(&a);
svm_sequence_item::regist(&b);
svm_sequence_item::regist(&c);
a.keep_only(-30, 30);
b.keep_only(-10, 20);
c.keep_only(30);
}
void post_randmize() {
a -= 10000;
}
};
int sc_main( int argc, char* argv[] ) {
packet data_p;
for (int i=0; i<20; i++) {
data_p.randmize();
:
}
return 0;
}
# a = -9987, b = 10.016675, c = 30
# a = -9971, b = -4.749229, c = 30
# a = -10008, b = -4.446328, c = 30
# a = -10004, b = 10.039535, c = 30
:
接続元の信号名取得
DUT
assertion module
_人人人人_
> Assert!<
 ̄Y^Y^Y^Y ̄
表示メッセージは緑部分の信号名で表示したい
こんな感じです。
先は長そう・・・
おわり

Contenu connexe

En vedette (7)

A practical introduction to hardware software codesign 2e
A practical introduction to hardware software codesign  2eA practical introduction to hardware software codesign  2e
A practical introduction to hardware software codesign 2e
 
System-on-Chip
System-on-ChipSystem-on-Chip
System-on-Chip
 
Soc architecture and design
Soc architecture and designSoc architecture and design
Soc architecture and design
 
Snapdragon SoC and ARMv7 Architecture
Snapdragon SoC and ARMv7 ArchitectureSnapdragon SoC and ARMv7 Architecture
Snapdragon SoC and ARMv7 Architecture
 
SoC: System On Chip
SoC: System On ChipSoC: System On Chip
SoC: System On Chip
 
System On Chip
System On ChipSystem On Chip
System On Chip
 
Design of embedded systems
Design of embedded systemsDesign of embedded systems
Design of embedded systems
 

Similaire à SystemC Verification Methodology

TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
Akira Inoue
 
自動テストのすすめ
自動テストのすすめ自動テストのすすめ
自動テストのすすめ
Katsunori Kanda
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
Satoshi Watanabe
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
Akira Inoue
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
Yoshihisa Ozaki
 
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
Takuma SHIRAISHI
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
Makoto Kato
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
Hiro Yoshioka
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
Sho A
 

Similaire à SystemC Verification Methodology (20)

ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014ビルドプロセスとCI #STAC2014
ビルドプロセスとCI #STAC2014
 
IT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティングIT Pro のための PowerShell スクリプティング
IT Pro のための PowerShell スクリプティング
 
テスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオンテスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオン
 
テスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオンテスト駆動&オブジェクト指向ハンズオン
テスト駆動&オブジェクト指向ハンズオン
 
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
TypeScript ファーストステップ ~ Any browser. Any host. Any OS. Open Source. ~
 
テストを分類してみよう!
テストを分類してみよう!テストを分類してみよう!
テストを分類してみよう!
 
自動テストのすすめ
自動テストのすすめ自動テストのすすめ
自動テストのすすめ
 
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
STARC RTL設計スタイルガイドによるVerilog HDL並列記述の補強
 
テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門テスト初心者Androiderのためのソフトウェアテスト入門
テスト初心者Androiderのためのソフトウェアテスト入門
 
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか  #rakutentech【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか  #rakutentech
【楽天テックカンファ前夜祭2014】誰がテスト自動化をするべきか #rakutentech
 
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
TypeScript ファースト ステップ (v.0.9 対応版) ~ Any browser. Any host. Any OS. Open Sourc...
 
ソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデルソフトウェア工学2023 04 開発プロセスモデル
ソフトウェア工学2023 04 開発プロセスモデル
 
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会CLRの基礎 - プログラミング .NET Framework 第3版 読書会
CLRの基礎 - プログラミング .NET Framework 第3版 読書会
 
Example of exiting legacy system
Example of exiting legacy systemExample of exiting legacy system
Example of exiting legacy system
 
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
継続的デリバリー読書会 第 5 章 デプロイメントパイプラインの解剖学
 
Firefoxの開発プロセス
Firefoxの開発プロセスFirefoxの開発プロセス
Firefoxの開発プロセス
 
Istqb : Test automation Engineer
Istqb : Test automation EngineerIstqb : Test automation Engineer
Istqb : Test automation Engineer
 
TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02TDDBC osaka 2012/06/02
TDDBC osaka 2012/06/02
 
PHPフレームワーク入門
PHPフレームワーク入門PHPフレームワーク入門
PHPフレームワーク入門
 
ワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeployワンクリックデプロイ101 #ocdeploy
ワンクリックデプロイ101 #ocdeploy
 

Dernier

Dernier (11)

NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
NewSQLの可用性構成パターン(OCHaCafe Season 8 #4 発表資料)
 
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
Observabilityは従来型の監視と何が違うのか(キンドリルジャパン社内勉強会:2022年10月27日発表)
 
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
論文紹介:Selective Structured State-Spaces for Long-Form Video Understanding
 
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その22024/04/26の勉強会で発表されたものです。
 
新人研修 後半 2024/04/26の勉強会で発表されたものです。
新人研修 後半        2024/04/26の勉強会で発表されたものです。新人研修 後半        2024/04/26の勉強会で発表されたものです。
新人研修 後半 2024/04/26の勉強会で発表されたものです。
 
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
Amazon SES を勉強してみる その32024/04/26の勉強会で発表されたものです。
 
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
LoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイスLoRaWANスマート距離検出センサー  DS20L  カタログ  LiDARデバイス
LoRaWANスマート距離検出センサー DS20L カタログ LiDARデバイス
 
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
論文紹介:Video-GroundingDINO: Towards Open-Vocabulary Spatio-Temporal Video Groun...
 
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
論文紹介: The Surprising Effectiveness of PPO in Cooperative Multi-Agent Games
 
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
業務で生成AIを活用したい人のための生成AI入門講座(社外公開版:キンドリルジャパン社内勉強会:2024年4月発表)
 
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアルLoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
LoRaWAN スマート距離検出デバイスDS20L日本語マニュアル
 

SystemC Verification Methodology