SlideShare a Scribd company logo
1 of 56
Download to read offline
オレオレSystemC入門
@LSI設計雑記帳
※注意事項※
本資料は筆者が所属している団体や組織に関
係あるものではありません。

本資料内のソースコードを使って問題が起き
ても筆者は責任取りません。

楽しく見ていただければ幸いです。
自己紹介
Blog:LSI設計雑記帳

http:/
/lsifrontend.blog100.fc2.com/

Twitter:@kocha2012

https:/
/twitter.com/kocha2012

GitHub:Kocha

https:/
/github.com/Kocha
SystemC is 何
C++のクラスライブラリで
HLSの入力言語だったり、

仮想環境モデリング言語

だったりするのです!
※HLS(High Level Synthsis)
ようこそ!
SystemCの世界へ
Hello World
#include <systemc.h>

!

int sc_main(int argc, char *argv[]) {

!

printf("Hello World!!!n");

!

return 0;

}
Hello World

SystemCのヘッダーをinclude
#include <systemc.h>

!

int sc_main(int argc, char *argv[]) {

!
main関数は「sc_main」
printf("Hello World!!!n");

!

return 0;

}
Hello World
$> ./main 

!

SystemC 2.3.0-ASI --- Jul 13 2012 06:33:43

Copyright (c) 1996-2012 by all Contributors,

ALL RIGHTS RESERVED

!

Hello World!!!

\(^o^)/

できた∼
おわり
ってことはなく、

まだまだ続きます!
目次
理解する

設計する

検証する

次回予告
理解する
SystemCとは
SystemCは、プログラム言語であるC++のクラスライブラリ
として提供されており、それ自体言語として独立した文法
を持つものではない。ライブラリにはハードウェア記述の
為の機能、すなわち並列実行の概念やデータ型、それを扱
う各種関数が定義されている。それを使って書かれたプロ
グラムは通常のC++コンパイラでコンパイルすることがで
き、結果生成されたオブジェクトはハードウェアのシミュ
レータとして動作する。
※Wikipedia(http:/
/ja.wikipedia.org/wiki/SystemC)より
SystemCの適用場面
仮想環境:Virtual Platform

ソフトウェア開発環境

トランザクションベース(TLM2.0)

高位合成:High Level Synthsis

SystemC→Verilog HDL/VHDL

サイクルベース
知っておきたいC++基礎
※ポインタ:C言語
クラスとメンバ


オーバーロード


オブジェクト


オーバーライド


コンストラクタ


多態性       

継承

(インヘリタンス)


(ポリモフィズム)

テンプレート
※他にもありますが、入門編なので省略
SystemCのシステム構成
「モジュール」と呼ばれるデザイン内に

「プロセス」により関数内で機能を記述し

「チャネル」でモジュール間を接続する。

!

各プロセスは同時並列に実行

プロセス内は逐次実行
sc_main
sc_main()
モジュール

(SC_MODULE)

sc_main()
モジュール

モジュール

モジュール
プロセス

(SC_THREAD/SC_METHOD/SC_CTHREAD)

sc_main()
モジュール
プロセス

モジュール
プロセス

モジュール
プロセス

プロセス
チャネル

(sc_prim_channel)

sc_main()
モジュール
プロセス

モジュール
チャネル

チャネル
プロセス

プロセス

モジュール
プロセス

プロセス

ポート/インターフェース
設計する
モジュールを作る

プロセスを定義する

機能(処理)を記述する
SC_MODULE( hoge ) {

!

sc_in<int> in;

sc_out<int> out;

!

int x;

!

void process();

!

};

SC_CTOR( hoge )

{

SC_THREAD( process );

sensitive << in ;

x = 10;

}


void hoge::process() {

out = 0;

while(1) {

wait();

out = in * x;

}

};
SC_MODULE( hoge ) {


モジュール宣言

!

sc_in<int> in;

sc_out<int> out;

int x;

!

void process();


};

