Skip to content
This repository has been archived by the owner on Jun 24, 2021. It is now read-only.

Latest commit

 

History

History
47 lines (35 loc) · 2.04 KB

FIFOFixer.md

File metadata and controls

47 lines (35 loc) · 2.04 KB

A FIFO order checker.


class TLFIFOFixer

class TLFIFOFixer(implicit p: Parameters) extends LazyModule

FIFO order: For a client whose source id is a range > 1 and asks for the FIFO order, all TileLink transactions belonging to the same source id should proceed in sequential order. To be specific, an A channel packet can be emitted only when either the previous A channel packets belongs to the same id (a burst) or all previous A channel packets have been responded by a D channel packets (a fresh transaction).

When the FIFO order is requested and violated, stall the TileLink channel (hardware deadlock).

  • node TLAdapterNode the diplomacy object to record port connections for module generation.
  • module LazyModuleImp
    • io Bundle module I/O ports:
      in HeterogeneousBag[TLBundle] input ports.
      out HeterogeneousBag[TLBundle] output ports.
    • a_id Seq[UInt] get the target fifoId using the address for channel A.
    • a_nid UInt high when no fifoId is found.
    • a_first Bool whether it is the first beat in a burst.
    • d_first Bool whether it is the first beat in a burst.
    • stalls Seq[Bool] whether the incoming packet violate any of the FIFO order rules.

object TLFIFOFixer

  • apply (x:TLOutwardNode) => TLOutwardNode wrap an outward node with a fixer.




Last updated: 19/07/2017
CC BY-NC-SA 4.0, © (2017) Wei Song
Apache 2.0, © (2016-2017) SiFive, Inc
BSD, © (2012-2014, 2016) The Regents of the University of California (Regents)