Black / Donovan / Bunton | SystemC: From the Ground Up, Second Edition | E-Book | www.sack.de
E-Book

E-Book, Englisch, 291 Seiten

Black / Donovan / Bunton SystemC: From the Ground Up, Second Edition


2. Auflage 2010
ISBN: 978-0-387-69958-5
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark

E-Book, Englisch, 291 Seiten

ISBN: 978-0-387-69958-5
Verlag: Springer
Format: PDF
Kopierschutz: 1 - PDF Watermark



SystemC provides a robust set of extensions to the C++ language that enables rapid development of complex models of hardware and software systems. The authors focus on practical use of the language for modeling real systems, showing: A step-by-step build-up of syntax Code examples for each concept Over 8000 lines of downloadable code examples Updates to reflect the SystemC standard, IEEE 1666 Why features are as they are Many resource references How SystemC fits into an ESL methodology This new edition of an industry best seller is updated to reflect the standardization of SystemC as IEEE 1666 and other improvements that reflect feedback from readers of the first edition. The wide ranging feedback also include suggestions from editors of the Japanese and Korean language translations, professors and students, and computer engineers from a broad industrial and geographical spectrum, all who have successfully used the first edition. New chapters have been added on the SystemC Verification Library and the Transaction Level Modeling, and proposed changes to the current SystemC standard. David Black and Jack Donovan, well known consultants in the EDA industry, have teamed with Bill Bunton and Anna Keist, experienced SystemC modeling engineers, to write the second edition of this highly popular classic. As a team the authors bring over 100 years of ASIC and system design experience together to make a very readable introduction to SystemC.

Black / Donovan / Bunton SystemC: From the Ground Up, Second Edition jetzt bestellen!

Weitere Infos & Material


