DE10056825A1 - Verfahren und Vorrichtung zum Erzeugen eines Zufallcodes - Google Patents

Verfahren und Vorrichtung zum Erzeugen eines Zufallcodes

Info

Publication number
DE10056825A1
DE10056825A1 DE10056825A DE10056825A DE10056825A1 DE 10056825 A1 DE10056825 A1 DE 10056825A1 DE 10056825 A DE10056825 A DE 10056825A DE 10056825 A DE10056825 A DE 10056825A DE 10056825 A1 DE10056825 A1 DE 10056825A1
Authority
DE
Germany
Prior art keywords
random
code
generating
generated
control
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.)
Granted
Application number
DE10056825A
Other languages
English (en)
Other versions
DE10056825C2 (de
Inventor
Karl P Brummel
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.)
Hewlett Packard Development Co LP
Original Assignee
Hewlett Packard Co
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 Hewlett Packard Co filed Critical Hewlett Packard Co
Publication of DE10056825A1 publication Critical patent/DE10056825A1/de
Application granted granted Critical
Publication of DE10056825C2 publication Critical patent/DE10056825C2/de
Anticipated expiration legal-status Critical
Expired - Fee Related legal-status Critical Current

Links

Classifications

    • GPHYSICS
    • G01MEASURING; TESTING
    • G01RMEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
    • G01R31/00Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
    • G01R31/28Testing of electronic circuits, e.g. by signal tracer
    • G01R31/317Testing of digital circuits
    • G01R31/3181Functional testing
    • G01R31/31813Test pattern generators
    • GPHYSICS
    • G06COMPUTING; CALCULATING OR COUNTING
    • G06FELECTRIC DIGITAL DATA PROCESSING
    • G06F7/00Methods or arrangements for processing data by operating upon the order or content of the data handled
    • G06F7/58Random or pseudo-random number generators

Abstract

Ein Computerzufallscode wird erfindungsgemäß von einem Verfahren und einer Vorrichtung erzeugt. Das Verfahren umfaßt die Schritte des Erzeugens einer Zufallsgewichtung für einen Anweisungstyp und dann des Erzeugens eines zufällig bestimmten Computercodes, wobei eine statistische Wahrscheinlichkeit des Erzeugens des Anweisungstyps in dem Code auf der Zufallsgewichtung für den erzeugten Anweisungstyp basiert. Die Vorrichtung ist beim Erstellen eines Computerzufallscodes nützlich, der aus Codeanweisungen besteht. Die Vorrichtung weist einen Zufallswertgenerator und einen Zufallscodegenerator, der mit dem Zufallswertgenerator verbunden ist, auf. Der Zufallscodegenerator erstellt eine Ausgabedatei, in der der Anteil zumindest eines Computeranweisungstyps auf eine Zufallszahl, die von dem den Zufallswertgenerator erzeugt wird, bezogen ist.

Description

