Movatterモバイル変換
[0]
ホーム
URL:
画像なし
夜間モード
Download free for 30 days
Sign in
Upload
Language (EN)
Support
Business
Mobile
Social Media
Marketing
Technology
Art & Photos
Career
Design
Education
Presentations & Public Speaking
Government & Nonprofit
Healthcare
Internet
Law
Leadership & Management
Automotive
Engineering
Software
Recruiting & HR
Retail
Sales
Services
Science
Small Business & Entrepreneurship
Food
Environment
Economy & Finance
Data & Analytics
Investor Relations
Sports
Spiritual
News & Politics
Travel
Self Improvement
Real Estate
Entertainment & Humor
Health & Medicine
Devices & Hardware
Lifestyle
Change Language
Language
English
Español
Português
Français
Deutsche
Cancel
Save
Submit search
EN
Uploaded by
kocha2012
PDF, PPTX
9,453 views
SystemC Tutorial
Technology
◦
Design
◦
Read more
2
Save
Share
Embed
Embed presentation
Download
Download as PDF, PPTX
1
/ 56
2
/ 56
3
/ 56
4
/ 56
5
/ 56
6
/ 56
7
/ 56
8
/ 56
9
/ 56
10
/ 56
11
/ 56
12
/ 56
13
/ 56
14
/ 56
15
/ 56
16
/ 56
17
/ 56
18
/ 56
19
/ 56
20
/ 56
21
/ 56
22
/ 56
23
/ 56
24
/ 56
25
/ 56
26
/ 56
27
/ 56
28
/ 56
29
/ 56
30
/ 56
31
/ 56
32
/ 56
Most read
33
/ 56
Most read
34
/ 56
35
/ 56
36
/ 56
37
/ 56
38
/ 56
39
/ 56
40
/ 56
41
/ 56
42
/ 56
Most read
43
/ 56
44
/ 56
45
/ 56
46
/ 56
47
/ 56
48
/ 56
49
/ 56
50
/ 56
51
/ 56
52
/ 56
53
/ 56
54
/ 56
55
/ 56
56
/ 56
Recommended
PDF
Intro to SVE 富岳のA64FXを触ってみた
by
MITSUNARI Shigeo
PDF
Vivado hls勉強会1(基礎編)
by
marsee101
PDF
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
by
Mr. Vengineer
PDF
ACRiウェビナー:小野様ご講演資料
by
直久 住川
PPTX
研究者のための Python による FPGA 入門
by
ryos36
PPTX
ゼロから始める自作 CPU 入門
by
Hirotaka Kawata
PDF
ELFの動的リンク
by
7shi
PDF
仮想化環境におけるパケットフォワーディング
by
Takuya ASADA
PDF
VerilatorとSystemC
by
Mr. Vengineer
PDF
C++ マルチスレッド 入門
by
京大 マイコンクラブ
PDF
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
PDF
中3女子でもわかる constexpr
by
Genya Murakami
PDF
雑なMySQLパフォーマンスチューニング
by
yoku0825
PPTX
イベント駆動プログラミングとI/O多重化
by
Gosuke Miyashita
PDF
ソフトウェア技術者から見たFPGAの魅力と可能性
by
Kenichiro MITSUDA
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
by
Takeshi HASEGAWA
PDF
基礎から学ぶ組み込みAndroid
by
demuyan
PDF
C++でできる!OS自作入門
by
uchan_nos
PPTX
OSを手作りするという趣味と仕事
by
uchan_nos
PDF
Oss貢献超入門
by
Michihito Shigemura
PDF
レシピの作り方入門
by
Nobuhiro Iwamatsu
PPTX
ARM LinuxのMMUはわかりにくい
by
wata2ki
PDF
DockerとPodmanの比較
by
Akihiro Suda
PPTX
Zynq + Vivado HLS入門
by
narusugimoto
PDF
ARM Trusted FirmwareのBL31を単体で使う!
by
Mr. Vengineer
PDF
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
by
The Linux Foundation
PDF
TDD のこころ @ OSH2014
by
Takuto Wada
PDF
並列データベースシステムの概念と原理
by
Makoto Yui
More Related Content
PDF
Intro to SVE 富岳のA64FXを触ってみた
by
MITSUNARI Shigeo
PDF
Vivado hls勉強会1(基礎編)
by
marsee101
PDF
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
by
Mr. Vengineer
PDF
ACRiウェビナー:小野様ご講演資料
by
直久 住川
PPTX
研究者のための Python による FPGA 入門
by
ryos36
PPTX
ゼロから始める自作 CPU 入門
by
Hirotaka Kawata
PDF
ELFの動的リンク
by
7shi
PDF
仮想化環境におけるパケットフォワーディング
by
Takuya ASADA
Intro to SVE 富岳のA64FXを触ってみた
by
MITSUNARI Shigeo
Vivado hls勉強会1(基礎編)
by
marsee101
ZynqMPのブートとパワーマネージメント : (ZynqMP Boot and Power Management)
by
Mr. Vengineer
ACRiウェビナー:小野様ご講演資料
by
直久 住川
研究者のための Python による FPGA 入門
by
ryos36
ゼロから始める自作 CPU 入門
by
Hirotaka Kawata
ELFの動的リンク
by
7shi
仮想化環境におけるパケットフォワーディング
by
Takuya ASADA
What's hot
PDF
VerilatorとSystemC
by
Mr. Vengineer
PDF
C++ マルチスレッド 入門
by
京大 マイコンクラブ
PDF
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
PDF
中3女子でもわかる constexpr
by
Genya Murakami
PDF
雑なMySQLパフォーマンスチューニング
by
yoku0825
PPTX
イベント駆動プログラミングとI/O多重化
by
Gosuke Miyashita
PDF
ソフトウェア技術者から見たFPGAの魅力と可能性
by
Kenichiro MITSUDA
PDF
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
PDF
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
PDF
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
by
Takeshi HASEGAWA
PDF
基礎から学ぶ組み込みAndroid
by
demuyan
PDF
C++でできる!OS自作入門
by
uchan_nos
PPTX
OSを手作りするという趣味と仕事
by
uchan_nos
PDF
Oss貢献超入門
by
Michihito Shigemura
PDF
レシピの作り方入門
by
Nobuhiro Iwamatsu
PPTX
ARM LinuxのMMUはわかりにくい
by
wata2ki
PDF
DockerとPodmanの比較
by
Akihiro Suda
PPTX
Zynq + Vivado HLS入門
by
narusugimoto
PDF
ARM Trusted FirmwareのBL31を単体で使う!
by
Mr. Vengineer
PDF
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
by
The Linux Foundation
VerilatorとSystemC
by
Mr. Vengineer
C++ マルチスレッド 入門
by
京大 マイコンクラブ
20分くらいでわかった気分になれるC++20コルーチン
by
yohhoy
中3女子でもわかる constexpr
by
Genya Murakami
雑なMySQLパフォーマンスチューニング
by
yoku0825
イベント駆動プログラミングとI/O多重化
by
Gosuke Miyashita
ソフトウェア技術者から見たFPGAの魅力と可能性
by
Kenichiro MITSUDA
3種類のTEE比較(Intel SGX, ARM TrustZone, RISC-V Keystone)
by
Kuniyasu Suzaki
ネットワーク ゲームにおけるTCPとUDPの使い分け
by
モノビット エンジン
エンジニアなら知っておきたい「仮想マシン」のしくみ v1.1 (hbstudy 17)
by
Takeshi HASEGAWA
基礎から学ぶ組み込みAndroid
by
demuyan
C++でできる!OS自作入門
by
uchan_nos
OSを手作りするという趣味と仕事
by
uchan_nos
Oss貢献超入門
by
Michihito Shigemura
レシピの作り方入門
by
Nobuhiro Iwamatsu
ARM LinuxのMMUはわかりにくい
by
wata2ki
DockerとPodmanの比較
by
Akihiro Suda
Zynq + Vivado HLS入門
by
narusugimoto
ARM Trusted FirmwareのBL31を単体で使う!
by
Mr. Vengineer
XPDDS19 Keynote: Xen Dom0-less - Stefano Stabellini, Principal Engineer, Xilinx
by
The Linux Foundation
Viewers also liked
PDF
TDD のこころ @ OSH2014
by
Takuto Wada
PDF
並列データベースシステムの概念と原理
by
Makoto Yui
PPTX
System on Chip (SoC)
by
Dimas Ruliandi
PDF
System On Chip
by
anishgoel
PDF
Design Verification Using SystemC
by
DVClub
PPTX
Hardware Software Codesign
by
destruck
PPT
Design of embedded systems
by
Pradeep Kumar TS
PDF
SystemC Verification Methodology
by
kocha2012
PDF
SystemC
by
Saber Ferjani
PDF
A practical introduction to hardware software codesign 2e
by
Springer
PDF
高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)
by
Yoshihito Kuranuki
TDD のこころ @ OSH2014
by
Takuto Wada
並列データベースシステムの概念と原理
by
Makoto Yui
System on Chip (SoC)
by
Dimas Ruliandi
System On Chip
by
anishgoel
Design Verification Using SystemC
by
DVClub
Hardware Software Codesign
by
destruck
Design of embedded systems
by
Pradeep Kumar TS
SystemC Verification Methodology
by
kocha2012
SystemC
by
Saber Ferjani
A practical introduction to hardware software codesign 2e
by
Springer
高速で無駄のない開発をするチームのための"7つ道具"(2014/03/08 - Websig)
by
Yoshihito Kuranuki
Similar to SystemC Tutorial
PDF
Vivado hlsのシミュレーションとhlsストリーム
by
marsee101
PDF
プロセスとコンテキストスイッチ
by
Kazuki Onishi
PPT
Uart受信設計2013
by
Kiyoshi Ogawa
PDF
RISC-V User level ISA
by
たけおか しょうぞう
PDF
【学習メモ#11th】12ステップで作る組込みOS自作入門
by
sandai
PDF
【学習メモ#8th】12ステップで作る組込みOS自作入門
by
sandai
PDF
PEZY-SC programming overview
by
Ryo Sakamoto
PDF
Unixカーネルの設計 7 プロセスの制御
by
Norito Agetsuma
PDF
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
PDF
SystemV IPC
by
Masami Ichikawa
PDF
2011.06.11 v7から始めるunix まとめ
by
Makiko Konoshima
PDF
Dive into RTS - another side
by
Kiwamu Okabe
ODP
みんな大好き! Hello, World
by
Naohiro Aota
PDF
C base design methodology with s dx and xilinx ml
by
ssuser3a4b8c
PDF
StackExchangeで見たシステムプログラミング案件
by
yaegashi
PDF
Synthesijer and Synthesijer.Scala in HLS-friends 201512
by
Takefumi MIYOSHI
PDF
生物データベース論(並列分散計算フレームワーク)
by
Masahiro Kasahara
PDF
kagamicomput201701
by
swkagami
PDF
kagami_comput2015_1
by
swkagami
PDF
小二病でもGCやりたい
by
dec9ue
Vivado hlsのシミュレーションとhlsストリーム
by
marsee101
プロセスとコンテキストスイッチ
by
Kazuki Onishi
Uart受信設計2013
by
Kiyoshi Ogawa
RISC-V User level ISA
by
たけおか しょうぞう
【学習メモ#11th】12ステップで作る組込みOS自作入門
by
sandai
【学習メモ#8th】12ステップで作る組込みOS自作入門
by
sandai
PEZY-SC programming overview
by
Ryo Sakamoto
Unixカーネルの設計 7 プロセスの制御
by
Norito Agetsuma
2011.09.18 v7から始めるunix まとめ
by
Makiko Konoshima
SystemV IPC
by
Masami Ichikawa
2011.06.11 v7から始めるunix まとめ
by
Makiko Konoshima
Dive into RTS - another side
by
Kiwamu Okabe
みんな大好き! Hello, World
by
Naohiro Aota
C base design methodology with s dx and xilinx ml
by
ssuser3a4b8c
StackExchangeで見たシステムプログラミング案件
by
yaegashi
Synthesijer and Synthesijer.Scala in HLS-friends 201512
by
Takefumi MIYOSHI
生物データベース論(並列分散計算フレームワーク)
by
Masahiro Kasahara
kagamicomput201701
by
swkagami
kagami_comput2015_1
by
swkagami
小二病でもGCやりたい
by
dec9ue
SystemC Tutorial
1.
オレオレSystemC入門@LSI設計雑記帳
2.
※注意事項※本資料は筆者が所属している団体や組織に関係あるものではありません。本資料内のソースコードを使って問題が起きても筆者は責任取りません。楽しく見ていただければ幸いです。
3.
自己紹介Blog:LSI設計雑記帳 http://lsifrontend.blog100.fc2.com/Twitter:@kocha2012 https://twitter.com/kocha2012GitHub:Kocha https://github.com/Kocha
4.
SystemC is 何
5.
C++のクラスライブラリで
6.
HLSの入力言語だったり、仮想環境モデリング言語だったりするのです!※HLS(High Level Synthsis)
7.
ようこそ!SystemCの世界へ
8.
Hello World#include <systemc.h>!int
sc_main(int argc, char *argv[]) {!printf("Hello World!!!n");!return 0;}
9.
Hello WorldSystemCのヘッダーをinclude#include <systemc.h>!int
sc_main(int argc, char *argv[]) {!main関数は「sc_main」printf("Hello World!!!n");!return 0;}
10.
Hello World$> ./main
!SystemC 2.3.0-ASI --- Jul 13 2012 06:33:43Copyright (c) 1996-2012 by all Contributors,ALL RIGHTS RESERVED!Hello World!!!\(^o^)/できた∼
11.
おわり
12.
ってことはなく、まだまだ続きます!
13.
目次理解する設計する検証する次回予告
14.
理解する
15.
SystemCとはSystemCは、プログラム言語であるC++のクラスライブラリとして提供されており、それ自体言語として独立した文法を持つものではない。ライブラリにはハードウェア記述の為の機能、すなわち並列実行の概念やデータ型、それを扱う各種関数が定義されている。それを使って書かれたプログラムは通常のC++コンパイラでコンパイルすることができ、結果生成されたオブジェクトはハードウェアのシミュレータとして動作する。※Wikipedia(http://ja.wikipedia.org/wiki/SystemC)より
16.
SystemCの適用場面仮想環境:Virtual Platformソフトウェア開発環境トランザクションベース(TLM2.0)高位合成:High Level
SynthsisSystemC→Verilog HDL/VHDLサイクルベース
17.
知っておきたいC++基礎※ポインタ:C言語クラスとメンバオーバーロードオブジェクトオーバーライドコンストラクタ多態性 継承 (インヘリタンス)(ポリモフィズム)テンプレート※他にもありますが、入門編なので省略
18.
SystemCのシステム構成「モジュール」と呼ばれるデザイン内に「プロセス」により関数内で機能を記述し「チャネル」でモジュール間を接続する。!各プロセスは同時並列に実行プロセス内は逐次実行
19.
sc_mainsc_main()
20.
モジュール(SC_MODULE)sc_main()モジュールモジュールモジュール
21.
プロセス(SC_THREAD/SC_METHOD/SC_CTHREAD)sc_main()モジュールプロセスモジュールプロセスモジュールプロセスプロセス
22.
チャネル(sc_prim_channel)sc_main()モジュールプロセスモジュールチャネルチャネルプロセスプロセスモジュールプロセスプロセスポート/インターフェース
23.
設計する
24.
モジュールを作るプロセスを定義する機能(処理)を記述する
25.
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;}};
26.
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(...);:endmoduleSC_CTOR( hoge ){SC_THREAD( process );sensitive << in ;x = 10;}
27.
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;}
28.
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
29.
豆知識:初期化リスト※サブモジュールのインスタンス時など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
30.
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;}
31.
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;}
32.
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 の値が変化したら)
33.
プロセス定義は3種類SC_THREADSC_THREAD( process );sensitive
<< in ;void hoge::process() {...初期動作...wait(); / wait - in(value)/...Simulation...wait(); / wait - in(value)/...wait(); / wait - in(value)/...}再度呼び出しなし・関数から抜けると再度呼び出されないため while文や for文で無限ループを作る
34.
プロセス定義は3種類SC_METHODSC_METHOD( process );sensitive
<< a << b ;void hoge::process() {wait - a,b(value)...............}!!!初期動作 Simulation終了まで繰り返す・繰り返し実行されるプロセス・waitは記述出来ない
35.
プロセス定義は3種類SC_CTHREADSC_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文で無限ループを作る
36.
プロセス定義は3種類SC_THREADSC_METHODSC_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_CTHREADSC_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();
37.
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() ;
38.
(async_)reset_signal_isSystemC-2.3から追加reset_signal_isasync_reset_signal_isSC_THREAD( process );reset_signal_is(
reset, true);SC_THREAD( process ); 信号名 極性async_reset_signal_is( reset_n, false);※clock立ち上がりエッジ(posedge)の場合clockresetリセット期間reset_nリセット期間
39.
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);:endmoduleSC_CTOR( hoge ){SC_THREAD( process );sensitive << in ;x = 10;}
40.
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);}
41.
ポートとチャネルport/interface接続するchannelsc_signalsc_in/out/inoutsc_buffersc_clocksc_fifo_in/outsc_fifosc_mutex_ifsc_mutexsc_semaphrore_ifsc_semaphore
42.
チャネルはレジスタ(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 = 0a = 10, b = 10シミュレーション時刻の経過により値が更新される。 (代入はノンブロッキング代入)
43.
チャネルはWiresc_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となる。
44.
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;}
45.
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;
46.
SystemCで追加された型データ型sc_int<N>sc_uint<N>sc_bigint<N>sc_biguint<N>sc_bitsc_logicsc_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_intsc_bigint<128> = “0xaaa...”;64ビット以上のsc_uintsc_biguint<128> = “0xaaa...”;’0’, ’1’ の2値 (使用は非推奨) sc_bit a = ‘1’;’0’, ’1’, ’x’, ’z’の4値sc_logic a = ‘z’;Nビットの sc_bitsc_bv<8> a = “10101010”;Nビットの sc_logicsc_lv<8> a = “1x101z10”;固定小数点sc_fixed<8,4> a = -0.25;符号なし固定小数点sc_uifixed<8,4> a = -1.75;
47.
独自のデータ型(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 ) {
48.
検証する
49.
sc_mainモジュールをインスタンスする信号を生成する変数の値を表示するタイミング波形を取得する
50.
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;}
51.
モジュールをインスタンス#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;
52.
信号を生成#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_signalsc_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;
53.
変数の値を表示する■coutsc_signal - <<
operatorsc_intなど- a.to_string()関数が存在s_in = 0;■printfsc_start(10, SC_NS);sc_intなど- a.to_int()関数が存在 cout << "in = " << s_in<< ", out = " << s_out << endl;■sc_reportSystemC定義の表示形式関数s_in = 10;sc_start(10, SC_NS);!cout << "in = " << s_in★ sc_time_stamp() で << ", out = " << s_out << endl;時刻も表示!return 0;}
54.
タイミング波形を取得#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;※閉じることを忘れずに}
55.
余談SystemCのシミュレータは無償なので、 いつでもシミュレーションできます。 Webでも → http://www.edaplayground.com仮想環境(Virtual
Platform/TLM2.0)については別スライドを作成する予定です。最近、SystemC流行ってます!(ステマ) この機会に是⾮非トライしてみてください!
56.
おわり
Download
[8]
ページ先頭
©2009-2025
Movatter.jp