DE60035644T2 - Ablauffolgeplanung der nicht ganzzahligen Simulationszeit für mixed-signal Simulation - Google Patents

Ablauffolgeplanung der nicht ganzzahligen Simulationszeit für mixed-signal Simulation Download PDF

Info

Publication number
DE60035644T2
DE60035644T2 DE60035644T DE60035644T DE60035644T2 DE 60035644 T2 DE60035644 T2 DE 60035644T2 DE 60035644 T DE60035644 T DE 60035644T DE 60035644 T DE60035644 T DE 60035644T DE 60035644 T2 DE60035644 T2 DE 60035644T2
Authority
DE
Germany
Prior art keywords
events
heap
scheduled
scheduled times
time
Prior art date
Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
Expired - Lifetime
Application number
DE60035644T
Other languages
English (en)
Other versions
DE60035644D1 (de
Inventor
Steven S. Beaverton Greenberg
Current Assignee (The listed assignees may be inaccurate. Google has not performed a legal analysis and makes no representation or warranty as to the accuracy of the list.)
Synopsys Inc
Original Assignee
Synopsys Inc
Priority date (The priority date is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the date listed.)
Filing date
Publication date
Priority claimed from US09/531,350 external-priority patent/US6961689B1/en
Application filed by Synopsys Inc filed Critical Synopsys Inc
Application granted granted Critical
Publication of DE60035644D1 publication Critical patent/DE60035644D1/de
Publication of DE60035644T2 publication Critical patent/DE60035644T2/de
Anticipated expiration legal-status Critical
Expired - Lifetime legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/32Circuit design at the digital level
    • G06F30/33Design verification, e.g. functional simulation or model checking
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/30Circuit design
    • G06F30/36Circuit design at the analogue level
    • G06F30/367Design verification, e.g. using simulation, simulation program with integrated circuit emphasis [SPICE], direct methods or relaxation methods

Description

  • GEBIET DER ERFINDUNG
  • Die Erfindung betrifft das Gebiet der Computersimulation von physikalischen Schaltungen und Systemen, in denen analoge und gemischt digital-analoge Signale auftreten, und insbesondere das Planen nicht ganzzahliger Zeitpunkte für Simulationsereignisse.
  • HINTERGRUND DER ERFINDUNG
  • Bei der Simulation digitaler Systeme, bei der sowohl das funktionale Verhalten der Systeme als auch deren zeitliches Verhalten verifiziert werden soll, ist die Geschwindigkeit der Simulation einer der wichtigsten Faktoren. Einer der Schlüssel zum Beschleunigen der Simulation besteht darin, in der Simulation gezielt nur die Aktivität im Modell zu verfolgen. Diese gezielte Verfolgung wird in zwei Bereichen vorgenommen. Ein Bereich ist das Modell. Zu jedem gegebenen Simulationszeitpunkt lässt der Simulator die Teile des Modells außer Acht, die sich nicht verändern. Der andere Bereich ist die Zeit. Idealerweise wird der Simulator nur für diejenigen Simulationszeitpunkte aktiv, zu denen eine Aktivität auftritt.
  • Zum Erzielen dieser Wirksamkeit wird die Aktivität in Ereignisse unterteilt, die zu bestimmten Zeitpunkten auftreten. Erzeugt das Modell diese Ereignisse, so ist es unerlässlich, dass der Simulator diese Ereignisse für die Verarbeitung zu den spezifizierten Simulationszeitpunkten wirksam speichert und sie wirksam zurückholt, wenn die Simulation zu diesem Simulationszeitpunkt fortschreitet. Um dies zu erreichen werden in der Regel Datenstrukturen und Algorithmen verwendet, die eine Planungsliste (time wheel) implementieren. Eines der Merkmale der Planungsliste ist die Fähigkeit, dem Simulator in einer Operation die gesamte Liste aller Ereignisse am nächsten Simulationszeitpunkt zu übermitteln, an den ein Ereignis auftritt.
  • Jeder Schlitz in der Planungsliste stellt eine Einheit der minimal auflösbaren Zeit dar. Eine Modulooperation auf der Simulationszeit dient dazu, den richtigen Schlitz zu finden, in dem ein Ereignis angeordnet wird. Die Simulationszeit wird weitergeschaltet, indem man den nächsten Schlitz aufsucht, in dem die Planungsliste eine nicht leere Ereignisliste aufweist. Die Ordnung der Komplexität der Modulooperation ist bezüglich der Computerzeit eine Konstante. Der Aufwand zum Prüfen eines jeden leeren Schlitzes ist so beträchtlich, dass es wichtig ist, die Anzahl der leeren Schlitze so gering wie möglich zu halten. Das Minimieren der Schlitze erfolgt durch das Wählen einer kleinsten auflösbaren Zeit, die so klein ist, dass man die gewünschte Genauigkeit bezüglich der Zeit erreicht, jedoch so groß, dass die Anzahl der leeren Schlitze so gering wie möglich wird. Aus der Sicht des Simulierenden ist es am einfachsten, wenn diese minimale auflösbare Zeit zu Beginn der Simulation bekannt ist. Andernfalls muss man Vorkehrungen zum Umorganisieren der Planungsliste bei fortschreitender Simulation treffen. Diese Umorganisation ist sehr aufwendig.
  • Eine weitere Schwierigkeit stellt die Entscheidung über die Größe der Planungsliste dar. Sie muss so groß sein, dass sie die längste Verzögerung im Modell abdeckt. Dies stellt sicher, dass zwei unterschiedliche Zeitpunkte nicht den gleichen Schlitz in der Planungsliste zum gleichen Zeitpunkt belegen müssen. Dies kann möglicherweise die Größe der Verzögerung begrenzen, die man in einer gegebenen Menge an Computerspeicher modellieren kann. Die anderen Optionen bestehen darin, unterschiedliche Zeitpunkte im gleichen Schlitz zu verwalten oder getrennte Listen von Ereignissen zu verwalten, die weit in der Zukunft liegen. Jede dieser beiden letzten Optionen macht den Simulator unwirksamer und komplizierter.
  • Die Simulatoren können wirksam arbeiten, wenn die kürzeste auflösbare Zeit zum Zeitpunkt der Modellübersetzung festgestellt wird. Es gibt einen sehr viel weniger wirksamen Simulationsmodus, falls sich die kleinste auflösbare Zeit während der Simulation ändern kann.
  • Während der analogen Teile der Simulation legt der Simulator die kürzeste auflösbare Zeit als den Zeitzuwachs fest, der zum Lösen algebraischen Gleichungen und der Differentialgleichungen mit der Genauigkeit des Modells erforderlich ist. Zu unterschiedlichen Zeiten während der Simulation kann sich die kürzeste auflösbare Zeit um zahlreiche Größenordnungen ändern. Diese kürzeste auflösbare Zeit kann in manchen Fällen als Verzögerung wirken, die geplant werden muss. An der Schnittstelle von der analogen zur digitalen Simulation treten Grenzwertüberschreitungen auf, die geplant werden müssen. Die Zeiten dieser Grenzwertüberschreitungen treten mit analoger Zeitauflösung auf.
  • 9 zeigt eine Folge von Schritten, die beim Ausführen einer Simulation auftreten. Im Schritt 905 wird die Entwurfsbeschreibung zusammengestellt. Die Entwurfsbeschreibung enthält sämtliche Eingaben, die den zu simulierenden Entwurf beschreiben. Sie kann Modelle enthalten, die physikalische Vorrichtungen beschreiben, und eine Netzliste (eine Liste von Modellfällen und ihrer Verbindungen und Parameter). Die Modelle und die Netzliste können als Text oder in kompilierter Form vorliegen. Im Schritt 910 wird das simulierbare Modell zusammengestellt. Dabei wird die Entwurfsbeschreibung genommen und in eine Zusammenstellung von Datenstruktur und ausführbarem Code umgesetzt, den der Kernsimulator dazu verwenden kann, das Verhalten des Modells zu analysieren, das den zu simulierenden Entwurf darstellt. Im Schritt 915 simuliert der Kernsimulator das Modell. Der Kernsimulator berechnet das Verhalten des gemischt analog/digitalen Modells im Zeitbereich und im Frequenzbereich. Schließlich erlaubt im Schritt 920 der Postprozessor dem Benutzer, die Simulationsereignisse zu überprüfen, beispielsweise in einem graphischen Betrachter, und die Ereignisse anhand von gewählten Kriterien zu verarbeiten.
  • 4A und 4B zeigen den Simulationsvorgang zum Simulieren einer physikalischen Schaltung oder eines Systems, in dem analoge und gemischt digital-analoge Signale auftreten. Der Simulationsvorgang zeigt, wo Ereignisse intern im System geplant werden. Der Simulationsvorgang in 4A und 4B ist dem Simulationsvorgang sehr ähnlich, der im IEEE Standard VHDL Analog and Mixed-Signal Extensions, IEEE Std 1076.1-1999, § 12.6.4 spezifiziert ist, und er gleicht den Simulationen, die SABER ausführt.
  • In 4A und 4B prüft der Simulator im Schritt 405, ob weitere Ereignisse zu simulieren sind. Sind noch geplante Zeitpunkte vorhanden, so sind weitere Ereignisse zu simulieren. Vorausgesetzt dass Ereignisse zu simulieren sind, werden im Schritt 410 geplante analoge Ereignisse bearbeitet. Es gibt drei Arten von analogen Ereignissen, nämlich: die Ankunft an der linken Grenze einer Unstetigkeit, bei der das zu simulierende Modell eine Unterbrechung ausgeführt hat; die Ankunft an der rechten Grenze einer Unstetigkeit; und die Ankunft am Zeitpunkt der geplanten analogen Lösung. Im Schritt 415 werden die Signale aktualisiert. Das Aktualisieren der Signale umfasst die Übergabe von Wertänderungen an die Signale. Im Schritt 420 werden Prozesse wiederaufgenommen. Ein Prozess ist eine Menge von Verarbeitungsschritten in der Hardware-Beschreibungssprache, die der Benutzer liefert. Prozesse können Benutzersignaländerungen behandeln und einem Signal Werte zuweisen. Das Zuweisen eines Werts an ein Signal bewirkt, dass ein Ereignis geplant wird. Im Schritt 425 wird der Zeitschlitz geprüft, um zu festzustellen, ob er zu Ende ist. Da Ereignisse ohne Verzögerung geplant werden können (anders ausgedrückt Ereignisse zugefügt werden können, die sofort zu simulieren sind), muss der Zeitschlitz überprüft werden, bevor der Simulator schließen kann, dass alle geplanten Ereignisse simuliert sind. Im Schritt 430 werden – falls das Ende des Zeitschlitzes erreicht ist – aufgeschobene Prozesse wieder aufgenommen. Ein aufgeschobener Prozess ist ein besonderer Prozess, der so eingestellt ist, dass er bei einem Zeitwechsel auftritt. Im Schritt 435 prüft der Simulator, ob eine analoge Projektion erforderlich ist. Eine analoge Projektion ist erforderlich, falls die vorhergehende analoge Projektion nur auf die aktuelle geplante Zeit projiziert hat. Ist eine analoge Projektion erforderlich, so wird im Schritt 440 die folgende analoge Lösung projiziert. Schließlich wird im Schritt 445 der Zeitpunkt der folgenden analog/digitalen Ereignisse geholt.
  • Gibt es eine feststellbare kleinste auflösbare Zeit, so kann die Simulationszeit durch eine natürliche Zahl dargestellt werden. Kann die Verzögerung zwischen geplanten Simulationszeiten jedoch sowohl sehr klein als auch sehr groß sein (d. h., die kleinste auflösbare Zeit kann sich ändern), so muss die Zeit als Gleitkommazahl (nicht ganzzahlig) dargestellt werden. Dies beeinflusst zusätzlich die Komplexität der Planungsliste.
  • Damit besteht Bedarf für eine Vorgehensweise, mit der die zeitlichen Zusammenhänge einer Ereignissimulation gesteuert werden, die nicht auf einer festen kleinsten auflösbaren Zeit beruht, und die ein wirksames unbeschränktes Wachstum der Anzahl geplanter Zeitpunkte für Simulationsereignisse erlaubt.
  • Techniken mit linearen verketteten Listen, impliziten Heaps, internen binären Suchbäumen (splay tree) und Ereignislistenverwaltung (calendar queue) werden für die Implementierung eingesetzt, um Ereigniskombinationen in einer digitalen Simulation zu bilden, siehe die Veröffentlichung "Using split event sets to form and schedule event combinations in discrete event simulation", N. Manjikian, W. M. Loucks (1992-04-06).
  • ZUSAMMENFASSUNG DER ERFINDUNG
  • Ein Simulator modelliert physikalische Schaltungen und Systeme, in denen analoge und gemischt digital-analoge Signale auftreten, in einem digitalen Computer. Gemäß der Erfindung weist der Simulator den Ereignissen geplante Zeitpunkte zu. Unter Verwendung einer die Reihenfolge nicht erhaltenden Hashfunktion werden die Ereignisse in Speicherzonen in einer Hashtabelle angeordnet. Ereignisse, die durch den Hashvorgang in die gleiche Speicherzone geleitet werden, jedoch zu unterschiedlichen Zeitpunkten stattfinden, werden in der Speicherzone in unterschiedlichen Listen untergebracht. Die geplanten Zeitpunkte für die Ereignisse in jeder Speicherzone werden durch die Hashfunktion mit jeder Speicherzone verknüpft. Die geplanten Zeitpunkte für die Ereignisse werden in einen Heap eingeordnet. Der Simulator entfernt den frühesten geplanten Zeitpunkt aus dem Heap, sucht die zugeordnete Speicherzone, bestimmt die geeignete Liste innerhalb der Speicherzone und führt das Ereignis in der Ereignisliste aus. Die verbleibenden geplanten Zeitpunkte werden in einen neuen Heap umorganisiert, und der Ablauf wird wiederholt, bis der Heap leer ist.
  • Gemäß einem Aspekt der Erfindung wird ein computerimplementiertes Verfahren zum Aufnehmen von Ereignissen bereitgestellt, die an geplanten Zeitpunkten auftreten, und zwar in ein Simulationsmodell zum Modellieren analoger und gemischt digital-analoger Signale in physikalischen Schaltungen und Systemen in einem digitalen Computer, wobei das Verfahren umfasst:
    das Zuweisen von geplanten Zeitpunkten an die Ereignisse;
    das Verwenden einer die Reihenfolge nicht erhaltenden Hashfunktion ausgehend von den geplanten Zeitpunkten der Ereignisse zum Speichern der Ereignisse in Speicherzonen, wobei eine Speicherzone ein einer Hashtabelle zugeordnetes Element ist, und jede Speicherzone mindestens ein Ereignis enthält und die Speicherzonen relativ zueinander keine zugewiesene Reihenfolge besitzen;
    das Verknüpfen der geplanten Zeitpunkte, die den Ereignissen in den Speicherzonen zugewiesen sind, mit den Speicherzonen;
    das Organisieren der geplanten Zeitpunkte, jedoch nicht ihrer Ereignisse, in einem Heap, wobei der Heap einen binären Baum von Knoten enthält, die in einer Eltern-Kind-Beziehung stehen, und ein erster Knoten, der eine Ebene über einem zweiten Knoten steht, ein Kind des ersten Knotens genannt wird, und jeder Elternknoten einen kleineren geplanten Zeitpunkt hat als seine zwei Kinder;
    das Entfernen eines frühesten geplanten Zeitpunkts aus dem Heap;
    das Simulieren der Ereignisse in der Speicherzone, die dem frühesten geplanten Zeitpunkt zugeordnet sind;
    das Umorganisieren der verbleibenden geplanten Zeitpunkte in einen neuen Heap;
    und
    das Wiederholen der Schritte des Entfernens eines geplanten Zeitpunkts, des Simulierens der Ereignisse und des Umorganisierens der verbleibenden geplanten Zeitpunkte bis der Heap leer ist, wobei die geplanten Zeitpunkte als Gleitkommazahlen dargestellt sind.
  • Gemäß einem weiteren Aspekt der Erfindung wird ein System zum Planen von Ereignissen mit zugeordneten geplanten Zeitpunkten bereitgestellt, die mit nicht ganzzahligen Intervallen in einem Simulationsmodell auftreten, und zwar zum Modellieren analoger und gemischt digital-analoger Signale in physikalischen Schaltungen und Systemen in einem digitalen Computer, wobei das System umfasst:
    einen Computer; und
    eine Datenstruktur, wobei die Datenstruktur umfasst:
    eine Anzahl Speicherzonen, die mit einer Hashtabelle verknüpft sind und untereinander keine zugewiesene Reihenfolge aufweisen, und die in dem Computer gespeichert sind, wobei jede Speicherzone Ereignisse speichert, die zu einem geplanten Zeitpunkt stattzufinden haben, und abhängig von den geplanten Zeitpunkten der Ereignisse eine die Reihenfolge nicht erhaltende Hashfunktion verwendet wird, und die geplanten Zeitpunkte, die den Ereignissen in den Speicherzonen zugeordnet sind, mit den Speicherzonen verknüpft sind;
    Mittel zum Organisieren der geplanten Zeitpunkte, jedoch nicht ihrer Ereignisse, in einem Heap, wobei der Heap einen binären Baum von Knoten enthält, die in einer Eltern-Kind-Beziehung stehen, und ein erster Knoten, der eine Ebene über einem zweiten Knoten steht, ein Kind des ersten Knotens genannt wird, und jeder Elternknoten einen kleineren geplanten Zeitpunkt hat als seine zwei Kinder;
    dass der Heap so aufgebaut und angeordnet ist, dass das Entfernen eines frühesten geplanten Zeitpunkts aus dem Heap möglich ist;
    Mittel zum Simulieren der Ereignisse, die dem frühesten geplanten Zeitpunkt zugeordnet sind;
    Mittel zum Umorganisieren der verbleibenden geplanten Zeitpunkte in einen neuen Heap; und
    Mittel zum Wiederholen des Entfernens, Simulierens und Umorganisierens bis der Heap leer ist, damit man einen frühesten geplanten Zeitpunkt leicht finden kann, wobei die geplanten Zeitpunkte als Gleitkommazahlen dargestellt sind.
  • KURZE BESCHREIBUNG DER ZEICHNUNGEN
  • Es zeigt:
  • 1 ein Computersystem, in dem das Verfahren und die Vorrichtung dieser Erfindung implementiert sind;
  • 2A und 2B einfache Heaps, die für den Heap in 1 verwendet werden können;
  • 3A und 3B eine Muster-Hashtabelle, die als Hashtabelle in 1 verwendbar ist;
  • 4A und 4B in ausführlicherer Weise den herkömmlichen Simulationsvorgang in 9,
  • 5 die Art und Weise, in der Ereignisse im Heap in 1 abgelegt bzw. daraus entfernt werden;
  • 6 die Art und Weise, in der Ereignisse dem Heap in 1 zugefügt werden können;
  • 7 die Art und Weise, in der Ereignisse aus der Planung im Heap in 1 entfernt werden können;
  • 8 wie Ereignisse verarbeitet werden, wenn im Simulator in 1 ihr geplanter Zeitpunkt erreicht ist; und
  • 9 die Folge von Schritten, die beim Ablauf einer Simulation auftreten.
  • AUSFÜHRLICHE BESCHREIBUNG
  • Die bisher verwendete Planungsliste ist eine die Reihenfolge erhaltende Hashtabelle, die ein festes Intervall zwischen Zeitpunkten in der Liste (d. h. den Plätzen in der Hashtabelle) aufweist. Die Zeitwerte werden in sortierter Reihenfolge gespeichert, wobei eine Modulo-Hashfunktion verwendet wird. Der Nachteil, den man für die sortierte Reihenfolge in Kauf nehmen muss, ist die Notwendigkeit, leere Schlitze zu bearbeiten, um zum nächsten Zeitschlitz mit Ereignissen zu kommen.
  • Gemäß der Erfindung wird eine die Reihenfolge nicht erhaltende Hashfunktion eingesetzt. Die Schwierigkeit, dass man eine minimale auflösbare Zeit zum Handhaben des Problems mit den leeren Schlitzen festlegen muss, wird dadurch beseitigt. Längere Verzögerungen erfordern keine besondere Verarbeitung. Die Hashfunktion legt Ereignisse anhand ihrer geplanten Zeitpunkte in Speicherzonen ab (die Speicherzonen bilden dadurch die Hashtabelle), die Speicherzonen selbst besitzen aber keine zugewiesene Reihenfolge.
  • Eine Heapprioritätenschlange ermöglicht das Verfolgen der Zeitpunkte im Planer. Die Heapprioritätenschlange erlaubt es, den nächsten Ereigniszeitpunkt leicht festzustellen. Die Heapprioritätenschlange stellt die Anordnungsfähigkeit wieder her, die durch den Übergang zu einer die Reihenfolge nicht erhaltenden Hashfunktion verloren geht.
  • Eine Hashtabellen-Speicherzone enthält eine Liste von Ereignislisten. Jede Ereignisliste ist mit der Simulationszeit der Ereignisse in der Liste gekennzeichnet. Treten Kollisionen von unterschiedlichen Simulationszeiten auf, die durch den Hashvorgang in die gleiche Speicherzone geleitet werden, so hält sie der Mechanismus der Listen, die mit den geplanten Zeitpunkten gekennzeichnet sind, außen vor.
  • Der Gebrauch einer die Reihenfolge nicht erhaltenden Hashtabelle und einer Heapprioritätenschlange erzeugt ein gleichförmiges Schema, dessen Wirksamkeit nicht von den relativen Größen der kürzesten und längsten Verzögerung abhängt. Der Umfang des Speichers, der für das Schema nötig ist, hängt von der Anzahl der Ereignisse und der einzelnen Zeitpunkte ab. Der Umfang des verwendeten Speichers hängt nicht von den Größen der Verzögerungen ab.
  • 1 zeigt ein Computersystem 105, in dem das Verfahren und die Vorrichtung dieser Erfindung verwendet werden. Das Computersystem 105 enthält einen Computer 110, einen Monitor 115, eine Tastatur 120 und eine Maus 125. Zu dem Computersystem 105 können noch weitere Komponenten gehören, auch wenn sie in 1 nicht dargestellt sind. Das Computersystem 105 kann beispielsweise weitere Ein/Ausgabegeräte enthalten, beispielsweise eine Plottervorrichtung. Das Computersystem 105 enthält auch den Simulator 130. Der Simulator 130 simuliert physikalische Schaltungen und Systeme, in denen analoge und gemischt digital-analoge Signale auftreten.
  • In der bevorzugten Ausführungsform werden die geplanten Zeitpunkte für die zu simulierenden Ereignisse in einem Heap gespeichert. Das Computersystem 105 enthält einen Heap 135 zum Speichern der geplanten Zeitpunkte in einer Heapprioritätenschlange und eine Hashtabelle 138 zum Speichern der Ereignislisten von Ereignissen, die zu gegebenen geplanten Zeitpunkten zu simulieren sind. Speicherzonen 140 bilden einen Teil der Hashtabelle 138. Die Speicherzonen 140 speichern die Ereignisliste der tatsächlich zu simulierenden Ereignisse. Dadurch wird es möglich, dass der Heap 135 nur die geplanten Zeitpunkte für die zu simulierenden Ereignisse speichert, wodurch die Heapverwaltung einfacher wird.
  • 2A zeigt einen Musterheap 205. Der Heap 205 enthält neben anderen Knoten die Knoten 210, 215, 220, 225, 230 und 235. Ein Heap ist eine Datenstruktur, die als binärer Baum organisiert ist. Von den Knoten im binären Baum sagt man, dass sie eine Eltern-Kind-Beziehung aufweisen. D. h., ein Knoten im Heap 205, der sich eine Ebene über einem anderen Knoten befindet, wird als Elternknoten des anderen Knotens bezeichnet, und der andere Knoten wird als Kindknoten des Elternknotens bezeichnet. In einem Heap hat jeder Elternknoten einen kleineren Wert als seine zwei Kinder (dies ist als Heapeigenschaft bekannt). Beispielsweise speichert der Knoten 210 den Wert 2, der kleiner ist als die Werte der Knoten 215 (5) und 220 (8). Der Knoten 215 (5) hat einen kleineren Wert als die Knoten 225 (6) und 230 (16.), usw. Man beachte, dass neben der Forderung, dass jeder Knoten im Heap 205 einen kleineren Wert hat als seine beiden Kindknoten, dem Heap keine weiteren Regeln auferlegt sind. So befindet sich der Knoten 225, der den Wert 6 speichert, in der dritten Zeile des Heaps 205, obwohl der Knoten 220 mit dem Wert 8 in der zweiten Zeile des Heaps 205 liegt. In vergleichbarer Weise hat der Knoten 235 einen kleineren Wert als der Knoten 230; er befindet sich jedoch auf der anderen Seite des Heaps in einer tieferen Position. Einen Heap wie den Heap 205 kann man als teilweise geordnet bezeichnen.
  • In der bevorzugten Ausführungsform ist der Heap 205 links gefüllt. D. h., zwei Kindknoten werden dem am weitesten links gelegenen Elternknoten der letzten vollständigen Zeile im Heap zugeordnet, der keine zwei Kinder aufweist. Hat zudem der Elternknoten, dem das Kind zugefügt wird, keine Kinder, so wird das neue Kind dem Elternknoten als linkes Kind zugefügt. Die Anforderung, den Heap 205 von links zu füllen, vereinfacht die Einzelheiten der Implementierung, ist jedoch nicht erforderlich. Algorithmen zum Konstruieren eines Heaps aus einem Satz von Werten, zum Einfügen neuer Werte in den Heap und zum Entfernen von Werten aus dem Heap sind bekannt und werden nicht erneut erklärt.
  • 2B zeigt, wie der Heap 205 in 2A aussehen kann, nachdem der früheste geplante Zeitpunkt aus dem Heap entfernt wurde. Im Heap 255 ist der Knoten 235 als Kind des Knotens 260 innerhalb des Heaps neu angeordnet worden. In ähnlicher Weise sind die Knoten 215, 225 und 260 neu angeordnet worden. Man beachte, dass der Heap 255 nach wie vor die Heapeigenschaft erfüllt.
  • 3A zeigt eine Hashtabelle, die mit dem Heap 205 in 2A verbunden sein kann. In 3A bildet eine Hashfunktion 305 die Zeitpunkte aus dem Heap auf Speicherzonen ab. Man beachte, dass die zum Darstellen der Abbildung der Hashfunktion verwendeten Pfeile nur der besseren Sichtbarkeit dienen. In der bevorzugten Ausführungsform nimmt die Hashfunktion einen Zeitpunkt und liefert einen Index der Speicherzone in der Hashtabelle zurück. In 3A werden die Zeitpunkte 2 (310) und 9 (315) auf die Speicherzone 1 (320) abgebildet, und die Zeitpunkte 5 (325) und 6 (327) werden auf die Speicherzone 2 (330) abgebildet. Die Speicherzone 1 (320) weist zwei Ereignislisten auf, nämlich eine Liste für Ereignisse, die zum Zeitpunkt 9 auftreten (320A), und eine Liste für Ereignisse, die zum Zeitpunkt 2 auftreten (320B). Die Speicherzone 2 (330) weist zwei Ereignislisten auf, nämlich eine Liste für Ereignisse, die zum Zeitpunkt 5 auftreten (330A), und eine Liste für Ereignisse, die zum Zeitpunkt 6 auftreten (330B). Man beachte, dass mehrere Zeitpunkte auf eine Speicherzone abgebildet werden können. Die geplanten Zeitpunkte für die Ereignisse in den Ereignislisten in der Speicherzone kennzeichnen, welche Ereignisse an welchen Zeitpunkten erfolgen müssen.
  • In 3A zeigt die Ereignisliste 330A zwei Ereignisse in der Liste, nämlich das Ereignis 1 (332A) und das Ereignis 2 (332B). Die Ereignisliste 330B hat keine Ereignisse in ihrer Ereignisliste; dies wird durch den Nullzeiger 335 dargestellt. Dies kann auftreten, falls ursprünglich für den Zeitpunkt 6 (332) geplante Ereignisse vorhanden waren, diese Ereignisse jedoch aus der Planung entfernt wurden. In der bevorzugten Ausführungsform ist die Ereignisliste eine doppelt verkettete Liste, die man in beiden Richtungen durchlaufen kann.
  • 3B zeigt die Hashtabelle in 3A nachdem ein neues Ereignis geplant worden ist. In 3B ist ein neues Ereignis für den Zeitpunkt 5 geplant (325). Die Hashfunktion 305 bildet den Zeitpunkt 5 (325) auf die Speicherzone 2 ab (330). Da für den Zeitpunkt 5 (325) bereits eine Ereignisliste in der Speicherzone 2 (330) vorliegt, wird in die Ereignisliste 330B ein neues Ereignis 332C eingefügt.
  • In der bevorzugten Ausführungsform kennen die Ereignisse ihren Ort in der Ereignisliste. Das Entfernen eines Ereignisses erfordert nur das Verändern der Zeiger der Ereignisse vor und nach dem zu entfernenden Ereignis in der Ereignisliste. 7 zeigt diesen Vorgang. Im Schritt 705 werden die Zeiger auf das entfernte Ereignis von dem vorhergehenden Ereignis und dem folgenden Ereignis in der Ereignisliste verändert. Dadurch ist das Ereignis entfernt. (Man beachte, dass in der bevorzugten Ausführungsform der geplante Zeitpunkt auch dann nicht aus dem Heap entfernt wird, wenn die Ereignisliste für den geplanten Zeitpunkt des entfernten Ereignisses leer ist.) In einer anderen Ausführungsform kann man jedoch Ereignisse dadurch aus Ereignislisten entfernen, dass man die Hashfunktion 305 dazu verwendet, die Speicherzone zu finden, die die Ereignisliste für den Zeitpunkt des Ereignisses enthält, das zu entfernen ist, auf die passende Ereignisliste in der Speicherzone zugreift und das Ereignis entfernt.
  • Existiert für den Zeitpunkt, für den ein Ereignis eingefügt wird, keine Ereignisliste, so kann der geplante Zeitpunkt in den Heap eingefügt werden. Wie dieses Einfügen des neuen geplanten Zeitpunkts in den Heap vor sich geht, wird im Weiteren anhand von 6 beschrieben.
  • Die Erfindung kann mit dem in 4A und 4B dargestellten Simulator arbeiten. Im Schritt 405 wird durch Prüfen des Heaps festgestellt, ob noch irgendwelche Ereignisse zu simulieren sind. Enthält der Heap noch irgendwelche geplanten Zeitpunkte, so sind noch Ereignisse zu simulieren. Neue Ereignisse können in den Schritten 420, 430 und 440 geplant werden. Fachleute können jedoch erkennen, dass jedes beliebige System, in dem eine Ereignisplanung erforderlich ist, jedoch keine Simulation, von der Erfindung profitieren kann. Beispielsweise können Rückrufe (das Ausführen von Softwareroutinen zu vorbestimmten geplanten Zeitpunkten) mit Hilfe der Erfindung organisiert werden.
  • 5 zeigt, wie der Heap und die Speicherzonen außerhalb des Simulationszusammenhangs verwaltet werden. Im Schritt 505 wird dem Ereignis ein geplanter Zeitpunkt zugewiesen. Im Schritt 508 wird die Speicherzone gesucht, die die Ereignisliste speichert, in die das Ereignis einzutragen ist. Die Hashfunktion verwendet den geplanten Zeitpunkt des Ereignisses zum Suchen der passenden Speicherzone. Im Schritt 510 wird das Ereignis der Ereignisliste in der passenden Speicherzone zugefügt. Im Schritt 515 wird der geplante Zeitpunkt des Ereignisses in den Heap eingetragen, falls erforderlich (der geplante Zeitpunkt des Ereignisses kann bereits früher in den Heap eingetragen worden sein). Zum Eintragen des geplanten Zeitpunkts des Ereignisses in den Heap muss man sicherstellen, dass der Heap nach dem Eintragen des geplanten Zeitpunkts des Ereignisses die Heapeigenschaft behält. Die gestrichelte Linie 518 zeigt an, dass man die Schritte 505, 508, 510 und 515 für so viele Ereignisse wie nötig wiederholen kann. Ist der Heap einmal aufgebaut, so wird im Schritt 520 der früheste geplante Zeitpunkt aus dem Heap entnommen. Beim Entfernen des frühesten geplanten Zeitpunkts muss man sicherstellen, dass der Heap nach dem Entfernen des frühesten geplanten Zeitpunkts die Heapeigenschaft behält. Dies ist im Schritt 522 dargestellt. Im Schritt 525 wird die Speicherzone gesucht, die die Ereignisse enthält, die für den frühesten Zeitpunkt geplant sind. Schließlich werden im Schritt 530 die für den frühesten Zeitpunkt geplanten Ereignisse simuliert. Die gestrichelte Linie 535 zeigt an, dass man die Schritte 520, 522, 525 und 530 so lange wiederholen kann, bis der Heap geleert ist.
  • 6 zeigt den Vorgang, der zum Zufügen neuer geplanter Ereignisse verwendet wird. 6 wird verwendet, wenn neue Ereignisse geplant werden müssen, nachdem der Vorgang zum Leeren des Heaps bereits begonnen hat. Effektiv ist 6 ein Interrupt der Schleife aus den Schritten 520, 522, 525 und 530 in 5. 6 (und ebenso 7 und 8) zielen nicht spezifisch auf das Planen neuer Simulationsereignisse ab, sondern man kann wie beschrieben den Ablauf in 6 auf das Simulieren von Ereignissen anwenden. Im Schritt 605 wird dem neuen Ereignis ein geplanter Zeitpunkt zugewiesen. Im Schritt 608 wird die Speicherzone gesucht, die die Ereignisliste speichert, in die das Ereignis einzutragen ist. Im Schritt 610 wird das neue Ereignis der Ereignisliste in der gefundenen Speicherzone zugefügt. Im Entscheidungspunkt 615 prüft der Ablauf, ob das neue Ereignis einen neuen geplanten Zeitpunkt in den Heap eintragen muss. Muss ein neuer geplanter Zeitpunkt in den Heap eingetragen werden, so wird im Schritt 620 der neu geplante Zeitpunkt in den Heap eingefügt, und im Schritt 625 werden die geplanten Zeitpunkte in einen neuen Heap umorganisiert. Die gestrichelte Linie 630 zeigt, dass man den Vorgang wiederholen kann, falls mehrere Ereignisse zu planen sind.
  • 8 zeigt, wie Ereignisse verarbeitet werden, wenn im Simulator in 1 ihr geplanter Zeitpunkt erreicht wird. Im Schritt 805 wird ein geplanter Zeitpunkt aus dem Heap entnommen. Im Schritt 808 werden die verbleibenden geplanten Zeitpunkte im Heap umorganisiert, damit die Heapeigenschaft bestehen bleibt. Im Schritt 810 wird die Speicherzone gesucht, die dem gewählten geplanten Zeitpunkt zugeordnet ist. Im Entscheidungspunkt 815 wird die Speicherzone geprüft, um festzustellen, ob eine Ereignisliste für den geplanten Zeitpunkt vorliegt. Ist eine Ereignisliste für den geplanten Zeitpunkt vorhanden, so werden im Schritt 820 die Ereignisse in der Ereignisliste ausgeführt.
  • Die Prinzipien der Erfindung wurden anhand einer bevorzugten Ausführungsform beschrieben und erläutert. Natürlich kann man Anordnungen und Einzelheiten der Erfindung verändern, ohne diese Prinzipien zu verlassen. Ich beanspruche alle Abwandlungen und Veränderungen, die in den Bereich der folgenden Ansprüche fallen.

Claims (6)

  1. Computerimplementiertes Verfahren zum Aufnehmen von Ereignissen, die an geplanten Zeitpunkten auftreten, in ein Simulationsmodell (130) zum Modellieren analoger und gemischt digital-analoger Signale in physikalischen Schaltungen und Systemen in einem digitalen Computer (105), wobei das Verfahren umfasst: das Zuweisen (505) von geplanten Zeitpunkten an die Ereignisse; das Verwenden (508) einer die Reihenfolge nicht erhaltenden Hashfunktion ausgehend von den geplanten Zeitpunkten der Ereignisse zum Speichern (510) der Ereignisse in Speicherzonen (140), wobei eine Speicherzone ein einer Hashtabelle (138) zugeordnetes Element ist, und jede Speicherzone (140) mindestens ein Ereignis enthält und die Speicherzonen relativ zueinander keine zugewiesene Reihenfolge besitzen; das Verknüpfen (515) der geplanten Zeitpunkte, die den Ereignissen in den Speicherzonen zugewiesen sind, mit den Speicherzonen; das Organisieren der geplanten Zeitpunkte, jedoch nicht ihrer Ereignisse, in einem Heap (135, 205), wobei der Heap einen binären Baum von Knoten (210, 215, 220, 225, 230, 235) enthält, die in einer Eltern-Kind-Beziehung stehen, und ein erster Knoten, der eine Ebene über einem zweiten Knoten steht, ein Kind des ersten Knotens genannt wird, und jeder Elternknoten einen kleineren geplanten Zeitpunkt hat als seine zwei Kinder; das Entfernen (520) eines frühesten geplanten Zeitpunkts aus dem Heap; das Simulieren (530) der Ereignisse in der Speicherzone, die dem frühesten geplanten Zeitpunkt zugeordnet sind; das Umorganisieren (522) der verbleibenden geplanten Zeitpunkte in einen neuen Heap; und das Wiederholen (535) der Schritte des Entfernens eines geplanten Zeitpunkts, des Simulierens der Ereignisse und des Umorganisierens der verbleibenden geplanten Zeitpunkte bis der Heap leer ist, wobei die geplanten Zeitpunkte als Gleitkommazahlen dargestellt sind.
  2. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Verfahren ferner umfasst: das Beginnen der Simulation mit den gemischten Signalen; das Bestimmen der Ereignisse aus der Simulation mit den gemischten Signalen; und das Bestimmen der geplanten Zeitpunkte, an denen die Ereignisse stattzufinden haben.
  3. Computerimplementiertes Verfahren nach Anspruch 1, wobei das Simulieren der Ereignisse enthält: das Bestimmen (615) neuer Ereignisse aus der Simulation mit den gemischten Signalen; das Bestimmen der geplanten Zeitpunkte, an denen die Ereignisse stattzufinden haben, und das Ablegen (620) der neu bestimmten Ereignisse in Speicherzonen mit Hilfe der Hashfunktion abhängig von den geplanten Zeitpunkten der Ereignisse.
  4. Computerimplementiertes Verfahren nach Anspruch 3, wobei das Ablegen der neu bestimmten Ereignisse enthält: das Ablegen (610) eines ersten neu bestimmten Ereignisses in einer neuen Speicherzone; das Verknüpfen (605) des geplanten Zeitpunkts, der dem ersten neu bestimmten Ereignis zugewiesen ist, mit der neuen Speicherzone; das Einfügen (620) des neu geplanten Zeitpunkts, der der neuen Speicherzone zugeordnet ist, in den Heap; das Umorganisieren (625) der geplanten Zeitpunkte in einen neuen Heap.
  5. Computerlesbares Medium, das ein Programm enthält, das das Verfahren nach irgendeinem der Ansprüche 1 bis 4 implementiert.
  6. System zum Planen von Ereignissen mit zugeordneten geplanten Zeitpunkten, die mit nicht ganzzahligen Intervallen in einem Simulationsmodell (130) auftreten, zum Modellieren analoger und gemischt digital-analoger Signale in physikalischen Schaltungen und Systemen in einem digitalen Computer (105), wobei das System umfasst: einen Computer (105); und eine Datenstruktur, wobei die Datenstruktur umfasst: eine Anzahl Speicherzonen (140), die mit einer Hashtabelle (138) verknüpft sind und untereinander keine zugewiesene Reihenfolge aufweisen, und die in dem Computer (105) gespeichert sind, wobei jede Speicherzone (140) Ereignisse speichert, die zu einem geplanten Zeitpunkt stattzufinden haben, und abhängig von den geplanten Zeitpunkten der Ereignisse eine die Reihenfolge nicht erhaltende Hashfunktion verwendet wird, und die geplanten Zeitpunkte, die den Ereignissen in den Speicherzonen zugeordnet sind, mit den Speicherzonen verknüpft sind; Mittel zum Organisieren der geplanten Zeitpunkte, jedoch nicht ihrer Ereignisse, in einem Heap (135, 205), wobei der Heap einen binären Baum von Knoten (210, 215, 220, 225, 230, 235) enthält, die in einer Eltern-Kind-Beziehung stehen, und ein erster Knoten, der eine Ebene über einem zweiten Knoten steht, ein Kind des ersten Knotens genannt wird, und jeder Elternknoten einen kleineren geplanten Zeitpunkt hat als seine zwei Kinder; dass der Heap so aufgebaut und angeordnet ist, dass das Entfernen eines frühesten geplanten Zeitpunkts aus dem Heap möglich ist; Mittel zum Simulieren der Ereignisse, die dem frühesten geplanten Zeitpunkt zugeordnet sind; Mittel zum Umorganisieren der verbleibenden geplanten Zeitpunkte in einen neuen Heap; und Mittel zum Wiederholen des Entfernens, Simulierens und Umorganisierens bis der Heap leer ist, damit man einen frühesten geplanten Zeitpunkt leicht finden kann, wobei die geplanten Zeitpunkte als Gleitkommazahlen dargestellt sind.
DE60035644T 1999-06-18 2000-06-16 Ablauffolgeplanung der nicht ganzzahligen Simulationszeit für mixed-signal Simulation Expired - Lifetime DE60035644T2 (de)

Applications Claiming Priority (4)

Application Number Priority Date Filing Date Title
US14026199P 1999-06-18 1999-06-18
US140261P 1999-06-18
US09/531,350 US6961689B1 (en) 2000-03-21 2000-03-21 Scheduling non-integral simulation time for mixed-signal simulation
US531350 2000-03-21

Publications (2)

Publication Number Publication Date
DE60035644D1 DE60035644D1 (de) 2007-09-06
DE60035644T2 true DE60035644T2 (de) 2007-11-22

Family

ID=26838032

Family Applications (2)

Application Number Title Priority Date Filing Date
DE60035644T Expired - Lifetime DE60035644T2 (de) 1999-06-18 2000-06-16 Ablauffolgeplanung der nicht ganzzahligen Simulationszeit für mixed-signal Simulation
DE1061463T Pending DE1061463T1 (de) 1999-06-18 2000-06-16 Ablauffolgeplanung der nicht ganzzahligen Simulationszeit für mixed-signal Simulation

Family Applications After (1)

Application Number Title Priority Date Filing Date
DE1061463T Pending DE1061463T1 (de) 1999-06-18 2000-06-16 Ablauffolgeplanung der nicht ganzzahligen Simulationszeit für mixed-signal Simulation

Country Status (3)

Country Link
EP (1) EP1061463B1 (de)
JP (1) JP2001060241A (de)
DE (2) DE60035644T2 (de)

Families Citing this family (4)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP4809989B2 (ja) * 2001-03-29 2011-11-09 株式会社日本総合研究所 データ格納方法、データ格納システム及びデータ格納プログラム
KR100907814B1 (ko) * 2007-06-13 2009-07-16 한국표준과학연구원 클럭시뮬레이션 방법
KR101628774B1 (ko) * 2009-05-04 2016-06-10 삼성전자주식회사 함수를 이용한 시뮬레이션 수행 방법
JP5465067B2 (ja) * 2010-04-14 2014-04-09 三菱電機株式会社 スケジューリング装置、スケジューリング方法およびスケジューリングプログラム

Family Cites Families (2)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
JP3082987B2 (ja) * 1991-10-09 2000-09-04 株式会社日立製作所 ミックスモードシミュレーション方法
GB2303230B (en) * 1995-07-13 1998-08-12 Advanced Risc Mach Ltd Digital circuit simulation

Also Published As

Publication number Publication date
DE1061463T1 (de) 2001-10-11
JP2001060241A (ja) 2001-03-06
EP1061463A2 (de) 2000-12-20
EP1061463A3 (de) 2004-04-14
EP1061463B1 (de) 2007-07-25
DE60035644D1 (de) 2007-09-06

Similar Documents

Publication Publication Date Title
DE69730004T2 (de) Digitalsystem-Simulation
DE4497149B4 (de) Computerbezogenes Verfahren zur Datenreplikation in Peer-to-Peer-Umgebung
DE102016216843A1 (de) Verteiltes Zusammenführen von Dateien
DE19860061A1 (de) System zur Prüfung der kombinatorischen Äquivalenz
DE69532307T2 (de) Ausdrucks-Propagierung für hierarchisches Netzlisten
WO2003021366A1 (de) Verfahren zur validierung von simulationsergebnissen eines systems sowie darauf aufbauender äquivalenzvergleich digitaler schaltungen
DE60004507T2 (de) Schnelle gruppierung durch spärlich bestückte datensätze
DE112017007656T5 (de) Verschobene aktualisierung von datenbank-hashcode in einer blockchain
DE102016204710A1 (de) Sichern und Wiederherstellen von Klondaten
DE19922974A1 (de) Verfahren und Vorrichtung zur Bearbeitung eines Dokuments
DE10039538A1 (de) Vorrichtung und Methode zum Analysieren der Leistung eines Computerprogramms
DE112013005993T5 (de) Verfahren, Vorrichtung und computerlesbares Medium für eine optimale Bestimmung von Daten-Teilmengen
DE60303413T2 (de) Verfahren und computersystem zum reduzieren von ausführungszeiten bei der materialbedarfsplanung
DE112018006540T5 (de) Dynamisches ersetzen eines aufrufs einer software-bibliothek durch einen aufruf eines beschleunigers
DE19947892C2 (de) Verfahren zur Umsetzung von Schnittstellendefinitionen und Zwischenformattabelle dafür
DE60307527T2 (de) Tupleraumoperationen für eine feinkörnige Systemsteuerung
DE10034694A1 (de) Verfahren zum Vergleichen von Suchprofilen
DE60035644T2 (de) Ablauffolgeplanung der nicht ganzzahligen Simulationszeit für mixed-signal Simulation
EP1330740B1 (de) Verfahren zum zugriff auf eine speichereinheit bei der suche nach teilzeichenfolgen sowie zugehörige speichereinheit
EP3812949A1 (de) Konfigurierbarer digitaler zwilling
DE102014113693A1 (de) Verfahren und system zum laden von daten mit komplexen beziehungen
DE4410731A1 (de) Logiksimulator
DE112020006703T5 (de) Anzeigebilddaten-Editierprogramm, Anzeigebilddaten-Editiervorrichtung und Anzeigebilddaten-Editierverfahren
WO1998010357A1 (de) Datenbanksystem und verfahren zum verwalten eines n-dimensionalen datenbestands
DE19924242A1 (de) Vektorrestauration mit beschleunigter Validation und Verfeinerung

Legal Events

Date Code Title Description
8364 No opposition during term of opposition