|
CIRCT 23.0.0git
|


Public Member Functions | |
| None | __init__ (self, AcceleratorConnection conn) |
| str | get_consts_str (self, ModuleInfo module_info) |
| None | write_modules (self, Path output_dir, str system_name) |
| None | generate (self, Path output_dir, str system_name) |
Public Attributes | |
| type_planner | |
| type_emitter | |
Public Attributes inherited from esiaccel.codegen.generator.Generator | |
| manifest | |
Static Public Attributes | |
| str | language = "C++" |
Static Public Attributes inherited from esiaccel.codegen.generator.Generator | |
| Optional | language = None |
Protected Member Functions | |
| Dict[str, Instance] | _build_module_instance_map (self) |
| List[Tuple[str, str]] | _port_using_aliases (self, CppPortKind kind, str alias_prefix, types.BundlePort port) |
| CppPortGroup | _scalar_port_group (self, str member_name, types.BundlePort port, AppID appid) |
| CppPortGroup | _indexed_ports_group (self, str member_name, str appid_name, List[Tuple[AppID, types.BundlePort]] port_list) |
| CppPortGroup | _mixed_struct_group (self, str member_name, str appid_name, List[Tuple[AppID, types.BundlePort]] port_list) |
| List[CppPortGroup] | _collect_port_groups (self, Dict[AppID, types.BundlePort] ports) |
| None | _emit_module_class (self, str name, str system_name, ModuleInfo module_info, List[CppPortGroup] port_groups, TextIO out) |
Static Protected Member Functions | |
| str | _sanitize_id (str name) |
| str | _appid_expr (AppID appid) |
Protected Attributes | |
| _conn | |
Generate C++ headers from an ESI manifest.
Definition at line 41 of file generator.py.
| None esiaccel.codegen.generator.CppGenerator.__init__ | ( | self, | |
| AcceleratorConnection | conn | ||
| ) |
Reimplemented from esiaccel.codegen.generator.Generator.
Definition at line 46 of file generator.py.
References esiaccel.codegen.generator.CppGenerator.__init__().
Referenced by esiaccel.codegen.generator.CppGenerator.__init__(), synth.LongestPathCollection.drop_non_critical_paths(), and synth.LongestPathCollection.merge().
|
staticprotected |
Return `esi::AppID(...)` expression for an AppID.
Definition at line 118 of file generator.py.
Referenced by esiaccel.codegen.generator.CppGenerator._mixed_struct_group(), and esiaccel.codegen.generator.CppGenerator._scalar_port_group().
|
protected |
Walk the live hierarchy and return {module_name: first Instance}.
Definition at line 77 of file generator.py.
References esiaccel.codegen.generator.CppGenerator._conn.
Referenced by esiaccel.codegen.generator.CppGenerator.write_modules().
|
protected |
Group `ports` (AppID → BundlePort) into CppPortGroup list.
Definition at line 256 of file generator.py.
References esiaccel.codegen.generator.CppGenerator._indexed_ports_group(), esiaccel.codegen.generator.CppGenerator._mixed_struct_group(), esiaccel.codegen.generator.CppGenerator._sanitize_id(), esiaccel.codegen.generator.CppGenerator._scalar_port_group(), and append().
Referenced by esiaccel.codegen.generator.CppGenerator.write_modules().
|
protected |
Emit the full module class to `out`.
Definition at line 301 of file generator.py.
References esiaccel.codegen.generator.CppGenerator.get_consts_str().
Referenced by esiaccel.codegen.generator.CppGenerator.write_modules().
|
protected |
Build a CppPortGroup for a same-name, same-type indexed port array.
Definition at line 155 of file generator.py.
References esiaccel.codegen.generator.CppGenerator._port_using_aliases().
Referenced by esiaccel.codegen.generator.CppGenerator._collect_port_groups().
|
protected |
Build a CppPortGroup for a same-name, mixed-type indexed port group.
Definition at line 201 of file generator.py.
References esiaccel.codegen.generator.CppGenerator._appid_expr(), and esiaccel.codegen.generator.CppGenerator._port_using_aliases().
Referenced by esiaccel.codegen.generator.CppGenerator._collect_port_groups().
|
protected |
Return (alias_name, type_id) pairs to emit as `using` declarations at module-class scope for the typed-port template parameters.
Definition at line 92 of file generator.py.
References esiaccel.codegen.generator.CppGenerator.type_emitter.
Referenced by esiaccel.codegen.generator.CppGenerator._indexed_ports_group(), esiaccel.codegen.generator.CppGenerator._mixed_struct_group(), and esiaccel.codegen.generator.CppGenerator._scalar_port_group().
|
staticprotected |
Return a C++-safe identifier from an AppID name.
Definition at line 66 of file generator.py.
References isdigit.
Referenced by esiaccel.codegen.generator.CppGenerator._collect_port_groups().
|
protected |
Build a CppPortGroup for a single scalar (non-indexed) port.
Definition at line 126 of file generator.py.
References esiaccel.codegen.generator.CppGenerator._appid_expr(), and esiaccel.codegen.generator.CppGenerator._port_using_aliases().
Referenced by esiaccel.codegen.generator.CppGenerator._collect_port_groups().
| None esiaccel.codegen.generator.CppGenerator.generate | ( | self, | |
| Path | output_dir, | ||
| str | system_name | ||
| ) |
Reimplemented from esiaccel.codegen.generator.Generator.
Definition at line 482 of file generator.py.
References esiaccel.codegen.generator.CppGenerator.type_emitter, and esiaccel.codegen.generator.CppGenerator.write_modules().
| str esiaccel.codegen.generator.CppGenerator.get_consts_str | ( | self, | |
| ModuleInfo | module_info | ||
| ) |
Get the C++ code for a constant in a module.
Definition at line 52 of file generator.py.
Referenced by esiaccel.codegen.generator.CppGenerator._emit_module_class().
| None esiaccel.codegen.generator.CppGenerator.write_modules | ( | self, | |
| Path | output_dir, | ||
| str | system_name | ||
| ) |
Write the C++ header. One for each module in the manifest.
Definition at line 457 of file generator.py.
References esiaccel.codegen.generator.CppGenerator._build_module_instance_map(), esiaccel.codegen.generator.CppGenerator._collect_port_groups(), esiaccel.codegen.generator.CppGenerator._emit_module_class(), esi::backends::cosim::RpcClient::Impl.manifest, esiaccel.accelerator.AcceleratorConnection.manifest(), and esiaccel.codegen.generator.Generator.manifest.
Referenced by esiaccel.codegen.generator.CppGenerator.generate().
|
protected |
Definition at line 48 of file generator.py.
Referenced by esiaccel.codegen.generator.CppGenerator._build_module_instance_map().
|
static |
Definition at line 44 of file generator.py.
| esiaccel.codegen.generator.CppGenerator.type_emitter |
Definition at line 50 of file generator.py.
Referenced by esiaccel.codegen.generator.CppGenerator._port_using_aliases(), and esiaccel.codegen.generator.CppGenerator.generate().
| esiaccel.codegen.generator.CppGenerator.type_planner |
Definition at line 49 of file generator.py.