Wat is Testbench?

Beschrijving voor simulatie die ingangen aan de te verifiëren schakeling geeft en controleert of de uitgangen kloppen. Wordt niet gesynthetiseerd, dus vertragingen en weergaveopdrachten kunnen vrij worden gebruikt.

Japanse benaming: テストベンチ

“Testbench” komt voor in 6 oefenvragen uit 2 onderwerpen, bijv. Hardwarebeschrijvingstalen en verificatie, LSI-ontwerpflow en EDA.

Vakgebied: Hardwarebeschrijvingstalen en verificatie

Wat een testbench bevat

Een testbench is een HDL-module op het hoogste niveau, meestal zonder poorten, die het te testen ontwerp (design under test, DUT) instantieert en omringt met alles wat nodig is om het te beproeven. Hij genereert de klok, bijvoorbeeld always #5 clk = ~clk;, wat elke 5 tijdseenheden omschakelt en bij een tijdseenheid van 1 ns een periode van 10 ns geeft, past de reset toe, stuurt ingangsstimulus aan en observeert de uitgangen. Hij kan ook testvectoren uit bestanden lezen, logs schrijven en golfvormen dumpen. De DUT is het synthetiseerbare ontwerp; de testbench bestaat alleen in simulatie.

Constructies alleen voor simulatie

Omdat een testbench nooit wordt gesynthetiseerd, kan hij mogelijkheden gebruiken die geen betekenis in hardware hebben. Vertragingsopdrachten zoals #10 laten de simulatietijd verstrijken, $display en bestands-I/O drukken waarden af of leggen ze vast, en de case-equality-operator === vergelijkt X- en Z-bits letterlijk, waardoor een test kan detecteren dat een uitgang onbekend is geworden. Synthese negeert of weigert deze constructies, dus ze moeten buiten de RTL blijven. Als ze in de ontwerpcode terechtkomen, kunnen het gedrag in simulatie en in hardware uiteenlopen op manieren die moeilijk te debuggen zijn.

Races op de klokflank vermijden

Een veelvoorkomende testbenchbug is een ingang van de DUT veranderen met een blocking toewijzing op precies dezelfde simulatietijd als de stijgende klokflank. Of de flipflops van de DUT dan de oude of de nieuwe waarde bemonsteren, hangt af van de volgorde waarin de simulator gebeurtenissen uitvoert: een race waarvan het resultaat zelfs per simulator kan verschillen. Veiliger is het om ingangen op de tegenovergestelde klokflank of kort na de actieve flank aan te sturen, non-blocking toewijzingen te gebruiken of SystemVerilog-clocking blocks te gebruiken, die de bemonsterings- en aanstuurmomenten expliciet vastleggen.

Van golfvormen naar zelfcontrolerende tests

Voor een klein blok kan het met het oog bekijken van golfvormen volstaan, maar dat schaalt niet. Een zelfcontrolerende (self-checking) testbench berekent of zoekt voor elke invoer het verwachte resultaat op, vaak met een referentiemodel, vergelijkt het automatisch met de uitgang van de DUT en meldt afwijkingen als fouten. Duizenden tests kunnen dan zonder toezicht draaien, bijvoorbeeld 's nachts als regressie. Grotere projecten bouwen hierop voort met constrained random stimulus, scoreboards en het verzamelen van coverage, en de verificatie-inspanning is vaak even groot als of groter dan de ontwerpinspanning.

Nu oefenen: vragen over Testbench

Welke standaardmethodiek wordt bij verificatie met SystemVerilog gebruikt om een goed herbruikbare testomgeving (testbench) op te bouwen?

  1. AOPC
  2. BCMP
  3. CUVM (Universal Verification Methodology)
Antwoord en toelichting tonen

Antwoord: C. UVM (Universal Verification Methodology)

UVM is een standaardmethodiek met een klassenbibliotheek waarmee in SystemVerilog een testbench wordt opgebouwd uit onderdelen, zoals een driver die ingangen aanstuurt, een monitor die uitgangen bewaakt en een scoreboard dat met verwachte waarden vergelijkt. De onderdelen kunnen ook voor de verificatie van andere ontwerpen worden hergebruikt, en het genereren van invoer met beperkte willekeur en het verzamelen van coverage zijn gemakkelijk in te bouwen. Het is gestandaardiseerd als IEEE 1800.2. OPC en CMP zijn productietechnieken.

Welke uitspraak over de testbench die bij HDL-verificatie wordt gebruikt is juist?

  1. AFabrieksapparatuur voor de productie van de schakeling
  2. BEen beschrijving voor simulatie die ingangen aan de te verifiëren schakeling geeft en controleert of de uitgangen juist zijn, en niet logisch wordt gesynthetiseerd
  3. CEen meetinstrument voor het vermogensverbruik van de schakeling
Antwoord en toelichting tonen

Antwoord: B. Een beschrijving voor simulatie die ingangen aan de te verifiëren schakeling geeft en controleert of de uitgangen juist zijn, en niet logisch wordt gesynthetiseerd

Een testbench is een HDL-beschrijving die de te verifiëren schakeling (DUT) instantieert, klok, reset en ingangssignalen maakt en aanlegt, en de uitgangen waarneemt. Omdat er geen schakeling van wordt gemaakt, kunnen simulatiefuncties zoals vertragingsspecificaties, het lezen en schrijven van bestanden en weergaveopdrachten vrij worden gebruikt. Er wordt soms net zoveel of meer moeite in gestoken als in het ontwerp.

Veelgestelde vragen

Is een testbench synthetiseerbaar?

Nee. Een testbench wordt alleen voor simulatie geschreven, dus hij gebruikt vrij vertragingen, weergaveopdrachten, bestands-I/O en andere constructies die geen hardware kunnen worden.

Wat is de DUT in een testbench?

DUT staat voor design under test: de synthetiseerbare module die de testbench instantieert, met stimulus aanstuurt en controleert.

Wat is het verschil tussen == en === in een Verilog-testbench?

De operator == geeft X terug als een van beide operanden X- of Z-bits bevat, net als een hardwarecomparator. De operator === vergelijkt X en Z letterlijk en geeft altijd 0 of 1 terug, dus testbenches gebruiken hem om onbekende uitgangen te detecteren.

“Testbench” in de toelichting

Vragen met “Testbench” (6)

  1. Welke standaardmethodiek wordt bij verificatie met SystemVerilog gebruikt om een goed herbruikbare testomgeving (testbench) op te bouwen?
  2. Welke uitspraak over de testbench die bij HDL-verificatie wordt gebruikt is juist?
  3. Hoe groot is de periode van de klok die door de bovenstaande beschrijving in de testbench wordt gemaakt (tijdseenheid 1 ns)?
  4. Als in een testbench de ingangen van de schakeling met blokkerende toekenning op hetzelfde tijdstip als de stijgende klokflank worden gewijzigd, kan een probleem ontstaan. Welke combinatie van de belangrijkste reden en de tegenmaatregel is juist?
  5. Welke uitspraak over de kenmerken van een zelfcontrolerende testbench is juist?
  6. Welke uitspraak over het verschil tussen de gelijkheidsoperatoren '==' en '===' in Verilog is juist?

Verwante termen

SystemVerilog OPC (optical proximity correction) CMP Hardwarebeschrijvingstaal (HDL) Numerieke apertuur (NA) PLL (phase-locked loop) Verilog Comparator Asynchrone reset Blocking assignment

Naar de woordenlijst