Nachdem der Autor auf den Artikel â
Zerstörung des Monopols ... â
gestoĂen war , war er als Person, obwohl sehr weit von
EDA entfernt , aber natĂŒrlich neugierig, nicht zu faul, um den Links zu folgen, und ertappte sich unwillkĂŒrlich bei dem Gedanken, dass eine der wichtigsten technischen Lösungen die Verwendung von Reihen von Standardzellen (
Standardzelle) ist Layout) - sieht ziemlich kontrovers aus.
Ja, diese Anordnung ist intuitiv, da wir auf Ă€hnliche Weise schreiben und lesen. AuĂerdem ist es technologisch einfach, Zellen in Reihen anzuordnen, und es ist so bequem, VDD- und GND-Busse anzuschlieĂen. Andererseits tritt ein komplexes kombinatorisches Problem auf, es ist notwendig, die Schaltung in lineare Teile zu schneiden und diese Teile so anzuordnen, dass die GesamtlĂ€nge der Verbindungen (grob) minimiert wird.
Und natĂŒrlich stellte sich die Frage, ob es alternative Lösungen gibt ... was ist, wenn ...
Abbildung 1 typische Reihen von Standardzellen ( von hier )Was wÀre wenn
Unter dem Gesichtspunkt der Verringerung der GesamtbindungslĂ€nge wĂ€re es nĂŒtzlich, Standardzellen entlang einiger der
geschwungenen Ex-
Kurven anzuordnen: Peano oder Hilbert.
Diese Kurven bestehen aus einer Masse verschiedener âEcken und Winkelâ, sicher gibt es eine Konfiguration, in der die verbundenen Standardzellen im Durchschnitt nahe beieinander liegen.
Oder es kann als Null-Iteration fĂŒr die weitere Optimierung dienen.
Abbildung 2 Hilbert-Kurve, Felder 8X8 und 64X64- Die geschwungenen Kurven sind selbstÀhnlich, was gut in das Gesamtkonzept passt.
- Sie haben eine hohe LokalitÀt, d.h. Punkte, die sich irgendwo in der NÀhe der Kurve befinden, befinden sich höchstwahrscheinlich in der NÀhe und im Weltraum.
- EnthÀlt ein hierarchisch organisiertes Kanalnetz.
- FĂŒr die logische Schaltung können Sie ein geeignetes Quadrat oder Rechteck 1x2,2x1 auswĂ€hlen, in dem es im Ăberschuss platziert ist, und es entlang der Wischkurve "bewegen" (siehe Abbildung 3), um die optimale Geometrie auszuwĂ€hlen, da dies nur ein Freiheitsgrad mit einer relativ gĂŒnstigen Kostenfunktion ist .
- Der Anschluss von Reifen (VDD / GND) bleibt bequem.
- ...
Abbildung 3 Drei Teile einer Hilbert-Kurve mit unterschiedlichen Verschiebungen.Also:
- Wir werden mit der Hilbert-Kurve experimentieren
- Wir werden in einem Quadrat 64X64 experimentieren (Abbildung 3)
- Im Elementarschritt der Kurve können mehrere Standardzellen und -rÀume vorhanden sein - wie viele und in welcher Reihenfolge ist der Parameter des Experiments
- Alle Elementarschritte sind identisch angeordnet
- Elementarschritte gehen mit einer Ăberlappung einher, d.h. Wenn der Schritt mit einer Standardzelle beginnt, muss am Ende ein Leerzeichen stehen und umgekehrt
- Alle Leerzeichen und Standardzellen haben die gleiche GröĂe - 1X1
- Alle Zellen werden in einer bestimmten Reihenfolge serialisiert. Diese Reihenfolge ist auch ein Parameter
- Ein weiterer Parameter ist die Verschiebung vom Beginn der Kurve (Punkte (0,0)), ab der wir die Standardzellen in einer bestimmten Reihenfolge anordnen
- BindungslÀngen zwischen Standardzellen werden gemÀà L1 (Manhattan-Abstand) berechnet.
- Die Summe der LĂ€ngen aller Anleihen ist der gewĂŒnschte Wert. Nachdem wir den Mindestbetrag bestimmt haben, finden wir den optimalen Ort
Und als experimentelles Kaninchen nehmen wir einen 8-Bit-Addierer. Es ist einfach genug, aber nicht trivial. Es gibt viele Elemente und ZusammenhĂ€nge, um die möglichen Vor- und Nachteile zu spĂŒren. Gleichzeitig gibt es nicht genug davon, um âam Knieâ experimentieren zu können.
Summierer
Fig. 4 ist ein schematisches Diagramm eines vollstÀndigen EinzelbitaddierersAbbildung 5 So sieht dieses Grafikdienstprogramm Neato von graphwiz6 8-Bit-Addierer mit Vorzeichen, hier aufgenommenWir werden jedoch nur mit ganzen Zahlen ohne das Fehlerflag W arbeiten.
Abb. 7 Der 8-Bit-Addierer sieht also das Punktdienstprogramm von graphwiz.Es sieht aus wie ein Tanz kleiner SchwÀne.
Fig. 8 ist das gleiche Diagramm nach der Optimierung unter Verwendung von Neato.DOT Countdigraph sum8 {
a_0;
a_1;
a_2;
a_3;
a_4;
a_5;
a_6;
a_7;
b_0;
b_1;
b_2;
b_3;
b_4;
b_5;
b_6;
b_7;
s_0;
s_1;
s_2;
s_3;
s_4;
s_5;
s_6;
s_7;
p0;
p1;
und1_0;
und1_1;
und1_2;
und1_3;
und1_4;
und1_5;
und1_6;
und1_7;
und2_0;
und2_1;
und2_2;
und2_3;
und2_4;
und2_5;
und2_6;
und2_7;
und3_0;
und3_1;
und3_2;
und3_3;
und3_4;
und3_5;
und3_6;
und3_7;
und4_0;
und4_1;
und4_2;
und4_3;
und4_4;
und4_5;
und4_6;
und4_7;
or1_0;
or1_1;
or1_2;
or1_3;
or1_4;
or1_5;
or1_6;
or1_7;
or2_0;
or2_1;
or2_2;
or2_3;
or2_4;
or2_5;
or2_6;
or2_7;
or3_0;
or3_1;
or3_2;
or3_3;
or3_4;
or3_5;
or3_6;
or3_7;
or4_0;
or4_1;
or4_2;
or4_3;
or4_4;
or4_5;
or4_6;
or4_7;
not1_0;
not1_1;
not1_2;
not1_3;
not1_4;
not1_5;
not1_6;
not1_7;
a_0 -> and1_0;
a_1 -> and1_1;
a_2 -> and1_2;
a_3 -> and1_3;
a_4 -> and1_4;
a_5 -> and1_5;
a_6 -> and1_6;
a_7 -> and1_7;
b_0 -> and1_0;
b_1 -> and1_1;
b_2 -> and1_2;
b_3 -> and1_3;
b_4 -> and1_4;
b_5 -> and1_5;
b_6 -> and1_6;
b_7 -> and1_7;
a_0 -> or1_0;
a_1 -> or1_1;
a_2 -> or1_2;
a_3 -> or1_3;
a_4 -> or1_4;
a_5 -> or1_5;
a_6 -> or1_6;
a_7 -> or1_7;
b_0 -> or1_0;
b_1 -> or1_1;
b_2 -> or1_2;
b_3 -> or1_3;
b_4 -> or1_4;
b_5 -> or1_5;
b_6 -> or1_6;
b_7 -> or1_7;
und1_0 -> or3_0;
und1_1 -> or3_1;
und1_2 -> or3_2;
und1_3 -> or3_3;
und1_4 -> or3_4;
und1_5 -> or3_5;
und1_6 -> or3_6;
und1_7 -> or3_7;
and1_0 -> and3_0;
und1_1 -> and3_1;
und1_2 -> and3_2;
und1_3 -> und3_3;
und1_4 -> and3_4;
und1_5 -> and3_5;
und1_6 -> and3_6;
und1_7 -> and3_7;
or1_0 -> and2_0;
or1_1 -> and2_1;
or1_2 -> and2_2;
or1_3 -> and2_3;
or1_4 -> and2_4;
or1_5 -> and2_5;
or1_6 -> and2_6;
or1_7 -> and2_7;
or1_0 -> or2_0;
or1_1 -> or2_1;
or1_2 -> or2_2;
or1_3 -> or2_3;
or1_4 -> or2_4;
or1_5 -> or2_5;
or1_6 -> or2_6;
or1_7 -> or2_7;
und2_0 -> or3_0;
und2_1 -> or3_1;
und2_2 -> or3_2;
und2_3 -> or3_3;
und2_4 -> or3_4;
und2_5 -> or3_5;
und2_6 -> or3_6;
und2_7 -> or3_7;
or2_0 -> and4_0;
or2_1 -> and4_1;
or2_2 -> and4_2;
or2_3 -> and4_3;
or2_4 -> and4_4;
or2_5 -> and4_5;
or2_6 -> and4_6;
or2_7 -> and4_7;
und3_0 -> or4_0;
und3_1 -> or4_1;
und3_2 -> or4_2;
und3_3 -> or4_3;
und3_4 -> or4_4;
und3_5 -> or4_5;
und3_6 -> or4_6;
und3_7 -> or4_7;
or3_0 -> not1_0;
or3_1 -> not1_1;
oder3_2 -> not1_2;
or3_3 -> not1_3;
oder3_4 -> not1_4;
or3_5 -> not1_5;
or3_6 -> not1_6;
or3_7 -> not1_7;
not1_0 -> and4_0;
not1_1 -> and4_1;
not1_2 -> and4_2;
not1_3 -> and4_3;
not1_4 -> and4_4;
not1_5 -> and4_5;
not1_6 -> and4_6;
not1_7 -> and4_7;
und4_0 -> or4_0;
und4_1 -> or4_1;
und4_2 -> or4_2;
und4_3 -> or4_3;
und4_4 -> or4_4;
und4_5 -> or4_5;
und4_6 -> or4_6;
und4_7 -> or4_7;
or4_0 -> s_0;
or4_1 -> s_1;
or4_2 -> s_2;
or4_3 -> s_3;
or4_4 -> s_4;
or4_5 -> s_5;
or4_6 -> s_6;
or4_7 -> s_7;
p0 -> and2_0;
p0 -> or2_0;
p0 -> and3_0;
or3_0 -> and2_1;
or3_0 -> or2_1;
or3_0 -> and3_1;
or3_1 -> and2_2;
or3_1 -> or2_2;
or3_1 -> and3_2;
or3_2 -> and2_3;
or3_2 -> or2_3;
or3_2 -> and3_3;
or3_3 -> and2_4;
or3_3 -> or2_4;
or3_3 -> and3_4;
or3_4 -> and2_5;
or3_4 -> or2_5;
or3_4 -> and3_5;
or3_5 -> and2_6;
or3_5 -> or2_6;
or3_5 -> and3_6;
or3_6 -> and2_7;
or3_6 -> or2_7;
or3_6 -> and3_7;
or3_7 -> p1;
}
Versuch 1
- Elementarschritt der Hilbert-Kurve - (Pass, Zelle, Zelle, Pass)
- Diagrammscheitelpunkte (Einheitszellen) alphabetisch sortiert
Abb.9 auf X - Verschiebung von Anfang an, auf Y - die LÀnge aller PfadeDer Mindestabstand (der erste von) bei einer Verschiebung von 207 (die GesamtlÀnge aller Anleihen betrÀgt 1968). Lassen Sie uns sehen, wie diese optimale Anordnung aussieht.
Fig. 10 ist das optimale Diagramm fĂŒr die Verschiebung 207, es sieht nicht sehr schön aus.Experiment 2
- Elementarschritt der Hilbert-Kurve - (Pass, Zelle, Zelle, Pass)
- Eckpunkte des Diagramms (Einheitszellen) in der natĂŒrlichen Reihenfolge (wie in der Beschreibung des Diagramms angegeben, siehe Beschreibung des Diagramms oben) -
11 auf X - die Verschiebung von Anfang an, auf Y - die LĂ€nge aller PfadeFig. 12 optimales Diagramm fĂŒr ScherlĂ€nge 11 750Experiment 3
- Elementarschritt der Hilbert-Kurve - (Pass, Zelle, Zelle, Pass)
- Die Reihenfolge der Scheitelpunkte wird durch Durchlaufen der Breite des Diagramms bestimmt. Scheitelpunkte ohne VerknĂŒpfungen am Anfang der Liste und am Wochenende am Ende
Abb.13 auf X - Verschiebung von Anfang an, auf Y - LÀnge aller PfadeAbb. 14 Optimale Anordnung - Verschiebung 3, GesamtlÀnge 1451
Setzen Sie alle Eingabescheitelpunkte am Anfang und die Ausgabe am Ende war nicht sehr gut
eine Idee.Experiment 4
- der elementare Schritt der Hilbert-Kurve - (Pass, Zelle, Zelle) Sic!
- Die Scheitelpunktreihenfolge ist natĂŒrlich, wie in Experiment 2
Abb.15 auf X - Verschiebung von Anfang an, auf Y - LÀnge aller PfadeAbb. 16 Optimale Anordnung - Verschiebung 10, GesamtlÀnge 503Experiment 5
Wir mĂŒssen etwas mit E / A tun, wir definieren sie in der Nachbearbeitung, d. H. fĂŒr jede Schicht
Erstellen Sie eine Anordnung ohne E / A-Scheitelpunkte, erstellen Sie dann einen Rahmen mit absorbierender Ausdehnung um den Graphen, wenden Sie E / A-Scheitelpunkte auf den nĂ€chsten nicht besetzten Punkt des Rahmens an und berechnen Sie die endgĂŒltige LĂ€nge
- Elementarschritt der Hilbert-Kurve - (ĂŒberspringen, Zelle, Zelle)
- Die Reihenfolge der Scheitelpunkte wird durch Anzeigen in der Breite bestimmt, jedoch ohne E / A-Scheitelpunkte
Fig. 17 auf X ist die Verschiebung von Anfang an, auf Y ist die LÀnge aller PfadeAbb. 18 Der optimale Ort ist die Verschiebung 607, die GesamtlÀnge von 484, der Durchschnitt von 3,33793Es sieht gut aus, aber was ist, wenn wir nicht die GesamtlÀnge der Pfade optimieren, sondern ihre Summe mit der FlÀche des belegten Rechtecks. Ihre Dimensionen sind unterschiedlich, daher nehmen wir an, dass wir nicht die LÀnge des Pfades berechnen, sondern die FlÀche unter den Pfaden.
Experiment 6
Die Parameter sind die gleichen wie in Experiment 5, wir optimieren die FlÀche.
Abb.19 auf X - Verschiebung von Anfang an, auf Y - LĂ€nge aller PfadeAbb. 20 Optimale Anordnung - Verschiebung 966, GesamtlĂ€nge 639, Durchschnitt 3.30345Das Rechteck war ziemlich lĂ€nglich. Aber was ist, wenn wir nicht die FlĂ€che des Rechtecks ââbetrachten, sondern das Quadrat der Hypotenuse, was uns zu mehr quadratischen Formen treibt?
Experiment 7
Die Parameter sind die gleichen wie in Experiment 5, wir optimieren das Quadrat der Hypotenuse.
Fig. 21 auf X ist die Verschiebung von Anfang an, auf Y ist die LÀnge aller PfadeAbb. 22 Optimale Anordnung - Verschiebung 70, GesamtlÀnge 702, Durchschnitt 3,46207Experiment 8
- Elementarschritt der Hilbert-Kurve - (Zelle, ĂŒberspringen) Sic!
- Die Reihenfolge der Scheitelpunkte wird durch Anzeigen in der Breite bestimmt, jedoch ohne E / A-Scheitelpunkte
Wir gehen davon aus, dass die Kosten fĂŒr das Gehen in Y doppelt so hoch sind wie in X, dies ist nĂ€her an der RealitĂ€t.
Fig. 23 auf X ist die Verschiebung von Anfang an, auf Y ist die LÀnge aller PfadeAbb. 24 Optimale Anordnung - Verschiebung 344, GesamtlÀnge 650, Durchschnitt 3,8Schlussfolgerungen
VorlĂ€ufige âWahl der Redaktionâ - Experiment 6.
Es wÀre schön, die E / A-Eckpunkte anzuordnen, aber dies erfordert einen Hinweis von der Seite.
Wo genau (Richtung) sollte sich diese Klasse von Eckpunkten befinden?
Aber zuerst möchte ich die Meinung von Experten hören.
PS : Danke an
YuriPanchul und
andy_p fĂŒr das Fehlen einer
reflexnegativen Reaktion.
UPD (11/02/2019): "Experiment 8" hinzugefĂŒgt, wobei sich die Standardzellen an den Knoten der Hilbert-Kurve befinden, d. H. streng auf einem quadratischen Gitter. DarĂŒber hinaus werden sie einerseits zu traditionellen Reihen zusammengefasst und andererseits entlang der Hilbert-Kurve angeordnet.