IEEE 1666-2005
$226.42
IEEE Standard SystemC(R) Language Reference Manual
Published By | Publication Date | Number of Pages |
IEEE | 2005 | 441 |
New IEEE Standard – Superseded. SystemC(R) is defined in this standard. SystemC(R) is an ANSI 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(R) class library so that a SystemC(R) implementation can be developed with reference to this standard alone. The primary audiences for this standard are the implementers of the SystemC(R) library, the implementers of tools supporting the class library, and users of the class library. The IEEE 1666™ program grants public access to view and download the current individual IEEE standard at no charge in PDF format thanks to the Open System C Initiative. Visit https://ieeexplore.ieee.org/browse/standards/get-program/page for details.
PDF Catalog
PDF Pages | PDF Title |
---|---|
1 | IEEE Std 1666-2005, IEEE Standard SystemC® Language Reference Manual |
3 | Title page |
6 | Introduction Notice to users Errata Interpretations Patents |
7 | Participants |
9 | CONTENTS |
19 | 1. Overview 1.1 Scope 1.2 Purpose 1.3 Subsets 1.4 Relationship with C++ |
20 | 1.5 Guidance for readers |
21 | 2. References |
22 | 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 |
24 | 3.2 Syntactical conventions 3.2.1 Implementation-defined 3.2.2 Disabled 3.2.3 Ellipsis (…) 3.2.4 Class names |
25 | 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 whose return type is a reference or a pointer |
27 | 3.3.4 Namespaces and internal naming 3.3.5 Non-compliant applications and errors |
28 | 3.4 Notes and examples |
29 | 4. Elaboration and simulation semantics 4.1 Elaboration 4.1.1 Instantiation |
31 | 4.1.2 Process macros 4.1.3 Port binding and export binding |
32 | 4.1.4 Setting the time resolution 4.2 Simulation |
33 | 4.2.1 The scheduling algorithm |
35 | 4.2.2 Cycles in the scheduling algorithm |
36 | 4.3 Running elaboration and simulation 4.3.1 Function declarations 4.3.2 Function sc_elab_and_sim |
37 | 4.3.3 Functions sc_argc and sc_argv 4.3.4 Running under application control using functions sc_main and sc_start |
38 | 4.3.5 Running under control of the kernel 4.4 Elaboration and simulation callbacks |
39 | 4.4.1 before_end_of_elaboration |
40 | 4.4.2 end_of_elaboration |
41 | 4.4.3 start_of_simulation 4.4.4 end_of_simulation |
42 | 4.5 Other functions related to the scheduler 4.5.1 Function declarations 4.5.2 Function sc_stop, sc_set_stop_mode, and sc_get_stop_mode |
43 | 4.5.3 Function sc_time_stamp |
44 | 4.5.4 Function sc_delta_count 4.5.5 Function sc_is_running |
45 | 5. Core language class definitions 5.1 Class header files 5.1.1 #include “systemc” 5.1.2 #include “systemc.h” |
47 | 5.2 sc_module 5.2.1 Description 5.2.2 Class definition |
49 | 5.2.3 Constraints on usage 5.2.4 kind 5.2.5 SC_MODULE |
50 | 5.2.6 Constructors 5.2.7 SC_CTOR |
51 | 5.2.8 SC_HAS_PROCESS 5.2.9 SC_METHOD, SC_THREAD, SC_CTHREAD |
52 | 5.2.10 Method process |
53 | 5.2.11 Thread and clocked thread processes |
54 | 5.2.12 Clocked thread processes and reset_signal_is |
55 | 5.2.13 sensitive |
56 | 5.2.14 dont_initialize |
57 | 5.2.15 set_stack_size 5.2.16 next_trigger |
59 | 5.2.17 wait |
61 | 5.2.18 Positional port binding |
62 | 5.2.19 before_end_of_elaboration, end_of_elaboration, start_of_simulation, end_of_simulation |
63 | 5.2.20 get_child_objects 5.2.21 sc_gen_unique_name |
64 | 5.2.22 sc_behavior and sc_channel |
65 | 5.3 sc_module_name 5.3.1 Description 5.3.2 Class definition 5.3.3 Constraints on usage |
66 | 5.3.4 Module hierarchy 5.3.5 Member functions |
68 | 5.4 sc_sensitive† 5.4.1 Description 5.4.2 Class definition 5.4.3 Constraints on usage 5.4.4 operator<< |
70 | 5.5 sc_spawn_options and sc_spawn 5.5.1 Description 5.5.2 Class definition |
71 | 5.5.3 Constraints on usage 5.5.4 Constructors 5.5.5 Member functions |
72 | 5.5.6 sc_spawn |
74 | 5.5.7 SC_FORK and SC_JOIN |
76 | 5.6 sc_process_handle 5.6.1 Description 5.6.2 Class definition |
77 | 5.6.3 Constraints on usage 5.6.4 Constructors 5.6.5 Member functions |
79 | 5.6.6 sc_get_current_process_handle |
80 | 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 |
83 | 5.8 sc_event_and_list† and sc_event_or_list† 5.8.1 Description 5.8.2 Class definition 5.8.3 Constraints on usage 5.8.4 Event lists |
84 | 5.9 sc_event 5.9.1 Description 5.9.2 Class definition 5.9.3 Constraints on usage 5.9.4 notify and cancel |
85 | 5.9.5 Event lists 5.9.6 Multiple event notifications |
86 | 5.10 sc_time 5.10.1 Description 5.10.2 Class definition |
87 | 5.10.3 Time resolution 5.10.4 Functions and operators 5.10.5 SC_ZERO_TIME |
89 | 5.11 sc_port 5.11.1 Description 5.11.2 Class definition |
90 | 5.11.3 Template parameters |
91 | 5.11.4 Constraints on usage |
92 | 5.11.5 Constructors 5.11.6 kind 5.11.7 Named port binding |
93 | 5.11.8 Member functions for bound ports and port-to-port binding |
97 | 5.11.9 before_end_of_elaboration, end_of_elaboration, start_of_simulation, end_of_simulation |
98 | 5.12 sc_export 5.12.1 Description 5.12.2 Class definition |
99 | 5.12.3 Template parameters 5.12.4 Constraints on usage 5.12.5 Constructors 5.12.6 kind |
100 | 5.12.7 Export binding |
101 | 5.12.8 Member functions for bound exports and export-to-export binding |
102 | 5.12.9 before_end_of_elaboration, end_of_elaboration, start_of_simulation, end_of_simulation |
103 | 5.13 sc_interface 5.13.1 Description 5.13.2 Class definition 5.13.3 Constraints on usage |
104 | 5.13.4 register_port 5.13.5 default_event |
106 | 5.14 sc_prim_channel 5.14.1 Description 5.14.2 Class definition |
107 | 5.14.3 Constraints on usage 5.14.4 Constructors 5.14.5 kind 5.14.6 request_update and update |
108 | 5.14.7 next_trigger and wait 5.14.8 before_end_of_elaboration, end_of_elaboration, start_of_simulation, end_of_simulation |
110 | 5.15 sc_object 5.15.1 Description 5.15.2 Class definition |
111 | 5.15.3 Constraints on usage 5.15.4 Constructors and hierarchical names |
112 | 5.15.5 name, basename, and kind |
113 | 5.15.6 print and dump 5.15.7 Functions for object hierarchy traversal |
115 | 5.15.8 Member functions for attributes |
117 | 5.16 sc_attr_base 5.16.1 Description 5.16.2 Class definition 5.16.3 Member functions |
118 | 5.17 sc_attribute 5.17.1 Description 5.17.2 Class definition 5.17.3 Template parameters 5.17.4 Member functions and data members |
119 | 5.18 sc_attr_cltn 5.18.1 Description 5.18.2 Class definition 5.18.3 Constraints on usage 5.18.4 Iterators |
121 | 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 |
122 | 6.2 sc_signal_in_if and sc_signal_in_if 6.2.1 Description 6.2.2 Class definition |
123 | 6.2.3 Member functions |
124 | 6.3 sc_signal_inout_if 6.3.1 Description 6.3.2 Class definition 6.3.3 write |
125 | 6.4 sc_signal 6.4.1 Description 6.4.2 Class definition |
126 | 6.4.3 Template parameter T 6.4.4 Reading and writing signals |
127 | 6.4.5 Constructors 6.4.6 register_port 6.4.7 Member functions for reading |
128 | 6.4.8 Member functions for writing 6.4.9 Member functions for events 6.4.10 Diagnostic member functions |
129 | 6.4.11 operator<< |
131 | 6.5 sc_signal and sc_signal 6.5.1 Description 6.5.2 Class definition |
132 | 6.5.3 Member functions |
134 | 6.6 sc_buffer 6.6.1 Description 6.6.2 Class definition 6.6.3 Constructors |
135 | 6.6.4 Member functions |
137 | 6.7 sc_clock 6.7.1 Description 6.7.2 Class definition |
138 | 6.7.3 Characteristic properties 6.7.4 Constructors 6.7.5 write 6.7.6 Diagnostic member functions |
139 | 6.7.7 before_end_of_elaboration 6.7.8 sc_in_clk |
140 | 6.8 sc_in 6.8.1 Description 6.8.2 Class definition |
141 | 6.8.3 Member functions 6.8.4 Function sc_trace 6.8.5 end_of_elaboration |
142 | 6.9 sc_in and sc_in 6.9.1 Description 6.9.2 Class definition |
144 | 6.9.3 Member functions |
145 | 6.10 sc_inout 6.10.1 Description 6.10.2 Class definition |
146 | 6.10.3 Member functions 6.10.4 initialize 6.10.5 Function sc_trace |
147 | 6.10.6 end_of_elaboration 6.10.7 Binding |
148 | 6.11 sc_inout and sc_inout 6.11.1 Description 6.11.2 Class definition |
150 | 6.11.3 Member functions |
151 | 6.12 sc_out 6.12.1 Description 6.12.2 Class definition 6.12.3 Member functions |
152 | 6.13 sc_signal_resolved 6.13.1 Description 6.13.2 Class definition 6.13.3 Constructors |
153 | 6.13.4 Resolution semantics |
154 | 6.13.5 Member functions |
155 | 6.14 sc_in_resolved 6.14.1 Description 6.14.2 Class definition 6.14.3 Member functions |
156 | 6.15 sc_inout_resolved 6.15.1 Description 6.15.2 Class definition 6.15.3 Member functions |
157 | 6.16 sc_out_resolved 6.16.1 Description 6.16.2 Class definition 6.16.3 Member functions |
158 | 6.17 sc_signal_rv 6.17.1 Description 6.17.2 Class definition 6.17.3 Semantics and member functions |
160 | 6.18 sc_in_rv 6.18.1 Description 6.18.2 Class definition 6.18.3 Member functions |
161 | 6.19 sc_inout_rv 6.19.1 Description 6.19.2 Class definition 6.19.3 Member functions |
163 | 6.20 sc_out_rv 6.20.1 Description 6.20.2 Class definition 6.20.3 Member functions |
164 | 6.21 sc_fifo_in_if 6.21.1 Description 6.21.2 Class definition 6.21.3 Member functions |
166 | 6.22 sc_fifo_out_if 6.22.1 Description 6.22.2 Class definition 6.22.3 Member functions |
168 | 6.23 sc_fifo 6.23.1 Description 6.23.2 Class definition |
169 | 6.23.3 Template parameter T 6.23.4 Constructors |
170 | 6.23.5 register_port 6.23.6 Member functions for reading 6.23.7 Member functions for writing |
171 | 6.23.8 The update phase 6.23.9 Member functions for events 6.23.10 Member functions for available values and free slots |
172 | 6.23.11 Diagnostic member functions 6.23.12 operator<< |
174 | 6.24 sc_fifo_in 6.24.1 Description 6.24.2 Class definition 6.24.3 Member functions |
175 | 6.25 sc_fifo_out 6.25.1 Description 6.25.2 Class definition 6.25.3 Member functions |
178 | 6.26 sc_mutex_if 6.26.1 Description 6.26.2 Class definition 6.26.3 Member functions |
179 | 6.27 sc_mutex 6.27.1 Description 6.27.2 Class definition 6.27.3 Constructors |
180 | 6.27.4 Member functions |
181 | 6.28 sc_semaphore_if 6.28.1 Description 6.28.2 Class definition 6.28.3 Member functions |
182 | 6.29 sc_semaphore 6.29.1 Description 6.29.2 Class definition 6.29.3 Constructors |
183 | 6.29.4 Member functions |
184 | 6.30 sc_event_queue 6.30.1 Description 6.30.2 Class definition 6.30.3 Constraints on usage 6.30.4 Constructors |
185 | 6.30.5 kind 6.30.6 Member functions |
187 | 7. Data types 7.1 Introduction |
190 | 7.2 Common characteristics 7.2.1 Initialization and assignment operators |
191 | 7.2.2 Precision of arithmetic expressions |
192 | 7.2.3 Base class default word length |
193 | 7.2.4 Word length 7.2.5 Bit-select 7.2.6 Part-select |
194 | 7.2.7 Concatenation |
196 | 7.2.8 Reduction operators 7.2.9 Integer conversion 7.2.10 String input and output |
197 | 7.2.11 Conversion of application-defined types in integer expressions |
198 | 7.3 String literals |
200 | 7.4 sc_value_base† 7.4.1 Description |
202 | 7.5 Limited-precision integer types 7.5.1 Type definitions |
203 | 7.5.2 sc_int_base |
208 | 7.5.3 sc_uint_base |
212 | 7.5.4 sc_int |
215 | 7.5.5 sc_uint |
217 | 7.5.6 Bit-selects |
221 | 7.5.7 Part-selects |
227 | 7.6 Finite-precision integer types 7.6.1 Type definitions 7.6.2 Constraints on usage 7.6.3 sc_signed |
234 | 7.6.4 sc_unsigned |
241 | 7.6.5 sc_bigint |
243 | 7.6.6 sc_biguint |
245 | 7.6.7 Bit-selects |
249 | 7.6.8 Part-selects |
254 | 7.7 Integer concatenations 7.7.1 Description 7.7.2 Class definition |
255 | 7.7.3 Constraints on usage |
256 | 7.7.4 Assignment operators 7.7.5 Implicit type conversion 7.7.6 Explicit type conversion 7.7.7 Other member functions |
257 | 7.8 Generic base proxy class 7.8.1 Description 7.8.2 Class definition 7.8.3 Constraints on usage |
258 | 7.9 Logic and vector types 7.9.1 Type definitions 7.9.2 sc_logic |
262 | 7.9.3 sc_bv_base |
269 | 7.9.4 sc_lv_base |
275 | 7.9.5 sc_bv |
277 | 7.9.6 sc_lv |
279 | 7.9.7 Bit-selects |
282 | 7.9.8 Part-selects |
288 | 7.9.9 Concatenations |
296 | 7.10 Fixed-point types 7.10.1 Fixed-point representation |
297 | 7.10.2 Fixed-point type conversion 7.10.3 Fixed-point data types |
299 | 7.10.4 Fixed-point expressions and operations |
302 | 7.10.5 Bit and part selection 7.10.6 Variable-precision fixed-point value limits 7.10.7 Fixed-point word length and mode |
305 | 7.10.8 Conversions to character string |
307 | 7.10.9 Finite word-length effects |
331 | 7.10.10 sc_fxnum |
335 | 7.10.11 sc_fxnum_fast |
340 | 7.10.12 sc_fxval |
344 | 7.10.13 sc_fxval_fast |
349 | 7.10.14 sc_fix |
352 | 7.10.15 sc_ufix |
355 | 7.10.16 sc_fix_fast |
358 | 7.10.17 sc_ufix_fast |
361 | 7.10.18 sc_fixed |
363 | 7.10.19 sc_ufixed |
365 | 7.10.20 sc_fixed_fast |
368 | 7.10.21 sc_ufixed_fast |
370 | 7.10.22 Bit-selects |
372 | 7.10.23 Part-selects |
379 | 7.11 Contexts 7.11.1 sc_length_param |
380 | 7.11.2 sc_length_context |
381 | 7.11.3 sc_fxtype_params |
384 | 7.11.4 sc_fxtype_context |
385 | 7.11.5 sc_fxcast_switch |
386 | 7.11.6 sc_fxcast_context |
388 | 7.12 Control of string representation 7.12.1 Description 7.12.2 Class definition 7.12.3 Functions |
389 | 8. Utility class definitions 8.1 Trace files 8.1.1 Class definition and function declarations 8.1.2 sc_trace_file |
390 | 8.1.3 sc_create_vcd_trace_file 8.1.4 sc_close_vcd_trace_file 8.1.5 sc_write_comment 8.1.6 sc_trace |
393 | 8.2 sc_report 8.2.1 Description 8.2.2 Class definition 8.2.3 Constraints on usage |
394 | 8.2.4 sc_severity 8.2.5 Copy constructor and assignment 8.2.6 Member functions |
396 | 8.3 sc_report_handler 8.3.1 Description 8.3.2 Class definition |
398 | 8.3.3 Constraints on usage 8.3.4 sc_actions 8.3.5 report |
399 | 8.3.6 set_actions 8.3.7 stop_after |
400 | 8.3.8 get_count |
401 | 8.3.9 suppress and force 8.3.10 set_handler |
402 | 8.3.11 get_new_action_id 8.3.12 sc_interrupt_here and sc_stop_here 8.3.13 get_cached_report and clear_cached_report |
403 | 8.3.14 set_log_file_name and get_log_file_name |
404 | 8.4 sc_exception 8.4.1 Description 8.4.2 Definition |
405 | 8.5 Utility functions 8.5.1 Function declarations 8.5.2 sc_abs 8.5.3 sc_max 8.5.4 sc_min 8.5.5 sc_copyright |
406 | 8.5.6 sc_version 8.5.7 sc_release |
407 | Annex A (informative) Introduction to System C |
411 | Annex B (informative) Glossary |
421 | Annex C (informative) Deprecated features |
423 | Annex D (informative) Changes between the different SystemC versions |
425 | INDEX A-C |
426 | C |
427 | C-D |
428 | D-E |
429 | E-F-G-H-I |
430 | I-K-L |
431 | L-M-N |
432 | N-O |
433 | O-P |
434 | P-Q-R |
435 | R-S |
439 | S-T |
441 | T-U-V-W-X-Z |