[Libre-soc-bugs] [Bug 50] nmigen pinmux

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Sun Nov 28 16:56:03 GMT 2021


https://bugs.libre-soc.org/show_bug.cgi?id=50

--- Comment #51 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
okaaay done, but holy cow what a mess.

* the entire pair of pad and core ResourceManagers had to be duplicated
  inside the JTAG module

  (bear in mind: Platform *derives* from ResourceManager)

* these two resources still require duplicating resources.  therefore,
  add_resources is still overridden and still adds to *BOTH* jtag.pad_mgr
  *AND* jtag.core_mgr

* everything that was previously in Platform and used Platform-as-a-ResMgr
  was moved to the JTAG module

* the wiring up of ports-to-pads is now done *inside* JTAG Manager

* **ANOTHER** ResourceManager - this time the Platform one - has *yet another*
  duplicate set of resources

* this duplicate set of resources is *ONLY* wired up if a Platform is passed
  in.

* the duplicate set of resources in Platform is wired up "direct". strictly
  speaking it is totally unnecessary, but may in future replace coriolis2
  corona (hopefully not any time soon) creation and therefore would actually
  create $Instance("coriolis2_IOPAD") and wire them up.

* all bi-directional pads had to be converted to explicit triplet individual
  pins (named padname_i, padname_o and padname_oe) otherwise internal
  assumptions deep inside Platform about bi-directional pads got thoroughly
  in the way.

what a mess.  still, it works.  oh, and no, Simulation() of build fragment
still does not work, and won't.

however now that the JTAG module creates and manages the JTAG Boundary
Scan IO entirely itself, this is completely irrelevant.  a top module
*WITHOUT* calling Platform.build() can be used directly instead.

-- 
You are receiving this mail because:
You are on the CC list for the bug.


More information about the libre-soc-bugs mailing list