Shopping Cart

No products in the cart.

IEEE 1666-2023

$134.33

IEEE Standard for Standard SystemC® Language Reference Manual (Approved Draft)

Published By Publication Date Number of Pages
IEEE 2023 618
Guaranteed Safe Checkout
Category:

If you have any questions, feel free to reach out to our online customer service team by clicking on the bottom right corner. We’re here to assist you 24/7.
Email:[email protected]

Revision Standard – Active. SystemC® is defined in this standard. SystemC is an ISO standard C++ class library for system and hardware design for use by designers and architects who need to address complex systems that are a hybrid between hardware and software. This standard provides a precise and complete definition of the SystemC class library so that a SystemC implementation can be developed with reference to this standard alone. The primary audiences for this standard are the implementors of the SystemC class library, the implementors of tools supporting the class library, and the users of the class library.

PDF Catalog

PDF Pages PDF Title
1 Front cover
2 Title page
4 Important Notices and Disclaimers Concerning IEEE Standards Documents
7 Introduction
Acknowledgments
8 Participants
10 Contents
24 1. Overview
1.1 Scope
1.2 Purpose
1.3 Word usage
25 1.4 Subsets
1.5 Relationship with C++ standard
1.6 Guidance for readers
27 2. Normative references
28 3. Terminology and conventions used in this standard
3.1 Terminology
3.1.1 Shall, should, may, can
3.1.2 Implementation, application
3.1.3 Call, called from, derived from
3.1.4 Specific technical terms
30 3.2 Syntactical conventions
3.2.1 Implementation-defined
3.2.2 Disabled
3.2.3 Ellipsis (…)
3.2.4 Class names
31 3.2.5 Embolded text
3.3 Semantic conventions
3.3.1 Class definitions and the inheritance hierarchy
3.3.2 Function definitions and side-effects
3.3.3 Functions that use const char* as parameter
32 3.3.4 Functions whose return type is a reference or a pointer
3.3.4.1 Overview
3.3.4.2 Functions that return *this or an actual argument
3.3.4.3 Functions that return const char*
3.3.4.4 Functions that return a reference or pointer to an object in the module hierarchy
3.3.4.5 Functions that return a reference or pointer to a transient object
33 3.3.4.6 sc_time_stamp and sc_signal::read
34 3.3.5 Namespaces and internal naming
3.3.6 Non-compliant applications and errors
3.4 Notes and examples
35 4. Elaboration and simulation semantics
4.1 Overview
4.2 Elaboration
4.2.1 Overview
36 4.2.2 Instantiation
37 4.2.3 Process macros
4.2.4 Port binding and export binding
38 4.2.5 Setting the time resolution
39 4.3 Simulation
4.3.1 Overview
4.3.2 The scheduling algorithm
4.3.2.1 Overview
40 4.3.2.2 Initialization phase
4.3.2.3 Evaluation phase
41 4.3.2.4 Update phase
4.3.2.5 Delta notification phase
42 4.3.2.6 Timed notification phase
4.3.3 Initialization, cycles, pauses,and suspension in the scheduling algorithm
43 4.4 Running elaboration and simulation
4.4.1 Overview
4.4.2 Function declarations
44 4.4.3 sc_elab_and_sim
4.4.4 sc_argc and sc_argv
45 4.4.5 Running under application control using functions sc_main and sc_start
4.4.5.1 Overview
4.4.5.2 sc_main
4.4.5.3 sc_start
47 4.4.6 Running under control of the kernel
4.5 Elaboration and simulation callbacks
4.5.1 Overview
48 4.5.2 before_end_of_elaboration
49 4.5.3 end_of_elaboration
50 4.5.4 start_of_simulation
51 4.5.5 end_of_simulation
4.6 Other functions related to the scheduler
4.6.1 Function declarations
53 4.6.2 sc_pause
54 4.6.3 sc_suspend_all, sc_unsuspend_all, sc_unsuspendable, and sc_suspendable
4.6.4 sc_stop, sc_set_stop_mode, and sc_get_stop_mode
55 4.6.5 sc_time_stamp
56 4.6.6 sc_delta_count and sc_delta_count_at_current_time
4.6.7 sc_is_running
57 4.6.8 Functions to detect pending activity
58 4.6.9 sc_get_status
59 4.6.10 sc_stage_callback_if
4.6.10.1 Description
4.6.10.2 Class definition
4.6.10.3 stage_callback
61 4.6.11 sc_register_stage_callback
4.6.12 sc_unregister_stage_callback
4.6.13 Callbacks execution
62 5. Core language class definitions
5.1 Class header files
5.1.1 Overview
5.1.2 #include “systemc”
5.1.3 #include “systemc.h”
63 5.2 sc_module
5.2.1 Description
5.2.2 Class definition
66 5.2.3 Constraints on usage
5.2.4 kind
5.2.5 SC_MODULE
67 5.2.6 Constructors
5.2.7 SC_CTOR
68 5.2.8 SC_METHOD, SC_THREAD, SC_CTHREAD
69 5.2.9 SC_NAMED
5.2.10 Method process
70 5.2.11 Thread and clocked thread processes
71 5.2.12 Clocked thread processes
73 5.2.13 reset_signal_is and async_reset_signal_is
74 5.2.14 sensitive
75 5.2.15 dont_initialize
76 5.2.16 set_stack_size
5.2.17 next_trigger
78 5.2.18 wait
79 5.2.19 Positional port binding
81 5.2.20 before_end_of_elaboration, end_of_elaboration, start_of_simulation, end_of_simulation
5.2.21 get_child_objects and get_child_events
82 5.2.22 sc_gen_unique_name
5.2.23 sc_behavior and sc_channel
83 5.3 sc_module_name
5.3.1 Description
5.3.2 Class definition
84 5.3.3 Constraints on usage
5.3.4 Module hierarchy
85 5.3.5 Member functions
86 5.4 sc_sensitive†
5.4.1 Description
5.4.2 Class definition
5.4.3 Constraints on usage
5.4.4 operator<<
87 5.5 sc_spawn_options and sc_spawn
5.5.1 Description
5.5.2 Class definition
89 5.5.3 Constraints on usage
5.5.4 Constructors
5.5.5 Member functions
90 5.5.6 sc_spawn
93 5.5.7 SC_FORK and SC_JOIN
94 5.6 sc_process_handle
5.6.1 Description
5.6.2 Class definition
96 5.6.3 Constraints on usage
5.6.4 Constructors
5.6.5 Member functions
99 5.6.6 Member functions for process control
5.6.6.1 Overview
104 5.6.6.2 suspend and resume
106 5.6.6.3 disable and enable
107 5.6.6.4 Member functions to reset processes
5.6.6.5 kill
108 5.6.6.6 reset
109 5.6.6.7 sc_unwind_exception
110 5.6.6.8 is_unwinding
5.6.6.9 reset_event
5.6.6.10 sync_reset_on and sync_reset_off
112 5.6.6.11 throw_it
113 5.6.6.12 Interactions between member functions for process control
115 5.6.7 sc_get_current_process_handle
116 5.6.8 sc_is_unwinding
117 5.7 sc_event_finder and sc_event_finder_t
5.7.1 Description
5.7.2 Class definition
5.7.3 Constraints on usage
119 5.8 sc_event_and_list and sc_event_or_list
5.8.1 Description
5.8.2 Class definition
120 5.8.3 Constraints and usage
5.8.4 Constructors, destructor, assignment
5.8.5 Member functions and operators
122 5.9 sc_event_and_expr† and sc_event_or_expr†
5.9.1 Description
5.9.2 Class definition
123 5.9.3 Constraints on usage
5.9.4 Operators
124 5.10 sc_event
5.10.1 Description
5.10.2 Class definition
125 5.10.3 Constraints on usage
5.10.4 Constructors, destructor, and event naming
126 5.10.5 Functions for naming and hierarchy traversal
127 5.10.6 notify and cancel
128 5.10.7 Event lists
5.10.8 None event
5.10.9 Multiple event notifications
129 5.11 sc_time
5.11.1 Description
5.11.2 Class definition
130 5.11.3 Constructors
131 5.11.4 Functions and operators
5.11.5 Time resolution
132 5.11.6 sc_max_time
5.11.7 SC_ZERO_TIME
5.12 sc_port
5.12.1 Description
5.12.2 Class definition
134 5.12.3 Template parameters
135 5.12.4 Constraints on usage
136 5.12.5 Constructors
5.12.6 kind
5.12.7 Named port binding
137 5.12.8 Member functions for bound ports and port-to-port binding
5.12.8.1 Overview
138 5.12.8.2 size
5.12.8.3 operator->
139 5.12.8.4 operator[]
140 5.12.8.5 get_interface
141 5.12.8.6 get_interface_type
5.12.9 before_end_of_elaboration, end_of_elaboration, start_of_simulation, end_of_simulation
5.13 sc_export
5.13.1 Description
5.13.2 Class definition
142 5.13.3 Template parameters
5.13.4 Constraints on usage
143 5.13.5 Constructors
5.13.6 kind
5.13.7 Export binding
144 5.13.8 Member functions for bound exports and export-to-export binding
5.13.8.1 Overview
145 5.13.8.2 operator-> and operator IF&
5.13.8.3 get_interface
5.13.8.4 get_interface_type
5.13.9 before_end_of_elaboration, end_of_elaboration, start_of_simulation, end_of_simulation
5.14 sc_interface
5.14.1 Description
146 5.14.2 Class definition
5.14.3 Constraints on usage
5.14.4 register_port
147 5.14.5 default_event
148 5.15 sc_prim_channel
5.15.1 Description
5.15.2 Class definition
149 5.15.3 Constraints on usage
5.15.4 Constructors, destructor, and hierarchical names
150 5.15.5 kind
5.15.6 request_update and update
151 5.15.7 async_attach_suspending and async_detach_suspending
5.15.8 next_trigger and wait
152 5.15.9 before_end_of_elaboration, end_of_elaboration, start_of_simulation, end_of_simulation
153 5.16 sc_object
5.16.1 Description
5.16.2 Class definition
154 5.16.3 Constraints on usage
5.16.4 Constructors and destructor
155 5.16.5 name, basename, and kind
156 5.16.6 print and dump
5.16.7 Functions for object hierarchy traversal
158 5.16.8 Member functions for attributes
159 5.16.9 get_hierarchy_scope
5.17 Hierarchical naming of objects and events
5.17.1 Overview
160 5.17.2 sc_hierarchical_name_exists
5.17.3 sc_register_hierarchical_name, sc_unregister_hierarchical_name
161 5.18 sc_attr_base
5.18.1 Description
5.18.2 Class definition
5.18.3 Member functions
162 5.19 sc_attribute
5.19.1 Description
5.19.2 Class definition
5.19.3 Template parameters
5.19.4 Member functions and data members
5.20 sc_attr_cltn
5.20.1 Description
5.20.2 Class definition
163 5.20.3 Constraints on usage
5.20.4 Iterators
164 5.21 sc_hierarchy_scope
5.21.1 Description
5.21.2 Class definition
5.21.3 Constraints on usage
5.21.4 Constructor
5.21.5 get_root
166 6. Predefined channel class definitions
6.1 sc_signal_in_if
6.1.1 Description
6.1.2 Class definition
6.1.3 Member functions
167 6.2 sc_signal_in_if and sc_signal_in_if
6.2.1 Description
6.2.2 Class definition
168 6.2.3 Member functions
6.3 sc_signal_inout_if
6.3.1 Description
6.3.2 Class definition
169 6.3.3 Member functions
6.4 sc_signal
6.4.1 Description
170 6.4.2 Class definition
6.4.3 Template parameter T
171 6.4.4 Reading and writing signals
172 6.4.5 Constructors
6.4.6 register_port
173 6.4.7 Member functions for reading
6.4.8 Member functions for writing
6.4.9 Member functions for events
174 6.4.10 Diagnostic member functions
6.4.11 operator<<
175 6.5 sc_signal and sc_signal
6.5.1 Description
6.5.2 Class definition
177 6.5.3 Member functions
178 6.6 sc_buffer
6.6.1 Description
6.6.2 Class definition
6.6.3 Constructors
179 6.6.4 Member functions
180 6.7 sc_clock
6.7.1 Description
6.7.2 Class definition
181 6.7.3 Characteristic properties
6.7.4 Constructors
6.7.5 write
182 6.7.6 Diagnostic member functions
6.7.7 before_end_of_elaboration
6.7.8 sc_in_clk
6.8 sc_in
6.8.1 Description
6.8.2 Class definition
183 6.8.3 Member functions
184 6.8.4 sc_trace
6.8.5 end_of_elaboration
6.9 sc_in and sc_in
6.9.1 Description
6.9.2 Class definition
186 6.9.3 Member functions
187 6.10 sc_inout
6.10.1 Description
6.10.2 Class definition
188 6.10.3 Member functions
6.10.4 initialize
6.10.5 sc_trace
189 6.10.6 end_of_elaboration
6.10.7 Binding
6.11 sc_inout and sc_inout
6.11.1 Description
6.11.2 Class definition
191 6.11.3 Member functions
6.12 sc_out
6.12.1 Description
6.12.2 Class definition
192 6.12.3 Member functions
6.13 sc_signal_resolved
6.13.1 Description
6.13.2 Class definition
193 6.13.3 Constructors
6.13.4 Resolution semantics
194 6.13.5 Member functions
195 6.14 sc_in_resolved
6.14.1 Description
6.14.2 Class definition
196 6.14.3 Member functions
6.15 sc_inout_resolved
6.15.1 Description
6.15.2 Class definition
197 6.15.3 Member functions
6.16 sc_out_resolved
6.16.1 Description
6.16.2 Class definition
198 6.16.3 Member functions
6.17 sc_signal_rv
6.17.1 Description
6.17.2 Class definition
199 6.17.3 Semantics and member functions
6.18 sc_in_rv
6.18.1 Description
6.18.2 Class definition
200 6.18.3 Member functions
6.19 sc_inout_rv
6.19.1 Description
6.19.2 Class definition
201 6.19.3 Member functions
6.20 sc_out_rv
6.20.1 Description
6.20.2 Class definition
202 6.20.3 Member functions
6.21 sc_fifo_in_if
6.21.1 Description
6.21.2 Class definition
203 6.21.3 Member functions
6.22 sc_fifo_out_if
6.22.1 Description
6.22.2 Class definition
204 6.22.3 Member functions
205 6.23 sc_fifo
6.23.1 Description
6.23.2 Class definition
206 6.23.3 Template parameter T
6.23.4 Constructors
6.23.5 register_port
207 6.23.6 Member functions for reading
6.23.7 Member functions for writing
208 6.23.8 The update phase
6.23.9 Member functions for events
6.23.10 Member functions for available values and free slots
6.23.11 Diagnostic member functions
209 6.23.12 operator<<
6.24 sc_fifo_in
6.24.1 Description
210 6.24.2 Class definition
6.24.3 Member functions
6.25 sc_fifo_out
6.25.1 Description
211 6.25.2 Class definition
6.25.3 Member functions
213 6.26 sc_mutex_if
6.26.1 Description
6.26.2 Class definition
6.26.3 Member functions
6.27 sc_mutex
6.27.1 Description
214 6.27.2 Class definition
6.27.3 Constructors
6.27.4 Member functions
215 6.28 sc_semaphore_if
6.28.1 Description
6.28.2 Class definition
216 6.28.3 Member functions
6.29 sc_semaphore
6.29.1 Description
6.29.2 Class definition
6.29.3 Constructors
217 6.29.4 Member functions
6.30 sc_event_queue
6.30.1 Description
218 6.30.2 Class definition
6.30.3 Constraints on usage
6.30.4 Constructors
6.30.5 kind
219 6.30.6 Member functions
220 6.31 sc_stub, sc_unbound, sc_tie
221 7. SystemC data types
7.1 Introduction
223 7.2 Common characteristics
7.2.1 Overview
224 7.2.2 Initialization and assignment operators
7.2.3 Precision of arithmetic expressions
225 7.2.4 Base class default word length
226 7.2.5 Word length
7.2.6 Bit-select
227 7.2.7 Part-select
228 7.2.8 Concatenation
229 7.2.9 Reduction operators
7.2.10 Integer conversion
230 7.2.11 String input and output
7.2.12 Conversion of application-defined types in integer expressions
231 7.3 String literals
233 7.4 sc_value_base†
7.4.1 Description
7.4.2 Class definition
7.4.3 Constraints on usage
7.4.4 Member functions
234 7.5 Limited-precision integer types
7.5.1 Type definitions
235 7.5.2 sc_int_base
7.5.2.1 Description
7.5.2.2 Class definition
237 7.5.2.3 Constraints on usage
7.5.2.4 Constructors
7.5.2.5 Assignment operators
7.5.2.6 Implicit type conversion
238 7.5.2.7 Explicit type conversion
7.5.2.8 Arithmetic, bitwise, and comparison operators
239 7.5.2.9 Other member functions
7.5.3 sc_uint_base
7.5.3.1 Description
7.5.3.2 Class definition
241 7.5.3.3 Constraints on usage
7.5.3.4 Constructors
242 7.5.3.5 Assignment operators
7.5.3.6 Implicit type conversion
7.5.3.7 Explicit type conversion
7.5.3.8 Arithmetic, bitwise, and comparison operators
243 7.5.3.9 Other member functions
7.5.4 sc_int
7.5.4.1 Description
244 7.5.4.2 Class definition
245 7.5.4.3 Constraints on usage
7.5.4.4 Constructors
7.5.4.5 Assignment operators
7.5.4.6 Arithmetic and bitwise operators
246 7.5.5 sc_uint
7.5.5.1 Description
7.5.5.2 Class definition
247 7.5.5.3 Constraints on usage
7.5.5.4 Constructors
248 7.5.5.5 Assignment operators
7.5.5.6 Arithmetic and bitwise operators
249 7.5.6 Bit-selects
7.5.6.1 Description
7.5.6.2 Class definition
251 7.5.6.3 Constraints on usage
252 7.5.6.4 Assignment operators
7.5.6.5 Implicit type conversion
7.5.6.6 Other member functions
7.5.7 Part-selects
7.5.7.1 Description
7.5.7.2 Class definition
256 7.5.7.3 Constraints on usage
7.5.7.4 Assignment operators
7.5.7.5 Implicit type conversion
257 7.5.7.6 Explicit type conversion
7.5.7.7 Other member functions
7.6 Finite-precision integer types
7.6.1 Type definitions
7.6.2 Constraints on usage
258 7.6.3 sc_signed
7.6.3.1 Description
7.6.3.2 Class definition
260 7.6.3.3 Constraints on usage
7.6.3.4 Constructors
7.6.3.5 Assignment operators
261 7.6.3.6 Explicit type conversion
7.6.3.7 Arithmetic, bitwise, and comparison operators
264 7.6.3.8 Other member functions
7.6.4 sc_unsigned
7.6.4.1 Description
7.6.4.2 Class definition
266 7.6.4.3 Constraints on usage
7.6.4.4 Constructors
7.6.4.5 Assignment operators
267 7.6.4.6 Explicit type conversion
7.6.4.7 Arithmetic, bitwise, and comparison operators
270 7.6.4.8 Other member functions
7.6.5 sc_bigint
7.6.5.1 Description
7.6.5.2 Class definition
271 7.6.5.3 Constraints on usage
272 7.6.5.4 Constructors
7.6.5.5 Assignment operators
7.6.6 sc_biguint
7.6.6.1 Description
7.6.6.2 Class definition
274 7.6.6.3 Constraints on usage
7.6.6.4 Constructors
7.6.6.5 Assignment operators
7.6.7 Bit-selects
7.6.7.1 Description
7.6.7.2 Class definition
277 7.6.7.3 Constraints on usage
7.6.7.4 Assignment operators
7.6.7.5 Implicit type conversion
278 7.6.7.6 Other member functions
7.6.8 Part-selects
7.6.8.1 Description
7.6.8.2 Class definition
282 7.6.8.3 Constraints on usage
7.6.8.4 Assignment operators
7.6.8.5 Implicit type conversion
7.6.8.6 Explicit type conversion
283 7.6.8.7 Other member functions
7.7 Integer concatenations
7.7.1 Description
7.7.2 Class definition
284 7.7.3 Constraints on usage
285 7.7.4 Assignment operators
7.7.5 Implicit type conversion
7.7.6 Explicit type conversion
7.7.7 Other member functions
286 7.8 Generic base proxy class
7.8.1 Description
7.8.2 Class definition
7.8.3 Constraints on usage
287 7.9 Logic and vector types
7.9.1 Type definitions
7.9.2 sc_logic
7.9.2.1 Description
288 7.9.2.2 Class definition
289 7.9.2.3 Constraints on usage
7.9.2.4 Constructors
7.9.2.5 Explicit type conversion
290 7.9.2.6 Bitwise and comparison operators
7.9.2.7 Other member functions
291 7.9.2.8 sc_logic constant definitions
7.9.3 sc_bv_base
7.9.3.1 Description
7.9.3.2 Class definition
293 7.9.3.3 Constraints on usage
7.9.3.4 Constructors
294 7.9.3.5 Assignment operators
7.9.3.6 Explicit type conversion
7.9.3.7 Bitwise and comparison operators
296 7.9.3.8 Other member functions
7.9.4 sc_lv_base
7.9.4.1 Description
7.9.4.2 Class definition
298 7.9.4.3 Constraints on usage
7.9.4.4 Constructors
299 7.9.4.5 Assignment operators
7.9.4.6 Explicit type conversion
300 7.9.4.7 Bitwise and comparison operators
301 7.9.4.8 Other member functions
302 7.9.5 sc_bv
7.9.5.1 Description
7.9.5.2 Class definition
303 7.9.5.3 Constraints on usage
7.9.5.4 Constructors
7.9.5.5 Assignment operators
304 7.9.6 sc_lv
7.9.6.1 Description
7.9.6.2 Class definition
305 7.9.6.3 Constraints on usage
7.9.6.4 Constructors
7.9.6.5 Assignment operators
7.9.7 Bit-selects
7.9.7.1 Description
306 7.9.7.2 Class definition
307 7.9.7.3 Constraints on usage
308 7.9.7.4 Assignment operators
7.9.7.5 Implicit type conversion
7.9.7.6 Explicit type conversion
7.9.7.7 Bitwise and comparison operators
309 7.9.7.8 Other member functions
7.9.8 Part-selects
7.9.8.1 Description
7.9.8.2 Class definition
311 7.9.8.3 Constraints on usage
312 7.9.8.4 Assignment operators
7.9.8.5 Explicit type conversion
313 7.9.8.6 Bitwise and comparison operators
315 7.9.8.7 Other member functions
7.9.9 Concatenations
7.9.9.1 Description
7.9.9.2 Class definition
318 7.9.9.3 Constraints on usage
7.9.9.4 Assignment operators
7.9.9.5 Explicit type conversion
319 7.9.9.6 Bitwise and comparison operators
321 7.9.9.7 Other member functions
7.9.9.8 concat and operator,
322 7.10 Fixed-point types
7.10.1 Overview
7.10.2 Fixed-point representation
323 7.10.3 Fixed-point type conversion
324 7.10.4 Fixed-point data types
7.10.4.1 Overview
7.10.4.2 Finite-precision fixed-point types
7.10.4.3 Limited-precision fixed-point types
325 7.10.5 Fixed-point expressions and operations
328 7.10.6 Bit and part selection
7.10.7 Variable-precision fixed-point value limits
329 7.10.8 Fixed-point word length and mode
7.10.8.1 Overview
330 7.10.8.2 Reading parameter settings
331 7.10.8.3 Value attributes
7.10.9 Conversions to character string
7.10.9.1 Overview
332 7.10.9.2 String shortcut member functions
7.10.9.3 Bit-pattern string conversion
7.10.10 Finite word-length effects
7.10.10.1 Overview
333 7.10.10.2 Overflow modes
7.10.10.3 Overflow for signed fixed-point numbers
335 7.10.10.4 Overflow for unsigned fixed-point numbers
336 7.10.10.5 SC_SAT
337 7.10.10.6 SC_SAT_ZERO
338 7.10.10.7 SC_SAT_SYM
339 7.10.10.8 SC_WRAP
341 7.10.10.9 SC_WRAP_SM
345 7.10.10.10 Quantization modes
346 7.10.10.11 Quantization for signed fixed-point numbers
347 7.10.10.12 Quantization for unsigned fixed-point numbers
349 7.10.10.13 SC_RND
350 7.10.10.14 SC_RND_ZERO
351 7.10.10.15 SC_RND_MIN_INF
352 7.10.10.16 SC_RND_INF
353 7.10.10.17 SC_RND_CONV
354 7.10.10.18 SC_TRN
355 7.10.10.19 SC_TRN_ZERO
356 7.10.11 sc_fxnum
7.10.11.1 Description
7.10.11.2 Class definition
359 7.10.11.3 Constraints on usage
360 7.10.11.4 Assignment operators
7.10.11.5 Implicit type conversion
7.10.11.6 Explicit type conversion
7.10.12 sc_fxnum_fast
7.10.12.1 Description
7.10.12.2 Class definition
364 7.10.12.3 Constraints on usage
7.10.12.4 Assignment operators
7.10.12.5 Implicit type conversion
7.10.12.6 Explicit type conversion
365 7.10.13 sc_fxval
7.10.13.1 Description
7.10.13.2 Class definition
368 7.10.13.3 Constraints on usage
7.10.13.4 Public constructors
369 7.10.13.5 Operators
7.10.13.6 Implicit type conversion
7.10.13.7 Explicit type conversion
370 7.10.14 sc_fxval_fast
7.10.14.1 Description
7.10.14.2 Class definition
373 7.10.14.3 Constraints on usage
7.10.14.4 Public constructors
7.10.14.5 Operators
7.10.14.6 Implicit type conversion
7.10.14.7 Explicit type conversion
374 7.10.15 sc_fix
7.10.15.1 Description
7.10.15.2 Class definition
376 7.10.15.3 Constraints on usage
377 7.10.15.4 Public constructors
7.10.15.5 Assignment operators
7.10.15.6 Bitwise operators
7.10.16 sc_ufix
7.10.16.1 Description
7.10.16.2 Class definition
380 7.10.16.3 Constraints on usage
7.10.16.4 Public constructors
7.10.16.5 Assignment operators
7.10.16.6 Bitwise operators
7.10.17 sc_fix_fast
7.10.17.1 Description
7.10.17.2 Class definition
382 7.10.17.3 Constraints on usage
7.10.17.4 Public constructors
383 7.10.17.5 Assignment operators
7.10.17.6 Bitwise operators
7.10.18 sc_ufix_fast
7.10.18.1 Description
7.10.18.2 Class definition
385 7.10.18.3 Constraints on usage
7.10.18.4 Public constructors
386 7.10.18.5 Assignment operators
7.10.18.6 Bitwise operators
7.10.19 sc_fixed
7.10.19.1 Description
7.10.19.2 Class definition
388 7.10.19.3 Constraints on usage
7.10.19.4 Public constructors
7.10.19.5 Assignment operators
7.10.20 sc_ufixed
7.10.20.1 Description
7.10.20.2 Class definition
390 7.10.20.3 Constraints on usage
7.10.20.4 Public constructors
7.10.20.5 Assignment operators
7.10.21 sc_fixed_fast
7.10.21.1 Description
7.10.21.2 Class definition
392 7.10.21.3 Constraints on usage
7.10.21.4 Public constructors
7.10.21.5 Assignment operators
7.10.22 sc_ufixed_fast
7.10.22.1 Description
393 7.10.22.2 Class definition
394 7.10.22.3 Constraints on usage
395 7.10.22.4 Public constructors
7.10.22.5 Assignment operators
7.10.23 Bit-selects
7.10.23.1 Description
7.10.23.2 Class definition
397 7.10.23.3 Constraints on usage
7.10.23.4 Assignment operators
7.10.23.5 Implicit type conversion
398 7.10.24 Part-selects
7.10.24.1 Description
7.10.24.2 Class definition
403 7.10.24.3 Constraints on usage
7.10.24.4 Assignment operators
7.10.24.5 Bitwise operators
7.10.24.6 Implicit type conversion
404 7.10.24.7 Explicit type conversion
7.11 Contexts
7.11.1 Overview
7.11.2 sc_length_param
7.11.2.1 Description
7.11.2.2 Class definition
405 7.11.2.3 Constraints on usage
7.11.2.4 Public constructors
7.11.2.5 Public member functions
7.11.2.6 Public operators
7.11.3 sc_length_context
7.11.3.1 Description
7.11.3.2 Class definition
406 7.11.3.3 Public constructor
7.11.3.4 Public member functions
7.11.4 sc_fxtype_params
7.11.4.1 Description
7.11.4.2 Class definition
407 7.11.4.3 Constraints on usage
7.11.4.4 Public constructors
408 7.11.4.5 Public member functions
7.11.4.6 Operators
409 7.11.5 sc_fxtype_context
7.11.5.1 Description
7.11.5.2 Class definition
7.11.5.3 Public constructor
7.11.5.4 Public member functions
410 7.11.6 sc_fxcast_switch
7.11.6.1 Description
7.11.6.2 Class definition
7.11.6.3 Public constructors
7.11.6.4 Public member functions
7.11.6.5 Explicit conversion
7.11.6.6 Operators
411 7.11.7 sc_fxcast_context
7.11.7.1 Description
7.11.7.2 Class definition
7.11.7.3 Public constructor
7.11.7.4 Public member functions
412 7.12 Control of string representation
7.12.1 Description
7.12.2 Class definition
7.12.3 Functions
413 8. SystemC utilities
8.1 Trace files
8.1.1 Overview
8.1.2 Class definition and function declarations
8.1.3 sc_trace_file
414 8.1.4 sc_create_vcd_trace_file
8.1.5 sc_close_vcd_trace_file
8.1.6 sc_write_comment
8.1.7 sc_trace
416 8.2 sc_report
8.2.1 Description
8.2.2 Class definition
417 8.2.3 Constraints on usage
8.2.4 sc_verbosity
418 8.2.5 sc_severity
8.2.6 Copy constructor and assignment
8.2.7 Member functions
419 8.3 sc_report_handler
8.3.1 Description
8.3.2 Class definition
421 8.3.3 Constraints on usage
8.3.4 sc_actions
422 8.3.5 report
8.3.6 set_actions
423 8.3.7 stop_after
424 8.3.8 get_count
8.3.9 Verbosity level
425 8.3.10 suppress and force
8.3.11 set_handler
426 8.3.12 get_new_action_id
8.3.13 sc_interrupt_here and sc_stop_here
8.3.14 get_cached_report and clear_cached_report
427 8.3.15 set_log_file_name and get_log_file_name
8.4 sc_exception
8.4.1 Description
8.4.2 Class definition
428 8.5 sc_vector
8.5.1 Description
8.5.2 Class definition
431 8.5.3 Constraints on usage
8.5.4 Constructors and destructors
432 8.5.5 init and create_element
434 8.5.6 Incremental additions to sc_vector during elaboration phase
8.5.7 kind, size, get_elements
8.5.8 operator[] and at
435 8.5.9 Iterators
8.5.10 bind
437 8.5.11 sc_assemble_vector
439 8.6 Utility functions
8.6.1 Function declarations
8.6.2 sc_abs
440 8.6.3 sc_max
8.6.4 sc_min
8.6.5 Version and copyright
442 9. Overview of TLM-2.0 and compliance with TLM-2.0 standard
9.1 Overview
443 9.2 Compliance with the TLM-2.0 standard
444 10. Introduction to TLM-2.0
10.1 Background
10.2 Transaction-level modeling, use cases, and abstraction
445 10.3 Coding styles
10.3.1 Overview
10.3.2 Untimed coding style
446 10.3.3 Loosely-timed coding style and temporal decoupling
447 10.3.4 Synchronization in loosely-timed models
10.3.5 Approximately-timed coding style
448 10.3.6 Characterization of loosely-timed and approximately-timed coding styles
10.3.7 Switching between loosely-timed and approximately-timed modeling
10.3.8 Cycle-accurate modeling
10.3.9 Blocking versus non-blocking transport interfaces
449 10.3.10 Use cases and coding styles
10.4 Initiators, targets, sockets, and transaction bridges
451 10.5 DMI and debug transport interfaces
10.6 Combined interfaces and sockets
452 10.7 Namespaces
10.8 Header files and version numbers
10.8.1 Overview
10.8.2 Software version information
10.8.3 Definitions
453 10.8.4 Rules
454 11. TLM-2.0 core interfaces
11.1 Overview
11.2 Transport interfaces
11.2.1 Overview
11.2.2 Blocking transport interface
11.2.2.1 Introduction
455 11.2.2.2 Class definition
11.2.2.3 The TRANS template argument
11.2.2.4 Rules
456 11.2.2.5 Message sequence chart—blocking transport
457 11.2.2.6 Message sequence chart—temporal decoupling
458 11.2.2.7 Message sequence chart—the time quantum
459 11.2.3 Non-blocking transport interface
11.2.3.1 Introduction
11.2.3.2 Class definition
460 11.2.3.3 The TRANS and PHASE template arguments
11.2.3.4 The nb_transport_fw and nb_transport_bw calls
11.2.3.5 The trans argument
461 11.2.3.6 The phase argument
11.2.3.7 The tlm_sync_enum return value
462 11.2.3.8 tlm_sync_enum summary
463 11.2.3.9 Message sequence chart—using the backward path
464 11.2.3.10 Message sequence chart—using the return path
465 11.2.3.11 Message sequence chart—early completion
466 11.2.3.12 Message sequence chart—timing annotation
467 11.2.4 Timing annotation with the transport interfaces
11.2.4.1 Overview
11.2.4.2 The sc_time argument
470 11.2.5 Migration path from TLM-1
11.3 Direct memory interface
11.3.1 Introduction
471 11.3.2 Class definition
472 11.3.3 get_direct_mem_ptr
473 11.3.4 template argument and tlm_generic_payload class
474 11.3.5 tlm_dmi class
477 11.3.6 invalidate_direct_mem_ptr
11.3.7 DMI versus transport
478 11.3.8 DMI and temporal decoupling
11.3.9 Optimization using a DMI hint
11.4 Debug transport interface
11.4.1 Introduction
479 11.4.2 Class definition
11.4.3 TRANS template argument and tlm_generic_payload class
11.4.4 Rules
482 12. TLM-2.0 global quantum
12.1 Introduction
12.2 Header file
12.3 Class definition
483 12.4 tlm_global_quantum
484 13. Combined TLM-2.0 interfaces and sockets
13.1 Combined interfaces
13.1.1 Introduction
13.1.2 Class definition
485 13.2 Initiator and target sockets
13.2.1 Introduction
13.2.2 Class definition
489 13.2.3 tlm_base_socket_if
13.2.4 tlm_base_initiator_socket_b and tlm_base_target_socket_b
490 13.2.5 tlm_base_initiator_socket and tlm_base_target_socket
492 13.2.6 tlm_initiator_socket and tlm_target_socket
495 14. TLM-2.0 generic payload
14.1 Introduction
14.2 Extensions and interoperability
14.2.1 Overview
496 14.2.2 Use the generic payload directly, with ignorable extensions
497 14.2.3 Define a new protocol traits class containing a typedef for tlm_generic_payload
14.2.4 Define a new protocol traits class and a new transaction type
498 14.3 Generic payload attributes and member functions
14.4 Class definition
500 14.5 Generic payload memory management
504 14.6 Constructors, assignment, and destructor
14.7 Default values and modifiability of attributes
506 14.8 Option attribute
508 14.9 Command attribute
509 14.10 Address attribute
14.11 Data pointer attribute
510 14.12 Data length attribute
14.13 Byte enable pointer attribute
511 14.14 Byte enable length attribute
512 14.15 Streaming width attribute
513 14.16 DMI allowed attribute
14.17 Response status attribute
14.17.1 Overview
514 14.17.2 The standard error response
517 14.18 Endianness
14.18.1 Introduction
518 14.18.2 Rules
521 14.19 Helper functions to determine host endianness
14.19.1 Introduction
14.19.2 Definition
14.19.3 Rules
14.20 Helper functions for endianness conversion
14.20.1 Introduction
522 14.20.2 Definition
523 14.20.3 Rules
524 14.21 Generic payload extensions
14.21.1 Introduction
14.21.1.1 Overview
14.21.1.2 Ignorable extensions
14.21.1.3 Non-ignorable and mandatory extensions
14.21.2 Rationale
525 14.21.3 Extension pointers, objects and transaction bridges
14.21.4 Rules
531 15. TLM-2.0 base protocol and phases
15.1 Phases
15.1.1 Introduction
15.1.2 Class definition
532 15.1.3 Rules
533 15.2 Base protocol
15.2.1 Introduction
534 15.2.2 Class definition
15.2.3 Base protocol phase sequences
536 15.2.4 Permitted phase transitions
539 15.2.5 Ignorable phases
541 15.2.6 Base protocol timing parameters and flow control
545 15.2.7 Base protocol rules concerning timing annotation
546 15.2.8 Base protocol rules concerning b_transport
15.2.9 Base protocol rules concerning request and response ordering
547 15.2.10 Base protocol rules for switching between b_transport and nb_transport
548 15.2.11 Other base protocol rules
15.2.12 Summary of base protocol transaction ordering rules
549 15.2.13 Guidelines for creating base-protocol-compliant components
15.2.13.1 Overview
15.2.13.2 Guidelines for creating a base protocol initiator
550 15.2.13.3 Guidelines for creating an initiator that calls nb_transport
15.2.13.4 Guidelines for creating a base protocol target
15.2.13.5 Guidelines for creating a target that calls nb_transport
551 15.2.13.6 Guidelines for creating a base protocol interconnect component
552 16. TLM-2.0 utilities
16.1 Overview
16.2 Convenience sockets
16.2.1 Introduction
16.2.1.1 Overview
16.2.1.2 Summary of standard and convenience socket types
553 16.2.1.3 Permitted socket bindings
16.2.2 Simple sockets
16.2.2.1 Introduction
554 16.2.2.2 Class definition
555 16.2.2.3 Header file
556 16.2.2.4 Rules
16.2.2.5 Simple target socket b/nb conversion
559 16.2.3 Tagged simple sockets
16.2.3.1 Introduction
560 16.2.3.2 Header file
16.2.3.3 Class definition
562 16.2.3.4 Rules
16.2.4 Multi-sockets
16.2.4.1 Introduction
563 16.2.4.2 Header file
16.2.4.3 Class definition
565 16.2.4.4 Rules
568 16.3 Quantum keeper
16.3.1 Introduction
569 16.3.2 Header file
16.3.3 Class definition
16.3.4 General guidelines for processes using temporal decoupling
570 16.3.5 tlm_quantumkeeper
572 16.4 Payload event queue
16.4.1 Introduction
573 16.4.2 Header file
16.4.3 Class definition
16.4.4 Rules
574 16.5 Instance-specific extensions
16.5.1 Introduction
575 16.5.2 Header file
16.5.3 Class definition
577 17. TLM-1 message passing interface and analysis ports
17.1 Overview
17.2 Put, get, peek, and transport interfaces
17.2.1 Description
17.2.2 Class definition
579 17.2.3 Blocking versus non-blocking interfaces
580 17.2.4 Blocking interface methods
17.2.5 Non-blocking interface methods
581 17.2.6 Argument passing and transaction lifetime
582 17.2.7 Constraints on the transaction data type
17.3 TLM-1 fifo interfaces
17.3.1 Description
17.3.2 Class definition
583 17.3.3 Member functions
584 17.4 tlm_fifo
17.4.1 Description
17.4.2 Class definition
585 17.4.3 Template parameter T
17.4.4 Constructors and destructor
586 17.4.5 Member functions
587 17.4.6 Delta cycle semantics
589 17.5 Analysis interface and analysis ports
17.5.1 Overview
17.5.2 Class definition
590 17.5.3 Rules
592 Annex A (informative) Glossary
609 Annex B (informative) Introduction to SystemC
613 Annex C (informative) Deprecated features
615 Annex D (informative) Changes between IEEE Std 1666-2011 and IEEE Std 1666-2023
618 Back cover
IEEE 1666-2023
$134.33