Chip Aufbau

[ASICs]  [Chip Typen]  [Chip Aufbau]  [Entwicklung]  [Schnittstellen]  [Glossar]
 
     [Chip-Gehäuse]  [IO-Bereich]  [Spannungsversorgung]  [Core Area]  [Taksignale]  [Makros]  [Verdrahtung]  [Wafer]

RAM TypenMakros: RAMs

Die wohl am häufigsten eingesetzten Makros sind die die Speicher oder RAMs (Random Access Memory). Sie stellen i.A. die Funktion eines ASIC-Designs dar, mit der größere Mengen Daten bzw. Informationen der Applikation gespeichert und später wieder abgerufen werden. Neben der offensichtlichen Funktion der "Datenspeicherung" können weitere mit Speicherung verbundene Funktionen realisiert werden. Beispiele sind Verzögerungen (Synchronisation von Datenströmen), Taktenkopplung zwischen zwei verschiedenen Taktbereichen und weitere übergeordnete Funktionen.

Dynamische RAMs / Statische RAMs
Im Gegensatz zu dynamischen RAMs, die vorwiegend bei großen externen Speichern eingesetzt werden und die nach einer gewissen Zeit einen Refresh-Zyklus benötigen um ihren Inhalt nicht zu verlieren, handelt es sich bei den hier allgemein vorgestellten RAMs ausschließlich um statische RAMs (SRAM). Einzige Ausnahme bilden die Embedded DRAMs (eDRAM), die weiter unten beschrieben werden.

RAM-Zugriff
Der Zugriff auf einen bestimmten Speicherbereich eines RAMs erfolgt über den Adreßbus (Address Port), während die Daten über Datenbusse beschrieben bzw. gelesen werden (Data Ports). Im Gegensatz zu den externen und allgemein bekannten Speicherbausteinen auf einem Board (PCB) wie z.B. in einem PC, besitzen ASIC-RAMs keine bi-direktionalen Daten Ports, auf denen über die gleichen Datenleitungen Daten in das RAM geschrieben und zeitversetzt wieder aus ihnen ausgelesen werden können. Das Schreiben in ein ASIC-RAM erfolgt über einen eigenen Dateneingangs Port, das Lesen über einen eigenen Datenausgangs Port (s. Bild).
Ältere Technologien enthielten in der Mehrzahl asynchrone RAMs ohne einen speziellen Takteingang. In den neuen Technologien sind jedoch aufgrund der hohen Geschwindigkeiten und der einfachen Handhabbarkeit nur noch synchrone RAMs mit mindestens einem eigenen Takteingang üblich.

RAM Ports
Das allgemein bekannte RAM ist ein Single Port RAM (1p-RAM) mit einem Address-Port und jeweils einem Daten-Port zum lesen und schreiben des Speicherbereichs mit der angelegten Adresse. Darüber hinaus gibt es in den meisten Technologien Dual Port RAMs (2p-RAM) oder auch Multi Port RAMs. Der Einfachheit halber beziehe ich mich im folgenden auf die Dual Port RAMs. Eine Ausweitung der Anzahl der Ports auf 3-Port (Triple Port RAM), 4-Port usw. ist entsprechend leicht zu vollführen (s. Bild oben).
Bei den Dual Port RAMs sind insgesamt 2 Adress-Ports vorhanden, die unabhängig voneinander mit jeweils einem eigenen Takt auf die Datenbereiche des gemeinsamen RAMs zugreifen können. Für die den Adress-Ports zugeordneten zwei Daten-Ports gibt es insgesamt drei verschiedene Konfigurationsmöglichkeiten (jeweils für einen Port betrachtet):

  • W (Write)
    Dieser Port kann nur über die angelegte Adresse beschrieben werden. Das RAM stellt für diesen Port nur einen Dateneingangs-Port zu Verfügung.
  • R (Read)
    Dieser Port kann nur über die angelegte Adresse ausgelesen werden. Das RAM stellt für diesen Port einen Datenausgangangs-Port zu Verfügung.
  • RW (Read/Write)
    Dieser Port kann über die angelegte Adresse sowohl gelesen als auch beschrieben werden. Das RAM stellt für diesen Port sowohl einen Datenausgangs- als auch einen Dateneingangs-Port zu Verfügung.