Die Erfindung bezieht sich allgemein auf eine Zufallscodeer­ zeugung zum Testen der Funktionsweise eines integrierten Schaltungsentwurfs, und insbesondere auf ein System zum Ver­ bessern der Fähigkeit eines Zufallstestgenerators, effektive Testfälle erzeugen zu können, indem die Zufälligkeit des er­ zeugten Testcodes durch die Hinzufügung einer weiteren Stufe einer benutzergesteuerten Zufälligkeit gesteuert wird.
Beim Überprüfen von Mikroprozessoren werden häufig Zufalls­ codegeneratoren, die auch als Zufallsgeneratoren bezeichnet werden, verwendet. (Die Verwendung des Ausdrucks "zufällig" (random) soll hierin die Fälle "pseudo-zufällig" (pseudo- random) und "echt zufällig" (truly random) umfassen.) Zu­ fallscodegeneratoren bieten den Vorteil, einen Code für Testfälle viel schneller erzeugen zu können, als eine Person diese von Hand schreiben kann, wobei dieselben ferner viel einfacher auf bekannte Probleme zugeschnitten werden können, als es beim Anpassen eines vorhandenen handgeschriebenen Co­ des der Fall ist. Zufallscodegeneratoren können ferner eine beträchtliche Vielfalt von Testfällen erzeugen, indem der Anfangszustand, die Anweisungsmischung und viele weitere Pa­ rameter zufällig erzeugt werden.
Um einen Code zu erzeugen, versorgt der Anwender den Zu­ fallscodegenerator mit einigen Parametern, d. h. typischer­ weise mit einem Satz von Wahrscheinlichkeiten und einem Zu­ fallsstartparameter, zusammen mit anderen verschiedenartigen Informationen, wie z. B., wie viele Code-Sätze erzeugt werden sollen, wie lang jeder Code-Satz gemacht werden soll, usw.
Zufallscodegeneratoren werden typischerweise mit einer Wahr­ scheinlichkeitsdatei oder Steuerdatei gesteuert, die typi­ scherweise eine Liste von Parametern und Werten enthält.
Diese Parameter steuern typischerweise die Verteilung von Anweisungen bzw. Befehlen (z. B. Lade-Anweisungen, Speicher- Anweisungen, Addier-Anweisungen usw.) und die Wahrschein­ lichkeit weiterer Ereignisse (wie das Initialisieren von Daten in einem Cache-Speicher). Durch die vorgenommene Wahl der Einstellungen in der Steuerdatei kann der Generator in spezifische Bereiche des Testraums gelenkt oder von bestimm­ ten Bereichen des Testraums weggelenkt werden.
Falls die Wahrscheinlichkeitsdatei beispielsweise aus den folgenden Parametern und Einstellungen besteht,
Laden 25,
Speichern 25,
Addieren 25,
Verzweigen 25,
könnte der Generator, falls dieser aufgefordert wird, einen Fall mit 100 Anweisungen zu erzeugen, 25 Lade-Anweisungen, 25 Speicher-Anweisungen, 25 Addier-Anweisungen und 25 Ver­ zweigungs-Anweisungen (Sprungbefehle) erzeugen. Die Anwei­ sungen können in einer beliebigen Zusammensetzung vorliegen, wobei lediglich die ungefähren relativen Wahrscheinlichkei­ ten jeder Art von Anweisung spezifiziert sind.
Indem der "Lade"-Parameter auf Null ("0") eingestellt wird, kann der Benutzer die Erzeugung von Lade-Anweisungen völlig verhindern, wodurch ein Test eines Mikroprozessors ermög­ licht wird, bei dem Lade-Vorgänge bekanntermaßen ein Problem darstellen. Dies stellt aus einer Vielzahl von Gründen ein sehr wünschenswertes Merkmal dar. Erstens, der Anwender kann sich auf spezifische Bereiche konzentrieren, die bekannter­ maßen gefährdet sind. Zweitens, falls mehrere Prototypen ei­ nes Prozessors getestet werden, kann jeder Prototyp unter­ schiedliche elektrische Charakteristika aufweisen. Beispielsweise kann ein Prototyp ein Problem damit haben, daß der Prozessor bei einer bestimmten Taktfrequenz keine Lade- Vorgänge ausführen kann, oder ein anderer Prozessor kann zwar Lade-Vorgänge ausführen, ist jedoch nicht in der Lage Addier-Vorgänge durchzuführen. Die Steuerdatei ermöglicht, daß Benutzer spezifische Fälle für spezifische Umstände er­ zeugen können.
Eine der wichtigen Abwägungen bei dem Entwurf und der Imple­ mentierung eines Zufallscodegenerators besteht darin, fest­ zulegen, in welchem Umfang der Anwender den Generator steu­ ern können soll. Obwohl die Fähigkeit, einen Generator in einen bestimmten Teil des Testraums zu lenken oder von einem bestimmten Teil des Testraums wegzulenken, von unschätzbarem Wert ist, sind einige Konflikte nicht zu vermeiden. Auf der einen Seite wünscht der Benutzer ausreichende Steuerungsmög­ lichkeiten, um in der Lage zu sein, den Generator in be­ stimmte Teile des Testraums zu lenken oder um denselben von bestimmten Teilen des Testraums wegzulenken (um bekannte Schwierigkeiten zu vermeiden). Andererseits würde der Benut­ zer gerne eine signifikante Vielzahl von Fällen aus einer spezifischen Steuerdatei erzeugen können. Als Ergebnis haben einige Zufallscodegeneratoren nur wenige oder keine Steue­ rungsmöglichkeiten, wobei andere Codegeneratoren viele Steu­ erparameter aufweisen, um ein sorgfältiges Lenken zu ermög­ lichen. Das Vorhandensein einer großen Anzahl von Steuerpa­ rametern führt jedoch dazu, daß die Steuerdateien aufgrund der bloßen Anzahl von Steuerungsmöglichkeiten schwerfällig werden, und daß es schwierig wird, dieselben auf eine einfa­ che Weise zu verwenden. Wenn eine große Anzahl von Parame­ tern vorliegt, besteht ein weiteres, sogar noch schwerwie­ genderes Problem darin, daß die Steuerdatei häufig die Test­ fälle, die dieselbe erzeugt, im wesentlichen vollständig be­ schreibt, wodurch lediglich eine geringe, in den Testfällen verbleibende Zufälligkeit übrigbleibt.
Bei einem Generator mit wenigen oder keinen Steuerungsmög­ lichkeiten sind tendenziell Modifikationen (z. B. Quellcodeänderungen) an dem Codegenerator erforderlich, um Probleme anzugehen, die bei Testfällen angetroffen werden, oder die­ selben konzentrieren sich hinsichtlich des Ausschlusses an­ derer Probleme auf einen bestimmten Teil des Testraums. Dies wird problematisch, wenn für verschiedene Benutzer geringfü­ gig unterschiedliche Versionen des Codegenerators erforder­ lich sind, wodurch eine Menge Arbeit für die Person geschaf­ fen wird, die die Zufallscodegeneratoren entwickelt und war­ tet.
Außerdem erzeugen lange Steuerdateien Schwierigkeiten. Er­ stens, solche Steuerdateien sind schwerfällig, und es kann für einen gelegentlichen Benutzer schwierig werden, diese zu schreiben. Zweitens, eine lange und detaillierte Steuerdatei kann für die resultierenden Testfälle derart einschränkend sein, daß alle Code-Sätze, die aus einem gegebenen Satz von Steuerungsmöglichkeiten entstehen, im wesentlichen gleich oder ähnlich aussehen. Dies bedeutet wiederum, daß eine sol­ che Steuerdatei nur dazu nützlich ist, um aus einem gegebe­ nen Satz von Steuerungen einige wenige Fälle zu erzeugen. Dies bedeutet wiederum, daß Benutzer viele eindeutige Steu­ erdateien für ihre gesamten Tests erzeugen müssen. Da Steu­ erdateien unhandlich oder schwerfällig sein können, und es zeitaufwendig sein kann, diese vollständig von Hand zu schreiben, haben Anwender in der Praxis auf diesem Gebiet im allgemeinen Computerprogramme verwendet, um Steuerdateien zu erzeugen, einschließlich der Verwendung von Zufallscodegene­ ratoren, um vollständig zufällige Steuerdateien zu erzeugen. Diese Maschinen-erzeugten Steuerdateien erzeugen jedoch häu­ fig Fälle mit fraglicher Qualität, da es schwierig ist, nützliche Korrelationen zwischen einer großen Anzahl von Steuerungsmöglichkeiten beizubehalten.
Weitere technische Hintergrundinformationen bezüglich einer Zufallscodeerzeugung sind in dem US-Patent 5,729,554 von Weir u. a., in dem US-Patent 5,771,241 von Brummel, und in dem US-Patent 5,784,550 von Brockmann u. a. zu finden, die jeweils hierin durch Bezugnahme aufgenommen sind.
Ausgehend von diesem Stand der Technik besteht die Aufgabe der vorliegenden Erfindung darin, ein verbessertes und ver­ einfachtes Konzept zum Erzeugen von Zufallscodes zu schaf­ fen, das beispielsweise zum Testen der Funktionsweise eines integrierten Schaltungsentwurfs eingesetzt werden kann.
Diese Aufgabe wird durch ein Verfahren zum Erzeugen eines Zufallscodes gemäß Anspruch 1, durch eine Vorrichtung zur Verwendung bei der Erzeugung eines Zufallscodes gemäß An­ spruch 13, und durch eine Computersoftware, die auf einem computerlesbaren Medium eingebettet ist, gemäß Anspruch 16 gelöst.
Die Erfindung beschreibt in einer Hinsicht ein Verfahren zum Erzeugen eines Computerzufallscodes. Das Verfahren umfaßt die Schritte des Erzeugens einer Zufallsgewichtung für einen Anweisungstyp, und daraufhin des Erzeugens eines zufällig bestimmten Computercodes, wobei eine statistische Wahr­ scheinlichkeit zum Erzeugen des Anweisungstyps in dem Code auf der Zufallsgewichtung für den erzeugten Anweisungstyp basiert.
Die Erfindung bezieht sich ferner auf eine Vorrichtung zur Verwendung beim Erzeugen eines Computerzufallscodes, der aus Codeanweisungen besteht. Die Vorrichtung weist einen Zu­ fallswertgenerator und einen Zufallscodegenerator, der mit dem Zufallswertgenerator verbunden ist, auf. Der Zufalls­ codegenerator erzeugt eine Ausgabedatei, in der der Anteil zumindest eines Computeranweisungstyps auf eine Zufallszahl bezogen ist, die durch den Zufallswertgenerator erzeugt wird.
Noch ein weiterer Aspekt der Erfindung bezieht sich auf eine Form einer Computersoftware, die auf einem computerlesbaren Medium eingebettet ist. Die Software umfaßt die Anweisungen, die notwendig sind, um die Schritte des Erzeugens eines Zu­ fallsgewichtungsfaktor für einen vorbestimmten Anweisungstyp durchzuführen, und um einen Computercode zufällig in einem näherungsweisen Anteil hinsichtlich eines Anweisungstyps be­ züglich seines zugewiesenen Gewichtungsfaktors zu erzeugen.
Im Vergleich zu Zufallscodegeneratoren, die ausschließlich vorbestimmte Steuerparameter verwenden, oder zu Zufallscode­ generatoren, die ausschließlich Zufallssteuerparameter ver­ wenden, sind bestimmte Ausführungsbeispiele der vorliegenden Erfindung in der Lage, bestimmte Vorteile zu erreichen, wie sie beispielsweise die folgende Auflistung zeigt:
  • 1. die Fähigkeit, aus einer einzigen Steuerdatei eine gro­ ße Vielzahl von Codesätzen zu erzeugen;
  • 2. die Fähigkeit, unter Verwendung eines kleinen Satzes von Steuertypen eine große Vielzahl von Codesätzen zu erzeugen;
  • 3. die Fähigkeit, einen Codegenerator wirksam und genau zu lenken, wenn dies erwünscht ist; und
  • 4. die kombinierten, gemeinsamen Vorteile einer großen Codevielfalt und einer genauen Lenkbarkeit.
