DE102015102362B3 - Verfahren zur verarbeitung eines computersimulationsprogramms und computerprogrammprodukt zur implementierung eines solchen verfahrens - Google Patents

Verfahren zur verarbeitung eines computersimulationsprogramms und computerprogrammprodukt zur implementierung eines solchen verfahrens Download PDF

Info

Publication number
DE102015102362B3
DE102015102362B3 DE102015102362.8A DE102015102362A DE102015102362B3 DE 102015102362 B3 DE102015102362 B3 DE 102015102362B3 DE 102015102362 A DE102015102362 A DE 102015102362A DE 102015102362 B3 DE102015102362 B3 DE 102015102362B3
Authority
DE
Germany
Prior art keywords
process steps
operational process
operational
processor unit
subsequence
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.)
Active
Application number
DE102015102362.8A
Other languages
English (en)
Inventor
Ulrich Holtmann
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
Application filed by Synopsys Inc filed Critical Synopsys Inc
Priority to DE102015102362.8A priority Critical patent/DE102015102362B3/de
Priority to US15/005,782 priority patent/US20160246902A1/en
Application granted granted Critical
Publication of DE102015102362B3 publication Critical patent/DE102015102362B3/de
Active legal-status Critical Current
Anticipated expiration legal-status Critical

Links

Images

Classifications

    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F30/00Computer-aided design [CAD]
    • G06F30/20Design optimisation, verification or simulation
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F9/00Arrangements for program control, e.g. control units
    • G06F9/06Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
    • G06F9/44Arrangements for executing specific programs
    • G06F9/455Emulation; Interpretation; Software simulation, e.g. virtualisation or emulation of application or operating system execution engines

Landscapes

  • Engineering & Computer Science (AREA)
  • Theoretical Computer Science (AREA)
  • Software Systems (AREA)
  • Physics & Mathematics (AREA)
  • General Engineering & Computer Science (AREA)
  • General Physics & Mathematics (AREA)
  • Computer Hardware Design (AREA)
  • Evolutionary Computation (AREA)
  • Geometry (AREA)
  • Debugging And Monitoring (AREA)
  • Management, Administration, Business Operations System, And Electronic Commerce (AREA)

Abstract

Ein Verfahren zur Verarbeitung eines Computersimulationsprogramms wird angegeben. Das Verfahren umfasst Starten und Durchführen eines ersten Anteils von operativen Prozessschritten (01) des Simulationsprogramms auf einer ersten Prozessoreinheit (PU1) eines Computers. Das Verfahren umfasst weiterhin Starten und Durchführen einer ersten Untersequenz von Prozessschritten (01') auf einer zweiten Prozessoreinheit (PU2) des Computers. Dabei umfasst die erste Untersequenz (01') den ersten Anteil von operativen Prozessschritten (01) und einen ersten Anteil von nicht-operativen Prozessschritten des Simulationsprogramms.