Diese Konfigurationen auf ein Dual Port RAM übertragen ergibt somit folgende 4 Möglichkeiten: R/W, RW/R, RW/W und RW/RW (Natürlich muß ein RAM immer mindestens einen schreibfähigen Port haben). Das RW/RW RAM ist das universellste und kann in jede Applikation, die ein Dual Port RAM benötigt, eingesetzt werden. Es hat jedoch gegenüber RAMs mit eingeschränkten Port-Funktionen eine größere Fläche und schlägt damit teuerer zu Buche. Für ein FIFO (s.u.) benutzt man typischerweise R/W RAMs.

Kritisch bei Dual Port als auch bei Multi Port RAMs ist immer die Konsistenz der Daten für den Fall, daß gleichzeitig auf die gleiche Adresse von einem Port schreibend und von dem anderen Port lesend oder schreibend auf die gleiche Speicherzelle zugegriffen wird. Die Handhabung des resultierenden Datums im RAM selber (write/write) bzw. an dem lesenden Port (write/read) ist von Technologie und Implementation des RAMs abhängig und muß im Extremfall als undefiniert betrachtet werden.

Benutzte RAM-Größen
Der Bereich typischer Größen im ASIC eingesetzter RAMs ist sehr weit gefächert und stark von der ASIC-Applikation abhängig. Er reicht von einigen hundert Bit für Konfigurationsdaten des ASICs und kleineren FIFOs zur Taktentkopplung (s.u.)  bis hin zu mehreren 100k Bit und mehr zum Speichern und Bearbeiten von großen und/oder vielen Daten Frames (Blöcke). 1M Bit große RAMs sind auch im Inneren eines ASICs inzwischen keine Seltenheit mehr.
Bei bestimmten Applikationen ist es möglich und aufgrund von dynamischen Zuteilungsmethoden unterschiedlicher Speicheraufgaben von Vorteil, mehrere logische RAMs in einem großen physikalischen RAM zusammenzufassen. Verkettete Listen und Routingtabellen in großen Switches sind ein Beispiel hierfür. Der Zugriff der unterschiedlichen Datenquellen und -senken erfolgt zeitlich hintereinander oft mit einem entsprechend überhöhtem Takt. Die Zugriffe werden häufig über einen zwischengeschalteten Controller koordiniert, der über physikalische Ein- und Ausgangsports die logischen RAM-Bereiche beschreibt bzw. ausliest.

Größe des RAM-Anteils bei ASICs
Das Verhältnis der Flächen zwischen der Core Logik und der darin enthaltenen RAMs verschiebt sich bei vielen ASIC-Applikationen wie z.B. in der Telekommunikation mehr und mehr in Richtung der RAMs. Wird in diesen Applikationen heute noch beispielsweise 40% der Chipfläche von RAMs benutzt, wird in zukünftigen Applikationen erwartet, daß bis zu 80% der Chipfläche und mehr von RAMs besetzt sein wird. Die Anzahl der eingebauten RAM-Instanzen kann in bestimmten Applikationen leicht 100 bis 200 erreichen (z.B. Switch-ASICs).
Damit ist die Flächeneffizienz der eingesetzten RAMs einer Technologie ein entscheidender Preisfaktor bei der ASIC-Implementation geworden und wird sich in Zukunft noch weiter verschärfen. Dieses ist letztendlich auch der Grund für das Eindringen von embedded DRAM in den ASIC Core, obwohl DRAM nur mit einem aufwendigeren Prozeß produziert werden kann, der sich kommerziell nur bei großen RAMs im Bereich ab etwa einem Megabit lohnt.

 

Einsatzbereiche von RAMs

