SystemC: From the Ground Up

Free Download

Authors:

Series: The Kluwer International Series in Engineering & Computer Science

ISBN: 9781402079894, 1402079893

Size: 6 MB (6744485 bytes)

Pages: 263/263

File format:

Language:

Publishing Year:

David C. Black, Jack Donovan9781402079894, 1402079893

SystemC provides a robust set of extensions to C++ that enables rapid development of complex hardware/software systems. This book focuses on the practical uses of the language for modeling real systems. The wealth of examples and downloadable code methodically guide the reader through the finer points of the SystemC language. This book will show you: -A step-by-step build-up of syntax, -NEW features of SystemC 2.1, -Code examples for each concept, -Many resource references, -Coding styles and guidelines, -Over 52 downloadable code examples (over 8,000 lines), -Exercises throughout the book, -How SystemC fits into the system design methodology, -Why features are as they are. Well known consultants in the EDA industry, both David Black and Jack Donovan have been involved in the adoption and teaching of new technologies and methodologies for a combined total of 42+ years. Recently, they jointly founded a consultancy, Eklectic Ally, focused on helping companies adopt SystemC methodologies.

Table of contents :
Team DDU……Page 1
Dedication……Page 6
Contents……Page 8
Why this Book……Page 12
Prerequisites for this Book……Page 13
Book Conventions……Page 14
How to Use this Book……Page 15
The Evolution of SystemC……Page 16
Open SystemC Initiative……Page 18
1.1 Introduction……Page 20
1.2 Language Comparison……Page 21
1.5 Enhancing Productivity with SystemC……Page 22
2.1 Transaction-Level Modeling Overview……Page 30
2.2 Abstraction Models……Page 32
2.3 Another Look at Abstraction Models……Page 34
2.4 TLM-Based Methodology……Page 35
2.5 Summary……Page 42
3. Overview of SystemC……Page 44
3.1 C++ Mechanics for SystemC……Page 45
3.2 SystemC: A C++ Class for Hardware……Page 49
3.3 Overview of SystemC Components……Page 52
3.4 SystemC Simulation Kernel……Page 57
4.1 Numeric Representation……Page 60
4.3 Arithmetic Data Types……Page 62
4.4 Boolean and Multi-Value Data Types……Page 64
4.5 Fixed-Point Data Types……Page 66
4.6 Operators for SystemC Data Types……Page 70
4.7 Higher Levels of Abstraction and the STL……Page 71
4.8 Choosing the Right Data Type……Page 74
4.9 Exercises……Page 75
5.1 A Starting Point: sc_main……Page 76
5.2 The Basic Unit of Design: SC_MODULE……Page 78
5.3 The SC_MODULE Class Constructor: SC_CTOR……Page 79
5.4 The Basic Unit of Execution: SystemC Process……Page 80
5.5 Registering the Simple Process: SC_THREAD……Page 81
5.7 Alternative Constructors: SC_HAS_PROCESS……Page 83
5.8 Two Basic Styles……Page 85
5.9 Exercises……Page 89
6.1 sc_time……Page 90
6.2 sc_start()……Page 91
6.3 sc_time_stamp () and Time Display……Page 92
6.4 wait(sc_time)……Page 93
6.5 sc_simulation_time(), Time Resolution and Time Units……Page 94
6.6 Exercises……Page 95
7. Concurrency……Page 96
7.1 sc_event……Page 97
7.2 Simplified Simulation Engine……Page 98
7.4 Dynamic Sensitivity for SC_THREAD::wait()……Page 100
7.5 Another Look at Concurrency and Time……Page 102
7.6 Triggering Events: .notify()……Page 105
7.7 SC_METHOD……Page 109
7.8 Dynamic Sensitivity for SC_METHOD: next_trigger()……Page 111
7.9 Static Sensitivity for Processes……Page 112
7.10……Page 115
7.11……Page 116
7.12……Page 117
8. Basic Channels……Page 118
8.2 sc_mutex……Page 119
8.3 sc_semaphore……Page 121
8.4 sc_fifo……Page 123
8.5 Exercises……Page 126
9. Evaluate-Update Channels……Page 128
9.1 Completed Simulation Engine……Page 130
9.2 sc_signal, sc_buffer……Page 132
9.3 sc_signal_resolved, sc_signal_rv……Page 135
9.4 Template Specializations of sc_signal Channels……Page 137
9.5 Exercises……Page 139
10.1 Module Hierarchy……Page 140
10.2 Direct Top-Level Implementation……Page 142
10.3 Indirect Top-Level Implementation……Page 143
10.5 Indirect Sub-Module Header-Only Implementation……Page 144
10.6 Direct Sub-Module Implementation……Page 145
10.7 Indirect Sub-Module Implementation……Page 146
10.9 Exercises……Page 147
11.1 Communication: The Need for Ports……Page 148
11.2 Interfaces: C++ and SystemC……Page 149
11.3 Simple SystemC Port Declarations……Page 154
11.4 Many Ways to Connect……Page 155
11.5 Port Connection Mechanics……Page 157
11.6 Accessing Ports From Within a Process……Page 160
11.7 Exercises……Page 161
12.1 Standard Interfaces……Page 162
12.2 Static Sensitivity Revisited……Page 166
12.3 Specialized Ports……Page 168
12.4 The sc_port Array……Page 173
12.5 SystemC Exports……Page 177
12.6 Connectivity Revisited……Page 183
12.7 Exercises……Page 185
13.1 A Review of Channels and Interfaces……Page 186
13.2 The Interrupt, a Custom Primitive Channel……Page 187
13.3 The Packet, a Custom Data Type for SystemC……Page 189
13.4 The Heartbeat, a Custom Hierarchical Channel……Page 193
13.5 The Adaptor, a Custom Primitive Channel……Page 195
13.6 The Transactor, a Custom Hierarchical Channel……Page 199
13.7 Exercises……Page 205
14.1 sc_clock, Predefined Processes……Page 206
14.2 Clocked Threads, the SC_CTHREAD……Page 208
14.3 Programmable Hierarchy……Page 212
14.4 Debugging and Signal Tracing……Page 216
14.5 Dynamic Processes……Page 218
14.6 SC_FORK/SC_JOIN……Page 223
14.7 Error and Message Reporting……Page 226
14.8 Other Libraries: SCV, ArchC, and Boost……Page 230
14.9 Exercises……Page 231
15.1 Determinants in Simulation Performance……Page 232
15.2 Features of the SystemC Landscape……Page 237
15.3 Next Steps……Page 241
Acknowledgments……Page 246
List of Figures……Page 248
Notes……Page 256
Index……Page 258

Reviews

There are no reviews yet.

Be the first to review “SystemC: From the Ground Up”
Shopping Cart
Scroll to Top