Skip to content

Support streaming control in simulation #135

@anandhv

Description

@anandhv

If the IP uses streaming control:

  • instead of writing to the start bit in the CRA, call a new simMMD function (name to be specified by Peter, let's call it streaming_start for this writeup). Provide an ID of the kernel that is being started (the type of this ID is TBD....likely it will be kernel name). streaming_start() will return a status code (pass/fail). streaming_start() will write to the corresponding streaming BFM (hostchannel BFM). If the BFM is somehow full (very unlikely), will return fail. Runtime can error out.
  • when IP's done output asserts, it will be captured by the corresponding streaming BFM (hostchannel BFM) which will do a write to corresponding socket. At the same time, a kernel interrupt will be triggered (TBD exactly how the sim process will do this, but Bain and I have some ideas). Runtime will call a new simMMD function (Peter to pick a name, let's call 'streaming_done' for this writeup). Peter will look at how the runtime currently handles the case of multiple kernels being finished at the same time and we'll implement streaming_done() behave similarly. Perhaps the runtime does a round-robin of all kernels' done status. But basically this function will tell the runtime which kernel(s) are done, and then read/pop from the hostchannel socket. We'll need to decide if this function should also communicate if a given kernel has multiple dones. Exact interface TBD.

Metadata

Metadata

Labels

enhancementNew feature or request

Type

No type

Projects

No projects

Milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions