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

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Sat Nov 27 22:00:36 GMT 2021


--- Comment #49 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
okaay some notes on this evening's investigation: Simulator() running on
Platform fragments has corrupted clock domains resulting in some sort
of recursive dependencies.

the solution: move the entire construction of JTAG Boundary IO creation
back out of ADICPlatform and into the JTAG class, where it used to be.

however to retain compatibility with platform resources, pad_mgr should
be moved into rhe JTAG class.

the complication is that the exact order in which pad_mgr.request_resource()
is called (and with the exact same arguments) must be precisely
and without deviation of any kind the exact order in which
Platform.request_resource is called, such that the _ports of
pad_mgr and _ports of ASICPlatform are identical.

additionally, the connectivity to jtag.ios has to come *out* of
get_input/output and move into a JTAG.elaborate special new function
that connects up the boundary scan registers.

the upshot here will be that:

* when Simulation() is called, which does NOT pass a platform
  instance into Blinker.elaborate() the pad_mgr connections become
  the external ports, which can then be manipulated by the unit test

* when ASICPlatform.build is called, the .il file is outputted with
  a stack of IOPad connections.

big redesign basically.

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

More information about the libre-soc-bugs mailing list