A wrapper around a chip that implements ChipImpl.
This allows us to create and use chips without knowing their type,
but we can still downcast to the concrete type if we need to.
This is a generic trait which defines the high level chip communication primatives.
It’s functions allow for the reading and writing of data to arbirary noc endpoints on any chip
with the details of how the endpoint is accessed abstracted away.
This trait is used to abstract the interface to the lowest level
chip communication primatives. These primatives are defined to be a chip resource
which requires exclusive access to safely use.
This function will wait for the chip to be initialized.
It will return Ok(true) if the chip initialized successfully.
It will return Ok(false) if the chip failed to initialize, but we can continue running.
- This is only possible if allow_failure is true.
An Err(..) will be returned if the chip failed to initialize and we cannot continue running the chip detection sequence.
- In the case that allow_failure is false, Ok(true) will be returned as an error.