Bevorzugte Ausführungsbeispiele der vorliegenden Erfindung werden nachfolgend unter Bezugnahme auf die beiliegenden Zeichnungen näher erläutert. Es zeigen:
Fig. 1 ein vereinfachtes Flußdiagramm eines Verfahrens ge­ mäß einem Ausführungsbeispiel der Erfindung;
Fig. 2 ein vereinfachtes Blockdiagramm einer Vorrichtung gemäß einem Ausführungsbeispiel der Erfindung;
Fig. 3 ein Flußdiagramm eines Codeerzeugungsverfahrens oh­ ne Zufallsgewichtung; und
Fig. 4 ein Flußdiagramm eines Verfahrens mit Zufallsgewichtung gemäß einem Ausführungsbeispiel der Erfin­ dung.
Fig. 1 ist ein vereinfachtes Flußdiagramm eines Verfahrens 100 gemäß einem Ausführungsbeispiel der Erfindung. Das Ver­ fahren 100 steuert die Zufälligkeit beim Erzeugen eines Zu­ fallscodes, wodurch ausgewählte Steuerwerte während einer Erzeugung zufällig erzeugt werden können und nicht vor der Erzeugung des Zufallscodes spezifiziert werden brauchen. Das Verfahren 100 besteht in seiner grundlegendsten Form aus zwei Schritten. Erstens, Zufallsgewichtungen werden (1) für vorbestimmte Steuerwerte erzeugt; und zweitens, ein Zufalls­ code wird (2) zumindest teilweise basierend auf den erzeug­ ten Zufallsgewichtungen erzeugt. Der Zufallscode wird er­ zeugt, indem eine Zufallswerterzeugungsteilroutine ausge­ führt wird, woraufhin der resultierende Zufallswert verwen­ det wird, um eine Code-Anweisung und einen Anweisungswert (oder Operanden) auszuwählen und eine Zeile eines Zufalls­ codes auszugeben. Die Verwendung eines Zufallswertgenerators ist Fachleuten auf diesem Gebiet im allgemeinen bekannt. Bei einem bevorzugten Ausführungsbeispiel der Erfindung werden die Zufallswerte, d. h. Zufallsgewichtungen, erzeugt, indem der Quotient von zwei doppelt-genauen Zufallszahlen ermit­ telt wird.
Fig. 2 ist ein vereinfachtes Blockdiagramm einer Vorrichtung 200 gemäß einem Ausführungsbeispiel der Erfindung. Die Vor­ richtung 200 besteht in ihrer grundlegendsten Form aus den folgenden Elementen. Eine Eingangsschnittstelle 5 ist mit einem Zufallswertgenerator 6 verbunden, der wiederum mit ei­ nem Code-Generator 7 verbunden ist. Steuerpaare werden von der Eingangsschnittstelle 5 gelesen und zu dem Zufallswert­ generator 6 weitergeleitet, wenn das Steuerpaar die Zufalls­ erzeugung einer Gewichtung aufruft.
Im folgenden ist eine einfache Liste von 5 Probensteuerpaa­ ren dargestellt:
Laden 20
Speichern 20
Addieren -1
Verzweigen -1
Dividieren 0
Im allgemeinen ist die erste Eintragung jedes Steuerpaares ein Steuertyp, wobei die zweite Eintragung im allgemeinen ein Steuerwert ist. In diesem Fall sind die Steuertypen An­ weisungstypen, und die Steuerwerte sind auf die Wahrschein­ lichkeitsparameter bezogen, die bei einer Zufallserzeugung der aufgelisteten Anweisungstypen in dem Ausgangscodesatz verwendet werden sollen.
Die zufällig erzeugten Gewichtungen (die durch einen Wahr­ scheinlichkeitsparameter, der gleich -1 ist, in der obigen Liste ausgelöst werden) werden dann zur Erzeugung eines Zu­ fallscodes von dem Zufallswertgenerator 6 zu dem Codegenera­ tor weitergeleitet. Bei einem bevorzugten Ausführungsbei­ spiel der Erfindung bildet der Zufallswertgenerator 6 eine Zufallsgewichtung, indem der Quotient von zwei doppelt-ge­ nauen Zufallszahlen genommen wird. Dies erhöht die Varianz des Zufallswertgenerators 6.
Die Eingangsschnittstelle 5 ist ferner direkt mit dem Code­ generator 7 verbunden. Falls ein Steuerpaar, das von der Eingangsschnittstelle 5 gelesen wird, keine Zufallsgewich­ tungserzeugung anfordert, wird das Steuerpaar von der Ein­ gangsschnittstelle 5 direkt zu dem Codegenerator 7 weiterge­ leitet. Unter Verwendung der Eingangssteuerpaare erzeugt der Zufallscodegenerator dann gemäß dem oben für das Verfahren 100 erörterten Prozeß mehrere Zeilen eines Zufallscodes.
Schließlich ist eine Ausgangsschnittstelle 8 mit dem Codege­ nerator 7 verbunden, und die Ausgangszeilen des Zufallscodes werden von dem Codegenerator 7 zu der Ausgangsschnittstelle 8 weitergeleitet.
Die Eingangsschnittstelle 5 kann jeweils eine oder mehrere der folgenden Anordnungen umfassen: eine Dateischnittstelle, eine Tastatur oder eine andere Benutzerschnittstelle, ein Modem oder eine andere Datenkommunikationsschnittstelle, usw. Die Ausgangsschnittstelle 8 kann eine Dateischnittstel­ le, ein Videobildschirm oder eine andere Benutzerschnitt­ stelle, ein Modem oder eine andere Datenkommunikations­ schnittstelle usw. sein.
Gemäß einem Ausführungsbeispiel der Erfindung können die Ausgangszeilen des Zufallscodes aus der Ausgangsschnittstel­ le 8 in der Form eines Objektcodes, eines Assemblercodes, eines Quellcodes oder in anderen Formen eines Computerbe­ triebscodes vorliegen. Der Ausgangszufallscode kann auf ei­ ner Verarbeitungseinrichtung (einem Prozessor, einschließ­ lich beispielsweise eines Mikroprozessors), einem Simula­ tionsprogramm, das ein Modell eines Prozessors oder eines Mikroprozessors laufen läßt, oder einer anderen Einrichtung zum Ausführen eines Codes ausgeführt werden.
Fig. 3 ist ein Flußdiagramm eines Codeerzeugungsverfahrens 300, das keine Zufallsgewichtung verwendet. Dieses Verfahren 300 beginnt im allgemeinen, wenn Steuerwerte gelesen werden 10, um die Parameter für den zu erzeugenden Zufallscode ein­ zustellen. Jedes Steuerpaar, das gelesen wird, enthält einen Steuertyp und einen Steuerwert, wie es im vorhergehenden be­ züglich der Vorrichtung 200 beschrieben wurde. Bei einem be­ vorzugten Ausführungsbeispiel entspricht jeder Steuertyp ei­ nem Typ einer Anweisung, die in dem Ausgangszufallscode er­ zeugt werden soll, und jeder Steuerwert bezieht sich auf ei­ ne Gewichtung für eine Zuweisung zu diesem Anweisungstyp bei der Erzeugung des Zufallscodes. Um die Gewichtungen in einer Gruppe von Steuerpaaren zu normieren 15, werden alle Gewichtungen in der Gruppe von Steuerpaaren summiert 16, woraufhin jede Gewichtung durch die Summe dividiert wird 17.
Nach dem Normieren 15 der Gewichtungen werden die Steuerpaa­ re verarbeitet, um unter Verwendung der Gewichtungen in je­ dem Paar einen Zufallscode zu erzeugen 2, um den relativen Anteil jedes Steuertyps oder jedes Anweisungstyps bezüglich der anderen Steuer- oder Anweisungstypen zu bestimmen, wenn dieselben erzeugt werden. Das heißt, die normierte Gewich­ tung für einen gegebenen Anweisungstyp ist die Wahrschein­ lichkeit, daß eine zufällig erzeugte Zeile, d. h., Anweisung, in einem Codesatz aus diesem Anweisungstyp bestehen wird.
Der Zufallscode wird vorzugsweise jeweils Anweisung für An­ weisung erzeugt 21, und ein Test wird durchgeführt 22, um zu erkennen, ob die gerade erzeugte Anweisung die letzte Anwei­ sung in dem bei diesen Durchgang erzeugten Codesatz ist. Falls diese die letzte Anweisung ist, wird dann ein weiterer Test durchgeführt 25, um zu bestimmen, ob der erzeugte Code­ satz der letzte Codesatz ist. Falls dieser nicht der letzte Codesatz ist, springt das Verfahren 300 an den Anfang des Schritts des Erzeugens eines Zufallscodes 2 zurück. Falls der erzeugte Codesatz der letzte gewünschte Codesatz ist, wird der erzeugte Zufallscode von dem Verfahren der Erfin­ dung ausgegeben 300, woraufhin das Verfahren 300 endet. Al­ ternativ kann jede Anweisung oder jeder Codesatz einzeln ausgegeben werden, bevor der Test 25 durchgeführt wird, oder kann an einem beliebigen anderen Punkt bei dem Schritt des Erzeugens eines Zufallscodes 2, wie z. B. vor dem Test 22, ausgegeben werden.
Fig. 4 ist ein Flußdiagramm eines Verfahrens 400 mit einer Zufallsgewichtung gemäß einem Ausführungsbeispiel der Erfin­ dung. Im allgemeinen werden insgesamt drei Schritte durchge­ führt: Erzeugen von Zufallssteuergewichtungen 1, Normieren von Gewichtungen 15, und Erzeugen eines Zufallscodes 2. Das Verfahren 400 beginnt vorzugsweise genau wie bei dem Verfah­ ren 300, wenn Steuerwerte gelesen werden 10, um die Parameter für den zu erzeugenden Zufallscode einzustellen.
Der Steuerwert in jedem Steuerpaar wird getestet 41, um zu bestimmen, ob dieser eine positive oder negative Zahl ist. Falls der Steuerwert eine negative Zahl ist, wird eine Zu­ fallszahl erzeugt und als Gewichtung zugewiesen 42. Falls der Steuerwert eine positive Zahl ist, wird die Gewichtung für die entsprechende Steuerung gleich dem Steuerwert einge­ stellt 43. Durch diesen Prozeß kann der Benutzer die gewich­ tete Häufigkeit jedes Steuertyps, der verwendet werden soll, um den Zufallscode zu erzeugen, im voraus bestimmen oder kann vorgeben, daß die gewichtete Häufigkeit dieses Steuer­ typs zufällig bestimmt werden soll. Dies ermöglicht eine größere Vielzahl und eine höhere Stufe für die Zufälligkeit des erzeugten Codes. Obwohl das Verfahren 400 negative Zah­ len verwendet, um anzugeben, daß eine gegebene Gewichtung oder ein gegebener Steuerwert zufällig erzeugt werden soll, sollte auch jedes andere Indikator-Flag, wie z. B. spezielle Zeichen, anstelle einer negativen Zahl genauso gut funktio­ nieren. Falls das Steuerpaar, das getestet und eingestellt wird, das letzte zu verarbeitende Steuerpaar ist 44, wird der Schritt des Normierens 15 der Gewichtungen durchgeführt.
Das Verfahren 400 springt zu den Normierungsschritt 15 wei­ ter, wie es bei dem Verfahren 300 beschrieben ist. Nach dem Normieren der Gewichtungen werden die Steuerpaare verarbei­ tet, um einen Zufallscode 2 zu erzeugen, wie es für das Ver­ fahren 300 beschrieben ist.
Der Zufallscode wird wie bei dem Verfahren 300 jeweils zu einen Zeitpunkt Anweisung für Anweisung erzeugen, wobei so­ wohl der Letzte-Anweisung-Test 22 und der Letzte-Codesatz- Test 25 durchgeführt werden, wie es für das Verfahren 300 beschrieben ist. Falls jedoch der bei jedem Durchlauf er­ zeugte Codesatz nicht der letzte Codesatz ist, springt der Prozeß dann zu dem Schritt des Erzeugens von Zufallsgewich­ tungen zurück 1. Dadurch werden die Zufallsgewichtungen, die zum Erzeugen jedes Codesatzes verwendet werden, voneinander näherungsweise statistisch unabhängig. Die statistische Un­ abhängigkeit entspricht näherungsweise dem Umfang, mit dem Mängel bei der Zufallswerterzeugung auftreten können. Falls der erzeugte Codesatz der letzte gewünschte Codesatz ist, wird der erzeugte Zufallscode ausgegeben 30, wobei das Ver­ fahren 400 endet. Alternativ kann jede Anweisung oder jeder Codesatz einzeln ausgegeben werden, bevor der Test 25 durch­ geführt wird, oder kann zu einem beliebigen anderen Punkt während des Schrittes des Erzeugen eines Zufallscodes 2, wie z. B. vor dem Test 22, ausgegeben werden.
Jede der Komponenten der Vorrichtung 200 kann Hardwareschal­ tungen oder vorzugsweise Softwareprogramme, Module oder Skripten (oder eine Kombination aus Hardware und Software) umfassen. Dementsprechend können die Schritte der Verfahren 100, 300 und 400 jeweils durch Hardware oder durch die Aus­ führung von Programmen, Modulen oder Skripten implementiert werden. Die Programme, Module oder Skripten können auf einem oder auf mehreren computerlesbaren Medien in einer Vielzahl von Formaten gespeichert oder ausgeführt werden, wie z. B. als Quellcode oder ausführbarer Code. Die computerlesbaren Medien können beispielsweise sowohl Speichervorrichtungen als auch Signale umfassen. Beispielhafte computerlesbare Speichervorrichtungen umfassen einen herkömmlichen RAM-Spei­ cher (RAM = random access memory), einen ROM-Speicher (ROM = read only memory), einen EPROM-Speicher (EPROM = erasable programmable ROM), einen EEPROM-Speicher (EEPROM = electri­ cally erasable programmable ROM) und magnetische oder opti­ sche Platten oder Bänder für Computersysteme. Beispielhafte computerlesbare Signale, die unter Verwendung eines Trägers moduliert oder auch nicht moduliert sein können, sind Signa­ le, auf die ein Computersystem, auf dem sich die Erfindung befindet oder auf dem die Erfindung läuft, konfigurationsge­ mäß zugreifen kann, einschließlich von Signalen, die über das Internet oder andere Netzwerke heruntergeladen werden.

Claims (20)

1. Verfahren (100) zum Erzeugen eines Zufallscodes, wobei der Code Anweisungen aufweist, wobei das Verfahren fol­ gende Schritte aufweist:
Erzeugen (1) einer Zufallsgewichtung für einen Anwei­ sungstyp; und
zufälliges Erzeugen (2) eines Codes, wobei eine stati­ stische Wahrscheinlichkeit des Erzeugens des Anwei­ sungstyps in dem Code auf der Zufallsgewichtung für den erzeugten Anweisungstyp basiert.
2. Verfahren (100) gemäß Anspruch 1, das ferner folgenden Schritt aufweist: Akzeptieren (10) einer Mehrzahl von Steuerpaaren aus Steuertypen und Steuerwerten.
3. Verfahren gemäß Anspruch 2, bei dem ein Steuerwert aus der Gruppe ausgewählt wird, die aus einer Gewichtung und einem Indikator für eine Zufallsgewichtung besteht.
4. Verfahren gemäß Anspruch 3, bei dem die Gewichtung eine nicht-negative Zahl ist.
5. Verfahren gemäß Anspruch 3, bei dem der Indikator für die Zufallsgewichtung eine negative Zahl ist.
6. Verfahren gemäß Anspruch 2, bei dem der Steuertyp ein Anweisungstyp ist.
7. Verfahren gemäß einem der Ansprüche 1 bis 6, bei dem der Schritt des Erzeugens einer Zufallsgewichtung fol­ gende Schritte aufweist:
Erzeugen von zwei Zufallszahlen; und
Berechnen der Zufallsgewichtung als den Quotienten der zwei Zufallszahlen.
8. Verfahren gemäß einem der Ansprüche 1 bis 7, das ferner folgenden Schritt aufweist: Ausführen des Zufallscodes auf einer Verarbeitungsein­ richtung.
9. Verfahren gemäß einem der Ansprüche 1 bis 8, das ferner folgenden Schritt aufweist: Simulieren der Ausführung des Zufallscodes auf einem Modell einer Verarbeitungseinrichtung.
10. Verfahren gemäß einem der Ansprüche 1 bis 9, bei dem der erzeugte Zufallscode ein Objektcode ist.
11. Verfahren gemäß einem der Ansprüche 1 bis 10, bei dem der erzeugte Zufallscode eine Mehrzahl von Codesätzen aufweist, wobei jeder Codesatz eine Mehrzahl von zufäl­ lig ausgewählten Anweisungen aufweist.
12. Verfahren gemäß Anspruch 11, bei dem jeder Codesatz ba­ sierend auf einer Zufallsgewichtung, die von anderen Zufallsgewichtungen näherungsweise statistisch unabhän­ gig ist, erzeugt wird.
13. Vorrichtung (200) zur Verwendung beim Erzeugen eines Zufallscodes, wobei der Code Anweisungen aufweist, wo­ bei die Vorrichtung folgende Merkmale aufweist:
einen Zufallswertgenerator (6); und
einen Codegenerator (7), der mit dem Zufallswertgenera­ tor (6) verbunden ist, wobei der Codegenerator (7) eine Codeausgabedatei erzeugt, in der der Anteil zumindest eines Anweisungstyps auf eine Zufallszahl, die durch den Zufallswertgenerator (6) erzeugt wird, bezogen ist.
14. Vorrichtung gemäß Anspruch 13, die ferner folgendes Merkmal aufweist: eine Eingangsschnittstelle (5), die mit dem Codegene­ rator (7) verbunden ist, mittels der Steuertypen und Steuerwerte eingegeben werden.
15. Vorrichtung gemäß Anspruch 14, die ferner folgendes Merkmal aufweist: eine Eingangssteuerdatei auf einen computerlesbaren Me­ dium, die die Steuertypen und Steuerwerte enthält.
16. Computersoftware, die auf einem computerlesbaren Medium eingebettet ist, wobei die Computersoftware Anweisungen zum Durchführen der folgenden Schritte aufweist:
Erzeugen eines Zufallsgewichtungsfaktors für einen vor­ bestimmten Anweisungstyp; und
zufälliges Erzeugen eines Codes in einem näherungswei­ sen Anteil hinsichtlich eines Anweisungstyps bezüglich eines Satzes von jeweiligen Gewichtungsfaktoren, die den Zufallsgewichtungsfaktor aufweisen.
17. Computersoftware gemäß Anspruch 16, bei der die Anwei­ sungen zum Durchführen des Schritts zum zufälligen Er­ zeugen eines Codes folgende Schritte aufweisen:
zufälliges Erzeugen einer einzelnen Zeile eines Codes, wobei die Wahrscheinlichkeit der einzelnen Zeile, die aus dem vorbestimmten Anweisungstyp besteht, auf dem Zufallsgewichtungsfaktor basiert; und
Wiederholen des vorherigen Schrittes eine Anzahl von Malen.
18. Computersoftware gemäß Anspruch 16 oder 17, bei der der zufällig erzeugte Code eine Mehrzahl von Codesätzen aufweist, wobei jeder Codesatz eine Mehrzahl von zufäl­ lig ausgewählten Anweisungen aufweist.
19. Computersoftware gemäß Anspruch 18, bei der ein unter­ schiedlicher Satz von Gewichtungsfaktoren zum Erzeugen jedes Codesatzes verwendet wird.
20. Computersoftware gemäß einem der Ansprüche 16 bis 19, bei der der zufällig erzeugte Code Anweisungen und Ope­ randen aufweist.
DE10056825A 1999-12-17 2000-11-16 Verfahren, Vorrichtung und Computerprogramm zum Erzeugen eines Zufallstestcodes Expired - Fee Related DE10056825C2 (de)