#define SC_MODULE(name) struct name : sc_module
※classで書く場合(sc_moduleを継承する)

!

!

※実装はマクロ(struct)

class hoge : public sc_module {

...

};
※Verilog HDL/SystemVerilogでの意味
module hoge(...);

:

endmodule

SC_CTOR( hoge )

{

SC_THREAD( process );

sensitive << in ;

x = 10;

}
SC_MODULE( hoge ) {


モジュール宣言

!

sc_in<int> in;

sc_out<int> out;

!

int x;


初期化処理を記述する部分

!

void process();

!

};

SC_CTOR( hoge )

 コンストラクタ宣言
{

SC_THREAD( process );

sensitive << in ;

x = 10;

}
SC_MODULE( hoge ) {

※実装はマクロ

!

sc_in<int> in;

sc_out<int> out;

!

int x;

!

void process();

!

};

#define SC_CTOR(name) implementation-defined;
name(sc_module_name)
※マクロを使わずで書く場合
SC_MODULE( hoge ) {

必ず必要
...

SC_HAS_PROCESS(hoge);

hoge( sc_module_name n) : sc_module_name(n) {

SC_THREAD( processs );

...

SC_CTOR( hoge )

 コンストラクタ宣言
{

SC_THREAD( process );

sensitive << in ;

※SystemVerilogだと new関数
class hoge;

x = 10;

function new();

}

:

endfunction
豆知識:初期化リスト
※サブモジュールのインスタンス時など

SC_MODULE( hoge ) {

!
sc_in<int> in;

sc_out<int> out;

!
int x;

!
void process();

!
SC_CTOR( hoge )

{

SC_THREAD( process );

sensitive << in ;

x = 10;

}

};

 書かないといけない場合もあります

書いておくと良いことあるかも!
SC_CTOR( hoge ):

in(“in”), out(“out”) 

{

http:/
/lsifrontend.blog100.fc2.com/blog-entry-432.html
SC_MODULE( hoge ) {

!

sc_in<int> in;

sc_out<int> out;

!

int x;

!

void process();

!

};

SC_CTOR( hoge )

{

SC_THREAD( process );

プロセスを定義
sensitive << in ;

x = 10;

}
SC_MODULE( hoge ) {

!

sc_in<int> in;

sc_out<int> out;

!

int x;

!

void process();

!

};

実際の機能(処理)

void hoge::process() {

out = 0;

while(1) {

wait();

out = in * x;

}

};

SC_CTOR( hoge )

機能(処理)が記述されている関数
{

SC_THREAD( process );

プロセスを定義
sensitive << in ;

x = 10;

}
SC_MODULE( hoge ) {

!

sc_in<int> in;

sc_out<int> out;

!

int x;

!

引数無しの関数

void process();

!

};

void hoge::process() {

out = 0;

while(1) {

wait();

 sensitiveに登録されている

動作待ち
out = in * x;

}

};

SC_CTOR( hoge )

{

SC_THREAD( process );

プロセスを定義
sensitive << in ;

x = 10;

 機能(処理)が動くきっかけを指定

}

(この例だと in の値が変化したら)
プロセス定義は3種類
SC_THREAD
SC_THREAD( process );

sensitive << in ;
void hoge::process() {

...

初期動作
...

wait(); / wait - in(value)

/
...

Simulation
...

wait(); / wait - in(value)

/
...

wait(); / wait - in(value)

/
...

}
再度呼び出しなし

・関数から抜けると再度呼び出されないため

while文や for文で無限ループを作る
プロセス定義は3種類
SC_METHOD
SC_METHOD( process );

sensitive << a << b ;
void hoge::process() {

wait - a,b(value)
...

...

...

...

...

}


!
!
!

初期動作 Simulation
終了まで繰り返す
・繰り返し実行されるプロセス

・waitは記述出来ない
プロセス定義は3種類
SC_CTHREAD
SC_CTHREAD( process, clock.pos() );

reset_signal_is(reset, true);
void hoge::process() {

...

初期動作
...

...

while(1) {

wait(); / wait - prosedge clock

/
...

wait(); / wait - posedge clock

/
...

}

reset_signal_isで

設定されていれば強制的に
}
・SC_THREADをクロックイベント用にしたもの

・関数から抜けると再度呼び出されないため

while文や for文で無限ループを作る
プロセス定義は3種類
SC_THREAD

SC_METHOD

SC_THREAD( process );

sensitive << in ;

SC_METHOD( process );

sensitive << a << b ;

void hoge::process() {

...

初期動作
...

wait(); / wait - in(value)

/
...

Simulation
...

wait(); / wait - in(value)

/
...

wait(); / wait - in(value)

/
...

}
再度呼び出しなし

void hoge::process() {

wait - a,b(value)
...

...

...

...

...

}


!
!
!

初期動作 Simulation
終了まで繰り返す

SC_CTHREAD
SC_CTHREAD( process, clock.pos() );

reset_signal_is(reset, true);
void hoge::process() {

...

初期動作
...

...

while(1) {

wait(); / wait - prosedge clock

/
...

wait(); / wait - posedge clock

/
...

}

reset_signal_isで

設定されていれば強制的に
}

初期動作は dont_initialize();で抑制可能

例)SC_THREAD( process );

sensitive << in ;

dont_initialize();
sensitive記述は様々
※for文で記述することも出来ます。
SC_THREAD( process );

sensitive << in ;
SC_THREAD( process );

sensitive << in1 << in2 ;
SC_THREAD( process );

sensitive << in1.pos() ;

sensitive << in2.neg() ;
SC_THREAD( process );

sensitive << in1.posedge() ;

sensitive << in2.negeage() ;
(async_)reset_signal_is
SystemC-2.3から追加

reset_signal_is

async_reset_signal_is

SC_THREAD( process );

reset_signal_is( reset, true);

SC_THREAD( process );

 信号名 極性
async_reset_signal_is( reset_n, false);

※clock立ち上がりエッジ(posedge)の場合
clock
reset
リセット期間
reset_n
リセット期間
SC_MODULE( hoge ) {

!

sc_in<int> in;

入出力ポート(Interface)宣言
sc_out<int> out;

※SystemVerilogでの意味

!

int x;

!

void process();

!

};

module hoge(

input bit[31:0] in,

output bit[31:0] out

);

:

endmodule

SC_CTOR( hoge )

{

SC_THREAD( process );

sensitive << in ;

x = 10;

}
SC_MODULE( hoge ) {

!

sc_in<int> in;

sc_out<int> out;

!

int x;

!

void process();

!

};

SC_CTOR( hoge )

{

SC_THREAD( process );

sensitive << in ;



out.initialize(0);
っと書くことも可能
}


void hoge::process() {

out = 0;

while(1) {

wait();

out = in * x;

}

};
このように動いてます。

out.write(0);

while(1) {

wait();

out.write( in.read() * x);

}
ポートとチャネル
port/interface

接続するchannel
sc_signal

sc_in/out/inout

sc_buffer
sc_clock

sc_fifo_in/out

sc_fifo

sc_mutex_if

sc_mutex

sc_semaphrore_if

sc_semaphore
チャネルはレジスタ(FF)
#include <systemc.h>

!
int sc_main(int argc, char *argv[]) {

int a;

sc_signal<int> b;

!
a = 10; b = 10;

std::cout << "a = " << a << ", b = " << b << std::endl;

!
sc_start(1, sc_core::SC_NS);

std::cout << "a = " << a << ", b = " << b << std::endl;

!
return 0;

}

実行結果

a = 10, b = 0

a = 10, b = 10

シミュレーション時刻の経過により値が更新される。

(代入はノンブロッキング代入)
チャネルはWire
sc_signal<int> x0y0;


!
laplacian_filter dut("dut");

testbench tb("tb");


!
dut.clk(clk);

dut.x0y0(x0y0); / input

/
:

dut.out(y);

接続(wire)


tb.clk(clk);

tb.x0y0(x0y0); / output

/
:

チャネルは用途において、regもしくはwireとなる。
SC_MODULE( hoge ) {

!

sc_in<int> in;

sc_out<int> out;

!

データ型
int x;


!

void process();

!

};

SC_CTOR( hoge )

{

SC_THREAD( process );

sensitive << in ;

x = 10;

}
SC_MODULE( hoge ) {

!

sc_in<int> in;

sc_out<int> out;

!

データ型
int x;


SystemCはC++なので、


!

void process();


C++のデータ型は全て使えます。
SC_CTOR( hoge )

!

{


};

}


SC_THREAD( process );

sensitive << in ;

x = 10;
SystemCで追加された型
データ型
sc_int<N>
sc_uint<N>
sc_bigint<N>
sc_biguint<N>
sc_bit
sc_logic
sc_bv<N>
sc_lv<N>
sc_fixed<NW, NI>
sc_ufixed<NW, NI>

説明

記述例

Nビット整数

sc_int<8> a = -123;

Nビット符号なし整数

sc_uint<8> a = 0xab;

64ビット以上のsc_int

sc_bigint<128> = “0xaaa...”;

64ビット以上のsc_uint

sc_biguint<128> = “0xaaa...”;

’0’, ’1’ の2値 (使用は非推奨) sc_bit a = ‘1’;
’0’, ’1’, ’x’, ’z’の4値

sc_logic a = ‘z’;

Nビットの sc_bit

sc_bv<8> a = “10101010”;

Nビットの sc_logic

sc_lv<8> a = “1x101z10”;

固定小数点

sc_fixed<8,4> a = -0.25;

符号なし固定小数点

sc_uifixed<8,4> a = -1.75;
独自のデータ型(MyType)
class/structに必ず実装するメンバ関数
比較演算子

bool operator == (const MyType & rhs) const {

代入演算子

MyType& operator = (const MyType& rhs) {

トレース関数

void sc_trace(sc_trace_file *tf, const MyType & v,

const std::string & NAME ) {

出力演算子

ostream& operator << ( ostream& os, MyType const & v ) {
検証する
sc_main

モジュールをインスタンスする

信号を生成する

変数の値を表示する

タイミング波形を取得する
sc_mainは必須
#include <systemc.h>

s_in = 0;


sc_start(10, SC_NS);
int sc_main(int argc, char *argv[]) { cout << "in = " << s_in
<< ", out = " << s_out << endl;

sc_signal<int> s_in, s_out;



hoge m_hoge(“m_hoge”);
s_in = 10;


m_hoge.in(s_in);
sc_start(10, SC_NS);
m_hoge.out(s_out);
cout << "in = " << s_in


<< ", out = " << s_out << endl;



return 0;


}
モジュールをインスタンス
#include <systemc.h>

s_in = 0;


sc_start(10, SC_NS);
cout << "in = " << s_in
<< ", out = " << s_out << endl;


int sc_main(int argc, char *argv[]) {
sc_signal<int> s_in, s_out;





hoge m_hoge(“m_hoge”);
m_hoge.in(s_in);
m_hoge.out(s_out);
※別の書き方
hoge *m_hoge;

m_hoge = new hoge(“m_hoge”);

m_hoge->in(s_in);

m_hoge->out(s_out);

}

s_in = 10;


sc_start(10, SC_NS);
cout << "in = " << s_in


<< ", out = " << s_out << endl;



return 0;
信号を生成
#include <systemc.h>

s_in = 0;


sc_start(10, SC_NS);
cout << "in = " << s_in
<< ", out = " << s_out << endl;


int sc_main(int argc, char *argv[]) {
※sc_in/outの接続は sc_signal

sc_signal<int> s_in, s_out;


※sc_startでシミュレーション開始

hoge m_hoge(“m_hoge”);
m_hoge.in(s_in);
m_hoge.out(s_out);

}




s_in = 10;


sc_start(10, SC_NS);
cout << "in = " << s_in


<< ", out = " << s_out << endl;



return 0;
変数の値を表示する
■cout

sc_signal - << operator

sc_intなど- a.to_string()関数が存在

s_in = 0;


■printf

sc_start(10, SC_NS);


sc_intなど- a.to_int()関数が存在

 cout << "in = " << s_in


<< ", out = " << s_out << endl;
■sc_report



SystemC定義の表示形式関数

s_in = 10;


sc_start(10, SC_NS);


!
cout << "in = " << s_in


★ sc_time_stamp() で

<< ", out = " << s_out << endl;

時刻も表示!


return 0;


}
タイミング波形を取得
#include <systemc.h>

s_in = 0;
sc_start(10, SC_NS);
cout << "in = " << s_in
<< ", out = " << s_out << endl;


int sc_main(int argc, char *argv[]) {








sc_signal<int> s_in, s_out;



sc_trace_file *tf;

s_in = 10;




tf = sc_create_vcd_trace_file("waves"); sc_start(10, SC_NS);
sc_trace(tf, s_in, "in");
sc_trace(tf, s_out, "out");
hoge m_hoge(“m_hoge”);
m_hoge.in(s_in);
m_hoge.out(s_out);




cout << "in = " << s_in




<< ", out = " << s_out << endl; 



sc_close_vcd_trace_file(tf);
return 0;


※閉じることを忘れずに
}
余談
SystemCのシミュレータは無償なので、

いつでもシミュレーションできます。

Webでも → http:/
/www.edaplayground.com

仮想環境(Virtual Platform/TLM2.0)について
は別スライドを作成する予定です。

最近、SystemC流行ってます!(ステマ)

この機会に是⾮非トライしてみてください!
おわり

More Related Content

What's hot

ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料直久 住川
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺MITSUNARI Shigeo
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいwata2ki
 
高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果Kenichiro MITSUDA
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とdo_aki
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたMITSUNARI Shigeo
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチMasami Ichikawa
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!Mr. Vengineer
 
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)Mr. Vengineer
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由kikairoya
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングKohsuke Yuasa
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料一路 川染
 
zk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてzk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてts21
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術Kohsuke Yuasa
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Masahito Zembutsu
 
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)MITSUNARI Shigeo
 

What's hot (20)

ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料ACRiウェビナー:岩渕様ご講演資料
ACRiウェビナー:岩渕様ご講演資料
 
Glibc malloc internal
Glibc malloc internalGlibc malloc internal
Glibc malloc internal
 
Xbyakの紹介とその周辺
Xbyakの紹介とその周辺Xbyakの紹介とその周辺
Xbyakの紹介とその周辺
 
プログラムを高速化する話
プログラムを高速化する話プログラムを高速化する話
プログラムを高速化する話
 
ARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくいARM LinuxのMMUはわかりにくい
ARM LinuxのMMUはわかりにくい
 
高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果高位合成におけるC++テンプレートメタプログラミングの効果
高位合成におけるC++テンプレートメタプログラミングの効果
 
C++ マルチスレッド 入門
C++ マルチスレッド 入門C++ マルチスレッド 入門
C++ マルチスレッド 入門
 
PHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 とPHP と SAPI と ZendEngine3 と
PHP と SAPI と ZendEngine3 と
 
Intro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみたIntro to SVE 富岳のA64FXを触ってみた
Intro to SVE 富岳のA64FXを触ってみた
 
x86とコンテキストスイッチ
x86とコンテキストスイッチx86とコンテキストスイッチ
x86とコンテキストスイッチ
 
ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!ARM Trusted FirmwareのBL31を単体で使う!
ARM Trusted FirmwareのBL31を単体で使う!
 
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
 
組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由組み込みでこそC++を使う10の理由
組み込みでこそC++を使う10の理由
 
C++ マルチスレッドプログラミング
C++ マルチスレッドプログラミングC++ マルチスレッドプログラミング
C++ マルチスレッドプログラミング
 
FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料FPGA+SoC+Linux実践勉強会資料
FPGA+SoC+Linux実践勉強会資料
 
zk-SNARKsの仕組みについて
zk-SNARKsの仕組みについてzk-SNARKsの仕組みについて
zk-SNARKsの仕組みについて
 
イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術イマドキC++erのモテカワリソース管理術
イマドキC++erのモテカワリソース管理術
 
initramfsについて
initramfsについてinitramfsについて
initramfsについて
 
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料Docker道場「Dockerの基本概念」0825インフラ勉強会資料
Docker道場「Dockerの基本概念」0825インフラ勉強会資料
 
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
ペアリングベースの効率的なレベル2準同型暗号(SCIS2018)
 

Viewers also liked

SystemC Verification Methodology
SystemC Verification MethodologySystemC Verification Methodology
SystemC Verification Methodologykocha2012
 
Design Verification Using SystemC
Design Verification Using SystemCDesign Verification Using SystemC
Design Verification Using SystemCDVClub
 
高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)
高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)
高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)Yoshihito Kuranuki
 
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 2eSpringer
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようShinya Takamaeda-Y
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理Makoto Yui
 
