|
Dieser Abschnitt beschreibt die in der
Bartels User Language definierten Index-Variablen-Typen für den
IC-Design Datenzugriff (ICD).
I_ATTRIBUTE - IC-Design Netzlisteneintrag Attribut
Über den Index
I_ATTRIBUTE ist der Zugriff auf die in der Netzliste eingetragenen Bauteil- bzw. Netzattribute des aktuell geladenen IC-Layouts möglich. Die Strukturdefinition von
I_ATTRIBUTE lautet:
index I_ATTRIBUTE { // Attribut Index
string NAME; // Attribut Name
string VALUE; // Attribut Wert
};
I_CNET - IC-Design Netzliste
Über den Index
I_CNET ist der Zugriff auf die in der Netzliste eingetragenen Netze des aktuell geladenen IC-Layouts möglich. Die Strukturdefinition von
I_CNET lautet:
index I_CNET { // Physikalische Netzliste Index
string NAME; // Netz Name
int NUMBER; // Netz Nummer
int PRIOR; // Netz Routingpriorität
double RDIST; // Netz Mindestabstand (STD2)
int PINN; // Anzahl Pins
index I_CPIN; // Liste der Pins
index I_ATTRIBUTE; // Liste der Attribute
index I_POOL UNRPOOL; // Verweis auf Unroutes Poolelement
};
Die Netznummer wird allgemein zur Identifizierung eines Netzes herangezogen. Mit der Funktion
icd_gettreeidx kann ausgehend von der angegebenen Netznummer der entsprechende
I_CNET Index gefunden werden. Der Mindestabstand gibt die Distanz an, die Leiterbahnen dieses Netzes zu nicht dem entsprechenden Netz zugehörenden Kupferstrukturen mindestens einhalten müssen. Der Zugriff auf die zum Netz gehörenden Pins bzw. Attribute erfolgt über eine entsprechende
forall-of-Schleife. Die Indexvariable
UNRPOOL ermöglicht den Zugriff auf die noch nicht verlegten Verbindungen (Unroutes, Airlines) des entsprechenden Netzes; die Abarbeitung dieser Verbindungen kann mit Hilfe der Systemfunktion
icd_scanpool erfolgen.
I_CPART - IC-Design Netzlisteneintrag Bauteil
Über den Index
I_CPART ist der Zugriff auf die in der Netzliste eingetragenen Bauteile des aktuell geladenen IC-Layouts möglich. Die Strukturdefinition von
I_CPART lautet:
index I_CPART { // Netzliste Bauteilindex
string NAME; // Bauteil Name
string PLNAME; // Physikalisches Bibliotheksteil
int USED; // Bauteilplatzierungscode:
// 0 = Bauteil nicht platziert
// 1 = Bauteil platziert
int PEQUC; // Bauteil Äquivalenz-Code
int PINN; // Anzahl Pins
int FPINN; // Anzahl nicht angeschlossene Pins
index I_MACRO MACRO; // Verweis auf Makro
index I_CPIN; // Liste der Pins
index I_ATTRIBUTE; // Liste der Attribute
};
Auf die Pinliste und die Attributwerte kann mit Hilfe von entsprechenden
forall-of Schleifen zugegriffen werden. Bauteile mit identischen Äquivalenz-Codes dürfen auf ihren Einbauplätzen im Zuge einer Platzierungsoptimierung vertauscht werden (Component Swap).
I_CPIN - IC-Design Netzlisteneintrag Bauteilpin
Über den Index
I_CPIN ist der Zugriff auf die in der Netzliste eingetragenen Bauteilpins des aktuell geladenen IC-Layouts möglich. Die Strukturdefinition von
I_CPIN lautet:
index I_CPIN { // Netzliste Pin Index
string NAME; // Pin Name
double RWIDTH; // Pin Routingbreite (STD2)
int TREE; // Pin Netznummer
int GATE; // Pin Gatternummer
int GEQUC; // Pin Gatter-Äquivalenz-Code
int GEQUP; // Pin Äquivalenz-Code
int GGRPC; // Pin Gatter-Gruppennummer
int GPNUM; // Pin Gatter-Relativnummer
index I_CNET CNET; // Verweis auf Netz
index I_CPART CPART; // Verweis auf Bauteil
};
Die Pin Routingbreite gibt die Breite an, mit der von dem Pin zum nächsten Verbindungspunkt geroutet werden soll. Über die Indexvariablen
CNET bzw.
CPART ist der Rückwärtsverweis auf das Netz bzw. das Bauteil, an dem der Pin definiert ist, möglich. Über die Indexvariablen
GATE,
GEQUC,
GEQUP,
GGRPC und
GPNUM kann die Zulässigkeit der Gatter- und Pinvertauschbarkeit (Pin/Gate Swap) ermittelt werden.
I_FIGURE - IC Design Figurenelement
Über den Index
I_FIGURE ist der Zugriff auf die platzierten Figurenelemente (Polygone, Leiterbahnen, Makroreferenzen, Texte) des aktuell geladenen Elements möglich. Die Strukturdefinition von
I_FIGURE lautet:
index I_FIGURE { // Figurenelement Index
int TYP; // Element Typ (ICD5)
string NAME; // Element Name
double SIZE; // Element Größe (STD2)
double X; // Element X-Koordinate (STD2)
double Y; // Element Y-Koordinate (STD2)
double ANGLE; // Element Drehwinkel (STD3)
int MIRROR; // Element Spiegelung (STD14)
int LAYER; // Element Lage (ICD1)
int GROUP; // Element Gruppenflag (STD13)
int FIXED; // Element Fixiert Flag (STD11)
int TREE; // Element Netznummer
int RULEOBJID; // Element Regelsystemobjekt-Id
index I_POOL POOL; // Verweis auf Poolelement
index I_POLY POLY; // Verweis auf Polygonelement
index I_LINE LINE; // Verweis auf Leiterbahnelement
index I_NREF NREF; // Verweis auf Makroreferenz (benannt)
index I_UREF UREF; // Verweis auf Makroreferenz (unbenannt)
index I_TEXT TEXT; // Verweis auf Textelement
};
Die Indexvariable
NAME gibt für benannte Makroreferenzen den Namen und für Texte den Textstring an. Die Indexvariable
LAYER gibt die Lagennummer des Figurenelements an. Die Indexvariable
POOL ermöglicht den Zugriff auf das Bibliotheks- bzw. Poolelement, aus dem das Figurenelement aufgebaut ist. Einzelne Daten eines Figurenelements können mit den Funktionen
ced_elem*chg modifiziert werden. Der komplette Datensatz eines Figurenelements kann mit der Funktion
icd_scanfelem über alle Hierarchieebenen abgearbeitet werden.
I_LEVEL - IC Design Signalpotential
Über den Index
I_LEVEL ist der Zugriff auf die Connectivity-Level, d.h. auf die Netzlisten- bzw. Signalpotentiale des aktuell geladenen IC-Layouts möglich. Die Strukturdefinition von
I_LEVEL lautet:
index I_LEVEL { // Connectivity-Level Index
int LEVVAL; // Level Wert (ICD6)
};
I_LINE - IC Design Leiterbahn
Über den Index
I_LINE ist der Zugriff auf die Leiterbahndaten des aktuell geladenen IC-Layouts möglich. Die Strukturdefinition von
I_LINE lautet:
index I_LINE { // Leiterbahn Index
double WIDTH; // Leiterbahn Breite (STD2)
int LAYER; // Leiterbahn Lage (ICD1)
int TREE; // Leiterbahn Netznummer
int PN; // Anzahl Polygonpunkte
index I_POINT; // Liste der Polygonpunkte
};
I_MACRO - IC Design Bibliothekselement
Über den Index
I_MACRO ist der Zugriff auf die Makros, d.h. auf die Bibliothekselemente (Bauteile, Padstacks, Pads) des aktuell geladenen Elements möglich. Die Strukturdefinition von
I_MACRO lautet:
index I_MACRO { // Makrodefinition Index
string NAME; // Makro Name
double MLX; // Linke Makrobegrenzung (STD2)
double MLY; // Untere Makrobegrenzung (STD2)
double MUX; // Rechte Makrobegrenzung (STD2)
double MUY; // Obere Makrobegrenzung (STD2)
double MNX; // Nullpunkt X-Koordinate (STD2)
double MNY; // Nullpunkt Y-Koordinate (STD2)
int CLASS; // Makro Klasse (STD1)
int COMP; // Makro Status (STD16)
};
I_NREF - IC Design Makroreferenz (benannt)
Über den Index
I_NREF ist der Zugriff auf die benannten Makroreferenzen, d.h. auf die auf dem aktuell geladenen Element namentlich platzierten Bibliothekselemente möglich. Auf IC-Layoutebene sind dies die platzierten Zellen; auf Zellenebene sind dies die platzierten Pins. Die Strukturdefinition von
I_NREF lautet:
index I_NREF { // Benannte Referenz Index
string NAME; // Referenz Name
double X; // Referenz X-Koordinate (STD2)
double Y; // Referenz Y-Koordinate (STD2)
double ANGLE; // Referenz Drehwinkel (STD3)
double SCALE; // Referenz Skalierungsfaktor
int MIRROR; // Referenz Spiegelung (STD14)
index I_MACRO MACRO; // Makro Index
};
Über die Indexvariable
MACRO ist der Zugriff auf das durch das
I_NREF-Element referenzierte Bibliothekselement möglich.
I_POINT - IC Design Polygonpunkt
Über den Index
I_POINT ist der Zugriff auf einzelne Polygonpunkte eines Polygons möglich. Die Strukturdefinition von
I_POINT lautet:
index I_POINT { // Polygonpunkt Index
double X; // Polygonpunkt X-Koordinate (STD2)
double Y; // Polygonpunkt Y-Koordinate (STD2)
int TYP; // Polygonpunkt Typ (STD15)
};
Der Index
I_POINT ist nur als
of-Index für die Liste der Polygonpunkte in
I_POLY bzw. in
I_LINE zu verwenden.
I_POLY - IC Design Polygon
Über den Index
I_POLY ist der Zugriff auf die im aktuell geladenen Element definierten Polygone (aktive Flächen, Sperrflächen oder Dokumentarlinien) möglich. Die Strukturdefinition von
I_POLY lautet:
index I_POLY { // Polygon Index
int LAYER; // Polygon Lage (ICD1)
int TREE; // Polygon Netznummer
int TYP; // Polygon Typ (ICD4)
int MVIS; // Polygon Spiegelungsmodus (ICD3)
int PN; // Anzahl Polygonpunkte
index I_POINT; // Liste der Polygonpunkte
};
Der Zugriff auf die zum Polygon gehörenden Polygonpunkte erfolgt über eine entsprechende
forall-of-Schleife. Die Netznummer ist nur für aktive (leitende) Flächen von Bedeutung. Zur Bestimmung der Netzzugehörigkeit aktiver Flächen sind die Funktionen
icd_scanfelem bzw.
icd_scanall zu verwenden.
I_POOL - IC Design Poolelement
Über den Index
I_POOL ist der Zugriff auf die aktuell geladenen Poolelemente möglich. Die Strukturdefinition von
I_POOL lautet:
index I_POOL { // Poolelement Index
int TYP; // Poolelement Typ (ICD7)
int REFCNT; // Poolelement Referenzierungsanzahl
int LAYER; // Poolelement Lage (ICD1)
index I_POOL NXT; // Verweis auf nächstes Poolelement
index I_POOL REF; // Verweis auf Referenz-Poolelement
index I_POLY POLY; // Verweis auf Polygonelement
index I_LINE LINE; // Verweis auf Leiterbahnelement
index I_NREF NREF; // Verweis auf Makroreferenz (benannt)
index I_UREF UREF; // Verweis auf Makroreferenz (unbenannt)
index I_TEXT TEXT; // Verweis auf Textelement
index I_MACRO MACRO; // Verweis auf Bibliothekselement
};
Der Index
I_POOL wird benötigt zur Abarbeitung von Bibliotheksdefinitionen mit Hilfe der Systemfunktion
icd_scanpool. Die Indexvariable
REFCNT gibt an, wie oft das entsprechende Poolelement innerhalb des aktuell geladenen Elements referenziert wird. Die Indexvariablen
NXT und
REF dienen der schnellen Abarbeitung der aktuell referenzierten Poolelemente.
I_TEXT - IC Design Text
Über den Index
I_TEXT ist der Zugriff auf die im aktuell geladenen Element definierten Texte möglich. Die Strukturdefinition von
I_TEXT lautet:
index I_TEXT { // Text Index
string STR; // Text String
double X; // Text X-Koordinate (STD2)
double Y; // Text Y-Koordinate (STD2)
double ANGLE; // Text Drehwinkel (STD3)
double SIZE; // Text Größe (STD2)
int LAYER; // Text Lage (ICD1)
int MIRROR; // Text Spiegelung (STD14)
int MODE; // Text Modus (ICD2)
};
I_UREF - IC Design Makroreferenz (unbenannt)
Über den Index
I_UREF ist der Zugriff auf die unbenannten Makroreferenzen, d.h. auf die auf dem aktuell geladenen Element namenlos platzierten Bibliothekselemente möglich. Auf IC-Layoutebene sind dies die platzierten Vias. Die Strukturdefinition von
I_UREF lautet:
index I_UREF { // Namenlose Referenz Index
int TREE; // Referenz Netznummer
double X; // Referenz X-Koordinate (STD2)
double Y; // Referenz Y-Koordinate (STD2)
double ANGLE; // Referenz Drehwinkel (STD3)
double SCALE; // Referenz Skalierungsfaktor
int MIRROR; // Referenz Spiegelung (STD14)
index I_MACRO MACRO; // Verweis auf Makro
};
Über die Indexvariable
MACRO ist der Zugriff auf das durch das
I_UREF-Element referenzierte Bibliothekselement möglich.
IC Design Index-Beschreibung (ICD) © 1985-2025 Oliver Bartels F+E • Aktualisiert: 19. October 2009, 15:26 [UTC]
|