Applications Claiming Priority (1)

Application Number Priority Date Filing Date Title
US09/466,503 US6678853B1 (en) 1999-12-17 1999-12-17 Method and apparatus for generating random code

Publications (2)

Publication Number Publication Date
DE10056825A1 true DE10056825A1 (de) 2001-07-05
DE10056825C2 DE10056825C2 (de) 2003-10-09

Family

ID=23852009

Family Applications (1)

Application Number Title Priority Date Filing Date
DE10056825A Expired - Fee Related DE10056825C2 (de) 1999-12-17 2000-11-16 Verfahren, Vorrichtung und Computerprogramm zum Erzeugen eines Zufallstestcodes

Country Status (2)

Country Link
US (1) US6678853B1 (de)
DE (1) DE10056825C2 (de)

Families Citing this family (7)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US20060184914A1 (en) * 2005-02-17 2006-08-17 Microsoft Corporation Random code generation
US9292259B2 (en) 2008-08-06 2016-03-22 Cassy Holdings Llc Uncertainty random value generator
US9207911B2 (en) 2009-07-31 2015-12-08 Cassy Holdings Llc Modular uncertainty random value generator and method
US9778912B2 (en) 2011-05-27 2017-10-03 Cassy Holdings Llc Stochastic processing of an information stream by a processing architecture generated by operation of non-deterministic data used to select data processing modules
US8769355B2 (en) 2011-06-27 2014-07-01 Freescale Semiconductor, Inc. Using built-in self test for preventing side channel security attacks on multi-processor systems
US9092622B2 (en) * 2012-08-20 2015-07-28 Freescale Semiconductor, Inc. Random timeslot controller for enabling built-in self test module
US9448942B2 (en) 2012-08-20 2016-09-20 Freescale Semiconductor, Inc. Random access of a cache portion using an access module

