IEEE 1666-2023
$134.33
IEEE Standard for Standard SystemC® Language Reference Manual (Published)
Published By | Publication Date | Number of Pages |
IEEE | 2023 | 618 |
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. (Thanks to our sponsor, the PDF of this standard is available at no charge through the IEEE GET Program https://ieeexplore.ieee.org/browse/standards/get-program/page/series?id=80)
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 |