|
CIRCT 23.0.0git
|
Classes | |
| class | ChannelMMIO |
| class | ESI_Manifest_ROM |
| class | ESI_Manifest_ROM_Wrapper |
| class | MMIOIndirection |
Functions | |
| Module | HeaderMMIO (int manifest_loc) |
| type["ChannelDemuxNImpl"] | ChannelDemuxN_HalfStage_ReadyBlocking (Type data_type, int num_outs, int next_sel_width) |
| type["ChannelDemuxTree"] | ChannelDemuxTree_HalfStage_ReadyBlocking (Type data_type, int num_outs, int branching_factor_log2) |
| type["DesignResetControllerImpl"] | DesignResetController (int delay_cycles) |
| type["TaggedReadGearboxImpl"] | TaggedReadGearbox (int input_bitwidth, int output_bitwidth) |
| HostmemReadProcessor (int read_width, hostmem_module, List[esi._OutputBundleSetter] reqs) | |
| type["TaggedWriteGearboxImpl"] | TaggedWriteGearbox (int input_bitwidth, int output_bitwidth) |
| type[ 'EmitEveryNImpl'] | EmitEveryN (Type message_type, int N) |
| type["HostMemWriteProcessorImpl"] | HostMemWriteProcessor (int write_width, hostmem_module, List[esi._OutputBundleSetter] reqs) |
| typing.Type[ 'ChannelHostMemImpl'] | ChannelHostMem (int read_width, int write_width) |
| type[ 'DummyToHostEngineImpl'] | DummyToHostEngine (Type client_type) |
| type[ 'DummyFromHostEngineImpl'] | DummyFromHostEngine (Type client_type) |
| Tuple[Callable, Callable] | _resolve_engine_pair (str path) |
| type[ 'ChannelEngineService'] | ChannelEngineService (Callable to_host_engine_gen, Callable from_host_engine_gen) |
Variables | |
| int | MagicNumber = 0x207D98E5_E5100E51 |
| int | VersionNumber = 0 |
| int | IndirectionMagicNumber = 0x312bf0cc_E5100E51 |
| int | IndirectionVersionNumber = 0 |
| int | ResetMagicNumber = 0x00000E510000B007 |
| int | ResetCycles = 8192 |
|
protected |
Resolve a dotted Python import path to a
`(to_host_engine_gen, from_host_engine_gen)` tuple, used to override the
default engine pair for a specific service request.
The path may point at either:
- a module-level 2-tuple attribute, e.g.
`"mypkg.mymod.MyEnginePair"` where `MyEnginePair` is
`(MyToHost, MyFromHost)`; or
- a zero-arg factory callable returning such a tuple.
Definition at line 1317 of file common.py.
Referenced by esiaccel.bsp.common.ChannelEngineService().
| type["ChannelDemuxNImpl"] esiaccel.bsp.common.ChannelDemuxN_HalfStage_ReadyBlocking | ( | Type | data_type, |
| int | num_outs, | ||
| int | next_sel_width | ||
| ) |
N-way channel demultiplexer for valid/ready signaling. Contains
valid/ready registers on the output channels. The selection signal is now
embedded in the input channel payload as a struct {sel, data}. Input
signals ready when the selected output register is empty.
Definition at line 171 of file common.py.
References wrap().
Referenced by esiaccel.bsp.common.ChannelDemuxTree_HalfStage_ReadyBlocking().
| type["ChannelDemuxTree"] esiaccel.bsp.common.ChannelDemuxTree_HalfStage_ReadyBlocking | ( | Type | data_type, |
| int | num_outs, | ||
| int | branching_factor_log2 | ||
| ) |
Pipelined N-way channel demultiplexer for valid/ready signaling. This implementation uses a tree structure of ChannelDemuxN_HalfStage_ReadyBlocking modules to reduce fanout pressure. Supports maximum half-throughput to save complexity and area.
Definition at line 264 of file common.py.
References esiaccel.bsp.common.ChannelDemuxN_HalfStage_ReadyBlocking().
Referenced by esiaccel.bsp.common.ChannelMMIO.build_read().
| type['ChannelEngineService'] esiaccel.bsp.common.ChannelEngineService | ( | Callable | to_host_engine_gen, |
| Callable | from_host_engine_gen | ||
| ) |
Returns a channel service implementation which calls
to_host_engine_gen(<client_type>) or from_host_engine_gen(<client_type>) to
generate the to_host and from_host engines for each channel. Does not support
engines which can service multiple clients at once.
Individual service requests may override the default engine pair by passing
`options={"engine": "pkg.mod.attr"}` at the service-request call site (e.g.
`HostComms.some_bundle(AppID(...), options={"engine": "..."})`). The path
is resolved by `_resolve_engine_pair` and must yield a
`(to_host_engine_gen, from_host_engine_gen)` tuple with the same call shape
as the defaults; the override applies to every channel of that request's
bundle.
Definition at line 1354 of file common.py.
References esiaccel.bsp.common._resolve_engine_pair().
| typing.Type['ChannelHostMemImpl'] esiaccel.bsp.common.ChannelHostMem | ( | int | read_width, |
| int | write_width | ||
| ) |
Definition at line 1205 of file common.py.
References esiaccel.bsp.common.HostmemReadProcessor(), and esiaccel.bsp.common.HostMemWriteProcessor().
| type["DesignResetControllerImpl"] esiaccel.bsp.common.DesignResetController | ( | int | delay_cycles | ) |
Counts `delay_cycles` clock cycles after a reset request is observed, then asserts `design_reset` for one cycle. This module must be driven by the *external* reset only (not the reset it generates) so that the countdown is not disturbed by the reset it produces. `reset_pending` is asserted from the moment a reset is requested until it fires. It is intended to be used to quiesce the design (e.g. stop accepting new transactions) so that nothing is in flight when the reset is asserted.
| type['DummyFromHostEngineImpl'] esiaccel.bsp.common.DummyFromHostEngine | ( | Type | client_type | ) |
| type['DummyToHostEngineImpl'] esiaccel.bsp.common.DummyToHostEngine | ( | Type | client_type | ) |
| type['EmitEveryNImpl'] esiaccel.bsp.common.EmitEveryN | ( | Type | message_type, |
| int | N | ||
| ) |
Emit (forward) one message for every N input messages. The emitted message is the last one of the N received. N must be >= 1.
Definition at line 1042 of file common.py.
Referenced by esiaccel.bsp.common.HostMemWriteProcessor().
| Module esiaccel.bsp.common.HeaderMMIO | ( | int | manifest_loc | ) |
Definition at line 72 of file common.py.
References wrap().
Referenced by esiaccel.bsp.common.ChannelMMIO.build_read().
| esiaccel.bsp.common.HostmemReadProcessor | ( | int | read_width, |
| hostmem_module, | |||
| List[esi._OutputBundleSetter] | reqs | ||
| ) |
Construct a host memory read request module to orchestrate the the read connections. Responsible for both gearboxing the data, multiplexing the requests, reassembling out-of-order responses and routing the responses to the correct clients. Generate this module dynamically to allow for multiple read clients of multiple types to be directly accomodated.
Definition at line 806 of file common.py.
References esiaccel.bsp.common.TaggedReadGearbox(), and wrap().
Referenced by esiaccel.bsp.common.ChannelHostMem().
| type["HostMemWriteProcessorImpl"] esiaccel.bsp.common.HostMemWriteProcessor | ( | int | write_width, |
| hostmem_module, | |||
| List[esi._OutputBundleSetter] | reqs | ||
| ) |
Construct a host memory write request module to orchestrate the the write connections. Responsible for both gearboxing the data, multiplexing the requests, reassembling out-of-order responses and routing the responses to the correct clients. Generate this module dynamically to allow for multiple write clients of multiple types to be directly accomodated.
Definition at line 1094 of file common.py.
References esiaccel.bsp.common.EmitEveryN(), esiaccel.bsp.common.TaggedWriteGearbox(), and wrap().
Referenced by esiaccel.bsp.common.ChannelHostMem().
| type["TaggedReadGearboxImpl"] esiaccel.bsp.common.TaggedReadGearbox | ( | int | input_bitwidth, |
| int | output_bitwidth | ||
| ) |
Build a gearbox to convert the upstream data to the client data
type. Assumes a struct {tag, data} and only gearboxes the data. Tag is stored
separately and the struct is re-assembled later on.
Definition at line 720 of file common.py.
Referenced by esiaccel.bsp.common.HostmemReadProcessor().
| type["TaggedWriteGearboxImpl"] esiaccel.bsp.common.TaggedWriteGearbox | ( | int | input_bitwidth, |
| int | output_bitwidth | ||
| ) |
Build a gearbox to convert the client data to upstream write chunks.
Assumes a struct {address, tag, data} and only gearboxes the data. Tag is
stored separately and the struct is re-assembled later on.
Definition at line 917 of file common.py.
Referenced by esiaccel.bsp.common.HostMemWriteProcessor().
| int esiaccel.bsp.common.IndirectionMagicNumber = 0x312bf0cc_E5100E51 |
| int esiaccel.bsp.common.ResetMagicNumber = 0x00000E510000B007 |