[Libre-soc-bugs] [Bug 805] New: gram randomly comes up in an unworkable condition

bugzilla-daemon at libre-soc.org bugzilla-daemon at libre-soc.org
Sat Apr 9 21:07:59 BST 2022


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

            Bug ID: 805
           Summary: gram randomly comes up in an unworkable condition
           Product: Libre-SOC's first SoC
           Version: unspecified
          Hardware: Other
                OS: Other
            Status: CONFIRMED
          Severity: major
          Priority: ---
         Component: Source Code
          Assignee: lkcl at lkcl.net
          Reporter: tpearson at raptorengineering.com
                CC: libre-soc-bugs at lists.libre-soc.org
   NLnet milestone: ---

The current implementation of gram is bistable, with a working state and a
non-working state, randomly entered at FPGA clock tree reset.  If the FPGA
enters the working state, memory access are reliable until another reset (or
reprogram) is issued, at which point the device has a 50% chance to enter the
non-working state.  Similarly, in the non-working state the device has a 50%
change of entering the working state on reset / reprogram.

After significant debugging effort, the root cause of this has been located.

In an nutshell, the DDR3 interface blocks require two aligned clocks, the ECLK
(DDR clock) and SCLK (SDR clock).  In the working state, the transmitter blocks
are aligned with the receiver blocks, and in the non-working state they are
misaligned by 1T (1 ECLK period, or 1/2 SCLK period).

The ECP5 relies on a single master reset wire, shared among all DDR primitives
in a specific logical controller, to synchronize the interface blocks at
startup.  While this reset wire has been plumbed to the data I/O blocks, it is
absent from the address / command blocks where it is hardwired by nmigen to 0. 
This means the address / command generator can be up to 1/2 SCLK out of
alignment with the rest of the system, and this unwanted phase delay is
randomly applied at startup from analog stochastic behavior.

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


More information about the libre-soc-bugs mailing list