Bartels :: Bartels AutoEngineer :: BAE Dokumentation :: User Language Programmierhandbuch :: Index-Variablen-Typen :: IC Design Index-Beschreibung (ICD) |
Bartels User Language - ProgrammierhandbuchB.6 IC Design Index-Beschreibung (ICD) |
Dieser Abschnitt beschreibt die in der Bartels User Language definierten Index-Variablen-Typen für den IC-Design Datenzugriff (ICD).
Ü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 };
Ü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.
Ü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).
Ü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.
Ü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.
Ü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) };
Ü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 };
Ü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) };
Ü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.
Ü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.
Ü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.
Ü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.
Ü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) };
Ü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.
Bartels :: Bartels AutoEngineer :: BAE Dokumentation :: User Language Programmierhandbuch :: Index-Variablen-Typen :: IC Design Index-Beschreibung (ICD) |
IC Design Index-Beschreibung (ICD)
© 1985-2024 Oliver Bartels F+E