2. 1. 18   Takt

SYNTAX

Der Tcl-Befehl clkCmd erlaubt Operationen mit einem Takt-Objekt. Er hat die allgemeine Form:

    clkCmd option ?arg arg ...?

option und  args bestimmen das exakte Verhalten des Befehls. Über die allgemeinen Objektbefehle hinaus sind folgende Befehle für Takt-Objekte definiert:

OBJEKTPARAMETER

clkCmd length
Gibt die Anzahl der Impulse (Länge der Impulsliste) des Takt-Objektes zurück.
 
clkCmd first ?-exact? date

Gibt den Index des ersten Treffers aus. Wenn das gesuchte Datum nicht existiert, so wird der Index des Impulses mit dem nächst kleineren Datum ausgegeben. Wenn alle Daten kleiner als date sind, wird -1 ausgegeben.
Mit der Option -exact wird nach dem genauen Datum gesucht. Wenn das Datum nicht gefunden wurde, so wird so wird -1 ausgegeben.
Bei Mehrfachtreffern wird der Index des ersten Vorkommens ausgegeben.

clkCmd get option ?option? ?option?

Gibt eine Liste der Eigenschaften der Schalter von clkCmd aus wobei mindestens eine und maximal drei der folgenden Option angegeben werden müssen.

  • -index
  • Index des Impulses
  • -date
  • Datum des Impulses
  • -type
  • Typ des Impulses

    clkCmd append ?date? ?type boolean?

    Hängt einen weiteren Impuls an das Takt-Objekt an. Wird date angegeben, wird der Impuls nach dem Impuls eingefügt, dessen Datum kleiner oder gleich der angegebenen Zeit ist. Ohne Angabe von date wird der Impuls immer am Ende (Index = length+1) angefügt und erhält automatisch den Taktzeitpunkt des Vorgängers. Rückgabewert ist der Index, an dem der Impuls eingefügt wurde (0: Impuls wurde nicht angefügt).
    Bei Angabe von type und einem boolschen Wert wird der Typ des eingefügten Impulses gesetzt.
     
    clkCmd insert index

    Fügt einen neuen Impuls vor den Impuls index (= 1, 2, ..., length) ein. Enthält das Takt-Objekt bereits Impulse, wird der Taktzeitpunkt automatisch auf die des Vorgängers gesetzt.
     
    clkCmd insert option ?option? list

    Fügt eine Liste von Impulsen und ihren Zeitpunkten in den Schichtplan ein. Die Listenstruktur wird über die vorher angegebenen Optionen definiert. Zur Verfügung stehen

  • -date
  • Datum des Impulses
  • -type
  • Typ des Impulses

    clkCmd copy clkCmdName

    Erzeugt ein neues Takt-Objekt mit dem Namen clkCmdName und überträgt alle Objekteigenschaften (nicht die Namespaces) auf das neue Takt-Objekt.


    clkCmd remove index

    Entfernt den Impuls index (= 1, 2, ..., length) aus dem Takt-Objekt.
     
    clkCmd clear

    Entfernt alle Impulse aus dem Takt-Objekt.
     
    clkCmd type ?index? ?boolean?

    Abfrage oder Setzen des Typs eines Impulses. Der Typ eines Impulses kann "Ein" (1) oder "Aus" (0) sein. Ohne den Parameter index wird eine Liste der Typen aller Impulse zurückgegeben. Bei Angabe von index allein wird nur der Typ des entsprechenden Impulses ausgegeben. Wird außerdem boolean angegeben, wird der entsprechende Impuls index auf boolean gesetzt. Diese Eigenschaft wird nicht verwendet. Voreinstellung ist 1.
     
    clkCmd cycle ?boolean?

    Abfrage oder Setzen der Zyklus-Eigenschaft eines Takt-Objekts. Die Zyklus-Eigenschaft bestimmt die Arbeitsweise des Taktes. Er wird entweder als endlicher (0) oder zyklischer (1) Takt interpretiert. Bei endlichen Takten gilt jeder Impuls nur einmal exakt zum angegebenen Zeitpunkt. Bei zyklischen Takten wiederholt sich die Impulsfolge nach dem letzten Impuls. Erster und letzter Impuls bilden die Zyklusdauer, zum Zeitpunkt des letzten Impulses beginnt die Folge von neuem mit dem ersten Impuls ad infinitum. Voreinstellung ist 0.
     
    clkCmd date ?index? ?time?

    Abfrage oder Setzen des Taktzeitpunktes eines Impulses. Die Reihenfolge der Impulse bestimmt auch ihre Taktzeitpunkte ([clkCmd date 1] <= [clkCmd date 2]). Negative Taktzeitpunkte werden als unendlich interpretiert. Ohne den Parameter index wird eine Liste der Taktzeitpunkte aller Impulse zurückgegeben. Bei Angabe von index allein wird nur der Taktzeitpunkt des entsprechenden Impulses ausgegeben. Wird außerdem time angegeben, wird der entsprechende Impuls index auf time gesetzt. Der Taktzeitpunkt eines Impulses kann nur zwischen den Zeiten des vorhergehenden und des nachfolgenden Impulses liegen (dateix-1 <= dateix <= dateix+1). Voreinstellung ist 0.
    clkCmd next ?index?

    Abfrage oder Setzen des nächsten auszuführenden Taktimpulses. Diese Eigenschaft steuert sich im Simulationslauf selbst. Bei Impulsen, die zeitgleich zum Simulationszeitpunkt (watch) liegen, muss eine Weiterschaltung erfolgen, wenn ein Impuls bereits ausgeführt wurde. Das Setzen auf einen Impuls, der nicht im Zeitraster liegt ist nicht möglich, der Takt justiert sich in diesem Fall selbst.
     
    clkCmd rest

    Abfrage der Restzeit bis zum nächsten auszuführenden Taktimpuls.
     
    clkCmd trigger ?boolean?

    Gibt an, ob bei einem Takt in der Statistik der Maschinen, Warteschlangen und der Jobs ein neues Zeitintervall beginnen soll. Voreinstellung: 0. Soll z.B. jede Stunde ein Takt ausgelöst werden, aber nur jeden Tag ein neues Statistikintervall begonnen werden, werden zwei zyklische Takt-Objekte (z.B. clk1, clk2) mit jeweils zwei Taktimpulsen benötigt:
    clk
    clk1 append 0
    clk1 append 3600
    clk1 cycle 1
    clk
    clk2 append 0
    clk2 append [expr 24 * 3600]
    clk2 cycle 1
    clk2 trigger 1