|
CIRCT 23.0.0git
|
Public Member Functions | |
| None | __init__ (self, CppTypePlanner planner) |
| str | type_identifier (self, types.ESIType type) |
| None | write_header (self, Path output_dir, str system_name) |
Public Attributes | |
| type_id_map | |
| ordered_types | |
| has_cycle | |
Protected Member Functions | |
| str | _cpp_string_literal (self, str value) |
| str | _get_bitvector_str (self, types.ESIType type) |
| str | _storage_type (self, int bit_width, bool signed) |
| int | _type_byte_width (self, types.ESIType wrapped) |
| Tuple[str, str] | _array_base_and_suffix (self, types.ArrayType array_type) |
| str | _format_array_type (self, types.ArrayType array_type) |
| str | _cpp_type (self, types.ESIType wrapped) |
| types.ESIType | _unwrap_aliases (self, types.ESIType wrapped) |
| str | _format_array_decl (self, types.ArrayType array_type, str name) |
| str | _format_window_field_decl (self, str field_name, types.ESIType field_type) |
| str | _format_window_ctor_param (self, str field_name, types.ESIType field_type) |
| None | _emit_window_field_copy (self, TextIO hdr, str dest_expr, str src_expr, types.ESIType field_type) |
| int | _field_byte_width (self, types.ESIType field_type) |
| _analyze_window (self, types.WindowType window_type) | |
| None | _emit_struct (self, TextIO hdr, types.StructType struct_type) |
| None | _emit_union (self, TextIO hdr, types.UnionType union_type) |
| None | _emit_window (self, TextIO hdr, types.WindowType window_type) |
| None | _emit_alias (self, TextIO hdr, types.TypeAlias alias_type) |
Emit C++ headers from precomputed type ordering.
Definition at line 395 of file codegen.py.
| None esiaccel.codegen.CppTypeEmitter.__init__ | ( | self, | |
| CppTypePlanner | planner | ||
| ) |
Definition at line 398 of file codegen.py.
Referenced by synth.LongestPathCollection.drop_non_critical_paths(), and synth.LongestPathCollection.merge().
|
protected |
Extract the metadata needed to emit a bulk list window wrapper.
Definition at line 543 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._cpp_type(), esiaccel.codegen.CppTypeEmitter._storage_type(), esiaccel.codegen.CppTypeEmitter._type_byte_width(), esiaccel.codegen.CppTypePlanner._unwrap_aliases(), esiaccel.codegen.CppTypeEmitter._unwrap_aliases(), and esiaccel.codegen.CppTypeEmitter.type_id_map.
Referenced by esiaccel.codegen.CppTypeEmitter._emit_window().
|
protected |
Return the base C++ type and bracket suffix for a nested array.
Definition at line 445 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._cpp_type().
Referenced by esiaccel.codegen.CppTypeEmitter._format_array_decl(), esiaccel.codegen.CppTypeEmitter._format_array_type(), and esiaccel.codegen.CppTypeEmitter._format_window_ctor_param().
|
protected |
Escape a Python string for use as a C++ string literal.
Definition at line 407 of file codegen.py.
|
protected |
Resolve an ESI type to its C++ identifier.
Definition at line 462 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._cpp_type(), esiaccel.codegen.CppTypeEmitter._format_array_type(), esiaccel.codegen.CppTypeEmitter._get_bitvector_str(), and esiaccel.codegen.CppTypeEmitter.type_id_map.
Referenced by esiaccel.codegen.CppTypeEmitter._analyze_window(), esiaccel.codegen.CppTypeEmitter._array_base_and_suffix(), esiaccel.codegen.CppTypeEmitter._cpp_type(), esiaccel.codegen.CppTypeEmitter._emit_alias(), esiaccel.codegen.CppTypeEmitter._emit_struct(), esiaccel.codegen.CppTypeEmitter._emit_union(), esiaccel.codegen.CppTypeEmitter._format_window_ctor_param(), esiaccel.codegen.CppTypeEmitter._format_window_field_decl(), and esiaccel.codegen.CppTypeEmitter.type_identifier().
|
protected |
Emit a using alias when the alias targets a different C++ type.
Definition at line 814 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._cpp_type(), and esiaccel.codegen.CppTypeEmitter.type_id_map.
Referenced by esiaccel.codegen.CppTypeEmitter.write_header().
|
protected |
Emit a packed struct declaration plus its type id string.
Definition at line 629 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._cpp_type(), esiaccel.codegen.CppTypeEmitter._format_array_decl(), esiaccel.codegen.CppTypePlanner._unwrap_aliases(), and esiaccel.codegen.CppTypeEmitter._unwrap_aliases().
Referenced by esiaccel.codegen.CppTypeEmitter.write_header().
|
protected |
Emit a packed union declaration plus its type id string. Fields narrower than the union width get wrapper structs with a `_pad` byte array so the data sits at the MSB end, matching SV packed union layout where padding occupies the LSBs / lower addresses.
Definition at line 660 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._cpp_type(), esiaccel.codegen.CppTypeEmitter._field_byte_width(), and esiaccel.codegen.CppTypeEmitter.type_id_map.
Referenced by esiaccel.codegen.CppTypeEmitter.write_header().
|
protected |
Emit a SegmentedMessageData helper for a serial list window.
Definition at line 702 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._analyze_window(), esiaccel.codegen.CppTypeEmitter._emit_window_field_copy(), esiaccel.codegen.CppTypeEmitter._format_window_ctor_param(), and esiaccel.codegen.CppTypeEmitter._format_window_field_decl().
Referenced by esiaccel.codegen.CppTypeEmitter.write_header().
|
protected |
Copy a generated window field, preserving array semantics.
Definition at line 530 of file codegen.py.
Referenced by esiaccel.codegen.CppTypeEmitter._emit_window().
|
protected |
Compute the byte width of a field type, rounding up to full bytes.
Definition at line 539 of file codegen.py.
Referenced by esiaccel.codegen.CppTypeEmitter._emit_union().
|
protected |
Emit a field declaration for a multi-dimensional array member. The declaration flattens nested arrays into repeated bracketed sizes for C++.
Definition at line 494 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._array_base_and_suffix().
Referenced by esiaccel.codegen.CppTypeEmitter._emit_struct(), and esiaccel.codegen.CppTypeEmitter._format_window_field_decl().
|
protected |
Return the C++ type string for a nested array alias.
Definition at line 457 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._array_base_and_suffix().
Referenced by esiaccel.codegen.CppTypeEmitter._cpp_type().
|
protected |
Emit a constructor parameter for generated window helpers. Small scalar header fields are cheaper to pass by value than by reference. Larger aggregates stay as const references.
Definition at line 514 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._array_base_and_suffix(), esiaccel.codegen.CppTypeEmitter._cpp_type(), esiaccel.codegen.CppTypePlanner._unwrap_aliases(), and esiaccel.codegen.CppTypeEmitter._unwrap_aliases().
Referenced by esiaccel.codegen.CppTypeEmitter._emit_window().
|
protected |
Emit a packed field declaration for generated window helpers.
Definition at line 502 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._cpp_type(), esiaccel.codegen.CppTypeEmitter._format_array_decl(), esiaccel.codegen.CppTypePlanner._unwrap_aliases(), and esiaccel.codegen.CppTypeEmitter._unwrap_aliases().
Referenced by esiaccel.codegen.CppTypeEmitter._emit_window().
|
protected |
Get the textual code for the storage class of an integer type.
Definition at line 412 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._storage_type().
Referenced by esiaccel.codegen.CppTypeEmitter._cpp_type().
|
protected |
Get the textual code for a byte-addressable integer storage type.
Definition at line 419 of file codegen.py.
Referenced by esiaccel.codegen.CppTypeEmitter._analyze_window(), and esiaccel.codegen.CppTypeEmitter._get_bitvector_str().
|
protected |
Return the size of a fixed-width type in bytes.
Definition at line 439 of file codegen.py.
Referenced by esiaccel.codegen.CppTypeEmitter._analyze_window().
|
protected |
Strip alias wrappers to reach the underlying type.
Definition at line 488 of file codegen.py.
Referenced by esiaccel.codegen.CppTypeEmitter._analyze_window(), esiaccel.codegen.CppTypePlanner._collect_decls_from_window(), esiaccel.codegen.CppTypeEmitter._emit_struct(), esiaccel.codegen.CppTypeEmitter._format_window_ctor_param(), esiaccel.codegen.CppTypeEmitter._format_window_field_decl(), esiaccel.codegen.CppTypePlanner._is_supported_window(), and esiaccel.codegen.CppTypePlanner._ordered_emit_types().
| str esiaccel.codegen.CppTypeEmitter.type_identifier | ( | self, | |
| types.ESIType | type | ||
| ) |
Get the C++ type string for an ESI type.
Definition at line 403 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._cpp_type().
| None esiaccel.codegen.CppTypeEmitter.write_header | ( | self, | |
| Path | output_dir, | ||
| str | system_name | ||
| ) |
Emit the fully ordered types.h header into the output directory.
Definition at line 826 of file codegen.py.
References esiaccel.codegen.CppTypeEmitter._emit_alias(), esiaccel.codegen.CppTypeEmitter._emit_struct(), esiaccel.codegen.CppTypeEmitter._emit_union(), esiaccel.codegen.CppTypeEmitter._emit_window(), esiaccel.codegen.CppTypePlanner.has_cycle, esiaccel.codegen.CppTypeEmitter.has_cycle, esiaccel.codegen.CppTypePlanner.ordered_types, and esiaccel.codegen.CppTypeEmitter.ordered_types.
| esiaccel.codegen.CppTypeEmitter.has_cycle |
Definition at line 401 of file codegen.py.
Referenced by esiaccel.codegen.CppTypeEmitter.write_header().
| esiaccel.codegen.CppTypeEmitter.ordered_types |
Definition at line 400 of file codegen.py.
Referenced by esiaccel.codegen.CppTypePlanner.__init__(), and esiaccel.codegen.CppTypeEmitter.write_header().
| esiaccel.codegen.CppTypeEmitter.type_id_map |
Definition at line 399 of file codegen.py.
Referenced by esiaccel.codegen.CppTypePlanner.__init__(), esiaccel.codegen.CppTypeEmitter._analyze_window(), esiaccel.codegen.CppTypePlanner._collect_aliases(), esiaccel.codegen.CppTypePlanner._collect_structs(), esiaccel.codegen.CppTypePlanner._collect_windows(), esiaccel.codegen.CppTypeEmitter._cpp_type(), esiaccel.codegen.CppTypeEmitter._emit_alias(), esiaccel.codegen.CppTypeEmitter._emit_union(), and esiaccel.codegen.CppTypePlanner._ordered_emit_types().