Family Cites Families (11)

* Cited by examiner, † Cited by third party
Publication number Priority date Publication date Assignee Title
US4688223A (en) * 1985-06-24 1987-08-18 International Business Machines Corporation Weighted random pattern testing apparatus and method
US4801870A (en) * 1985-06-24 1989-01-31 International Business Machines Corporation Weighted random pattern testing apparatus and method
US5455891A (en) * 1993-10-04 1995-10-03 Georgia Tech Research Corporation System and method for a learning neural network for generating random directions for weight changes
US5485471A (en) * 1993-10-15 1996-01-16 Mitsubishi Electric Research Laboratories, Inc. System for testing of digital integrated circuits
US5455938A (en) * 1994-09-14 1995-10-03 Ahmed; Sultan Network based machine instruction generator for design verification
US5860017A (en) 1996-06-28 1999-01-12 Intel Corporation Processor and method for speculatively executing instructions from multiple instruction streams indicated by a branch instruction
US5729554A (en) * 1996-10-01 1998-03-17 Hewlett-Packard Co. Speculative execution of test patterns in a random test generator
US5859999A (en) 1996-10-03 1999-01-12 Idea Corporation System for restoring predicate registers via a mask having at least a single bit corresponding to a plurality of registers
US5784550A (en) * 1996-10-29 1998-07-21 Hewlett-Packard Company Method for enhanced functional testing of a processor using dynamic trap handlers
US5771241A (en) 1996-10-30 1998-06-23 Hewlett-Packard Company Method and apparatus for embedding operand synthesizing sequences in randomly generated tests
US5913064A (en) * 1997-06-24 1999-06-15 Sun Microsystems, Inc. Method for generating instructions for an object-oriented processor