Es gibt unterschiedliche und typische Einsätze von RAMs, wovon einige im folgenden näher beschrieben werden sollen:

FIFOsFIFO
Eine spezielle Anwendung von RAMs sind die sogenannten FIFO (First In - First Out). Daten, die an dem Eingangs-Port eingeschrieben werden, können auf dem Ausgangs-Port mit einem eigenen und unabhängigen Takt in der gleichen Reihenfolge wieder ausgelesen werden. Der für ein FIFO benötigte RAM-Typ ist also ein Dual-Port RAM in der Port-Konfiguration R/W. Die Generierung der Port-Adressen erfolgt über eine Controller-Logik, die bei jedem Schreiben bzw. Lesen die Schreib- bzw. Leseadresse des so genannten Write- bzw. Read Pointers um eins erhöht und beim Überholen eines Pointers ein Fehlersignal generiert. Anwendung finden FIFOs vor allem bei Takentkopplungen, wenn Daten von einem Taktbereich (Clock Domain) an einen anderen Bereich übergeben werden müssen.

High Speed oder High Density RAMs
Bezüglich der Implementation eines bestimmten RAM-Typs gibt es in vielen Technologien jeweils zwei Repräsentationen, die im ASIC-Design in unterschiedlichen Umgebungen eingesetzt werden. Die High Speed RAMs sind gegenüber den High Density RAMs zwar schneller, sind aber aufgrund dieses Merkmals auch deutlich größer als diese. Der Einsatz von High Speed RAMs erfolgt daher in solchen ASIC-Designs, die aufgrund der Schaltungsstruktur und/oder der Technologiegrenzen beim Zugriff eine relativ geringe Timing Marge haben, während High Density RAMs in zeitunkritischen Schaltungen eingesetzt werden und die Chipfläche effektiver nutzen können.

Maskierbare RAM Ports
Manchen Applikationen benutzen RAMs mit hohen Wortbreiten bei ihrer schreibenden Funktion, während beim Lesen Datenworte mit beispielsweise nur 8 Bit ausgelesen werden sollen. Maskierbare RAMs ermöglichen es, daß mit zusätzlichen Maskierungsports nur bestimmte Bereiche eines gespeicherten Wortes ausgelesen bzw. neu beschrieben werden, während der übrige Teil des gespeicherten Wortes unverändert bleibt.

Beim Lesen macht die Maskierungsfunktion funktional zunächst keinen Sinn, da man leicht das gesamte Wort auslesen kann und die nicht benötigten Bits entsprechend ignoriert. Betrachtet man die Situation jedoch aus Sicht der Verlustleistung, ist es sehr wohl ein Unterschied, ob man immer alle 256 Bit gleichzeitig ausliest oder nur die benötigten 8 Bit an einer bestimmten Stelle innerhalb des 256 Bit Wortes. Aufgrund der Umladeprozesse innerhalb des RAMs kann bei einem eingeschränkten Zugriff auf innere Bereiche des RAMs die Gesamtverlustleistung des RAMs und damit des ASICs über diese Struktur niedrig gehalten werden. Das ASIC kann so u.U. in einem kleineren Package mit geringerer maximaler Verlustleistung implementiert werden und ist daher billiger als in einem größeren Package.

Register Files
Kleinerer RAMs im Bereich einer Kapazität von 100 bis zu einigen hundert Bit können in manchen Technologien effektiver mit sogenannten Register Files implementiert werden. Diese sind im Gegensatz zu der Full Custom Charakteristik der normalen RAMs aus normalen Flipflops und kombinatorischer Logik aufgebaut. Der Vorteil bei dieser Implementation beruht darauf, daß RAMs modular aus Zeilen- und Spalten-Controllern, Adressierungslogik und dem Kernbereich als eigentlicher Speicher aufgebaut sind. Eine Übertragung dieser Struktur auf einige wenige RAM-Bits resultiert in einer schlechteren Flächenausnutzung, da der Überschuß im Bereich der Zeilen-, Spalten und Adressierungslogik zu groß ist. Eine Speicherstruktur aus Flipflops und kombinatischer Logik bringt hier oft Flächenvorteile gegenüber den Standard-RAMs.

