Willkommen bei Bartels
LOGLIB - Deutsche Version LOGLIB - English Version
Bartels

Bartels System GmbH
Bartels
Bartels AutoEngineer
BAE Produktinfo
BAE Preisliste
BAE Downloads
BAE Dokumentation
BAE Installationsanleitung
BAE Benutzerhandbuch
Vorwort
1 Einleitung
2 Schaltungsentwurf
3 Packager
4 Leiterkartenentwurf
5 IC-/ASIC-Entwurf
6 Regelsystem
7 Utilities
7.1 BAEHELP
7.2 BAESETUP, BSETUP
7.3 BICSET (IC-Design)
7.4 BLDRING (IC-Design)
7.5 CONCONV
7.6 COPYDDB
7.7 FONTCONV
7.8 FONTEXTR
7.9 INSTALL
7.10 LISTDDB
7.11 LOGLIB
7.12 NETCONV
7.13 REDASC
7.14 RULECOMP
7.15 ULC - User Language Compiler
7.16 User Language Interpreter
7.17 USERLIST
7.18 VALCONV
BAE Bibliotheken
User Language Programmierhandbuch
BAE Update-Historie
BAE Nächste Version Freigabemitteilungen Vorabinfo
BAE V8.0 Freigabemitteilungen
BAE V7.8 Freigabemitteilungen
BAE V7.6 Freigabemitteilungen
BAE V7.4 Freigabemitteilungen
BAE V7.2 Freigabemitteilungen
BAE V7.0 Freigabemitteilungen
BAE V6.8 Freigabemitteilungen
BAE V6.6 Freigabemitteilungen
BAE V6.4 Freigabemitteilungen
BAE V6.2 Freigabemitteilungen
BAE V6.0 Freigabemitteilungen
BAE V5.4 Freigabemitteilungen
BAE V5.0 Freigabemitteilungen
BAE V4.6 Freigabemitteilungen
BAE V4.4 Freigabemitteilungen
BAE V4.2 Freigabemitteilungen
BAE V4.0 Freigabemitteilungen
BAE V3.4 Freigabemitteilungen
BAE Support
BAE Contrib
BAE Entwickler und Dienstleister
Elektronikentwicklung
Sport
Firmenprofil
Impressum
Bartels :: Bartels AutoEngineer :: BAE Dokumentation :: BAE Benutzerhandbuch :: Utilities :: LOGLIB
Bartels AutoEngineer® - Benutzerhandbuch

7.11 LOGLIB

Bartels AutoEngineer® Dokumentation

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 Backannotation) 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 Bauform aendern 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 Backannotation 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 Symbollogik zeigen 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 Bauteile - Pin/Gate Swap 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:

$pintypePintyp
in Eingabe-Pin
out Ausgabe-Pin
bidiBidirektionaler 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:

routwidthnetzbezogene 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 Return-/Eingabetaste (CR)

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!.

Bartels :: Bartels AutoEngineer :: BAE Dokumentation :: BAE Benutzerhandbuch :: Utilities :: LOGLIB

LOGLIB
© 1985-2017 Oliver Bartels F+E • Aktualisiert: 18. November 2011, 23:05 [UTC]

© 1985-2017 Oliver Bartels F+E Bartels Startseite Kontakt und Impressum

Webentwicklung Baumeister Mediasoft Engineering

LOGLIB - Deutsche Version LOGLIB - English Version