Also Published As

Publication number Publication date
US6678853B1 (en) 2004-01-13
DE10056825C2 (de) 2003-10-09

Similar Documents

Publication Publication Date Title
DE69629098T2 (de) Verfahren und Vorrichtung zur Belastungsprüfung
DE3911465C2 (de) Verfahren zur automatischen Konfiguration technischer Systeme aus Komponenten
DE19632854A1 (de) Kontext-Identifizierer verwendendes System und Verfahren für eine individuelle Menüanpassung in einem Fenster
DE10039538A1 (de) Vorrichtung und Methode zum Analysieren der Leistung eines Computerprogramms
DE102011014830A1 (de) Verfahren und vorrichtung zum analysieren vonsoftware
DE3844036C2 (de)
DE112011102727T5 (de) Steuerprogramm-Erzeugungsvorrichtung, Steuerprogramm-Erzeugungsprogramm und Steuerprogramm-Erzeugungsverfahren
DE112020001774T5 (de) Datensatzabhängiges niedrigrang-zerlegen von neuronalen netzwerken
DE10048941A1 (de) Zeitdiagramm-Compiler und Laufzeitumgebung für die interaktive Erzeugung von ausführbaren Testprogrammen zur Logiküberprüfung
DE102015016413A1 (de) Leiterprogrammabrufvorrichtung, die dazu fähig ist, Leiterschaltungen basierend auf vorgegebenen Signaloperationsbedingungen abzurufen
DE10056825C2 (de) Verfahren, Vorrichtung und Computerprogramm zum Erzeugen eines Zufallstestcodes
DE102005018074A1 (de) Testsequenzer und Verfahren für die Verwaltung und Ausführung von Sequenzelementen
DE102019001129A1 (de) Numerische Steuervorrichtung
EP1038221B1 (de) Verfahren zur überprüfung der pfadüberdeckung bei software-tests
DE10324594A1 (de) Verfahren zum Bereitstellen einer verbesserten Simulationsfähigkeit eines dynamischen Systems außerhalb der ursprünglichen Modellierungsumgebung
DE112013004307T5 (de) Systeme und Verfahren für eine zustandsbasierte Testfallgenerierung zur Software-Validierung
DE102019125937A1 (de) Informationsverarbeitungsverfahren und elektronische Vorrichtung
DE112018006331B4 (de) Testfallgenerierungsvorrichtung, Testfallgenerierungsverfahren und Testfallgenerierungsprogramm
EP1947567A2 (de) Verfahren und Vorrichtung zum automatischen Testen von modellbasierten Funktionen
DE112004001955T5 (de) Benutzeroberflächensoftware-Entwurfssystem
EP3705993B1 (de) System und verfahren zum auffinden und identifizieren von rechenknoten in einem netzwerk
DE202015103261U1 (de) Computerimplementiertes System zum Vergleichen von mindestens zwei Dateien visueller Programmiersprachen
EP3771979A1 (de) Verfahren und vorrichtung zur optimalen konfiguration eines geräts einer geräteklasse
DE1549893A1 (de) Verfahren und Anordnung zur elektronischen Klassierung von Bildvorlagen
DE102004039884A1 (de) Verfahren und System zur Beschreibung und Ausführung automatischer Tests

Legal Events

Date Code Title Description
OP8 Request for examination as to paragraph 44 patent law
8304 Grant after examination procedure
8364 No opposition during term of opposition
8327 Change in the person/name/address of the patent owner

Owner name: HEWLETT-PACKARD DEVELOPMENT CO., L.P., HOUSTON, TE

8339 Ceased/non-payment of the annual fee