Description

  • Die Erfindung betrifft Verfahren zur Verarbeitung eines Computersimulationsprogramms auf einem Computer, insbesondere einem Computer mit einer Vielzahl von Prozessoreinheiten, und ein Computerprogrammprodukt zur Implementierung eines solchen Verfahrens.
  • Im Bereich von Computersimulationen, können Aufgaben oder Prozessschritte eines Computersimulationsprogramms oft in zwei Gruppen aufgeteilt werden: operative Aufgaben oder Prozessschritte und nicht-operative Aufgaben oder Prozessschritte. Operative Aufgaben können zum Beispiel wiederholt berechnen wie sich ein Simulationszustand in einen anderen Simulationszustand eines simulierten Systems entwickelt. Nicht-operative Aufgaben ändern beispielsweise den Simulationszustand nicht sondern stellen zusätzliche Daten bereit.
  • Operative Aufgaben können zwingend notwendig sein. Andererseits können nicht-operative Aufgaben optional sein, nützlich beispielsweise zu Zwecken der Fehlersuche und Validierung, können aber zusätzliche Rechenzeit beanspruchen. Gemäß existierenden Konzepten kann daher eine gesamte Umlaufzeit, TAT, bis die Simulation abgeschlossen ist, durch die nicht-operativen Aufgaben signifikant erhöht werden. Der Overhead, das heißt der Anstieg der TAT aufgrund der nicht-operativen Aufgaben ist ein Nachteil von existierenden Konzepten.
  • Zum Beispiel kann eine Fehlersuche für ein komplexes Hardwaremodell eine TAT von einer Stunde benötigen wenn nicht-operative Aufgaben weggelassen oder deaktiviert werden, anderenfalls kann jedoch beispielsweise eine TAT von 3 Stunden erforderlich sein.
  • Existierende Lösungen, die von Vielfachkernprozessoren Gebrauch machen um den TAT Verbrauch zu reduzieren, benutzen beispielsweise einen Hauptprozess der nur operative Aufgaben ausführt. Andere Prozesse oder Prozessstränge können nur nicht-operative Aufgaben ausführen. Bei solchen Lösungen können der Hauptprozess und die anderen Prozesse jedoch nicht in der Lage sein für beliebig gewähltes Zeitintervall unabhängig laufen, sondern es kann nötig sein das sich bei jedem Simulationsschritt synchronisieren. Folglich muss der Hauptprozess regelmäßig pausieren bis alle anderen Prozesse oder Prozessstränge mit zugehörigen nicht-operativen Aufgaben fertig sind. Dies kann die verfügbare Parallelisierung und eine Reduktion der TAT begrenzen.
  • Die Druckschrift Meister, G.: ”Evaluation of Parallel Logic Simulation Using DVSIM”, Proceedings of the 29th Annual Hawaii International Conference on System Sciences, 1996, pp. 397–406 befasst sich mit der Leistungsbewertung von parallel arbeitenden Siumulationsalgorithmen. Dazu wird ein dezentralisierter VDHL Simulator, DSIM, verwendet um Bezugsschaltkreise zu simulieren. Laufzeitverbesserungen beispielsweise durch Mapping und Partitionierung der Schalkreise, durch Critical Path Analysis, CPA, oder durch Zeitschleifenalgorithmen werden ausgewertet.
  • Es ist daher ein Ziel ein verbessertes Konzept zur Verarbeitung eines Computersimulationsprogramms anzugeben um eine Umlaufzeit einer Simulation, insbesondere eine Overhead-Umlaufzeit aufgrund von nicht-operativen Prozessschritten, zu reduzieren.
  • Dieses Ziel wird durch den Gegenstand der unabhängigen Ansprüche erreicht. Weitere Implementierungen und Ausführungsformen sind Gegenstand der abhängigen Ansprüche.
  • Gemäß dem verbesserten Konzept wird ein Computersimulationsprogramm in operative Prozessschritte und nicht-operative Prozessschritte aufgeteilt. Während auf einer ersten Prozessoreinheit des Computers nur oder überwiegend operative Prozessschritte durchgeführt werden, werden nicht-operative Prozessschritte von abgespalteten Prozessen auf einer zweiten Prozessoreinheit des Computers durchgeführt. Dabei wird ein bestimmter Anteil von operativen Prozessschritten auch auf der zweiten Prozessoreinheit ausgeführt, so dass einerseits die zweite Prozessoreinheit nicht-operative Prozessschritte ausführen kann die von dem Anteil der operativen Prozessschritte abhängen ohne auf eine Ausgabe von der ersten Prozessoreinheit angewiesen zu sein und, andererseits, die erste Prozessoreinheit mit den operativen Prozessschritten fortfahren kann, ohne darauf zu warten, dass die nicht-operativen Prozessschritte beendet werden. Auf diese Weise kann eine Umlaufzeit, TAT, des Computersimulationsprogramms reduziert werden.
  • Gemäß dem verbesserten Konzept wird ein Verfahren zur Verarbeitung eines Computersimulationsprogramms angegeben. Das Verfahren umfasst Starten und Durchführen eines ersten Anteils von operativen Prozessschritten des Simulationsprogramms auf einer ersten Prozessoreinheit eines Computers. Das Verfahren umfasst weiterhin Starten und Durchführen einer ersten Untersequenz von Prozessschritten auf einer zweiten Prozessoreinheit des Computers. Dabei umfasst die erste Untersequenz den ersten Anteil von operativen Prozessschritten und einen ersten Anteil von nicht-operativen Prozessschritten des Simulationsprogramms.
  • In verschiedenen Implementierungen des Verfahrens umfasst das Computersimulationsprogramms eine gesamte Anzahl von operativen Prozessschritten. Die gesamte Anzahl von operativen Prozessschritten ist unterteilt in eine Mehrzahl von Anteilen von operativen Prozessschritten, welche den ersten Anteil von operativen Prozessschritten beinhaltet. Das Computersimulationsprogramm umfasst weiterhin eine gesamte Anzahl von nicht-operativen Prozessschritten. Die gesamte Anzahl von nicht-operativen Prozessschritten ist unterteilt in eine Mehrzahl von Anteilen von nicht-operativen Prozessschritten, welche den ersten Anteil von nicht-operativen Prozessschritten beinhaltet. Jeder der Anteile von operativen Prozessschritten wird mit einem der Anteile von nicht-operativen Prozessschritten kombiniert um eine Mehrzahl von Untersequenzen zu bilden, welche die erste Untersequenz beinhaltet. Dabei hängen die nicht-operativen Prozessschritte einer gegebenen Untersequenz von den operativen Prozessschritten der gegebenen Untersequenz ab.
  • In einigen Implementierungen des Verfahrens wird der erste Anteil von operativen Prozessschritten auf der ersten Prozessoreinheit als Teil eines Hauptprozesses gestartet und durchgeführt. Die erste Untersequenz wird auf der zweiten Prozessoreinheit als Teil eines ersten Tochterprozesses gestartet und durchgeführt. Dabei kann der erste Tochterprozess beispielsweise von dem Hauptprozess abgespaltet werden.
  • In verschiedenen Implementierungen des Verfahrens ist jeder der gesamten Anzahl von operativen Prozessschritten für eine Simulation, welche mittels des Computersimulationsprogramms durchgeführt wird, zwingend erforderlich. Die gesamte Anzahl von nicht-operativen Prozessschritten sind optional und können beispielsweise zur Fehlersuche oder Validierung eines Systems, welches simuliert wird, verwendet werden.
  • Gemäß einiger Implementierungen des Verfahrens werden der erste Anteil von operativen Prozessschritten und die erste Untersequenz gleichzeitig oder näherungsweise gleichzeitig gestartet. In manchen Implementierungen beginnt der Hauptprozess mit dem Starten und Durchführen des ersten Anteils von operativen Prozessschritten und spaltet gleichzeitig oder ungefähr gleichzeitig den ersten Tochterprozess zum Starten und Durchführen der ersten Untersequenz ab.
  • Gemäß weiteren Implementierungen umfasst das Verfahren außerdem, nach dem Abschließen des Durchführens des ersten Anteils von operativen Prozessschritten auf der ersten Prozessoreinheit, Starten und Durchführen eines zweiten Anteils von operativen Prozessschritten des Simulationsprogramms auf der ersten Prozessoreinheit und Starten und Durchführen einer zweiten Untersequenz von Prozessschritten auf der zweiten Prozessoreinheit oder auf einer weiteren Prozessoreinheit des Computers. Dabei umfasst die zweite Untersequenz den zweiten Anteil von operativen Prozessschritten und einen zweiten Anteil von nicht-operativen Prozessschritten des Simulationsprogramms.
  • Gemäß einiger Implementierungen umfasst das Verfahren weiterhin vor dem Starten und Durchführen des zweiten Anteils von operativen Prozessschritten und der zweiten Untersequenz von Prozessschritten ein Bestimmen ob die zweite Prozessoreinheit oder die weitere Prozessoreinheit nach dem Abschließen des Durchführens des ersten Anteils von operativen Prozessschritten auf der ersten Prozessoreinheit verfügbar ist. Das Verfahren umfasst weiterhin, abhängig von einem Ergebnis der Bestimmung, ob die zweite Prozessoreinheit oder die weitere Prozessoreinheit des Computers verfügbar ist, ein Pausieren der ersten Prozessoreinheit vor dem Starten und Durchführen des zweiten Anteils von operativen Prozessschritten oder Starten und Durchführen des zweiten Anteils von operativen Prozessschritten ohne ein Pausieren der ersten Prozessoreinheit.
  • Gemäß einiger Implementierungen umfasst das Verfahren weiterhin Bestimmen einer gesamten Anzahl von Prozessoreinheiten, insbesondere verfügbarer Prozessoreinheiten, des Computers und, in Abhängigkeit der Anzahl von Prozessoreinheiten und/oder eines Zeitraums der für das Durchführen der ersten Untersequenz benötigt wird, Pausieren der ersten Prozessoreinheit vor dem Starten und Durchführen des zweiten Anteils von operativen Prozessschritten oder Starten und Durchführen des zweiten Anteils von operativen Prozessschritten ohne ein Pausieren der ersten Prozessoreinheit.
  • Dabei entspricht die gesamte Anzahl von verfügbaren Prozessoreinheiten beispielsweise einer gesamten Anzahl von Prozessoreinheiten die zur Verarbeitung des Computersimulationsprogramms verfügbar sind.
  • Gemäß weiteren Implementierungen umfasst das Verfahren außerdem, nach Beenden des Durchführens des zweiten Anteils von operativen Prozessschritten auf der ersten Prozessoreinheit, Starten und Durchführen eines dritten Anteils von operativen Prozessschritten des Simulationsprogramms auf der ersten Prozessoreinheit und Starten und Durchführen einer dritten Untersequenz von Prozessschritten auf der zweiten Prozessoreinheit, des weiteren Prozessors oder einer zusätzlichen Prozessoreinheit des Computers. Dabei kann die zusätzliche Prozessoreinheit durch die zweite Prozessoreinheit oder die weitere Prozessoreinheit gegeben sein. Alternativ ist die zusätzliche Prozessoreinheit nicht durch die zweite Prozessoreinheit oder die weitere Prozessoreinheit gegeben. Die dritte Untersequenz umfasst den dritten Anteil von operativen Prozessschritten und einen dritten Anteil von nicht-operativen Prozessschritten des Simulationsprogramms.
  • In einigen Implementierungen des Verfahrens werden der zweite Anteil von operativen Prozessschritten und die zweite Untersequenz gleichzeitig oder näherungsweise gleichzeitig gestartet.
  • Gemäß einigen Implementierungen des Verfahrens wird die erste Prozessoreinheit pausiert nachdem das Durchführen des ersten Anteils von operativen Prozessschritten geendet hat, wenn alle Prozessoreinheiten des Computers außer der ersten Prozessoreinheit beschäftigt sind.
  • In verschiedenen Implementierungen umfasst das Verfahren außerdem ein Beenden der ersten Untersequenz nach einem festgelegten Intervall von Simulationszeit. Das Intervall von Simulationszeit kann beispielsweise einer gesamten Zeitdauer entsprechen, die von der ersten Untersequenz zum Durchführen der operativen Prozessschritte des ersten Anteils von operativen Prozessschritten verbraucht wird. Insbesondere kann Zeit die von der ersten Untersequenz zum Durchführen von nicht-operativen Prozessschritten verbraucht wird beispielsweise nicht zu dem Intervall von Simulationszeit beitragen. Folglich kann eine gesamte Zeit, die von der ersten Untersequenz verbraucht wird länger als das Intervall von Simulationszeit sein. In einigen Implementierungen umfasst das Verfahren weiterhin ein Beenden der zweiten Untersequenz und/oder weiterer Untersequenzen von Prozessschritten nach einem festgelegten weiteren Intervall von Simulationszeit, wobei das weitere Intervall von Simulationszeit gleich oder unterschiedlich von dem Intervall von Simulationszeit sein kann. Insbesondere kann das weitere Intervall von Simulationszeit beispielsweise einer gesamten Zeitdauer entsprechen, die von der zweiten Untersequenz zum Durchführen der operativen Prozessschritte des zweiten Anteils von operativen Prozessschritten verbraucht wird.
  • Gemäß verschiedener Implementierungen des Verfahrens erzeugt jeder der Prozessschritte des ersten Anteils von operativen Prozessschritten einen Simulationszustand eines simulierten Systems basierend auf einem vorhergehenden Simulationszustand des simulierten Systems oder einem initialen Zustand des simulierten Systems. Analog erzeugt, gemäß verschiedener Implementierungen des Verfahrens, jeder der Prozessschritte des zweiten Anteils von operativen Prozessschritten einen Simulationszustand des simulierten Systems basierend auf einem vorhergehenden Simulationszustand des simulierten Systems oder auf einem initialen Zustand des simulierten Systems. Dasselbe kann für weitere Anteile von operativen Prozessschritten gelten. Analoges kann für weitere Anteile von operativen Prozessschritten gelten.
  • In einigen Implementierungen des Verfahrens werden erste nicht-operative Daten von dem ersten Anteil von operativen Prozessschritten erzeugt und die ersten nicht-operativen Daten werden von dem ersten Anteil von nicht-operativen Prozessschritten verarbeitet. Entsprechend werden, in jeweiligen Implementierungen des Verfahrens, zweite nicht-operativen Daten von dem zweiten Anteil von operativen Prozessschritten erzeugt und die zweiten nicht-operativen Daten werden von dem zweiten Anteil von nicht-operativen Prozessschritten verarbeitet. Analoges kann jeweils für die weiteren Anteile von operativen Prozessschritten und weitere Anteile von nicht-operativen Prozessschritten gelten.
  • In verschiedenen Implementierungen des Verfahrens umfasst das Verarbeiten der ersten nicht-operativen Daten zumindest eines der folgenden: Ausgeben wenigstens eines Teils der ersten nicht-operativen Daten und/oder von Daten, die von den ersten nicht-operativen Daten abgeleitet sind, in eine erste Ausgabedatei und/oder eine erste Spurdatei, Auswerten einer Assertion auf Grundlage der nicht-operativen Daten und Auswerten einer Abdeckung, insbesondere einer Zeilenabdeckung und/oder einer Funktionalabdeckung, auf Grundlage der nicht-operativen Daten. Analoges kann beispielsweise jeweils für die zweiten nicht-operativen Daten und/oder weitere nicht-operative Daten gelten.
  • Gemäß weiterer Implementierungen des Verfahrens umfasst das Verarbeiten der ersten nicht-operativen Daten ein Speichern eines Ergebnisses des ersten Anteils von nicht-operativen Prozessschritten in eine erste nicht-operative Datei. Die erste nicht-operative Datei kann beispielsweise durch die erste Ausgabedatei, die erste Spurdatei und/oder eine andere Datei gegeben sein. Analoges kann jeweils für die zweiten nicht-operativen Daten und/oder weitere nicht-operative Daten bezüglich einer zweiten nicht-operativen Datei und/oder weiterer nicht-operativer Dateien gelten.
  • In verschiedenen Implementierungen des Verfahrens verarbeitet das Computersimulationsprogramm eine Hardwarebeschreibungssprache, HDL, und ist dazu eingerichtet, einen elektronischen Schaltkreis zu simulieren.
  • In verschiedenen Implementierungen umfasst das Verfahren weiterhin ein Erstellen einer nicht-operativen Infrastruktur, welche eine Infrastruktur für den ersten Anteil von nicht-operativen Prozessschritten beinhaltet und/oder eine Infrastruktur für den zweiten Anteil von nicht-operativen Prozessschritten beinhaltet.
  • Die nicht-operative Infrastruktur kann insbesondere von dem Hauptprozess vor dem Starten und Durchführen des ersten Anteils von operativen Prozessschritten erstellt werden.
  • In einigen Implementierungen des Verfahrens wird das Verfahrens mittels eines Tools zum Entwurf von Schaltkreisen, insbesondere mittels eines Tools zur Entwurfsautomatisierung elektronischer Systeme, EDA, ausgeführt.
  • Gemäß dem verbesserten Konzept wird auch ein Verfahren zum Verarbeiten eines Computersimulationsprogramms angegeben, wobei das Verfahren Starten und Ausführen eines Hauptprozesses des Simulationsprogramms auf einer ersten Prozessoreinheit eines Computers umfasst, wobei der Hauptprozess operative Prozessschritte umfasst. Das Verfahren umfasst außerdem periodisches Starten und Ausführen von Tochterprozessen auf einer zweiten Prozessoreinheit des Computers und/oder auf einer weiteren Prozessoreinheit des Computers, wobei jeder der Tochterprozesse einen zugehörigen Simulationszustand eines simulierten Systems von dem Hauptprozess erbt, jeder der Tochterprozesse einen Teil der operativen Prozessschritte und zugehörige nicht-operative Prozessschritte umfasst und die zugehörigen nicht-operativen Prozessschritte nicht von dem Hauptprozess umfasst sind.
  • Weitere Implementierungen des Verfahrens werden ohne weiteres durch Kombinieren verschiedener beschriebener Implementierungen des Verfahrens abgeleitet. Insbesondere können der erste, der zweite und weitere Anteile von operativen Prozessschritten von dem Hauptprozess umfasst sein, während die erste, die zweite und weitere Untersequenzen von Prozessschritten von den Tochterprozessen umfasst sein können.
  • Gemäß weiterer Implementierungen umfasst der Hauptprozess, außer einem Erstellen einer Infrastruktur für die nicht-operativen Prozessschritte, keine nicht-operativen Prozessschritte oder eine reduzierte Anzahl von nicht-operativen Prozessschritten.
  • In einigen Implementierungen des Verfahrens wird das Verfahren mittels eines Tools zum Entwurf von Schaltkreisen, insbesondere mittels eines Tools zur Entwurfsautomatisierung elektronischer Systeme, EDA, ausgeführt.
  • Gemäß dem verbesserten Konzept wird auch ein Computerprogramm Produkt angegeben, wobei das Computerprogrammprodukt einen Quelltext umfasst, wobei der Quelltext dazu eingerichtet ist, ein Verfahren gemäß dem verbesserten Konzept zu implementieren, insbesondere wenn er auf einem Computer mit entsprechenden Prozessoreinheiten durchgeführt wird. Der Quelltext kann zum Beispiel auf einem Speichermedium gespeichert sein.
  • Im Folgenden wird die Erfindung mit Hilfe von beispielhaften Implementierungen unter Bezug auf die Zeichnungen im Detail erklärt. Komponenten und Elemente die funktionell identisch sind, einen identischen Effekt haben oder sich gegenseitig entsprechen können mit identischen Bezugszeichen bezeichnet sein. Solche Komponenten und Elemente können nur bezüglich der Figur beschrieben sein, in der Sie zuerst auftauchen; ihre Beschreibung wird nicht notwendigerweise in folgenden Figuren wiederholt.
  • In den Zeichnungen zeigen,
  • 1 eine vereinfachte Darstellung eines erläuternden Entwurfsablaufs eines integrierten Schaltkreises;
  • 2 eine Darstellung einer beispielhaften Implementierung eines Verfahrens gemäß dem besserten Konzept;
  • 3 eine Darstellung einer weiteren beispielhaften Implementierung eines Verfahrens gemäß dem verbesserten Konzept; und
  • 4 eine Darstellung einer weiteren beispielhaften Implementierung eines Verfahrens gemäß dem verbesserten Konzept.
  • 1 zeigt eine vereinfachte Darstellung eines erläuternden Entwurfsablaufs eines elektronischen Schaltkreises insbesondere eines integrierten Schaltkreises, IC. Eine Implementierung eines Verfahrens nach dem verbesserten Konzept kann beispielsweise in einen solchen Entwurfsablauf eingebunden sein. Eine Implementierung eines Verfahrens nach dem verbesserten Konzept kann jedoch auch innerhalb eines anderen Entwurfsablaufs oder unabhängig eines Entwurfsablaufs verwendet werden.
  • Auf einer oberen Ebene beginnt der Ablauf mit der Produktidee (Schritt 100) und ist in einem Softwareentwurfsprozess mit einem Tool zur Entwurfsautomatisierung elektronischer Systeme, EDA, realisiert (Schritt 110). Wenn der Entwurf abgeschlossen ist, kann er zum tape-out (Schritt 127) gelangen. Zu einem Zeitpunkt nach dem tape-out erfolgen der Fabrikationsprozess (Schritt 150) und Konfektionierungs- und Montageprozesse (Schritt 160), was schließlich in fertigen IC Chips resultiert (Ergebnis 170).
  • Der EDA Softwareentwurfsprozess (Schritt 110) selbst ist aus einer Anzahl von Schritten 112130, die der Einfachheit halber in linearer Weise gezeigt sind, zusammengesetzt. In einem tatsächlichen Entwurfsprozess für einen integrierten Schaltkreis kann der jeweilige Entwurf Schritte wiederholt durchführen müssen bis bestimmte Tests bestanden werden. Gleichermaßen können diese Schritte in jedem tatsächlichen Entwurfsprozess in unterschiedlicher Reihenfolge und in unterschiedlichen Kombinationen auftreten. Diese Beschreibung wird daher eher als Kontext und allgemeine Erklärung angegeben denn als spezifischer oder empfohlener Entwurfsablauf für einen bestimmen integrierten Schaltkreis.
  • Es wird eine kurze Beschreibung der zugehörigen Schritte des EDA Softwareentwurfsprozesses (Schritt 110) angegeben.
  • Systementwurf (Schritt 112): Schaltungsentwickler beschreiben Funktionalität, die sie implementieren möchten. Sie können eine was-wäre-wenn-Planung durchführen, um die Funktionalität zu verfeinern, Kosten zu prüfen, etc. In diesem Stadium kann auch eine Hardware-Software-Architekturaufteilung stattfinden. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden können, umfassen Model Architect, Saber, System Studio und DesignWare(R).
  • Logikentwurf und Funktionsüberprüfung (Schritt 114): In diesem Stadium wird ein VHDL-, SystemVerilog- oder Verilog-Code für Module in dem System geschrieben und der Entwurf wird auf Funktionsgenauigkeit hin überprüft. Genauer gesagt, wird der Entwurf überprüft, um sicherzustellen, dass er die richtigen Ausgaben als Antwort auf bestimmte Eingabestimuli hervorbringt. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden können, umfassen VCS, VERA, DesignWare(R), Magellan, Formality, ESP und LEDA. Aspekte der Erfindung können während dieses Schrittes 114 durchgeführt werden.
  • Synthese und Entwurf zum Test (Schritt 116): Hier wird das VHDL/Verilog in eine Netzliste umgesetzt. Die Netzliste kann für die Zieltechnologie optimiert werden. Zusätzlich erfolgen der Entwurf und die Implementierung von Tests zur Überprüfung der fertiggestellten Chips. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden können, umfassen Design Compiler(R), Physical Compiler, DFT Compiler, Power Compiler, FPGA Compiler, TetraMAX und DesignWare(R).
  • Netzlistenverifizierung (Schritt 118): In diesem Schritt wird die Netzliste auf Einhaltung von Zeitvorgaben und auf Übereinstimmung mit dem VHDL/Verilog-Quellcode überprüft. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden können, umfassen Formality, PrimeTime und VCS.
  • Entwurfsplanung (Schritt 120): Hier wird ein Gesamtgrundriss für den Chip erstellt und auf Zeitvorgabe und Fertigungsplanung auf höchster Ebene hin analysiert. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden könnne, umfassen Astro und Custom Designer.
  • Physikalische Umsetzung (Schritt 122): Die Platzierung (Positionierung von Schaltungselementen) und die Leitweglenkung (Verbindung derselben) wird in diesem Schritt ausgeführt (Platzierung-und-Leitweglenkung). Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden könne, umfassen Astro und Custom-Designer.
  • Analyse und Extraktion (Schritt 124): In diesem Schritt wird die Funktionalität der Schaltung auf Transistorebene überprüft, um so was-wäre-wenn Verfeinerung zu ermöglichen. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden können, umfassen AstroRail, PrimeRail, PrimeTime und Star-RCXT.
  • Physikalische Überprüfung (Schritt 126): In diesem Schritt werden verschiedene Überprüfungsfunktionen durchführt um die Richtigkeit sicherzustellen für: Herstellung, elektrische Belange, lithografische Belange und Schaltungen. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden können, umfassen Hercules.
  • Tape-out (Schritt 127): Dieser Schritt stellt die ”tape-out” Daten zur Benutzung (nachdem, falls zutreffend, lithographische Verbesserungen durchgeführt wurden) für die Herstellung von Masken für lithographische Zwecke zur Herstellung von fertiggestellten Chips bereit. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden könne, umfassen die Produktfamilien IC Compiler und Custom Designer.
  • Auflösungsverbesserung (Schritt 128): Dieser Schritt schließt geometrische Eingriffe am Layout ein, um die Herstellbarkeit des Entwurfs zu verbessern. Dieser Schritt umfasst zum Beispiel Optische Nahbereichskorrektur, OPC. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden können, umfassen Proteus, ProteusAF und PSMGen.
  • Maskendatenvorbereitung (Schritt 130): Dieser Schritt stellt zur Maskenherstellung bereite ”tape-out” Daten zur Herstellung von Masken für lithographische Zwecke zur Herstellung von fertiggestellten Chips bereit. Beispielhafte EDA-Software-Produkte von Synopsys, Inc., die bei diesem Schritt verwendet werden können, umfassen die Produktfamilie CATS(R). Oft umfasst dieser Schritt eine Auftrennung oder Aufteilung von nicht-rechteckigen Inseln in Rechtecke.
  • Wie bereits erwähnt, können Aspekte der Erfindung währen dem Logikentwurf und der Funktionsüberprüfung (Schritt 114) durchgeführt werden. Es kann jedoch auch geeignet sein, Aspekte der Erfindung während anderen Schritten des EDA Prozesses oder während Schritten eines anderen Entwurfsprozesses für Schaltkreise durchzuführen.
  • 2 zeigt eine Darstellung einer beispielhaften Implementierung eines Verfahrens gemäß dem verbesserten Konzept.
  • Gezeigt sind schematisch eine erste Prozessoreinheit PU1, eine zweite Prozessoreinheit PU2 und eine dritte Prozessoreinheit PU3 eines Computers, sowie eine Zeitachse T mit beliebigen Zeiteinheiten. 2 zeigt verschiedene Anteile von operativen Prozessschritten 01, 02, ..., 08 eines Simulationsprogramms, die auf der ersten Prozessoreinheit PU1 gestartet und durchgeführt werden, und eine Infrastruktursequenz i. Außerdem sind verschiedene Untersequenzen von Prozessschritten 01', 03', 05', 07', die auf der zweiten Prozessoreinheit PU2 gestartet und durchgeführt werden, sowie verschiedene Untersequenzen von Prozessschritten 02', 04', 06', 08', die auf der dritten Prozessoreinheit PU3 gestartet und durchgeführt werden, gezeigt. Zusätzlich zeigt 2 verschiedene nicht-operative Dateien F1, F2, ..., F8 und eine Sammeldatei F.
  • Die erste, die zweite und dritte Prozessoreinheit P01, PU2, PU3 des Computers sind beispielsweise durch einen ersten, einen zweiten und einen dritten Prozessor, durch eine erste, der zweite und eine dritte zentrale Prozessoreinheit, CPU, durch einen ersten, einen zweiten und einen dritten Prozessorkern eines Prozessors oder einer CPU, durch einen ersten, einen zweiten und einen dritten Koprozessor oder durch eine Kombination dieser gegeben.
  • Zu Beginn des gezeigten Verfahrens wird die Infrastruktursequenz i und auf der ersten Prozessoreinheit PU1 gestartet und durchgeführt. Während der Infrastruktursequenz i wird eine nicht-operative Infrastruktur erstellt, die Infrastrukturen für die Untersequenzen 01', 02', ..., 08' enthält. Die Zeit, die für das Durchführen der Infrastruktursequenz i benötigt wird, ist durch eine Infrastrukturzeit t_i gegeben. Mittels der Infrastruktursequenz können beispielsweise Zuweisungen, Anweisungen oder Details bezüglich einer Durchführung der Untersequenzen 01', 02', ..., 08' spezifiziert werden.
  • Es wird darauf hingewiesen, dass eine gesamte Anzahl der Anteile von operativen Prozessschritten 01, 02, ..., 08 und/oder eine gesamte Anzahl der Untersequenzen 01', 02', ..., 08' nicht notwendigerweise zu Beginn des Verfahrens bekannt ist. Entsprechend ist eine Länge oder eine Zeitdauer eines jeden der Anteile von operativen Prozessschritten 01, 02, ..., 08 und/oder eine Länge oder eine Zeitdauer einer jeden der Untersequenzen 01', 02', ..., 08' nicht notwendigerweise zu Beginn des Verfahrens bekannt. Folglich kann die Infrastruktursequenz i in solchen Fällen für eine unbekannte gesamte Anzahl und/oder für eine unbekannte Länge oder Zeitdauer der Untersequenzen 01', 02', ..., 08' erstellt werden.
  • Nachdem die Infrastruktursequenz i geendet hat, wird der erste Anteil von operativen Prozessschritten 01 auf der ersten Prozessoreinheit PU1 gestartet und durchgeführt. Gleichzeitig oder näherungsweise gleichzeitig wird die erste Untersequenz von Prozessschritten 01' auf der zweiten Prozessoreinheit PU2 gestartet und durchgeführt.
  • Insbesondere kann der erste Anteil von operativen Prozessschritten 01 Teil eines Hauptprozesses sein, der auf der ersten Prozessoreinheit PU1 läuft. Der Hauptprozess spaltet zum Beispiel einen ersten Tochterprozess ab, welcher auf der zweiten Prozessoreinheit PU2 läuft und die erste Untersequenz 01' umfasst. Dabei kann der erste Tochterprozess einen Simulationszustand eines simulierten Systems von dem Hauptprozess erben. Im beschriebenen Fall, bei dem der erste Tochterprozess die erste Untersequenz 01' umfasst, kann der Simulationszustand beispielsweise ein initialer Zustand des simulierten Systems sein.
  • Dabei umfasst die erste und die Sequenz 01' den ersten Anteil von operativen Prozessschritten 01 und einen ersten Anteil von nicht-operativen Prozessschritten des Simulationsprogramms. Die operativen Prozessschritte des ersten Anteils 01 und der erste Anteil von nicht-operativen Prozessschritten können innerhalb der ersten Untersequenz 01' verschachtelt sein. Beispielsweise kann jeder des ersten Anteils von nicht-operativen Prozessschritten nach einem zugehörigen operativen Prozessschritt des ersten Anteils 01 durchgeführt werden. Dies ist schematisch im unteren Teil von 2 gezeigt. Die erste Untersequenz 01' ist dargestellt durch eine abwechselnde Abfolge von operativen Prozessschritten, die zu dem ersten Anteil von operativen Prozessschritten 01 gehören und durch unausgefüllte Abschnitte mit gepunkteten Rändern angedeutet sind, und nicht-operativen Prozessschritten, die zu dem ersten Anteil von nicht-operativen Prozessschritten gehören und durch ausgefüllte Abschnitte angedeutet sind. Dasselbe gilt mutatis mutandis jeweils für die übrigen Untersequenzen 02', ..., 07', 08' und die übrigen Anteile von operativen Prozessschritten 02, ..., 07, 08.
  • Das bedeutet, dass wenn die erste Untersequenz 01' durchgeführt wird, eigentlich alle operativen Prozessschritte die von dem ersten Anteil von operativen Prozessschritten 01 umfasst sind durchgeführt werden, und dass zwischen den operativen Prozessschritten die nicht-operativen Prozessschritte die von dem ersten Anteil von nicht-operativen Prozessschritten umfasst sind durchgeführt werden. Dies ist insbesondere gegensätzlich zu dem Durchführen des ersten Anteils von operativen Prozessschritten 01 auf der ersten Prozessoreinheit PU1, wo die operativen Prozessschritte die von dem ersten Anteil 01 umfasst sind einer nach dem anderen durchgeführt werden ohne von nicht-operativen Prozessschritten unterbrochen zu werden. Das bedeutet, dass für den Hauptprozess, insbesondere für das Durchführen des ersten Anteils 01 auf der ersten Prozessoreinheit PU1, nicht-operative Prozessschritte beispielsweise deaktiviert sind.
  • In der gezeigten Beispiel weisen alle operativen Prozessschritte des ersten Anteils 01 dieselbe Zeitdauer auf und alle nicht-operativen Prozessschritte des ersten Anteils von nicht-operativen Prozessschritten weisen dieselbe Zeitdauer auf. In alternativen Implementierungen können die operativen Prozessschritte des ersten Anteils 01 nicht die gleiche Zeitdauer aufweisen und/oder es können nicht alle nicht-operativen Prozessschritte des ersten Anteils von nicht-operativen Prozessschritten die gleiche Zeitdauer aufweisen.
  • In weiteren Implementierungen kann nicht jeder operative Prozessschritt des ersten Anteils 01 von einem nicht-operativen Prozessschritte gefolgt sein, im Gegensatz zu dem Beispiel, welches in dem unteren Teil von 2 gezeigt ist. Es wird hervorgehoben, dass die Anzahl der Abschnitte welche den ersten Anteil von operativen Prozessschritten 01 und die nicht-operativen Prozessschritte des ersten Anteils von nicht-operativen Prozessschritten darstellen, die jeweils gleich sechs ist, nur zu erklärenden Zwecken so gewählt ist und in anderen Implementierungen anders sein kann.
  • Die operativen Prozessschritte des ersten Anteils 01 können beispielsweise erste nicht-operative Daten erzeugen. Die ersten nicht-operativen Daten werden dann von dem ersten Anteil von nicht-operativen Prozessschritten verarbeitet. Dies kann beispielsweise ein Ausgeben der ersten nicht-operativen Daten oder eines Teils der ersten nicht-operativen Daten in die erste nicht-operative Dateien F1 umfassen. Die erste nicht-operative Datei F1 kann dann beispielsweise eine Ausgabedatei oder eine Spurdatei sein.
  • Nachdem die erste Untersequenz 01' geendet hat, wird der erste Tochterprozess beispielsweise beendet. Dabei kann das Beenden beispielsweise durch ein festgelegtes Intervall von Simulationszeit bestimmt sein. Das Intervall von Simulationszeit kann beispielsweise einer gesamten Zeitdauer entsprechen, die von dem ersten Tochterprozess zum Durchführen der operativen Prozessschritte des ersten Anteils 01 verbraucht wird. Insbesondere kann Zeit die von den ersten Tochterprozess zum Durchführen von nicht-operativen Prozessschritten verbraucht wird nicht zu dem Intervall von Simulationszeit beitragen. Das Intervall von Simulationszeit kann beispielsweise in der Größenordnung von μs liegen, beispielsweise 1 μs. Abweichende Intervalle von Simulationszeit sind jedoch, beispielsweise abhängig von der Implementierung des Verfahrens, dem Computersimulationsprogramm und dem simulierten System, offensichtlich möglich.
  • Nachdem der erste Anteil von operativen Prozessschritten 01 geendet hat wird der zweite Anteil von operativen Prozessschritten 02 auf der ersten Prozessoreinheit PU1 gestartet und durchgeführt. Gleichzeitig oder näherungsweise gleichzeitig wird die zweite Untersequenz von Prozessschritten 02' auf der dritten Prozessoreinheit PU3 gestartet und durchgeführt. Was oben für den ersten Anteil von operativen Prozessschritten 01 und die erste Untersequenz 01' beschrieben wurde, gilt jeweils analog auch für den zweiten Anteil von operativen Prozessschritten 02 und die erste Untersequenz 02'.
  • Insbesondere kann der zweite Anteil von operativen Prozessschritten 02 Teil des Hauptprozesses sein und der Hauptprozess spaltet beispielsweise einen zweiten Tochterprozess ab, der auf der dritten Prozessoreinheit läuft und die zweite Untersequenz 02' umfasst. Dabei kann der zweite Tochterprozess einen Simulationszustand des simulierten Systems von dem Hauptprozess erben. Der Simulationszustand, der von dem zweiten Tochterprozess geerbt wird, kann beispielsweise ein Zustand des simulierten Systems nach dem Beenden des ersten Anteils von operativen Prozessschritten 01 sein.
  • Die zweite Untersequenz 02' umfasst den zweiten Anteil von operativen Prozessschritten 02 und einen zweiten Anteil von nicht-operativen Prozessschritten des Simulationsprogramms. Die operativen Prozessschritte des zweiten Anteils 02 und der zweite Anteil von nicht-operativen Prozessschritten können innerhalb der zweiten Untersequenz 02' verschachtelt sein, wie bezüglich des unteren Teils von 2 für die erste Untersequenz 01' beschrieben.
  • Entsprechend dem oben Gesagten können die operativen Prozessschritte des zweiten Anteils 02 zweite nicht-operative Daten erzeugen. Die zweiten nicht-operativen Daten werden von dem zweiten Anteil von nicht-operativen Prozessschritten verarbeitet. Das Verarbeiten der zweiten nicht-operativen Daten kann beispielsweise ein Ausgeben der zweiten nicht-operativen Daten oder eines Teils der zweiten nicht-operativen Daten in die zweite nicht-operative Datei F2 umfassen.
  • In analoger Weise wie oben beschrieben fährt das Verfahren fort mit dem Durchführen der übrigen Anteile von operativen Prozessschritten 03, 04, ..., 08 auf der ersten Prozessoreinheit PU1 und der übrigen Untersequenzen 03', 04', ..., 08' abwechselnd auf der zweiten und der dritten Prozessoreinheit PU2, PU3 fort. Die übrigen Untersequenzen 03', 04', ..., 08' umfassen jeweils die übrigen Anteile von operativen Prozessschritten 03, 04, ..., 08 und zugehörige Anteile von nicht-operativen Prozessschritten des Simulationsprogramms. Dabei können die operativen Prozessschritte der übrigen Anteile 03, 04, ..., 08 und die zugehörigen Anteile von nicht-operativen Prozessschritten jeweils innerhalb der übrigen Untersequenzen 03', 04', ..., 08' verschachtelt sein, wie bezüglich des unteren Teils von 2 für die erste Untersequenz 01' beschrieben.
  • Insbesondere können die Untersequenzen 01', 02', ..., 08' von zugehörigen Tochterprozessen umfasst sein, welche von dem Hauptprozess zu entsprechenden Zeiten abgespaltet werden und zugehörige Zustände der Simulation von dem Hauptprozess erben. Die Tochterprozesse können Kopien des Hauptprozesses sein, wobei, im Gegensatz zu dem Hauptprozess, ein Durchführen der nicht-operativen Prozessschritte aktiviert ist, und die nach bestimmten zugehörigen Intervallen von Simulationszeit beendet werden wie oben bezüglich der ersten Untersequenz 01' beschrieben.
  • Ein Inhalt der nicht-operativen Dateien F1, F2, ..., F8 wird in die Sammeldatei F gespeichert. In einigen Implementierungen kann das Speichern kontinuierlich während des beschriebenen Verfahrens durchgeführt werden. In Alternativen Implementierungen wird das Speichern durchgeführt, nachdem die letzte Untersequenz, im gezeigten Fall die achte Untersequenz 08', geendet hat.
  • Im gezeigten Beispiel ist die Umlaufzeit, TAT, etwas länger als 9 Zeiteinheiten, wobei die Infrastrukturzeit t_i und eine Abschlusszeit t_f mit beinhaltet sind. Die Abschlusszeit t_f entspricht beispielsweise einer Zeit, die benötigt wird um einen Inhalt der achten nicht-operativen Datei F8 in die Sammeldatei F zu speichern. In Implementierungen in denen das Speichern der nicht-operativen Dateien F1, F2, ..., F8 in die Sammeldatei F durchgeführt wird nachdem die letzte Untersequenz geendet hat, kann die Abschlusszeit t_f auch einer Zeit entsprechen, die zum Speichern von Inhalten aller nicht-operativen Dateien F1, F2, ..., F8 in die Sammeldatei F benötigt wird.
  • In verschiedenen Implementierungen hängt ein operative Prozessschritt von einem anderen operativen Prozessschritt, welcher früher durchgeführt wird, oder von einem initialen Zustand des simulierten Systems ab. Insbesondere kann ein initialer operativer Prozessschritt des ersten Anteils 01 von dem initialen Zustand des simulierten Systems abhängen. Weiterhin kann ein initialer operativer Prozessschritt des zweiten Anteils 02 von einem letzten operativen Prozessschritt des ersten Anteils 01 abhängen. Entsprechend kann ein initialer operativer Prozessschritt des dritten Anteils 03 von einem letzten operativen Prozessschritt des zweiten Anteils 02 abhängen und so weiter.
  • Ein initialer operativer Prozessschritt der ersten Untersequenz 01' kann identisch zu dem initialen operativen Prozessschritt des ersten Anteils 01 sein, ein initialer operativer Prozessschritt der zweiten Untersequenz 02' kann identisch zu dem initialen operativen Prozessschritt des zweiten Anteils 02 sein und so weiter.
  • Folglich kann beispielsweise die zweite Untersequenz 02' nur gestartet werden, wenn der erste Anteil 01 auf der ersten Prozessoreinheit PU1 geendet hat, die dritte Untersequenz 03' kann beispielsweise nur gestartet werden, wenn der zweite Anteil 02 auf der ersten Prozessoreinheit PU1 geendet hat und so weiter. Deshalb kann es von einer gesamten Anzahl von Prozessoreinheiten, insbesondere von einer gesamten Anzahl verfügbarer Prozessoreinheiten, des Computers ebenso wie von einer Zeitdauer der Untersequenzen 01', 02', ..., 08' abhängen, ob eine gegebene der Untersequenzen 01', 02', ..., 08' und ein zugehöriger der Anteile 01, 02, ..., 08 gleichzeitig ohne ein Pausieren der ersten Prozessoreinheit PU1 gestartet werden können.
  • In den gezeigten Beispiel hat jede der Untersequenzen 01', 02', ..., 08' eine Zeitdauer, die beispielsweise ungefähr 1,5 mal einer Zeitdauer eines der Anteile von operativen Prozessschritten 01, 02, ..., 08 entspricht. Folglich ist, immer wenn einer der Anteile 01, 02, ..., 08 auf der ersten Prozessoreinheit PU1 geendet hat, die Prozessoreinheit auf der die gleichzeitig gestartete Untersequenz durchgeführt wurde noch beschäftigt, während die übrige der Prozessoreinheiten PU2, PU3 nicht beschäftigt ist. Daher kann ein folgender Anteil der Anteile 01, 02, ..., 08 gleichzeitig mit einer folgenden Untersequenz der Untersequenzen 01', 02', ..., 08' auf der ersten Prozessoreinheit PU1 gestartet und durchgeführt werden, ohne dass ein Pausieren der ersten Prozessoreinheit PU1 notwendig ist.
  • Wenn beispielsweise der erste Anteil 01 auf der ersten Prozessoreinheit PU1 geendet hat, ist die zweite Prozessoreinheit PU2 beschäftigt, während die dritte Prozessoreinheit PU3 nicht beschäftigt ist. Folglich kann der zweite Anteil 02 auf der ersten Prozessoreinheit PU1 gleichzeitig mit dem Starten der zweiten Untersequenz 02' auf der dritten Prozessoreinheit PU3 gestartet werden ohne ein Pausieren der ersten Prozessoreinheit PU1. Weiterhin ist, wenn der zweite Anteil 02 auf der ersten Prozessoreinheit PU1 geendet hat, die dritte Prozessoreinheit PU3 beschäftigt, während die zweite Prozessoreinheit PU2 nicht beschäftigt ist. Folglich kann der dritte Anteil 03 auf der ersten Prozessoreinheit PU1 gleichzeitig mit dem Starten der dritten Untersequenz 03' auf der zweiten Prozessoreinheit PU2 gestartet werden ohne ein Pausieren der ersten Prozessoreinheit PU1 und so weiter.
  • In Alternativen Implementierungen können Pausen der ersten Prozessoreinheit PU1 zwischen manchen der Anteile 01, 02, ..., 08 notwendig sein.
  • In Alternativen Implementierungen des Verfahrens können die Anteile 01, 02, ..., 08 nicht alle die gleiche Zeitdauer besitzen. Es wird auch darauf hingewiesen, dass die Anzahl der Anteile von operativen Prozessschritten 01, 02, ..., 08 und die Anzahl der Untersequenzen 01', 02', ..., 08' hier nur aus Gründen der Erläuterung gleich acht sind und größer oder kleiner als acht sein können.
  • In dem beschriebenen Verfahren läuft der Hauptprozess, bis auf das Vererben von Zuständen des simulierten Systems, unabhängig von den Tochterprozessen und umgekehrt. In weiteren Implementierungen des Verfahrens können die Untersequenzen 01', 02', ..., 08' eine andere Zeitdauer als 1,5 Zeiteinheiten haben und können nicht alle dieselbe Zeitdauer haben.
  • Das Computersimulationsprogramm kann beispielsweise ein Programm zur Simulation von elektronischen oder elektrischen Schaltkreisen sein, beispielsweise eine Hardwareschalkreissimulation, die eine Hardwarebeschreibungssprache, HDL, benutzt. Beispiele für die HDL sind SystemVerilog, Verilog oder eine andere HDL. Das Computersimulationsprogramm kann jedoch auch ein Programm zur Simulation von physikalischen oder chemischen oder anderen Prozessen oder Systemen sein.
  • Im Falle einer Hardwareschaltkreissimulation können die ersten und die zweiten nicht-operativen Daten sowie nicht-operative Daten, die von den übrigen Anteilen von operativen Prozessschritten 03, 04, ..., 08 erzeugt werden, beispielsweise Signalhöhen des Hardwareschaltkreises umfassen, die beispielsweise mit einer Wellenform des Hardwareschaltkreises zusammenhängen, Daten zur Auswertung von Assertionen des Computersimulationsprogramms und/oder Daten zur Auswertung einer Abdeckung des Computersimulationsprogramms umfassen. Die Abdeckung kann insbesondere eine Zeilenabdeckung oder eine Funktionalabdeckung sein.
  • Die operativen Prozessschritte der Anteile 01, 02, ..., 08 können beispielsweise HDL Aussagen entsprechen, beispielsweise Verilog Aussagen, welche einen Wert für einen nächsten Zustand von Registern berechnen oder Register zu einer Taktflanke aktualisieren.
  • 3 zeigt eine Darstellung einer weiteren Implementierung eines Verfahrens gemäß dem verbesserten Konzept.
  • Die Implementierung, die in 3 gezeigt ist, basiert auf der Implementierung von 2. Eine gesamte Anzahl von Prozessoreinheiten ist drei wie in dem Beispiel von 2. Ein Unterschied zu 2 ist, dass die Zeitdauer jeder der Untersequenzen 01', 02', ..., 08' beispielsweise durch näherungsweise 2,5 mal der Zeitdauer von jedem der Anteile von operativen Prozessschritten 01, 02, ..., 08 gegeben ist.
  • Folglich sind, immer wenn eine des zweiten, des vierten und des sechsten Anteils 02, 04, 06 auf der ersten Prozessoreinheit PU1 geendet hat, die zweite und die dritte Prozessoreinheit PU2, PU3 beide beschäftigt. Deshalb wird die erste Prozessoreinheit PU1 pausiert bis die zweite Prozessoreinheit PU2 nicht mehr beschäftigt ist. Dann wird ein entsprechender des dritten, des fünften und des siebten Anteils 03, 05, 07 auf der ersten Prozessoreinheit PU1 gestartet und durchgeführt und eine zugehörige der dritten, der fünften und der siebten Untersequenz 03', 05', 07' wird auf der zweiten Prozessoreinheit PU2 gestartet und durchgeführt.
  • Im gezeigten Beispiel ist die Umlaufzeit, TAT, etwas länger als 11 Zeiteinheiten inklusive der Infrastrukturzeit t_i und der Abschlusszeit t_f.
  • Es wird hervorgehoben, dass das Pausieren der ersten Prozessoreinheit PU1 in der Implementierung von 3 wegen der begrenzten gesamten Anzahl von verfügbaren Prozessoreinheiten, die im Beispiel von 3 gleich drei ist, notwendig sein kann. Insbesondere ist das Starten und Durchführen der Anteile 01, 02, ..., 08 auf der ersten Prozessoreinheit PU1 unabhängig von den Untersequenzen 01', 02', ..., 08'. Daher ist das Pausieren der ersten Prozessoreinheit PU1 nicht in der Tatsache begründet, dass eine der Untersequenzen 01', 02', ..., 08' zu einem bestimmten Zeitpunkt noch nicht beendet ist. Stattdessen kann das Pausieren der ersten Prozessoreinheit PU1 in der Tatsache begründet sein, dass keine weiteren Prozessoreinheit zu der bestimmten Zeit verfügbar ist.
  • 4 zeigt eine Darstellung einer weiteren beispielhaften Implementierung eines Verfahrens gemäß dem verbesserten Konzept.
  • Die Implementierung, die in 4 gezeigt ist, basiert auf der Implementierung von 3. Wie in 3 ist die Zeitdauer jeder der Untersequenzen 01', 02', ..., 08' beispielsweise näherungsweise durch 2,5 mal der Zeitdauer eines jeden Anteils der operativen Prozessschritte 01, 02, ..., 08 gegeben. In 3 ist zusätzlich eine vierte Prozessoreinheit PU4 gezeigt. Folglich ist eine gesamte Anzahl von Prozessoreinheiten in dem Beispiel von 4 gleich vier.
  • Daher sind, immer wenn eine des dritten und des sechsten Anteils 03, 06 auf der ersten Prozessoreinheit PU1 geendet hat, die dritte und vierte Prozessoreinheit P3, P4 beschäftigt, während die zweite Prozessoreinheit PU2 jeweils nicht beschäftigt oder nicht mehr beschäftigt ist. Folglich wird ein entsprechender des vierten und des siebten Anteils 04, 07 auf der ersten Prozessoreinheit PU1 gestartet und durchgeführt und eine entsprechende der vierten und der siebten Untersequenz 04', 07' auf der zweiten Prozessoreinheit PU2 gestartet und durchgeführt.
  • Außerdem ist, immer wenn einer des ersten, des vierten und des siebten Anteils 01, 04, 07 auf der ersten Prozessoreinheit PU1 geendet hat, die dritte Prozessoreinheit PU3 nicht beschäftigt. Folglich wird ein entsprechender des zweiten, des fünften und des achten Anteils 02, 05, 08 auf der ersten Prozessoreinheit PU1 gestartet und durchgeführt und eine entsprechende der zweiten, der fünften und der achten Untersequenz 02', 05', 08' wird auf der dritten Prozessoreinheit PU3 gestartet und durchgeführt.
  • Entsprechend sind, immer wenn einer des zweiten und des fünften Anteils 02, 05 auf der ersten Prozessoreinheit PU1 geendet hat, die zweite und die dritte Prozessoreinheit P3, P3 beschäftigt, während die vierte Prozessoreinheit PU4 nicht beschäftigt ist. Folglich wird ein entsprechender des dritten und des sechsten Anteils 03, 06 auf der ersten Prozessoreinheit PU1 gestartet und durchgeführt und eine zugehörige der dritten und der sechsten Untersequenz 03', 06' wird auf der vierten Prozessoreinheit PU4 gestartet und durchgeführt.
  • Ein Pausieren des ersten Prozessors zwischen manchen der Anteile von operativen Prozessschritten 01, 02, ..., 08 wie in der Implementierung von 3 ist deshalb in der Implementierung von 4 nicht notwendig.
  • Im gezeigten Beispiel ist die Umlaufzeit, TAT, ungefähr 10 Zeiteinheiten inklusive der Infrastrukturzeit t_i und der Abschlusszeit t_f.
  • Bei Implementierungen des Verfahrens nach dem verbesserten Konzept, insbesondere bei den Implementierungen, die in den 2 bis 4 gezeigt sind und bei nicht gezeigten Implementierungen, kann der Hauptprozess bestimmen ob ein Pausieren der ersten Prozessoreinheit PU1 zwischen manchen der Anteile von operativen Prozessschritten 01, 02, ..., 08 notwendig ist, wie beispielsweise in 3, oder nicht notwendig ist, wie zum Beispiel in den 2 und 4. Dazu kann der Hauptprozess beispielsweise eine gesamte Anzahl von verfügbaren Prozessoreinheiten Np bestimmen. Der Hauptprozess kann beispielsweise entsprechende Rückmeldungen von den übrigen Prozessoreinheiten PU2, PU3, PU4 bekommen, wobei die Rückmeldungen Informationen darüber enthalten, ob die übrigen Prozessoreinheiten PU2, PU3, PU4 zu entsprechenden Zeitpunkten beschäftigt sind oder nicht.
  • Im Allgemeinen sind, für Implementierungen in denen die Zeitdauer eines jeden der Anteile 01, 02, ..., 08 gleich einer Zeitdauer Tp in beliebigen Einheiten ist und die Zeitdauer einer jeden der Untersequenzen 01', 02', ..., 08' gleich einer Zeitdauer Ts in den beliebigen Einheiten ist, Pausen der ersten Prozessoreinheit PU1 zwischen manchen der Anteile 01, 02, ..., 08 nicht notwendig, wenn die folgende Beziehung gilt: Np ≥ [Ts/Tp]i + 1. (1)
  • Dabei ist [Ts/Tp]i gleich dem Verhältnis Ts/Tp aufgerundet zur nächstgrößeren Ganzzahl.
  • Es wird betont, dass in verschiedenen Implementierungen die Zeitdauer einer jeden der Untersequenzen 01', 02', ..., 08' nicht gleich sein kann und/oder das Durchführen der Anteile 01, 02, ..., 08 oder der Untersequenzen 01', 02', ..., 08' gestört oder inhomogen sein kann. In solchen Implementierungen kann Gleichung (1) nicht oder nicht exakt gelten.
  • Mittels einer Implementierungen des Verfahrens gemäß dem verbesserten Konzept kann die TAT, die durch die nicht-operativen Prozessschritte, wie Signalausgabe, verursacht wird, reduziert werden, idealerweise in Richtung null. Insbesondere kann das verbesserte Konzept für Simulationsprogramme verwendet werden, in denen ein Zustand der Simulation vollständig durch Nur-Lese Dateien und einen Speicher, welcher von dem Hauptprozess reserviert wurde, definiert wird. Dadurch kann das verbesserte Konzept auch eine skalierbare Option zur Abwägung von TAT gegenüber mehr Hardwarebenutzung bieten.
  • Bezugszeichenliste
  • PU1, PU2, PU3, PU4
    Prozessoreinheiten
    01, 02, ..., 08
    Anteile von operativen Prozessschritten
    01', 02', ..., 08'
    Untersequenzen von Prozessschritten
    T
    Zeitachse
    t_i
    Infrastrukturzeit
    t_f
    Abschlusszeit
    F1, F2, ... F8
    nicht-operative Dateien
    F
    Sammeldatei

