[Libre-soc-bugs] [Bug 199] Layout using coriolis2 main core, 180nm

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Wed Sep 30 17:43:15 BST 2020


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

--- Comment #84 from Luke Kenneth Casson Leighton <lkcl at lkcl.net> ---
Created attachment 108
  --> https://bugs.libre-soc.org/attachment.cgi?id=108&action=edit
how jtag is organised

ok so here is how it is organised.

* the top level "core" is now called "ls180" where "test_issuer" contains
  the PowerISA.

* ls180 contains:

  - test_issuer
  - JTAG
  - Litex "stuff" mostly wishbone bus management and arbiters
  - peripherals

* JTAG has three "things" it controls:

  - IOPad testing
  - DMI
  - Wishbone
  - (we may add PLL "counter" here although it will probably be part of Core)

* Litex provides peripherals however the IO for UART and GPIO need to
  be routed *through JTAG*

* Therefore, there are some wires for UART distinguished by prefix
  "_pads_" and "_core_" such as "uart_pads_tx" and "uart_core_rx" which
  go **IN** to ls180 then come **OUT** of ls180

* these double-routed wires go SPECIFICALLY into the JTAG "IOPad testing"
  side.

  this is so that the JTAG core can "re-route" the IO Pads, taking them
  AWAY from ls180 and SPECIFICALLY connecting them DIRECTLY to the
  (real) actual IOPads through the Corona.

  this is done with MUXes, and they are, strictly speaking, not part
  of the "core".

  although, if they are not, it would be a royal nuisance to have to
  split them out into a separate file.


i *think*.... the main thing is that the JTAG clock should not be
associated with (connected to or controlled by) the pxlib "ck" lines
on the IO pads:


  # this is good

  p_sys_clk_0 : pck_px
  port map ( pad  => sys_clk
           , ck   => cki
           , vdde => vdde
           , vddi => vddi
           , vsse => vsse
           , vssi => vssi
           );


  # this is bad

  p_jtag_tck : pi_px       <- nooo! must be of type pck_px!
  port map ( ck   => cki       <- baaaad, noooo!
           , pad  => jtag_tck 
           , t    => jtag_tck_core
           , vdde => vdde
           , vddi => vddi
           , vsse => vsse
           , vssi => vssi
           );


therefore if similar to this:

   env.setCLOCK("sys_clk")

we could have:

   env.setOUTSIDEOFCORONACLOCK("jtag_tck")

and it to be treated completely differently, then that would i think work.

we also would need some of the PLL clock wires similarly.  we cannot
have them under the control of sys_clk.

is this unreasonably complex, to work out which clock is associated
with what, without splitting them into separate files?

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


More information about the libre-soc-bugs mailing list