Hardware Software Codesign
Hardware Software CodesignHardware Software Codesign
Hardware Software Codesigndestruck
 
System On Chip
System On ChipSystem On Chip
System On Chipanishgoel
 
Design of embedded systems
Design of embedded systemsDesign of embedded systems
Design of embedded systemsPradeep Kumar TS
 
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014Takuto Wada
 

Viewers also liked (12)

SystemC Verification Methodology
SystemC Verification MethodologySystemC Verification Methodology
SystemC Verification Methodology
 
Design Verification Using SystemC
Design Verification Using SystemCDesign Verification Using SystemC
Design Verification Using SystemC
 
SystemC
SystemCSystemC
SystemC
 
高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)
高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)
高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)
 
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
 
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみようPythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
Pythonによる高位設計フレームワークPyCoRAMでFPGAシステムを開発してみよう
 
並列データベースシステムの概念と原理
並列データベースシステムの概念と原理並列データベースシステムの概念と原理
並列データベースシステムの概念と原理
 
Hardware Software Codesign
Hardware Software CodesignHardware Software Codesign
Hardware Software Codesign
 
System on Chip (SoC)
System on Chip (SoC)System on Chip (SoC)
System on Chip (SoC)
 
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
 
TDD のこころ @ OSH2014
TDD のこころ @ OSH2014TDD のこころ @ OSH2014
TDD のこころ @ OSH2014
 

