Closed azidar closed 7 years ago
I would be more comfortable if the multi-IO thing were not called Module--even though it is in the experimental package. If it is ultimately merged, it would be preferable to name it something else, so that Module permanently maintains the guarantee that its interface is entirely contained within (implicit clock and reset and) io.
Resolution:
MultiIOModule
, in experimental so we can change the name later. This has implicit clock and reset, using the same facility as regular IO(...) signals. Remove the clock and reset constructors, users should use withClock (and friends) constructs instead.io_
prefixes.
Summary of proposal from #507:
Mainline Chisel 3:
val io = IO(...)
io_
prefix to all portsio_
prefix to all portsExperimental Package:
val io1 = IO(...); val io2 = IO(...)
ExtModule
that keeps prefix, and users declare multiple IO's to match the underlying Verilog ports.Now, users can try using Record in mainline Chisel3 to address the proliferation of Bundles in RocketChip. After this PR, users could also import experimental (knowing that this feature could be removed) and play with a solution using multiple IOs.
If, after some experimentation, multiple IO's dependence on reflection becomes a bigger hassle than the associated gains, we will get rid of this feature from experimental.
Any objections or modifications to this proposal? @ducky64 @colinschmidt @mwachs5 @sdtwigg @aswaterman @chick and anyone else.