1;Black_Frontmatter_O.pdf;2
1.1;Anchor 1;6
1.2;Anchor 3;8
1.3;Anchor 4;8
1.4;Anchor 5;9
1.5;Anchor 6;10
1.6;Anchor 7;11
1.7;Anchor 8;12
1.8;Anchor 9;12
1.9;Anchor 10;13
2;Black_Ch01_O.pdf;23
2.1;Chapter 1;23
2.1.1;Why SYSTEMC: ESL and TLM;23
2.1.1.1;1.1 .Introduction;23
2.1.1.2;1.2 .ESL Overview;24
2.1.1.2.1;1.2.1 .Design Complexity;24
2.1.1.2.2;1.2.2 .Shortened Design Cycle = Need For Concurrent Design;25
2.1.1.2.2.1;1.2.2.1 .Traditional System Design Approach;26
2.1.1.3;1.3 .Transaction-Level Modeling;29
2.1.1.3.1;1.3.1 .Abstraction Models;29
2.1.1.3.2;1.3.2 .An Informal Look at TLM;30
2.1.1.3.3;1.3.3 .TLM Methodology;32
2.1.1.3.3.1;1.3.3.1 .Algorithmic Modeling;33
2.1.1.3.3.2;1.3.3.2 .Architectural Modeling;34
2.1.1.3.3.3;1.3.3.3 .Virtual Software Development Platform;34
2.1.1.3.3.4;1.3.3.4 .Hardware Refinement;35
2.1.1.3.3.5;1.3.3.5 .Functional and Architectural Verification;35
2.1.1.4;1.4 .A Language for ESL and TLM: SystemC;36
2.1.1.4.1;1.4.1 .Language Comparisons and Levels of Abstraction;37
2.1.1.4.2;1.4.2 .SystemC: IEEE 1666;38
2.1.1.4.3;1.4.3 .Common Skill Set;38
2.1.1.4.4;1.4.4 .Proper Simulation Performance and Features;38
2.1.1.4.5;1.4.5 .Productivity Tool Support;39
2.1.1.4.6;1.4.6 .TLM Concept Support;39
2.1.1.5;1.5 .Conclusion;40
3;Black_Ch02_O.pdf;41
3.1;Chapter 2;41
3.1.1;Overview of SystemC;41
3.1.1.1;2.1 .C++ Mechanics for SystemC;42
3.1.1.2;2.2 .SystemC Class Concepts for Hardware;44
3.1.1.2.1;2.2.1 .Time Model;44
3.1.1.2.2;2.2.2 .Hardware Data Types;45
3.1.1.2.3;2.2.3 .Hierarchy and Structure;45
3.1.1.2.4;2.2.4 .Communications Management;45
3.1.1.2.5;2.2.5 .Concurrency;46
3.1.1.2.6;2.2.6 .Summary of SystemC Features for Hardware Modeling;46
3.1.1.3;2.3 .Overview of SystemC Components;47
3.1.1.3.1;2.3.1 .Modules and Hierarchy;47
3.1.1.3.2;2.3.2 .SystemC Threads and Methods;47
3.1.1.3.3;2.3.3 .Events, Sensitivity, and Notification;48
3.1.1.3.4;2.3.4 .SystemC Data Types;49
3.1.1.3.5;2.3.5 .Ports, Interfaces, and Channels;49
3.1.1.3.6;2.3.6 .Summary of SystemC Components;50
3.1.1.4;2.4 .SystemC Simulation Kernel;51
4;Black_Ch03_O.pdf;53
4.1;Chapter 3;53
4.1.1;Data Types;53
4.1.1.1;3.1 .Native C++ Data Types;53
4.1.1.2;3.2 .SystemC Data Types Overview;54
4.1.1.3;3.3 .SystemC Logic Vector Data Types;55
4.1.1.3.1;3.3.1 .sc_bv.;55
4.1.1.3.2;3.3.2 .sc_logic and sc_lv.;56
4.1.1.4;3.4 .SystemC Integer Types;57
4.1.1.4.1;3.4.1 .sc_int.. and sc_uint.;57
4.1.1.4.2;3.4.2 .sc_bigint.. and sc_biguint.;57
4.1.1.5;3.5 .SystemC Fixed-Point Types;58
4.1.1.6;3.6 .SystemC Literal and String;61
4.1.1.6.1;3.6.1 .SystemC String Literals Representations;61
4.1.1.6.2;3.6.2 .String Input and Output;62
4.1.1.7;3.7 .Operators for SystemC Data Types;63
4.1.1.8;3.8 .Higher Levels of Abstraction and the STL;65
4.1.1.9;3.9 .Choosing the Right Data Type;66
4.1.1.10;3.10 .Exercises;66
5;Black_Ch04_O.pdf;68
5.1;Chapter 4;68
5.1.1;Modules;68
5.1.1.1;4.1 .A Starting Point: sc_main;68
5.1.1.2;4.2 . The Basic Unit of Design: SC_MODULE;70
5.1.1.3;4.3 .The SC_MODULE Class Constructor: SC_CTOR;71
5.1.1.4;4.4 .The Basic Unit of Execution: Simulation Process;72
5.1.1.5;4.5 .Registering the Basic Process: SC_THREAD;73
5.1.1.6;4.6 .Completing the Simple Design: main.cpp;74
5.1.1.7;4.7 .Alternative Constructors: SC_HAS_PROCESS;74
5.1.1.8;4.8 .Two Styles Using SystemC Macros;76
5.1.1.8.1;4.8.1 .The Traditional Coding Style;76
5.1.1.8.2;4.8.2 .Recommended Alternate Style;77
5.1.1.9;4.9 .Exercises;78
6;Black_Ch05_O.pdf;80
6.1;Chapter 5;80
6.1.1;A Notion of Time;80
6.1.1.1;5.1 .sc_time;80
6.1.1.1.1;5.1.1 .SystemC Time Resolution;81
6.1.1.1.2;5.1.2 .Working with sc_time;82
6.1.1.2;5.2 .sc_time_stamp();82
6.1.1.3;5.3 .sc_start();83
6.1.1.4;5.4 .wait(sc_time);84
6.1.1.5;5.5 .Exercises;85
7;Black_Ch06_O.pdf;86
7.1;Chapter 6;86
7.1.1;Concurrency;86
7.1.1.1;6.1 .Understanding Concurrency;86
7.1.1.2;6.2 .Simplified Simulation Engine;89
7.1.1.3;6.3 .Another Look at Concurrency and Time;91
7.1.1.4;6.4 .The SystemC Thread Process;92
7.1.1.5;6.5 .SystemC Events;93
7.1.1.5.1;6.5.1 Causing Events;94
7.1.1.6;6.6 .Catching Events for Thread Processes;95
7.1.1.7;6.7 .Zero-Time and Immediate Notifications;96
7.1.1.8;6.8 .Understanding Events by Way of Example;99
7.1.1.9;6.9 .The SystemC Method Process;102
7.1.1.10;6.10 .Catching Events for Method Processes;104
7.1.1.11;6.11 .Static Sensitivity for Processes;104
7.1.1.12;6.12 .Altering Initialization;107
7.1.1.13;6.13 .The SystemC Event Queue;108
7.1.1.14;6.14 .Exercises;109
8;Black_Ch07_O.pdf;110
8.1;Chapter 7;110
8.1.1;Dynamic Processes;110
8.1.1.1;7.1 .Introduction;110
8.1.1.2;7.2 .sc_spawn;110
8.1.1.3;7.3 .Spawn Options;112
8.1.1.4;7.4 .A Spawned Process Example;113
8.1.1.5;7.5 .SC_FORK/SC_JOIN;114
8.1.1.6;7.6 .Process Control Methods;117
8.1.1.7;7.7 . Exercises;118
9;Black_Ch08_O.pdf;119
9.1;Chapter 8;119
9.1.1;Basic Channels;119
9.1.1.1;8.1 .Primitive Channels;120
9.1.1.2;8.2 .sc_mutex;120
9.1.1.3;8.3 .sc_semaphore;122
9.1.1.4;8.4 .sc_fifo;124
9.1.1.5;8.5 .Exercises;126
10;Black_Ch09_O.pdf;127
10.1;Chapter 9;127
10.1.1;Evaluate-Update Channels;127
10.1.1.1;9.1 .Completed Simulation Engine;128
10.1.1.2;9.2 .SystemC Signal Channels;130
10.1.1.3;9.3 .Resolved Signal Channels;133
10.1.1.4;9.4 .Template Specializations of sc_signal Channels;135
10.1.1.5;9.5 .Exercises;136
11;Black_Ch10_O.pdf;137
11.1;Chapter 10;137
11.1.1;Structure;137
11.1.1.1;10.1 .Module Hierarchy;137
11.1.1.2;10.2 .Direct Top-Level Implementation;139
11.1.1.3;10.3 .Indirect Top-Level Implementation;139
11.1.1.4;10.4 .Direct Submodule Header-Only Implementation;140
11.1.1.5;10.5 .Direct Submodule Implementation;140
11.1.1.6;10.6 .Indirect Submodule Header-Only Implementation;141
11.1.1.7;10.7 .Indirect Submodule Implementation;142
11.1.1.8;10.8 .Contrasting Implementation Approaches;143
11.1.1.9;10.9 .Exercises;143
12;Black_Ch11_O.pdf;144
12.1;Chapter 11;144
12.1.1;Communication;144
12.1.1.1;11.1 .Communication: The Need for Ports;144
12.1.1.2;11.2 .Interfaces: C++ and SystemC;145
12.1.1.3;11.3 .Simple SystemC Port Declarations;148
12.1.1.4;11.4 .Many Ways to Connect;149
12.1.1.5;11.5 .Port Connection Mechanics;151
12.1.1.6;11.6 .Accessing Ports From Within a Process;153
12.1.1.7;11.7 .Exercises;154
13;Black_Ch12_O.pdf;155
13.1;Chapter 12;155
13.1.1;More on Ports & Interfaces;155
13.1.1.1;12.1 .Standard Interfaces;155
13.1.1.1.1;12.1.1 .SystemC FIFO Interfaces;155
13.1.1.1.2;12.1.2 SystemC Signal Interfaces;157
13.1.1.1.3;12.1.3 sc_mutex and sc_semaphore Interfaces;158
13.1.1.2;12.2 .Sensitivity Revisited: Event Finders and Default Events;158
13.1.1.3;12.3 .Specialized Ports;160
13.1.1.4;12.4 .The SystemC Port Array and Port Policy;163
13.1.1.5;12.5 .SystemC Exports;166
13.1.1.6;12.6 .Connectivity Revisited;171
13.1.1.7;12.7 .Exercises;173
14;Black_Ch13_O.pdf;174
14.1;Chapter 13;174
14.1.1;Custom Channels and Data;174
14.1.1.1;13.1 .A Review of SystemC Channels and Interfaces;174
14.1.1.2;13.2 .The Interrupt, a Custom Primitive Channel;175
14.1.1.3;13.3 .The Packet, a Custom Data Type for SystemC;176
14.1.1.4;13.4 .The Heartbeat, a Custom Hierarchical Channel;179
14.1.1.5;13.5 .The Adaptor, a Custom Primitive Channel;181
14.1.1.6;13.6 .The Transactor, a Custom Hierarchical Channel;183
14.1.1.7;13.7 .Exercises;187
15;Black_Ch14_O.pdf;188
15.1;Chapter 14;188
15.1.1;Additional Topics;188
15.1.1.1;14.1 .Error and Message Reporting;188
15.1.1.2;14.2 .Elaboration and Simulation Callbacks;191
15.1.1.3;14.3 .Configuration;192
15.1.1.4;14.4 .Programmable Structure;194
15.1.1.5;14.5 .sc_clock, Predefined Processes;198
15.1.1.6;14.6 .Clocked Threads, the SC_CTHREAD;199
15.1.1.7;14.7 .Debugging and Signal Tracing;202
15.1.1.8;14.8 .Other Libraries: SCV, ArchC, and Boost;204
15.1.1.9;14.9 .Exercises;204
16;Black_Ch15_O.pdf;205
16.1;Chapter 15;205
16.1.1;SCV;205
16.1.1.1;15.1 .Introduction;205
16.1.1.2;15.2 . Data Introspection;205
16.1.1.2.1;15.2.1 .Components for scv_extension Interface;206
16.1.1.2.2;15.2.2 .Built-In scv_extensions;208
16.1.1.2.3;15.2.3 .User-Defined Extensions;209
16.1.1.3;15.3 .scv_smart_ptr Template;209
16.1.1.3.1;15.4.1 .Global Configuration;210
16.1.1.3.2;15.4.2 .Basic Randomization;212
16.1.1.3.3;15.4.3 .Constrained Randomization;213
16.1.1.4;15.5 .Callbacks;216
16.1.1.5;15.6 .Sparse Arrays;217
16.1.1.6;15.7 .Transaction Sequences;218
16.1.1.7;15.8 .Transaction Recording;219
16.1.1.8;15.9 .SCV Tips;220
16.1.1.9;15.10 .Exercises;220
17;Black_Ch16_O.pdf;222
17.1;Chapter 16;222
17.1.1;OSCI TLM;222
17.1.1.1;16.1 .Introduction;222
17.1.1.2;16.2 .Architecture;223
17.1.1.3;16.3 .TLM Interfaces;225
17.1.1.3.1;16.3.1 .Unidirectional Blocking Interfaces;226
17.1.1.3.2;16.3.2 .Unidirectional Non-Blocking Interfaces;226
17.1.1.3.3;16.3.3 .Bidirectional Blocking Interface;228
17.1.1.4;16.4 .TLM Channels;228
17.1.1.5;16.5 .Auxiliary Components;229
17.1.1.5.1;16.5.1 .TLM Master;230
17.1.1.5.2;16.5.2 .TLM Slave;230
17.1.1.5.3;16.5.3 .Router and Arbiter;231
17.1.1.6;16.6 .A TLM Example;232
17.1.1.7;16.7 .Summary;235
17.1.1.8;16.8 .Exercises;235
18;Black_Ch17_O.pdf;237
18.1;Chapter 17;237
18.1.1;Odds & Ends;237
18.1.1.1;17.1 .Determinants in Simulation Performance;237
18.1.1.1.1;17.1.1 .Saving Time and Clocks;238
18.1.1.1.2;17.1.2 .Moving Large Amounts of Data;239
18.1.1.1.3;17.1.3 .Too Many Channels;240
18.1.1.1.4;17.1.4 .Effects of Over Specification;241
18.1.1.1.5;17.1.5 .Keep it Native;241
18.1.1.1.6;17.1.6 . C++ Compiler Optimizations;241
18.1.1.1.7;17.1.7 .C++ Compilers;241
18.1.1.1.8;17.1.8 .Better Libraries;241
18.1.1.1.9;17.1.9 .Better and More Simulation Computers;242
18.1.1.2;17.2 .Features of the SystemC Landscape;242
18.1.1.2.1;17.2.1 .Things You Wish Would Just Go Away;242
18.1.1.2.2;17.2.2 .Development Environment;244
18.1.1.2.3;17.2.3 .Conventions and Coding Style;244
18.1.1.3;17.3 .Next Steps;245
18.1.1.3.1;17.3.1 .Guidelines for Adopting SystemC;245
18.1.1.3.2;There are a number of companies supporting SystemC methodologies. A quick visit to the OSCI web site www.systemc.org can;245
19;Black_Backmatter_O.pdf;248
19.1;Appendix A;248
19.1.1;C++ Basics;248
19.1.1.1;A.1 Background of C++;249
19.1.1.2;A.2 Structure of a C Program;249
19.1.1.3;A.3 Comments;250
19.1.1.4;A.4 Streams (I/O);250
19.1.1.4.1;A.4.1 Streaming vs. printf;251
19.1.1.5;A.5 Basic C Statements;251
19.1.1.5.1;A.5.1 Expressions and Operators;251
19.1.1.5.2;A.5.2 Conditional;253
19.1.1.5.3;A.5.3 Looping;254
19.1.1.5.4;A.5.4 Altering Flow;255
19.1.1.6;A.6 Data Types;255
19.1.1.6.1;A.6.1 Built-In Data Types;256
19.1.1.6.2;A.6.2 User-Defined Data Types;256
19.1.1.6.2.1;A.6.2.1 Pointers, Arrays, and References;256
19.1.1.6.2.2;A.6.2.2 Structures;257
19.1.1.6.2.3;A.6.2.3 STL;259
19.1.1.6.3;A.6.3 Constants;259
19.1.1.6.4;A.6.4 Declaration vs. Definition;259
19.1.1.7;A.7 Functions;260
19.1.1.7.1;A.7.1 Pass By Value and Return;261
19.1.1.7.2;A.7.2 Pass by Reference;261
19.1.1.7.3;A.7.3 Overloading;262
19.1.1.7.4;A.7.4 Constant Arguments;262
19.1.1.7.5;A.7.5 Defaults for Arguments;263
19.1.1.7.6;A.7.6 Operators as Functions;263
19.1.1.8;A.8 Classes;264
19.1.1.8.1;A.8.1 Member Data and Member Functions;264
19.1.1.8.2;A.8.2 Constructors and Destructors;265
19.1.1.8.2.1;A.8.2.1 Initialization;267
19.1.1.8.3;A.8.3 Destructors;268
19.1.1.8.4;A.8.4 Inheritance;269
19.1.1.8.4.1;A.8.4.1 Adding Members;269
19.1.1.8.4.2;A.8.4.2 Initialization of a Base Class;269
19.1.1.8.4.3;A.8.4.3 Overriding Inherited Member Functions;270
19.1.1.8.4.4;A.8.4.4 Multiple Inheritance;270
19.1.1.8.5;A.8.5 Public, Private and Protected Access;271
19.1.1.8.5.1;A.8.5.1 Friends;271
19.1.1.8.6;A.8.6 Polymorphism;271
19.1.1.8.6.1;A.8.6.1 Virtual;272
19.1.1.8.6.2;A.8.6.2 Abstract and Interface Classes;272
19.1.1.8.7;A.8.7 Constant Members;273
19.1.1.8.8;A.8.8 Static Members;273
19.1.1.9;A.9 Templates;274
19.1.1.9.1;A.9.1 Defining Template Functions;274
19.1.1.9.2;A.9.2 Using Template Functions;274
19.1.1.9.3;A.9.3 Defining Template Classes;275
19.1.1.9.4;A.9.4 Using Template Classes;275
19.1.1.9.5;A.9.5 Template Considerations;275
19.1.1.10;A.10 Names and Namespaces;276
19.1.1.10.1;A.10.1 Meaningful Names;276
19.1.1.10.2;A.10.2 Ordinary Scope;276
19.1.1.10.3;A.10.3 Defining Namespaces;277
19.1.1.10.4;A.10.4 Using Names and Namespaces;277
19.1.1.10.5;A.10.5 Anonymous Namespaces;277
19.1.1.11;A.11 Exceptions;278
19.1.1.11.1;A.11.1 Watching for and Catching Exceptions;278
19.1.1.11.2;A.11.2 Throwing Exceptions;279
19.1.1.11.3;A.11.3 Functions that Throw;280
19.1.1.12;A.12 Standard Library Tidbits;281
19.1.1.12.1;A.12.1 Strings;281
19.1.1.12.2;A.12.2 File I/O;281
19.1.1.12.3;A.12.3 Standard Template Library;283
19.1.1.13;A.13 Closing Thoughts;283
19.1.1.14;A.14 References;284
20;Black_Index_O.pdf;285



Ihre Fragen, Wünsche oder Anmerkungen
Vorname*
Nachname*
Ihre E-Mail-Adresse*
Kundennr.
Ihre Nachricht*
Lediglich mit * gekennzeichnete Felder sind Pflichtfelder.
Wenn Sie die im Kontaktformular eingegebenen Daten durch Klick auf den nachfolgenden Button übersenden, erklären Sie sich damit einverstanden, dass wir Ihr Angaben für die Beantwortung Ihrer Anfrage verwenden. Selbstverständlich werden Ihre Daten vertraulich behandelt und nicht an Dritte weitergegeben. Sie können der Verwendung Ihrer Daten jederzeit widersprechen. Das Datenhandling bei Sack Fachmedien erklären wir Ihnen in unserer Datenschutzerklärung.