Similar to SystemC Tutorial

Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.ContextAkira Takahashi
 
Boost9 session
Boost9 sessionBoost9 session
Boost9 sessionfreedom404
 
Dive into RTS - another side
Dive into RTS - another sideDive into RTS - another side
Dive into RTS - another sideKiwamu Okabe
 
みんな大好き! Hello, World
みんな大好き! Hello, Worldみんな大好き! Hello, World
みんな大好き! Hello, WorldNaohiro Aota
 
for JSDeferred Code Reading
for JSDeferred Code Readingfor JSDeferred Code Reading
for JSDeferred Code ReadingKenichirou Oyama
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんかcch-robo
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッドKohsuke Yuasa
 
ぱっと見でわかるC++11
ぱっと見でわかるC++11ぱっと見でわかるC++11
ぱっと見でわかるC++11えぴ 福田
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Ryo Suzuki
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementationMITSUNARI Shigeo
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかYuki Miyatake
 

Similar to SystemC Tutorial (20)

Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7Pfi Seminar 2010 1 7
Pfi Seminar 2010 1 7
 
Continuation with Boost.Context
Continuation with Boost.ContextContinuation with Boost.Context
Continuation with Boost.Context
 
Boost Tour 1_58_0 merge
Boost Tour 1_58_0 mergeBoost Tour 1_58_0 merge
Boost Tour 1_58_0 merge
 
