Warum sind Latch-basierte Designs heutzutage nicht mehr üblich?

Fast jeder ASIC da draußen basiert auf Flip-Flops. Zusammenfassend ist DFF zwei dicht zusammengeschobene Latches. Während Sie in einem Latch-basierten Design diese beiden Latches "trennen" und Logik dazwischen quetschen können. Ein Latch-basiertes Design hat mehrere Vorteile:

  1. Zeitausleihe: kann das Timing sehr entspannen
  2. Reduzierter Flächen- und Stromverbrauch: Sie erhalten die gleiche Logik mit der Hälfte der Register

Nachteile:

  1. Es sind Zweiphasenuhren mit Totzeit erforderlich
  2. Es ist schwer, sich um das Konzept zu kümmern
  3. Tools unterstützen das Konzept nicht ohne Weiteres
  4. Schwer zu prototypisieren. Jedes FPGA da draußen hat ein DFF in seiner Zelle, kein Latch
  5. Es ist schwer, eine Scan-Kette zu erstellen

Sind diese Nachteile so schwerwiegend, dass die Verriegelungsdesigns aufgegeben wurden? Ich meine, wenn wir die richtigen EDA-Tools und FPGAs hätten, könnten wir es immer noch tun, oder? Oder übersehe ich hier etwas wirklich Wichtiges?

Das Ausgleichen beider Flanken einer Uhr über den physischen Bereich und die Prozessvariation ist ein Albtraum. Single-Edge-Clock macht schon genug Probleme.
Ein modernes Flip-Flop besteht nicht aus zwei zusammengedrückten Latches, es ist eine asynchrone Zustandsmaschine, die zur Implementierung des Flip-Flop-Verhaltens gebaut wurde. Die Master-Slave-Designs, die Sie oft in Lehrmaterialien sehen, werden nicht wirklich verwendet.
@ Austin Ich bin eher anderer Meinung. Wenn Sie Schaltpläne von DFFs in gängigen CMOS-Bibliotheken nachschlagen, finden Sie zwei Latches (wobei einer der Latch-Inverter ein Übertragungsinverter ist), die durch 2 Übertragungsgatter mit zueinander invertierten Takten getrennt sind

Antworten (2)

Ihre „Vorteile“ sind nicht stichhaltig.

Moderne Synthesewerkzeuge können Logik um Register verschieben, um das Timing zu optimieren, daher bieten Latches dort keinen Vorteil.

Wie bekommt man "die Hälfte der Register", indem man sie aufteilt? Klingt für mich nach der gleichen Anzahl von Registern.

Stellen Sie sich einen Pipeline-Prozessor mit 6 Pipeline-Stufen vor. Das bedeutet, 6x Stufen von Flip-Flops, die jeweils zwei Latches enthalten. Beim Latch-basierten Design haben Sie nur 3 Stufen für jeden High-Phase- und Low-Phase-Takt, also die Hälfte der Gesamtmenge. Aber ein guter Punkt zum Register-Retiming.
@artemonster Ein Design, das 6 Pipeline-Stufen erfordert, besteht aus 6 x 18 Logikebenen (oder was auch immer). Wenn Sie dies in hohe und niedrige Taktphasen aufteilen, benötigen Sie 12 x 9 Logikebenen. Weitere Pipeline-Stufen werden hinzugefügt, um die Taktgeschwindigkeit zu erhöhen, nicht weil die Architektur dies erfordert.
@SeanHoulihane Es tut mir leid, der Stapelaustausch ist bei mir ausgefallen, sodass ich das Bild nicht direkt hochladen kann, aber bitte beziehen Sie sich auf dieses Bild: 2.bp.blogspot.com/-D-zIa3pSNcU/TZBTbYsUP_I/AAAAAAAAADI/… Sie haben das dieselbe Anzahl von Pipeline-Stufen und dieselbe Menge an Logik dazwischen, aber Sie verwenden nicht "zwei Latches" pro Stufe, um einen Flop zu erstellen, sondern verwenden 1 Latch und einen zweiphasigen Takt.

Ich stimme Ihrer Zusammenfassung dessen, was ein DFF ist, nicht zu. Ein DFF garantiert, dass sich das Timing nur auf ein Ereignis beziehen muss: die steigende Flanke der Uhr.

Ihre Idee ist es, völlig asynchrone Designs zu erstellen. Nun ... viel Glück beim Timing Closure mit einem solchen Design. Es wäre ein Albtraum.

eeeeeh, was? Ich habe noch nie von Asynchronität gesprochen. Entwürfe. Ich meine Latch-basierte Designs, die auf Zweiphasentakten basieren.