Ich mache derzeit eine ASIC Black Box-Überprüfung.
Angenommen, ich habe ein Modul mit 200 Eingangsports mit jeweils 12 Bit Breite und einen Ausgangsport mit 64 Bit Breite. Sagen wir, es ist rein kombinatorisch im Inneren.
[11:0] +------------+
inputport 0 ------/------> | |
. -------------> | | [63:0]
. -------------> | duv | --------/----> outputport
. -------------> | |
inputport 200 -------------> | |
+------------+
Muss ich zum Testen des Ausgabeports alle möglichen Kombinationen aller 200 Eingabeports testen?
Wenn nein, was ist dann ein guter Weg, um ein solches Modul zu überprüfen?
Gibt es eine gute Möglichkeit, alle Eckfälle zu überwachen?
Werden die Fehler irgendwann während des Prozesses auftreten?
asic
lithium
microcontroller
opto-isolator
ttl
mains
accelerometer
sampling
fft
cellphone
mobile
sensor
analog
dc
photodiode
pnp
arduino
relay
solid-state-relay
audio
verilog
counter
synthesis
arduino
transistors
npn
digital-logic
linux
jtag
led
current
design
signal
power-supply
voltage-regulator
switch-mode-power-supply
atx
microcontroller
adc
multimeter
voltage-divider
vhdl
iphone
fuses
microcontroller
identification
microcontroller
avr
pwm
arduino
power
msp430
xbee
transistors
digital-logic
measurement
capacitance
microcontroller
programming
cortex-m3
audio
switches
analog
ac
amplifier
device
history
power
control-system
voltage
heat
hard-drive
cases
physical-design
digital-logic
voltage-measurement
xbee
pir
battery-charging
resistors
heat
fpga
dac
transformer
emc
shielding
power
fpga
programmable-logic
microcontroller
batteries
battery-charging
multimeter
repair
hdl
computer-architecture
connector
ethernet
pinout
e19293001
quelle
quelle
Antworten:
Sie haben eine absurde Anzahl möglicher Eingabesätze in Ihrem Eingabebereich. Sie können nicht alle testen, Punkt. Sie müssen eine Teilmenge der Eingabesätze testen und eine lohnende Heuristik verwenden, um die Sätze auszuwählen, die Sie testen.
Folgendes müssen Ihre Tests tun (dies ergibt sich aus den DO-254-Testempfehlungen, die mein Unternehmen verwendet):
Das ist ein Minimum, kein Maximum. In solchen Fällen führen wir eine MCDC-Analyse (Minimum Condition Decision Coverage) durch, um festzustellen, welche anderen Eingabesätze wir testen müssen. Ich habe es immer so erklärt:
Stellen Sie sich vor, Ihre Black Box ist ein UND-Gatter mit 200 Eingängen. Sie können nicht jeden einzelnen Eingabesatz testen, also testen Sie eine Teilmenge des gesamten Eingaberaums. Zuerst folgen Sie den Regeln, die ich oben angegeben habe - Sie müssen mindestens zwei Fälle testen: einen, bei dem die Ausgabe 0 / False ist, und einen anderen, bei dem die Ausgabe 1 / True ist. Für das UND-Gatter ist dies einfach: alle 0 / Falsch und alle 1 / Richtig. Das beweist, dass sich Ihre Ausgabe ändern kann. Als nächstes wählen Sie Eingabesätze so aus, dass es einen Eingabesatz gibt, für den jeder Eingang der entscheidende Faktor in der Ausgabe ist. Für ein UND-Gatter mit 200 Eingängen erhalten Sie 200 verschiedene Eingangssätze: Der erste hat alle Eingänge True mit Ausnahme von Eingang Nr. 1, der zweite hat alle Eingänge True mit Ausnahme von Nr. 2 und so weiter. Mit dieser Methode überprüfen Sie, ob jede Eingabe eine unabhängige Auswirkung auf die Ausgabe hat. Wenn eine Eingabe falsch ist, ist dies nicht der Fall.
Sie sagten, Ihre Logik sei kombinatorisch. Dies ist vielen Latches / Flip-Flops vorzuziehen, aber immer noch nicht perfekt. Sie müssen von der Ausgabe rückwärts arbeiten, um Eingabesätze zu bestimmen, für die jede einzelne Eingabe eine entscheidende Auswirkung auf die Ausgabe hat. Wenn Ihre Logik kompliziert ist, haben Sie viel Arbeit vor sich, aber dies ist die schnellste und umfassendste Methode zum Testen Ihrer Logik-Blackbox.
Was die praktischen Aspekte betrifft, sind Sie allein. Das Unternehmen, für das ich arbeite, verwendet kundenspezifische Hardware, um systeminterne Black-Box-Tests auf Pin-Ebene von FPGAs (und theoretisch von ASICs, wenn Sie uns ein Teil zur Verfügung stellen könnten, das auf eine Platine gebracht werden kann) mit Betriebsgeschwindigkeit durchzuführen. Es ist umfassend und automatisiert, aber jede Testvorrichtung ist für das jeweilige Projekt maßgeschneidert. Für diesen Ansatz ist daher ein Vertrag erforderlich, bei dem nicht nur Artikel von der Stange gekauft und selbst kombiniert werden.
Eines der Probleme, die durch unseren Ansatz behoben werden, besteht darin, einfach alle Drähte anzuschließen. Ich denke, die meisten Leute würden einen obszön großen Logikanalysator vorschlagen, aber Sie haben Tausende von Pins, sodass Sie Teilmengen von Pins gleichzeitig testen müssen. Einer der positiven Aspekte des von uns verwendeten Ansatzes ist, dass alle Pins jederzeit überwacht werden, sodass Sie sehen können, dass sich die zu ändernden Ausgänge ändern, aber auch, dass sich die Ausgänge, die sich nicht ändern sollten, nicht ändern. Sie können das nicht bekommen, wenn Sie einen Logikanalysator mit weniger Pins als der Anzahl Ihrer Ein- / Ausgänge verwenden.
quelle
OK, Black Box ist kein Problem, solange Sie die Funktionalität kennen. Sie benötigen ungefähr 64 logische Funktionen in (maximal) 2400 Variablen.
Im schlimmsten Fall haben Sie ein nicht testbares Produkt. Dies ist beispielsweise der Fall, wenn jeder der 64 Ausgänge tatsächlich von allen Eingangszuständen abhängt. Ich stelle mir vor, dass Werte verschiedener Ports auf Gleichheit oder größer als verglichen werden und diese Ergebnisse in einer logischen Kombination verwendet werden. In diesem Fall können Sie Werte um den Vergleichswert herum testen, wodurch die Anzahl der Kombinationen drastisch verringert werden kann.
Angenommen, Ausgang Y sollte hoch sein, wenn Port A> Port B ist. Sie können den Wert 0x25 auf Port B anwenden und überprüfen, was der Ausgang für die Werte 0x24, 0x25 und 0x26 von Port A ist. Wiederholen Sie diesen Vorgang für 0x211 und 0xE5A (ich bin nur Zahlen erfinden). Dann haben Sie 2 reduziert24 = 16 777 216 Kombinationen zu 9.
Möglicherweise haben Sie hier ein Problem. Selbst wenn dies tatsächlich der Vergleich ist, den Sie durchführen müssen, kann das Ergebnis intern sein und erst nach einer Logikfunktion mit ähnlichen internen Ergebnissen herauskommen. So machen Sie ein nicht testbares Produkt.
Ich hätte das Design in mehrere ASICs aufgeteilt, bei denen Zwischenergebnisse von einem ASIC zum nächsten gehen. Auf diese Weise müssen Sie möglicherweise nur testenO (N.- -- -√) Kombinationen anstelle von O ( N.) . 1000 Milliarden Tests mögen unmöglich sein, aber 1 Million ist keine so große Zahl. Es kann auch die E / A-Anzahl verringern, wenn voneinander unabhängige Funktionen vorhanden sind.
Eine Lösung für den einzelnen Chip könnte darin bestehen, Testpads für Zwischenergebnisse auf dem Chip zu haben, damit sie mit fliegenden Sonden auf dem Wafer getestet werden können .
quelle