Embedded DRAM
Große SRAMs im Bereich einiger MBit haben einen entscheidenden Nachteil: Sie sind sehr groß und damit teuer. Weiterhin haben sie aufgrund der großen Fläche im Produktionsprozeß des ASICs einen nicht zu vernachlässigenden negativen Einfluß auf die Chipausbeute (Yield), also dem Verhältnis von funktionsfähigen Chips zu der Gesamtanzahl an Chips auf dem Wafer.

RAMs können - auf eine Technologie bezogen - nur dann entscheidend verkleinert werden, wenn die einzelnen RAM-Zellen zur Speicherung eines Bits verkleinert werden. Das gelingt nur über die Verringerung der Anzahl der beteiligten Transistoren einer Zelle und damit mit dem Übergang zu einer dynamischen RAM Zelle.
So genanntes Embedded DRAM (eDRAM) steht jedoch nur in neusten ASIC-Technologien zu Verfügung. Sie ergeben einen Flächenvorteil gegenüber SRAMs von ca. 75%. Weitere Vorteile gegenüber Lösungen mit extern installiertem DRAM sind:

  • Höhere Übertragungsbandbreite da die Datenübertragung nicht über externe Anschlüsse mit hohen Kapazitäten erfolgt
  • Geringere Verlustleistung aufgrund der deutlich geringeren Umladungsprozesse auf den kurzen internen Signalleitungen
  • Kleinerer Pin Count des Packages, da kein RAM-Interface nach außen geführt werden muß
  • Höhere Integrationsdichte auf dem PCB und damit preiswertere Systemlösung
  • Geringere Fehlerrate (Soft Errors) durch kurze Verbindungswege

Was bei eDRAMs trotz kleinerer RAM-Zellen an Overhead zusätzlich hinzukommt ist ein Refresh Controller, der die Inhalte der Speicherzellen kontinuierlich von Wort zu Wort anspricht, um den Inhalt der Zellen über die Zeit zu erhalten. Dieser Refresh-Prozeß erfolgt automatisch und kontinuierlich neben den normalen Lese- und Schreibzugriffen und hindert den “normalen” Schreib-/Lese-Einsatz nicht.
Ein Nachteil der eDRAMs ist der aufwendigere und damit teuere Produktionsprozeß der ASICs. Dieses muß bei der Preisabschätzung des ASICs den Flächenvorteilen der eDRAMs gegenübergestellt werden.

Redundanz Logik in RAMsRedundante RAMs
Große RAMs im Bereich von einem Mbit und größer weisen in der ASIC-Produktion alleine aufgrund ihrer großen Fläche und ihres kompakten Aufbaus eine tendenziell steigende Defektwahrscheinlichkeit auf und senken daher den Yield des ASICs. Um diesen Effekt teilweise zu kompensieren und den Yield zu steigern, besitzen bestimmte RAM-Typen mit  großer Speichertiefe eine sogenannte Redundanz-Logik. Diese Logik stellt einen gewissen Zeilen oder Spaltenorientierten Speicherbereich dar, der logisch an Stelle eines defekten Speicherbereichs der gleichen Struktur und Größe geschaltet werden kann. Der defekte Speicherbereich ist nach dem Umschalten für das RAM nicht mehr wirksam und ist durch die Redundanz ersetzt worden.

Um die Redundanz Logik bei defekten RAMs gegen den defekten Speicherbereich auszutauschen, bedient man sich einer von zwei möglichen Verfahren. Bei der Soft-Konfiguration wird die Konfiguration des RAMs bei jedem Einschalten des ASICs durchgeführt. Das RAM benötigt somit eine gewisse Zeit für den Selbsttest und die Selbstkonfiguration. Neben der Redundanzlogik ist ein zusätzlicher Test-Controller erforderlich, der den Test und die Konfiguration vornimmt.
Mit der Fuse- oder Hard-Konfiguration werden die RAM-Defekte nach der ASIC-Produktion lokalisiert und die logische Anordnung der Redundanz Logik mit dem Durchbrennen von Sicherungen für immer festgelegt.

