DE10056825A1 - Verfahren und Vorrichtung zum Erzeugen eines Zufallcodes - Google Patents
Verfahren und Vorrichtung zum Erzeugen eines ZufallcodesInfo
- 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
Links
Classifications
-
- G—PHYSICS
- G01—MEASURING; TESTING
- G01R—MEASURING ELECTRIC VARIABLES; MEASURING MAGNETIC VARIABLES
- G01R31/00—Arrangements for testing electric properties; Arrangements for locating electric faults; Arrangements for electrical testing characterised by what is being tested not provided for elsewhere
- G01R31/28—Testing of electronic circuits, e.g. by signal tracer
- G01R31/317—Testing of digital circuits
- G01R31/3181—Functional testing
- G01R31/31813—Test pattern generators
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F7/00—Methods or arrangements for processing data by operating upon the order or content of the data handled
- G06F7/58—Random 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.
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
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.
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.
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.
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.
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.
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.
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)
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)
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 |
-
1999
- 1999-12-17 US US09/466,503 patent/US6678853B1/en not_active Expired - Lifetime
-
2000
- 2000-11-16 DE DE10056825A patent/DE10056825C2/de not_active Expired - Fee Related
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 |