Name
loglib - Logical Library Maintenance
Synopsis
loglib loglibfile libraryfile
Beschreibung
Das Programm
loglib dient dazu, Informationen über die Zuordnung der Stromlaufsymbole zu den Layoutsymbolen, die Zuordnung von logischen zu physikalischen Anschlüssen, Pin- und Gattertausch, feste Versorgungsanschlüsse, usw. in ein DDB(Design DataBase)-File einzuspielen. Dies ist notwendig, um die Transformation von Schaltplänen in das Layout, d.h. die Umsetzung logischer Netzlisten in physikalische (mit Hilfe des
Packagers oder umgekehrt über
) zu ermöglichen.
loglib erwartet als erstes Argument den Namen
loglibfile
einer ASCII-Datei (Loglibdatei), in der die logische Bibliotheksinformation abgelegt ist (diese Datei muss mit der Extension
.def
verfügbar sein; beim Programmaufruf ist der Dateiname ohne diese Extension anzugeben).
loglib erwartet als zweites Argument den Namen
libraryfile
der DDB-Datei, in das die logische Bibliotheksinformation einzuspielen ist (diese Datei erhält die Extension
.ddb
beim Programmaufruf ist der Dateiname ohne diese Extension anzugeben).
Gebrauch
Das Programm
loglib muss immer zur Anwendung kommen, wenn ein neues (oder geändertes) Stromlaufsymbol definiert wurde bzw. wenn sich eine neue (oder geänderte) Zuweisung von Stromlauf- zu Layoutsymbol ergibt. Im Regelfall wird zunächst das Stromlaufsymbol in der Stromlaufbibliothek erstellt (oder editiert). Anschließend wird (falls nicht schon existent) in der Layoutbibliothek das Layoutsymbol definiert, in welches das Stromlaufsymbol gepackt werden soll. Schließlich sind die entsprechenden Einträge in einer Loglibdatei zu erstellen und die darin eingetragenen Definitionen mit dem Programm
loglib in die Layoutbibliothek einzuspielen.
Format der Eingabedatei
Dateianfang, Dateiende, Kommentare
Die Loglibdatei beginnt mit dem Schlüsselwort
loglib
und endet mit
end.
. Kommentare können zwischen
/*
und
*/
eingefügt werden.
Kommando part
Über das
part
-Kommando erfolgt die Zuweisung des Stromlaufsymbols an das Layoutsymbol. Die Syntax für dieses Kommando lautet:
part <llname> : <plname>
Der
Packager wird bei der Umsetzung des Stromlaufs in das Layout entsprechend des eingetragenen
part
-Kommandos das durch
<llname>
(Logical Library Name) gegebene Stromlaufsymbol in die durch
<plname>
(Physical Library Name) gegebene Gehäuseform packen. Steht vor
<plname>
das Schlüsselwort
default
, so besteht die Möglichkeit, bei der Stromlauf-Erstellung über einen entsprechenden Werteintrag für das am Stromlaufsymbol
<llname>
definierte Attribut
$plname
dem
Packager eine andere Gehäusezuweisung vorzugeben:
part <llname> : default <plname>
Wird für
<plname>
eine (durch Komma getrennte) Liste von Gehäusen angegeben, dann besteht während der Bauteilplatzierung im Layout die Möglichkeit der Zuweisung der entsprechenden Alternativbauform(en) an das betreffende Bauteil. Die Syntax hierfür lautet:
part <llname> : [default] <plname>[,<plname>,...,<plname>]
Der erste
<plname>
-Eintrag entspricht dabei dem Default-Gehäuse für das entsprechende Bauteil. Die nachfolgenden Einträge spezifizieren die Alternativbauformen, die über die Funktion
während der Platzierung des entsprechenden Bauteils gewählt werden können. Die Auswahlreihenfolge im Menü zur Bauformauswahl entspricht hierbei der Reihenfolge der
<plname>
-Einträge im
part
-Kommando. Im Layout durchgeführte Zuweisungen alternativer Gehäusebauformen müssen mit
in den Stromlauf zurückgemeldet werden. In jedem Fall haben jedoch im Stromlauf über das Attribut
$plname
definierte Gehäusezuweisungen höhere Priorität.
Mit Hilfe des Schlüsselwortes
class
kann das Bauteil wahlweise einer Bauteilklasse zugewiesen werden:
part <llname> : class <partclassname> [default] <plname>
Bauteilklassen werden vom
Packager ausgewertet, um die Zulässigkeit der Zuweisung zu alternativen Bauteildefinitionen über das Attribut
$rlname
(Requested Logical Library Name) zu prüfen.
Soll eine einmal über
loglib vorgenommene Zuweisung vollständig aus der Bibliothek gelöscht werden, so kann dies mit dem Kommando
delete part <llname> ;
geschehen. Die Loglibdatei bietet außerdem die Möglichkeit virtuelle Symbole zu definieren, also Stromlaufsymbole, die keinem Layoutsymbol zuzuordnen sind. In diesem Fall ist im
part
-Kommando anstelle des
<plname>
das Schlüsselwort
virtual
einzutragen:
part <llname> : virtual ;
Das Kommando
part
ermöglicht über das Schlüsselwort
logical
die Definition rein logischer Bauteile:
part <llname> : logical ...
Die Definition logischer Bauteile ohne Gehäusezuweisung ermöglicht die Generierung logischer Netzlisten (z.B. im Format EDIF für PLD- bzw. LCA-Design).
Die Zuweisung unterschiedlicher Stromlaufsymbole in ein einziges Gehäuse (z.B. Spule und Kontakt beim Relais) geschieht durch Verwendung der Schlüsselwörter
mainpart
und
subpart
in den entsprechenden
part
-Kommandos:
part <mainllname> : mainpart <plname>
:
part <subllname> : subpart <mainllname>
Bei der
subpart
-Definition ist zu beachten, dass hier anstelle eines Verweises auf einen
<plname>
ein Verweis auf den
<llname>
des
mainpart
(<mainllname>
) einzutragen ist.
Für den Fall, dass eine 1:1-Zuordnung zwischen den logischen Pins und den physikalischen Anschlüssen vorliegt (d.h. das Stromlaufsymbol ist genau einem Layoutsymbol zugeordnet, und die Pinbezeichnungen entsprechen sich), dann genügt es, das
part
-Kommando mit einem Strichpunkt abzuschließen:
part <llname> : <plname> ;
Liegt der Sonderfall der 1:1-Zuordnung nicht vor, oder sind Pin- und Gattertausch, Versorgungsanschlüsse, feste Attribute oder ähnliches zu definieren, dann geschieht dies mit den entsprechenden, nachfolgend beschriebenen Kommandos unmittelbar nach dem
part
-Kommando in geschweiften Klammern:
part <llname> : <plname> { <commands> }
Kommando net
Über das Kommando
net
können Netze definiert werden, die im Schaltbild immer wieder auftreten und deshalb nicht einzeln verdrahtet werden müssen (z.B. feste Versorgungsanschlüsse). Die Syntax hierfür lautet:
net "<netname>" : ( <pinlist> ) ;
Durch Voranstellen des Dollarzeichens
($
) kann mit dem Kommando
net
ein Netznamensattribut anstelle des Netznamens definiert werden:
net "$<netname>" : ( <pinlist> ) ;
Ist auf dem zugehöhrigen SCM-Symbol ein entsprechendes Attribut definiert, dann kann im Stromlauf eine variable, bauteilspezifische Versorgungsspannungszuweisung durch einen entsprechenden Netznamenseintrag (z.B.
vcc
,
vss
,
0v
, etc.) für das Netznamensattribut vorgenommen werden.
Eine Sonderform des
net
-Kommandos ist das
internal
-Kommando, in dem anstelle einer Netznamensdefinition lediglich das Schlüsselwort
internal
eingetragen ist:
net internal : ( <pinlist> ) ;
Das
internal
-Kommando sorgt dafür, dass die in der zugehörigen
<pinlist>
definierten Anschlüsse durch den
Packager automatisch miteinander verbunden werden.
<pinlist>
enthält (getrennt durch Komma) die Liste der Pins. Die
pin
-Einträge definieren die physikalischen Pinbezeichnungen. Enthält ein Pinname Sonderzeichen, dann ist er in Anführungszeichen anzugeben.
Kommando bus
Mit Hilfe des
bus
-Kommandos können bereits direkt am Bauteil Busse definiert werden. Die Syntax für dieses Kommando lautet:
bus ( <buspinlist> ) ;
<buspinlist>
definiert hierbei die Liste der am Bauteil definierten logischen Pins, über die jeweils ganze Busse angeschlossen werden können. Die Definition der jeweiligen Bussignale kann dann z.B. mit dem
xlat
-Kommando (siehe unten) erfolgen. Dabei ergeben sich die entsprechenden logischen Pinbezeichnungen jeweils aus dem Bus(pin)namen und dem Bussignalnamen in folgendem Format:
"<buspin>.<bussignal>"
Kommando pin
Das Kommando
pin
dient der Auflistung der am Stromlaufsymbol definierten logischen Anschlüsse. Die Syntax für dieses Kommando lautet:
pin ( <pinlist> ) ;
<pinlist>
enthält hierbei die Liste der logischen Pinbezeichnungen am Stromlaufsymbol.
Bei der Angabe von Pinnamen lassen sich optional auch ganze Bereiche in der Form
<startpin>-<endpin>[:<schrittweite<]
angeben. So kann z.B. die Pinliste
pin(a1,a2,a3,a4)
mit
pin(a1-a4);
oder die Pinliste
pin(c2,c4,c6,c8,c10)
mit
pin(c2-c10:2)
spezifiziert werden. Es sind auch mehrere Bereiche wie z.B.
pin(a1-a32,b1-b2,c1-c32);
in einem Kommando erlaubt. Die Bereichsangabe dient nur der Verkürzung der Eingabe. Beim Abspeichern und der Anzeige mit
werden weiterhin die vollständigen Pinnamenslisten verwendet.
Das Kommando
pin none ;
unterdrückt die automatische 1:1-Zuordnung von Symbol- zu Layoutbauteilpins bei fehlendem pin
-Kommando und gestattet somit z.B. die Erstellung universell verwendbarer mainpart
-Symbole ohne Pins.
Kommando xlat
Über das Kommando
xlat
erfolgt die Zuordnung der (über Kommando
pin
definierten) logischen Pins zu den physikalischen Anschlüssen am Gehäuse, d.h. die Definition der Gatterzuordnung. Die Syntax für das
xlat
-Kommando lautet:
xlat ( <lplist> ) to ( <pplist> )
or ( <pplist> ) or ... or ( <pplist> ) ;
<lplist>
enthält die Liste der am Stromlaufsymbol definierten logischen Pinbezeichnungen. Die
<pplist>
-Einträge definieren (entsprechend der in
<lplist>
vorgegebenen Reihenfolge) die Zuweisungen der logischen zu den physikalischen Pinbezeichnungen.
Für jedes
xlat
-Kommando mit Alternativen (d.h. mit
or
-Optionen zur Definition von Gattern) wird automatisch eine
swap
-Definition für bauteilübergreifenden Gattertausch generiert, sofern nicht explizit ein
swap internal
-Kommando (siehe unten) mit angegeben wurde.
Kommando swap
Das Kommando
swap
erlaubt die Definition von Pin-, Gatter-, oder Pingruppen-Vertauschbarkeit (vgl. hierzu Funktion
-
im
Layouteditor). Die Syntax für das
swap
-Kommando lautet:
swap <swapdefinition> ;
Die
<swapdefinition>
enthält gestaffelt in bis zu vier Klammerebenen die Vertauschbarkeits-Definitionen, wobei über Pinlisten die physikalischen Anschlüsse der jeweils vertauschbaren Swap-Ebene angegeben sind. Die Funktion der jeweiligen Klammerebene ergibt sich aus folgendem Schema:
( Bauteil-Tausch ) |
([ Pingruppentausch ]) |
([( Gattertausch )]) |
([(( Pintausch ))]) |
Um die Möglichkeit des bauteilübergreifenden Gatter-Tausches zu unterdrücken, kann im
swap
-Kommando hinter dem Schlüsselwort
swap
das Schlüsselwort
internal
eingefügt werden.
Kommando newattr
Mit Hilfe des Kommandos
newattr
können über die Loglibdatei Attribute mit Werteinträgen in die Bibliothek übernommen werden. Die Syntax hierfür lautet:
newattr "$<attname>" = "<attvalue>" ;
<attname>
definiert dabei den Attributnamen, und
<attvalue>
enthält den zugehörigen Attributwert. Derartige Attributwertzuweisungen können im Layout durch die Definition des Textes
<attname>
(z.B. auf einer Dokumentarlage) visualisiert werden. Auch kann der entsprechende Werteintrag mit Hilfe von
User Language-Programmen bzw. mit dem Utilityprogramm
userlist weiter in Richtung Postprozess, PPS, usw. ausgewertet werden (typische Beispiele:
$sachnummer
für Stücklisten,
$delay
für Simulation,
$bauteilhoehe
für Bestückautomat,
$preis
,
$lieferant
,
$toleranz
, usw.).
Das Kommando
newattr
ermöglicht auch die Definition bzw. Zuweisung pinspezifischer Attribute bzw. Attributwerte. Die Syntax hierfür lautet:
newattr "$<attname>" = "<attvalue>" to ( <pplist> ) ;
In der Pinliste sind die physikalischen Pinbezeichnungen einzutragen. Damit können z.B. Pintypdefinitionen eingetragen werden wie sie für Electronic Rule Check (ERC) oder zur Generierung von Netzlisten für Simulatoren wie PSpice benötigt werden.
Der
Packager erlaubt über das Pinattribut
$pintype
eine Plausibilitätsprüfung für die im Schaltplan vorgenommenen Verbindungen zwischen Pins verschiedener Typen. Die Pinattribute werden zweckmässigerweise in den logischen Definitionen der Symbole fest für die einzelnen Layoutbauteilpins vergeben. Unterstützt werden die folgenden Pintypen:
$pintype | Pintyp |
in | Eingabe-Pin |
out | Ausgabe-Pin |
bidi | Bidirektionaler Anschluss |
anl | Analoger Anschluss |
sup | Stromversorgungsanschluss |
Der ERC überprüft für Netze mit mindestens einem Eingang, ob an diesem Netz ein normaler Ausgang, ein bidirektionaler Anschluss oder ein Versorgungsspannungspin vorhanden ist und gibt ggf. die Warnmeldung
Netz 'Netzname' hat nur Eingaenge!
aus. Außerdem überprüft der ERC, ob an einem normalen Ausgang ein anderer Ausgang, ein bidirektionaler Anschluss oder ein Versorgungsspannungspin angeschlossen ist und gibt ggf. die Warnmeldung
Treiber-Kollision auf Netz 'Netzname'!
aus.
Das
newattr
-Kommandos unterstützt auch die Vergabe variantenspezifischer Attribute. Dazu ist die Variantennummer dem Attributnamen nach dem Anführungszeichen mit Komma getrennt anzuhängen. Damit lassen sich bei fixer Verwendung von Varianten für alle Projekte, wie z.B.
110 Volt
und
230 Volt
oder
deutsch
und
english
den einzelnen Varianten unterschiedliche feste Attributwerte zuordnen. Ohne Variantennummernangabe wird der Attributwert der Basisvariante zugeordnet.
Über das Kommando
newattr
kann durch Zuweisung der speziellen Werte
?id?
,
?symid?extension
und
?partid?extension
eine automatische Generierung von ID-Attributwerten durch den
Packager angefordert werden.
?id?
erzeugt dabei fortlaufende ID-Werte nach dem Schema
id1
,
id2
usw., bei
?symid?extension
und
?partid?extension
wird die gegebene Extension mit Unterstrich an den Schaltplansymbolnamen bzw. den Layoutbauteilnamen des gerade bearbeiteten Symbols angehängt. So ergibt z.B.
?partid?diffpair1
ID-Werte nach dem Schema
ic1_diffpair1
,
ic2_diffpair1
usw. Die automatische ID-Generierung ist nützlich, wenn
newattr
auf mehrere Pins verweist, da so automatisch eine Beziehung zwischen Pins hergestellt werden kann, wie sie z.B. für die Markierung von Differential Pairs benötigt wird.
Bei Vorgabe des speziellen Wertes
!unique!
gibt das
newattr
-Kommando keine Attributzuweisung aus der logischen Definition heraus an, sondern steuert die Gatterzuordnung durch den
Packager so, dass nur Symbole mit gleichen Werten für die so markierten Attribute zusammen in ein Layoutbauteil gepackt werden. Dabei werden die
swap
-Kommandos automatisch so berücksichtigt, dass Gatter bauteilübergreifend nur zwischen Bauteilen mit gleichen Werten für die so markierten Attribute getauscht werden können. Die
!unique!
-Einstellung kann somit anstelle der Packungssteuerung über
$rpname
-Attribute bei Symboltypen mit unterschiedlichen Attributwerten innerhalb eines Projekts verwendet werden. Dies ist z.B. bei Widerstandsarrays nützlich:
part ra_so16r : so16r {
newattr "$val" = "!unique!";
pin (1-16);
swap internal (
(( 1,16)),(( 2,15)),(( 3,14)),(( 4,13)),
(( 5,12)),(( 6,11)),(( 7,10)),(( 8, 9))
);
}
Das folgende Beispiel zeigt die Verwendung des
!unique!
-Werts bei der Definition eines Operationsverstärkers mit Versorgungsspannunszuweisung über Attributwerte:
part op_lm324 : dil14 {
pin (/i,i,o);
net "$vplus" : (4);
net "$vminus" : (11);
newattr "$vplus" = "!unique!";
newattr "$vminus" = "!unique!";
xlat (/i, i, o)
to ( 2, 3, 1)
or ( 6, 5, 7)
or ( 9,10, 8)
or (13,12,14);
swap internal ((2,3,1),(6,5,7),(9,10,8),(13,12,14));
}
Kommando netattr
Über das Kommando
netattr
kann bereits im Stromlauf die Möglichkeit der Spezifikation von Router-Steuerparametern angeboten werden. Die Syntax für das Kommando
netattr
lautet:
netattr <netatt> "$<attname>" : ( <pinlist> ) ;
Für
<netatt>
können beliebige Attributnamen eingesetzt werden, wobei jedoch folgende Schlüsselworte spezielle Attribute zur
Autorouter-Steuerung definieren, d.h. vom System in spezieller Weise ausgewertet werden:
routwidth | netzbezogene Leiterbahnbreite (in mm) |
powwidth | pinbezogene Anschlussbreite für die über Kommando net definierten Signale (in mm) |
mindist | netzbezogener Mindestabstand zu anderen Potentialen (in mm) |
priority | netzbezogene Routing-Priorität (Integer; je größer, desto höher die Priorität) |
Die mit dem
AutoEngineer gelieferte Bibliothek enthält in
route.ddb
virtuelle Stromlaufsymbole, über die
netattr
-Einträge im Stromlauf möglich sind. Die entsprechende Loglibdatei
(route.def
) hat folgenden Inhalt:
loglib
part att_rw : virtual
{
pin (x);
netattr routwidth "$val" : (x);
}
part att_pw : virtual
{
pin (x);
netattr powwidth "$val" : (x);
}
part att_md : virtual
{
pin (x);
netattr mindist "$val" : (x);
}
part att_pr : virtual
{
pin (x);
netattr priority "$val" : (x);
}
end.
Wie aus obiger Loglibdatei zu ersehen ist, enthalten die virtuellen Symbole jeweils einen Pin (benannt
x
) und ein Attribut. Die Zuweisung des jeweiligen Attributes an ein bestimmtes Signal erfolgt im Stromlauf-Editor durch Anschluss des virtuellen Symbols (über Pin
x
) an das betreffende Signal sowie Eintrag des entsprechenden Attributwertes.
Durch die Möglichkeit der Definition beliebiger anwendungsspezifischer Netzattribute lassen sich zusätzliche Signalnetzinformationen auf gesonderte Weise verarbeiten bzw. auswerten. Solche Netzattribute lassen sich z.B. zur Kontrolle des Layoutprozesses (maximal/minimal zulässige Leiterbahnlänge, Parallelführung von Leiterbahnen, Lagenzuordnung, usw.) verwenden oder können zur Steuerung nachgeschalteter Simulationsprozesse bzw. Laufzeitanalysen oder zur Prüfung von ECL/EMV-Regeln herangezogen werden (tatsächliche Leiterbahnlängen, Parallelverlauf von Leiterbahnen, usw.). Die Bereitstellung entsprechender Tools zur Auswertung anwendungsspezifischer Netzattribute kann mit Hilfe entsprechender
User Language-Programme erfolgen.
Über das Kommando
netattr
kann durch Zuweisung der speziellen Werte
?id?
,
?symid?extension
und
?partid?extension
eine automatische Generierung von ID-Attributwerten durch den
Packager angefordert werden.
?id?
erzeugt dabei fortlaufende ID-Werte nach dem Schema
id1
,
id2
usw., bei
?symid?extension
und
?partid?extension
wird die gegebene Extension mit Unterstrich an den Schaltplansymbolnamen bzw. den Layoutbauteilnamen des gerade bearbeiteten Symbols angehängt. So ergibt z.B.
?partid?diffpair1
ID-Werte nach dem Schema
ic1_diffpair1
,
ic2_diffpair1
usw. Die automatische ID-Generierung ist nützlich, wenn
netattr
auf mehrere Netze verweist, da so automatisch eine Beziehung zwischen Netzen hergestellt werden kann, wie sie z.B. für die Markierung von Differential Pairs benötigt wird.
Kommando call
Über das
call
-Kommando erfolgt die Zuweisung von Blockstromlaufplänen an Stromlaufsymbole für hierarchisches Schaltplandesign. Die Syntax hierfür lautet:
call <blockname> ;
Die Definition des Bauteiles erfolgt dabei
virtual
. Die Pins des Stromlaufsymbols werden den gleichnamigen Modulports in den Blockstromlaufplänen zugewiesen.
Kommando architecture
Über das Kommando
architecture
lassen sich Stromlaufsymbole (vom Typ
virtual
) aus intern beliebig verschalteten anderen Stromlaufsymbolen aufbauen, die zudem mehreren Layoutbauteilen zugeordnet sein können. Die Syntax hierfür lautet:
architecture { <partlist> }
<partlist>
enthält eine Auflistung der verwendeten Symbole jeweils mit in Klammern gesetzter kommaseparierter Auflistung der Symbolpins in der Form:
<pinname:connection>
Hierbei kann
<connection>
der Name eines Pins des
<architecture>
-Symbols sein. In der Form
<net netname>
kann der Anschluss an ein global benanntes Netz erfolgen. Mit
<net & intnetname>
oder
<& intnetname>
kann ein nur lokal für das
<architecture>
-Symbol gültiges Netz referenziert werden.
Beispiele
Loglibdatei
example.def
mit der Definition dreier Bauteile:
loglib
/* Example Loglib File */
part 74ls00 : dil14, so14
{
newattr "$partnumber" = "A-NAND-X11B82";
newattr "$pintype" = "in" to (1,2,4,5,9,10,12,13);
newattr "$pintype" = "out" to (3,6,8,11);
newattr "$pintype" = "sup" to (7,14);
pin (a,b,y);
net "vcc" : (14);
net "$groundnetname" : (7);
xlat ( a, b, y)
to ( 1, 2, 3)
or ( 4, 5, 6)
or (13,12,11)
or (10, 9, 8);
swap (((1,2),3),((4,5),6),((13,12),11),((10,9),8));
}
part tx27 : default sot23;
part tr_bc547 : class "npn-transistor" default to92
{
pin (e,b,c);
xlat (e,b,c)
to (1,2,3);
}
end.
In obigem Beispiel ist das Gatter
74ls00
definiert, das bis zu viermal in das Gehäuse
dil14
gepackt werden kann, wobei die logischen Pins (a,b,y) wahlweise den physikalischen Anschlüssen (1,2,3), (4,5,6), (13,12,11) oder (10,9,8) zugewiesen werden können. Dieses Gehäuse kann im Layout gegen die Alternativbauform
so14
getauscht werden. Außerdem ist für das Bauteil
74ls00
das Attribut mit Namen
partnumber
und Wert
A-NAND-X11B82
definiert, und jedem physikalischen Pin ist ein Attribut zur Spezifikation des Pintyps zugewiesen. Der Anschluss 14 des Gehäuses
dil14
ist fest mit dem Signal
vcc
verbunden, während der Anschluss 7 auf Stromlaufebene durch Zuweisung eines Netznamenseintrags (z.B.
vss
) an das Attribut
$groundnetname
des Symbols
74ls00
mit dem gewünschten Signalnetz verbunden werden kann. Über das
swap
-Kommando sind für das Gehäuse
dil14
mit den vier Gattern
74ls00
folgende Tauschmöglichkeiten definiert:
Pintausch: (1,2) bzw. (4,5) bzw. (13,12) bzw. (10,9)
Gattertausch: (1,2,3) mit (4,5,6) bzw. (13,12,11) bzw. (10,9,8)
Bauteil-Tausch: (1,2,3,4,5,6,13,12,11,10,9,8)
Neben dem Bauteil
74ls00
sind in obigem Beispiel auch noch das Bauteil
tx27
(per Default direkt dem Gehäuse
sot23
zugeordnet) sowie der NPN-Transistor
tr_bc547
(mit Zuweisung an Bauteilklasse
npn-transistor
) definiert.
Obige Loglibdatei
example.def
lässt sich mit folgendem
loglib-Aufruf in die DDB-Datei
mylib.ddb
einspielen:
> loglib example mylib
Folgendes Beispiel zeigt die Zuweisung verschiedener Stromlaufsymbole an ein einziges Gehäuse (in diesem Fall geschieht dies für ein Relais-Bauteil mit zwei Kontakten und einer Spule):
loglib
/* Relais-Bauteil */
part rel2 : mainpart dilrel
{
xlat (a,b) to (1,7) or (8,14);
swap ((1,7),(8,14));
}
part rel2sub : subpart rel2
{
xlat (p,m) to (2,6);
}
end.
Folgendes Beispiel zeigt die Definition der beiden Busse
b1
und
b2
mit den Bussignalen
0
,
1
,
2
und
3
am Bauteil
buspart
(das entsprechende Stromlaufsymbol
buspart
besitzt in diesem Fall die beiden Pins
b1
und
b2
, von wo aus alle definierten Bussignale über entsprechende Busverbindungen abgegriffen werden können):
loglib
/* Bus-Bauteil */
part buspart : sot8
{
bus (b1,b2);
xlat (b1.0,b1.1,b1.2,b1.3) to (1,2,3,4);
xlat (b2.0,b2.1,b2.2,b2.3) to (5,6,7,8);
}
end.
Folgendes Beispiel zeigt die Definition eines Symbols für das hierarchische Schaltplandesign. Dem Stromlaufsymbol
dff
werden dabei die zugehörigen Blockstromlaufpläne
dff
zugewiesen. Die Pins
s
,
r
,
q
und
/q
müssen auf den entsprechenden Blockstromlaufplänen als Modulports definiert sein.
loglib
/* Hierarchisch aufgebautes Flip-Flop */
part dff : virtual
{
pins (s,r,q,/q);
call dff;
}
end.
Folgendes Beispiel zeigt eine synthetische Symboldefinition über das Kommando
architecture
. Das Stromlaufsymbol
delay
wird dabei intern aus einer Serienschaltung von vier
74ls04
-Invertern aufgebaut, die über lokale interne Netze miteinander verbunden sind.
loglib
/* Synthetisch generierte Inverter-Serienschaltung */
part delay : virtual
{
pin (in,out);
architecture
{
part "74ls04" (a:in,y:&connect1);
part "74ls04" (a:&connect1,y:&connect2);
part "74ls04" (a:&connect2,y:&connect3);
part "74ls04" (a:&connect3,y:out);
}
}
end.
Dateien
Das bei der Software-Installation des
Bartels AutoEngineer generierte Bibliotheks-Verzeichnis enthält neben der Layoutbibliothek
laylib.ddb
für alle mitgelieferten Stromlauf-Bibliotheksdateien die entsprechenden Loglibdateien
(*.def
), die alle bereits mit dem Programm
loglib in die Layoutbibliothek eingespielt sind.
Siehe auch
Packager.
Die Funktionalität zur Kompilierung logischer Bibliotheksdefinitionen ist auch in der
User Language-Systemfunktion
con_compileloglib implementiert.
Diagnose
Die durch
loglib erzeugten Fehlermeldungen sind selbsterklärend.
Warnungen
In den Eingabedaten sind Bauteilnamen, Pinnamen oder Netznamen mit Sonderzeichen
(-
,
+
,
/
,
(
,
=
, usw.) in einfachen oder doppelten Anführungszeichen anzugeben.
Wird im Stromlauf oder im Layout während der Bearbeitung ein Symbol aus einer Bibliotheksdatei in eine Projektdatei geladen, dann wird datentechnisch eine komplette Kopie des Symbols in der Projektdatei abgelegt. Dies führt dazu, dass im Laufe der Bearbeitung in jeder Projektdatei automatisch eine projektspezifische Bibliothek angelegt wird. Wird über eine Loglibdatei eine Veränderung vorgenommen, von der Layoutsymbole betroffen sind, die bereits in einer projektspezifischen Layoutbibliothek existieren, dann muss
loglib auch auf die entsprechende Projektdatei angewendet werden damit z.B. die richtige Pin/Gate-Swap-Information in die projektspezifische Bibliothek eingetragen wird. Bei falscher oder fehlender Anwendung von
loglib kommt es spätestens beim
Packager-Lauf zu Fehlermeldungen wie etwa
Bauteil nicht in Bibliothek!
,
Bauteil nicht definiert!
oder
Pin nicht gefunden!
.