Add PCA9506ish i/o expander logic block, deal with multi-targets and fix mux features #269
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This block works as an emulated PCA9506 I/O expander.
Tri-state logic control left to the user at the top. Pretty good test coverage on this one, and it leverages the common i2c target phy block like the mux also did.
This also adds a few more outputs (so backwards compatible changes) to the target phy to expose more info like start and stop which allows the upstream state machines to recover more gracefully.
This also fleshes out the missing "mixed-mode" i2c packets in the simulation controller where the controller can issue write-repeated-start-read type i2c transactions.
I added a multi-target consolidator, and multi-target test cases to both the I/O expander and the mux. Doing this uncovered a few bugs related to bus sharing, which have now been addressed and all the sims and the new and old test cases are running well.