|
|
Der Bartels User Language Interpreter ist in verschiedenen Programmumgebungen integriert. Im Bartels AutoEngineer sind dies der Schaltplaneditor, der Layouteditor, der Autorouter, der CAM-Prozessor, das CAM-View-Modul sowie der Chipeditor. Aus all diesen Programmteilen können mit Hilfe des User Language Interpreter User Language-Programme gestartet werden. 3.3.1 ArbeitsweiseDie Aktivierung des User Language Interpreter erfolgt durch den Aufruf eines User Language-Programms aus einer der gültigen Interpreterumgebungen. Die Abarbeitung eines User Language-Programmaufrufs durch den User Language Interpreter erfolgt in den nachfolgend beschriebenen Arbeitsschritten. Programm laden, Dynamic LinkZunächst muss der
User Language Interpreter das
User Language-Maschinenprogramm über den beim Aufruf spezifizierten Programmnamen aus der Datei
User Language-Programme können Anforderungen zur Laufzeiteinbindung von User Language-Libraries enthalten (Dynamic Link Requests). Die Einbindung des Maschinencodes der benötigten Dynamic Link Libraries (DLLs) erfolgt automatisch während der Programmladephase. Grundvoraussetzung für die erfolgreiche Durchführung des Dynamic-Link-Prozesses ist die Verfügbarkeit der benötigten Libraries. Außerdem müssen die im Maschinencode der einzubindenden Dynamic Link Libraries enthaltenen Definitionen (Variablen, Funktionen, Funktionsparameter) mit dem bei der Kompilierung durch den User Language Compiler überprüften Maschinencode übereinstimmen, damit bei der Ausführung des Programms nicht etwa fehlende oder falsche Libraryobjekte referenziert werden können (was zu einem undefinierten Verhalten des User Language Interpreter oder sogar zum Programmabsturz mit möglichem Datenverlust führen könnte). Der im User Language Interpreter integrierte Linker führt entsprechende Kompatibilitätsprüfungen durch und verweigert im Falle von Inkonsistenzen die Programmausführung mit der Fehlermeldung . In solchen Fällen ist das auszuführende User Language-Programm neu zu kompilieren. ProgrammausführungNachdem das User Language-Maschinenprogramm geladen (und dynamisch gelinkt) ist, beginnt der Interpreter mit der Ausführung des Programms (Program Execute). Die Programmausführung entspricht dabei der Simulation der User Language-Maschinenarchitektur durch Abarbeitung der Instruktionen des Maschinenprogramms. Die Abarbeitung beginnt bei der ersten Instruktion des Maschinenprogramms und ist beendet, wenn der Programmzähler auf eine nicht mehr existente Instruktion des Maschinenprogramms verweist. ProgrammterminierungNach der Ausführung des Maschinenprogramms muss eine Terminierung durchgeführt werden. Dabei wird zunächst der während des Programmlaufs belegte Speicher wieder freigegeben (Program Cleanup), und anschließend wird das Programm selbst entladen (Program Unload). 3.3.2 ProgrammaufrufBeim Aufruf eines User Language-Programms aus einer der definierten Interpreterumgebungen ist in jedem Fall der Name des auszuführenden Programms zu spezifizieren. Dies kann entsprechend den nachfolgend beschriebenen Methoden entweder explizit oder implizit erfolgen. Aufruf über MenüZum expliziten Aufruf von User Language-Programmen ist die Funktion aus dem Menü zu benutzen. aktiviert einen Dialog zur Programmnamensabfrage. Der Programmname kann entweder direkt über Tastatur eingegeben oder nach Anwahl der Schaltfläche aus der Liste der aktuell verfügbaren Programme selektiert werden:
Wird auf die Abfrage nach dem Programmnamen ein Fragezeichen
( Aufruf über TastaturEine Möglichkeit des impliziten Programmaufrufs besteht durch den Programmaufruf über die Tastatur. Hierzu muss sich der Anwender in der Menüleiste der Interpreterumgebung befinden, d.h. diese Art des Programmaufrufs ist immer dann möglich, wenn nicht gerade eine andere interaktive Eingabe über Tastatur erwartet wird. Die Spezifikation des Programmnamens erfolgt dabei implizit durch Drücken einer speziellen Taste. Tabelle 3-2 enthält die Liste der definierten Zuordnung von Tasten zu User Language-Programmnamen innerhalb der unterschiedlichen Interpreterumgebungen. Durch Drücken einer der in dieser Tabelle angegebenen Tasten wird - sofern verfügbar - automatisch das entsprechend benannte User Language-Programm gestartet. Mit bae_* benannte Programme haben dabei Priorität vor den Programmen mit modulspezifischen Namen.
Ereignisgesteuerter ProgrammaufrufEine spezielle Möglichkeit des impliziten Programmaufrufs besteht im ereignisgesteuerten Aufruf von User Language-Programmen. Dabei lösen spezielle Ereignisse bzw. Operationen (BAE-Modulstart, Laden bzw. Speichern eines Elements, Ändern des Zoomfaktors oder Selektion eines Toolbarelements) automatisch den Aufruf von User Language-Programmen mit definiertem Namen aus. Tabelle 3-3 enthält die Zuordnung der vordefinierten User Language-Programmnamen zu den entsprechenden Ereignissen bzw. Operationen der einzelnen Interpreterumgebungen. Mit bae_* benannte Programme haben dabei Priorität vor den Programmen mit modulspezifischen Namen. Der Aufruf über die Startupsequenz der Interpreterumgebung eignet sich besonders zur automatischen Voreinstellung von Parametern sowie zur Tastaturprogrammierung und Menübelegung (siehe auch unten). Der implizite Aufruf von User Language-Programmen nach dem Laden bzw. vor dem Speichern von Elementen ermöglicht die automatische Aktivierung elementspezifischer Bearbeitungsparameter wie z.B. des zuletzt selektierten Zoombereichs oder spezieller Farbeinstellungen.
Tastaturprogrammierung und MenübelegungMit der Bartels User Language werden Systemfunktionen zur Tastaturprogrammierung und Menübelegung zur Verfügung gestellt. Damit ist es möglich, User Language-Programmaufrufe oder BAE-Menüfunktionen auf die Tastatur zu legen (z.B. Taste m zur Aktivierung des User Language-Programms mirron oder Taste U zur Aktivierung der BAE-Menüfunktion ). Durch die Zuweisung spezieller User Language-Programmaufrufe oder Menüfunktionen auf neue bzw. bestehende Menüs oder Menüeinträge können die Menüoberflächen der AutoEngineer-Module mit integriertem User Language Interpreter nach Belieben konfiguriert werden. Die Tastaturprogrammierung bzw. die Menübelegung lässt sich vollautomatisch über die jeweiligen User Language-Startupprogramme durchführen (siehe hierzu das mit der BAE-Software ausgelieferte User Language-Programm uifsetup welches indirekt über die in Tabelle 3-3 aufgeführten Startupprogramme aufgerufen wird). Mit einem geeigneten User Language-Programm ist sogar die dynamische Änderung der Tastatur- und Menübelegung (d.h. online während der Arbeit im AutoEngineer) möglich. Derartige Features sind z.B. in dem mit der BAE-Software ausgelieferten User Language-Programm keyprog implementiert. Damit besteht völlige Freiheit bei der Konfiguration der Benutzeroberflächen der AutoEngineer-Module mit integriertem User Language Interpreter. MenüfunktionstastenbelegungIn BAE-Pulldownmenüoberflächen unterstützt das über Taste
Definition von Bearbeitungssequenzen (Makros)Über
User Language-Programmaufrufen über die Funktion
ulsystem, bei der Definition von Tasten und Menüfunktionen in der Datei
Damit ist es möglich, Untermenüpunkte, wie z.B.
Benutzerspezifische Programmeinstellungen und MenükonfigurationZur vereinfachten Handhabung von benutzerspezifischen Einstellungen können Parameterdefinitionen, Tastaturbelegungen und Menüerweiterungen in die Datei
Die mit der BAE-Software ausgelieferten
User Language-Programme berücksichtigen relevante Definitionen und Parametereinstellungen aus
Die Datei
Neben einfachen Parameterzuweisungen können mit den Schlüsselwörtern
Die Syntax der einzelnen Kommandos ist aus der Inlinedokumentation der mitgelieferten Datei
3.3.3 FehlerbehandlungWährend der Bearbeitung eines User Language-Programmaufrufs durch den User Language Interpreter können Fehler auftreten. Diese Fehler werden der Interpreterumgebung zurückgemeldet, und es wird ggf. eine entsprechende Fehlermeldung in der Mitteilungszeile der Interpreterumgebung angezeigt. Die möglichen Fehlermeldungen sind nachfolgend aufgelistet. Interne Interpreter-FehlerDie folgenden internen Interpreter-Fehler beziehen sich entweder auf die Speicherverwaltung oder weisen auf Implementierungslücken im Interpreter selbst hin; diese Fehler sind so schwerwiegend (Fatal Errors), dass auch die Interpreterumgebung abgebrochen werden muss: FEHLER : Zu wenig Speicherplatz! FEHLER : Allgemeiner User Language-Interpreter-Fehler! FEHLER : INTERNER FEHLER -- BITTE MELDEN! Programm-Lade-FehlerDie folgenden Fehler können beim Laden des User Language-Programms auftreten: FEHLER : Programm 'n' bereits geladen (rekursiver Aufruf)! FEHLER : Programm 'n' nicht gefunden! FEHLER : User Language-Programm-Version inkompatibel! FEHLER : Inkompatible Index-/Funktions-Referenz(en)! Programm-Laufzeit-FehlerDie folgenden Fehler können während der Ausführung des
User Language-Programms, d.h. zur Laufzeit des Programms auftreten; der in der Fehlermeldung angezeigte Programmzähler
( (PCl) FEHLER : Stack Unterlauf (Programm-Struktur beschaedigt)! (PCl) FEHLER : Stack Ueberlauf! (PCl) FEHLER : Division durch Null! (PCl) FEHLER : Funktions-Aufruf fehlgeschlagen! (PCl) FEHLER : System-Funktion in dieser Umgebung nicht verfuegbar! (PCl) FEHLER : System-Funktion nicht implementiert! (PCl) FEHLER : User-Funktion nicht gefunden! (PCl) FEHLER : Referenzierte Funktion ist vom falschen Typ! (PCl) FEHLER : Ungueltige Parameter fuer referenzierte Funktion! (PCl) FEHLER : Fehler beim Zugriff auf Array! (PCl) FEHLER : Ungueltiger Array-Index! (PCl) FEHLER : Datei-Zugriffs-Fehler! (PCl) FEHLER : Datei-Lese-Fehler! (PCl) FEHLER : Datei-Schreib-Fehler! Datenbank-Zugriffs-FehlerDie folgenden Fehler können beim Zugriff auf die Design Datenbank (DDB) des Bartels AutoEngineer auftreten; treten derartige Fehler beim Laden von User Language-Programmen auf, dann liegt unter Umständen eine fehlerhafte Installation der Bartels AutoEngineer Software vor; treten Datenbank-Zugriffsverletzungen hingegen während der Programmlaufzeit auf, dann bezieht sich die entsprechende Fehlermeldung in aller Regel auf Implementierungs-Fehler im abzuarbeitenden User Language-Programm: FEHLER : Datenbankdatei 'n' kann nicht angelegt werden! FEHLER : Schreib-/Lesefehler beim Zugriff auf Datei 'n'! FEHLER : Zu viele offene Dateien im System! FEHLER : Datei 'n' ist keine Datenbank/DDB-Datei! FEHLER : Die Datenbankstruktur in Datei 'n' ist beschaedigt! FEHLER : Der Dateiaufbau ist fehlerhaft in Datei 'n'! FEHLER : Funktion fuer altes Format nicht verfuegbar! FEHLER : Datenbank Limit ueberschritten! FEHLER : Datei 'n' ist zur Programmversion inkompatibel! FEHLER : Element 'n' nicht gefunden! FEHLER : Element 'n' existiert bereits! FEHLER : Datei 'n' nicht gefunden! FEHLER : Record-Ende erreicht! FEHLER : Allgemeiner Datenbankfehler!
Interpreter |
|