Objc lambda
Objc lambdaObjc lambda
Objc lambda
 
Boost Tour 1.50.0
Boost Tour 1.50.0Boost Tour 1.50.0
Boost Tour 1.50.0
 
Boost Tour 1.50.0 All
Boost Tour 1.50.0 AllBoost Tour 1.50.0 All
Boost Tour 1.50.0 All
 
Boost9 session
Boost9 sessionBoost9 session
Boost9 session
 
Prosym2012
Prosym2012Prosym2012
Prosym2012
 
Dive into RTS - another side
Dive into RTS - another sideDive into RTS - another side
Dive into RTS - another side
 
みんな大好き! Hello, World
みんな大好き! Hello, Worldみんな大好き! Hello, World
みんな大好き! Hello, World
 
for JSDeferred Code Reading
for JSDeferred Code Readingfor JSDeferred Code Reading
for JSDeferred Code Reading
 
Flutterを体験してみませんか
Flutterを体験してみませんかFlutterを体験してみませんか
Flutterを体験してみませんか
 
規格書で読むC++11のスレッド
規格書で読むC++11のスレッド規格書で読むC++11のスレッド
規格書で読むC++11のスレッド
 
ぱっと見でわかるC++11
ぱっと見でわかるC++11ぱっと見でわかるC++11
ぱっと見でわかるC++11
 