Ein gravierender Nachteil bei der Einfachheit des Redundanz-Prinzips ist, daß mit dieser zusätzlichen Logik zwar der Yield eines ASICs erhöht wird, man erkauft sich diesen jedoch je nach Ausführung der Redundanz durch einen mehr oder weniger großen zusätzlichen Schaltungsaufwand. Dieser ist auch bei funktionierenden ASICs stets auf dem Chip vorhanden und trägt so zu einer größeren Fläche und damit zu einem höheren Chip-Preis bei.

RAM Compiler
Da RAMs in ASICs in vielen unterschiedlichen Größen und Konfigurationen benötigt werden und dabei extrem regelmäßige Strukturen aufweisen, kann und ist man bei der Erzeugung der RAM Libraries für Simulationen, Synthese und Layout einen speziellen effizienten Weg gegangen. Mit sogenannten RAM Compilern, denen man die vier Basisparameter RAM-Typ, Wortbreite, Speichertiefe (Anzahl der zu speichernden Worte) und Port-Konfiguration übergibt, werden sämtliche Datenbasen des RAMs vom Front-End (Simulation, Synthese) bis zum Back-End (Layout) automatisch erzeugt.

Je nach Größe und Typ des RAMs können in der Regel nicht alle möglichen Kombinationen von Wortbreite und Speichertiefe erzeugt werden und es müssen bestimmte Schrittweiten berücksichtigt werden. Hier ein mögliches Beispiel: Ein High Speed RAM mit einer W/R Dual-Port Konfiguration kann in den Wortbreiten 2 Bit bis 128 Bit in Stufen von 2 Bit aufgebaut werden. Die minimale Speichertiefe ist 1024 Worte (1k Words) und die maximale 65536 Worte, die Schrittweite erfolgt im Abstand von 256 Worten.

Kann ein bestimmtes RAM (z.B. 384w x 12b) von einem RAM Compiler aufgrund der vorhandenen Schrittweiten oder maximaler RAM-Größen nicht erzeugt werden, stehen für den Aufbau des benötigten RAMs folgende prinzipielle Vorgehensweisen zu Verfügung:

  • Nicht passende Wortbreite oder Speichertiefe
    Man nimmt das nächstgrößere RAM, das der RAM Compiler unterstützt (falls vorhanden), z.B. 384w x 16b und kann in diesem Fall den 4 Bit großen Overhead des RAMs nicht nutzen. Eine Ähnliche Situation kann auch mit der Speichertiefe des RAMs entstehen.
  • Nicht passende Wortbreite
    Man baut das RAM aus zwei unterschiedlich großen RAMs auf und schaltet deren Adreßleitungen parallel, z.B. 384w x 8b und  384w x 4b. Auch bei dieser Lösung können u.U. sowohl Adreß als auch Daten-Overheads nicht vermieden werden.
  • Nicht passende Speichertiefe
    Liegt die erzeugbare Speichertiefe weit unterhalb des erforderlichen RAMs, müssen mehrere RAMs in Reihe geschaltet werden. Die niederwertigen Adress-Bits werden parallel an alle RAMs gelegt, während die höherwertigen Adress-Bits genau eines der betroffenen RAMs und dessen Daten-Ports auswählt.

Welche der aufgeführten Lösungen die bessere ist, muß von Fall zu Fall einzeln untersucht werden.

 

Zurück zur Makro-Übersicht
Weiter zu den PLLs

top 

[Home] [ASICs] [Selbstmanagement] [Inselmeer] [Spiele]
[Ich über mich] [Links] [SiteMap] [Disclaimer]