Claims (13)

  1. Verfahren zur Verarbeitung eines Computersimulationsprogramms, das Verfahren umfassend – Starten und Ausführen eines ersten Anteils von operativen Prozessschritten (01) des Computersimulationsprogramms auf einer ersten Prozessoreinheit (PU1) eines Computers; und – Starten und Ausführen einer ersten Untersequenz von Prozessschritten (01') auf einer zweiten Prozessoreinheit (PU2) des Computers, wobei die erste Untersequenz (01') den ersten Anteil von operativen Prozessschritten (01) und einen ersten Anteil von nicht-operativen Prozessschritten des Computersimulationsprogramms umfasst; – nach Fertigstellung des Ausführens des ersten Anteils von operativen Prozessschritten (01) auf der ersten Prozessoreinheit (PU1), Starten und Ausführen eines zweiten Anteils von operativen Prozessschritten (02) des Computersimulationsprogramms auf der ersten Prozessoreinheit (PU1) und Starten und Ausführen einer zweiten Untersequenz von Prozessschritten (02') auf einer weiteren Prozessoreinheit (PU3, PU4) des Computers, wobei die zweite Untersequenz (02') den zweiten Anteil von operativen Prozessschritten (02) und einen zweiten Anteil von nicht-operativen Prozessschritten des Computersimulationsprogramms umfasst; – wobei operative Prozessschritte im Gegensatz zu nicht-operativen Prozessschritten für eine Simulation mittels des Computersimulationsprogramms zwingend erforderlich sind und nicht-operative Prozessschritte optional sind und beispielsweise zur Fehlersuche oder Validierung eines Systems, welches simuliert wird, verwendet werden.
  2. Verfahren nach Anspruch 1, wobei der erste Anteil von operativen Prozessschritten (01) und die erste Untersequenz (01') gleichzeitig oder näherungsweise gleichzeitig gestartet werden.
  3. Verfahren nach einem der Ansprüche 1 oder 2, außerdem umfassend – vor dem Starten und Ausführen des zweiten Anteils von operativen Prozessschritten (02) und der zweiten Untersequenz von Prozessschritten (02'), Bestimmen ob die zweite Prozessoreinheit (PU2) oder die weitere Prozessoreinheit (PU2, PU3) nach dem Fertigstellen der Ausführung des ersten Anteils von operativen Prozessschritten (01) auf der ersten Prozessoreinheit verfügbar ist; und – abhängig von einem Ergebnis der Bestimmung, Pausieren der ersten Prozessoreinheit (PU1) vor dem Starten und Ausführen des zweiten Anteils von operativen Prozessschritten (02) oder Starten und Ausführen des zweiten Anteils von operativen Prozessschritten (02) ohne ein Pausieren der ersten Prozessoreinheit (PU1).
  4. Verfahren nach einem der Ansprüche 1 bis 3, wobei der zweite Anteil von operativen Prozessschritten (02) und die zweite Untersequenz (02') gleichzeitig oder näherungsweise gleichzeitig gestartet werden.
  5. Verfahren nach einem der Ansprüche 1 bis 4, wobei die erste Prozessoreinheit (PU1) pausiert wird nachdem das Ausführen des ersten Anteils von operativen Prozessschritten (01) fertiggestellt ist wenn alle Prozessoreinheiten (P1, P2, P3, P4) des Computers außer der ersten Prozessoreinheit (PU1) beschäftigt sind.
  6. Verfahren nach einem der Ansprüche 1 bis 5, außerdem umfassend Beenden der ersten Untersequenz von Prozessschritten (01') nach einem festgelegten Intervall von Simulationszeit.
  7. Verfahren nach einem der Ansprüche 1 bis 6, wobei jeder der Prozessschritte des ersten Anteils von operativen Prozessschritten (01) einen Simulationszustand eines simulierten Systems basierend auf einem vorausgegangenen Simulationszustand des simulierten Systems oder einem initialen Zustand des simulierten Systems erzeugt.
  8. Verfahren nach einem der Ansprüche 1 bis 7, wobei – erste nicht-operative Daten von dem ersten Anteil von operativen Prozessschritten (01) erzeugt werden; und – die ersten nicht-operativen Daten von dem ersten Anteil von nicht-operativen Prozessschritten verarbeitet werden.
  9. Verfahren nach Anspruch 8, wobei das Verarbeiten der ersten nicht-operativen Daten zumindest eines der folgenden umfasst: – Ausgeben wenigstens eines Teils der ersten nicht-operativen Daten und/oder von Daten, die von den ersten nicht-operativen Daten abgeleitet sind, in eine erste Ausgabedatei (F1) und/oder eine erste Spurdatei (F1); – Auswerten einer Assertion auf Grundlage der nicht-operativen Daten; und – Auswerten einer Abdeckung, insbesondere einer Zeilenabdeckung und/oder einer Funktionalabdeckung, auf Grundlage der nicht-operativen Daten.
  10. Verfahren nach einem der Ansprüche 8 oder 9, wobei das Verarbeiten der ersten nicht-operativen Daten ein Speichern eines Ergebnisses aus dem ersten Anteil von nicht-operativen Prozessschritten in eine erste nicht-operative Datei (F1) umfasst.
  11. Verfahren nach einem der Ansprüche 1 bis 10, wobei das Computersimulationsprogramm auf einer Hardwarebeschreibungssprache, HDL, basiert und dazu eingerichtet ist, einen elektronischen Schaltkreis zu simulieren.
  12. Verfahren nach einem der Ansprüche 1 bis 11, außerdem umfassend ein Erstellen einer nicht-operativen Infrastruktur, welche eine Infrastruktur für den ersten Anteil von nicht-operativen Prozessschritten beinhaltet.
  13. Verfahren nach einem der Ansprüche 1 bis 12, wobei das Verfahren mittels eines Tools zum Entwurf von Schaltkreisen, insbesondere mittels eines Tools zur Entwurfsautomatisierung elektronischer Systeme, EDA, ausgeführt wird.
DE102015102362.8A 2015-02-19 2015-02-19 Verfahren zur verarbeitung eines computersimulationsprogramms und computerprogrammprodukt zur implementierung eines solchen verfahrens Active DE102015102362B3 (de)

Priority Applications (2)

Application Number Priority Date Filing Date Title
DE102015102362.8A DE102015102362B3 (de) 2015-02-19 2015-02-19 Verfahren zur verarbeitung eines computersimulationsprogramms und computerprogrammprodukt zur implementierung eines solchen verfahrens
US15/005,782 US20160246902A1 (en) 2015-02-19 2016-01-25 Methods for Processing a Computer Simulation Program and Computer Program Product for Implementing Such a Method

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
DE102015102362.8A DE102015102362B3 (de) 2015-02-19 2015-02-19 Verfahren zur verarbeitung eines computersimulationsprogramms und computerprogrammprodukt zur implementierung eines solchen verfahrens

Publications (1)

Publication Number Publication Date
DE102015102362B3 true DE102015102362B3 (de) 2016-04-28

Family

ID=55698752

Family Applications (1)

Application Number Title Priority Date Filing Date
DE102015102362.8A Active DE102015102362B3 (de) 2015-02-19 2015-02-19 Verfahren zur verarbeitung eines computersimulationsprogramms und computerprogrammprodukt zur implementierung eines solchen verfahrens

Country Status (2)

Country Link
US (1) US20160246902A1 (de)
DE (1) DE102015102362B3 (de)

Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149312A1 (en) * 2000-10-03 2005-07-07 Cadence Design Systems, Inc. Systems and methods for efficiently simulating analog behavior of designs having hierarchical structure

Family Cites Families (6)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US5852449A (en) * 1992-01-27 1998-12-22 Scientific And Engineering Software Apparatus for and method of displaying running of modeled system designs
US5853449A (en) * 1997-11-06 1998-12-29 Emhart Glass S.A. Plunger mechanism for an I.S. machine
JP4596781B2 (ja) * 2002-01-10 2010-12-15 マッシブリー パラレル テクノロジーズ, インコーポレイテッド 並列処理システム及び方法
US8781808B2 (en) * 2005-10-10 2014-07-15 Sei Yang Yang Prediction-based distributed parallel simulation method
US8185854B1 (en) * 2006-11-22 2012-05-22 Altera Corporation Method and apparatus for performing parallel slack computation within a shared netlist region
US9495477B1 (en) * 2011-04-20 2016-11-15 Google Inc. Data storage in a graph processing system

Patent Citations (1)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20050149312A1 (en) * 2000-10-03 2005-07-07 Cadence Design Systems, Inc. Systems and methods for efficiently simulating analog behavior of designs having hierarchical structure

Non-Patent Citations (1)

* Cited by examiner, † Cited by third party
Title
Meister, G.: Evaluation of Parallel Logic Simulation Using DVSIM. In: Proceedings of the 29th Annula Hawaii International Conference on System Sciencies, 1996. pp. 397 - 406 *

Also Published As

Publication number Publication date
US20160246902A1 (en) 2016-08-25

Similar Documents

Publication Publication Date Title
DE112013000758B4 (de) Erzeugen von Taktsignalen für einen zyklusgenauen, zyklusreproduzierbaren FPGA-gestützten Hardware-Beschleuniger
EP1764715B1 (de) Verfahren zur Bestimmung der Güte einer Menge von Eigenschaften, verwendbar zur Verifikation and zur Spezifikation von Schaltungen
EP2542904B1 (de) Verbesserungen der rückwärts-analyse zur bestimmung von fehlermaskierungsfaktoren
US10572331B2 (en) Method and apparatus for a computer-based generation of component fault trees
DE112012005014B4 (de) Verfahren zum Ausführen arithmetischer Operationen unter Verwendung sowohl von großen als auch kleinen Gleitkommawerten und Vorrichtung sowie Computerprogrammprodukt hierfür
DE60314530T2 (de) Verfahren und system zum debuggen unter verwendung duplizierter logik
DE112014003045T5 (de) Verfahren und System zur Change-Evaluierung eines elektronischen Designs zur Verifizierungsbestätigung
DE10392497T5 (de) Herstellungsverfahren und Herstellungsvorrichtung zum Vermeiden eines Prototypen-Aufschubs bei der ASIC/SOC-Herstellung
DE112015002183T5 (de) Computerimplementiertes System und Verfahren zum Übersetzen von Verifizierungs-Befehlen eines elektronischen Designs
EP2897011A1 (de) Verfahren und Simulationsanordnung zur Simulation einer automatisierten Industrieanlage
DE102016119991B4 (de) Emulation von Taktjittern
DE69533567T2 (de) Vorrichtung und Verfahren zum Auffinden von False-Timing-Paths in digitalen Schaltkreisen
DE112013005833T5 (de) Analyse zeitlicher Leitungsengpässe zur Steuerung einer Optimierung mit nützlichem Versatz
DE102010025954A1 (de) Verfahren und Anordnung zur vollständigen oder teilweisen Nachbildung und/oder Simulation eines Automatisierungssystems
DE102022106423A1 (de) Verfahren zur Aufteilung von Simulationsmodellen zwischen einem Prozessor und einem FPGA
DE102016118749A1 (de) Signalwiederherstellung in Schaltwerk-Schaltung
DE102015102362B3 (de) Verfahren zur verarbeitung eines computersimulationsprogramms und computerprogrammprodukt zur implementierung eines solchen verfahrens
EP1469320A1 (de) Verfahren zur Generierung von Testersteuerungen
DE202016008563U1 (de) Konfigurationssystem zum Konfigurieren eines für das Testen eines Steuergeräts eingerichteten Testgeräts
WO2005109196A1 (de) Verfahren zur bestimmung von verklemmungen in nebenläufigen prozessen
DE102008046397A1 (de) Verifizierung auf Basis von Transaktionen eines Systems auf einem Chip auf Systemebene durch Übersetzen von Transaktionen in Maschinencodierung
WO2022058140A1 (de) Steuerung eines technischen systems mit einer recheneinheit für künstliche intelligenz
DE112018006331B4 (de) Testfallgenerierungsvorrichtung, Testfallgenerierungsverfahren und Testfallgenerierungsprogramm
DE102019216684B4 (de) Verfahren zur Timinganalyse von Anwendungssoftware für ein eingebettetes System, Vorrichtung zur Datenverarbeitung, Computerprogramm und computerlesbarer Datenträger
AT508852B1 (de) Verfahren zum umschalten von heterogenen simulationsmodellen zur laufzeit

Legal Events

Date Code Title Description
R012 Request for examination validly filed
R016 Response to examination communication
R018 Grant decision by examination section/examining division
R020 Patent grant now final