HTTP/2, QUIC入門
HTTP/2, QUIC入門HTTP/2, QUIC入門
HTTP/2, QUIC入門
 
Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発Siv3Dで楽しむゲームとメディアアート開発
Siv3Dで楽しむゲームとメディアアート開発
 
初めてのSTL
初めてのSTL初めてのSTL
初めてのSTL
 
Boost tour 1_40_0
Boost tour 1_40_0Boost tour 1_40_0
Boost tour 1_40_0
 
Wavelet matrix implementation
Wavelet matrix implementationWavelet matrix implementation
Wavelet matrix implementation
 
BoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうかBoostAsioで可読性を求めるのは間違っているだろうか
BoostAsioで可読性を求めるのは間違っているだろうか
 

Recently uploaded

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムsugiuralab
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略Ryo Sasaki
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Yuma Ohgami
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...Toru Tamaki
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)Hiroki Ichikura
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A surveyToru Tamaki
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものですiPride Co., Ltd.
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdftaisei2219
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNetToru Tamaki
 

Recently uploaded (9)

スマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システムスマートフォンを用いた新生児あやし動作の教示システム
スマートフォンを用いた新生児あやし動作の教示システム
 
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
[DevOpsDays Tokyo 2024] 〜デジタルとアナログのはざまに〜 スマートビルディング爆速開発を支える 自動化テスト戦略
 
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
Open Source UN-Conference 2024 Kawagoe - 独自OS「DaisyOS GB」の紹介
 
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
論文紹介:Content-Aware Token Sharing for Efficient Semantic Segmentation With Vis...
 
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
【早稲田AI研究会 講義資料】3DスキャンとTextTo3Dのツールを知ろう!(Vol.1)
 
論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey論文紹介:Semantic segmentation using Vision Transformers: A survey
論文紹介:Semantic segmentation using Vision Transformers: A survey
 
SOPを理解する 2024/04/19 の勉強会で発表されたものです
SOPを理解する       2024/04/19 の勉強会で発表されたものですSOPを理解する       2024/04/19 の勉強会で発表されたものです
SOPを理解する 2024/04/19 の勉強会で発表されたものです
 
TSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdfTSAL operation mechanism and circuit diagram.pdf
TSAL operation mechanism and circuit diagram.pdf
 
論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet論文紹介:Automated Classification of Model Errors on ImageNet
論文紹介:Automated Classification of Model Errors on ImageNet
 

SystemC Tutorial