Wat is RTL (register transfer level)?

Abstractieniveau van het ontwerp waarbij een circuit wordt beschreven aan de hand van hoe data tussen registers worden overgedragen en verwerkt. Geschreven in Verilog of VHDL en invoer voor logische synthese.

Japanse benaming: RTL(レジスタ転送レベル)

“RTL (register transfer level)” komt voor in 9 oefenvragen uit 3 onderwerpen, bijv. LSI-ontwerpflow en EDA, Hardwarebeschrijvingstalen en verificatie, Timinganalyse en CDC.

Vakgebied: LSI-ontwerpflow en EDA

Wat een RTL-beschrijving vastlegt

Een RTL-model verdeelt een synchrone schakeling in twee soorten elementen: registers, die bij een klokflank nieuwe waarden overnemen, en de combinatorische logica die die waarden berekent uit de huidige registerinhoud en de ingangen. Op dit niveau schrijven betekent cyclus voor cyclus vastleggen wat elk register als volgende waarde zal bevatten, zonder specifieke poorten te kiezen. In Verilog ziet dat eruit als geklokte always-blokken met nonblocking assignments voor flipflops en aparte combinatorische blokken of assign-statements. Alle blokken beschrijven hardware die gelijktijdig werkt; dat is de grootste omschakeling in denken voor programmeurs die van sequentiële software komen.

Van RTL naar poorten

RTL zit tussen beschrijvingen op algoritmeniveau en de gate-level netlist. Daarboven kan high-level synthesis (HLS) RTL genereren uit C of C++ door bewerkingen in klokcycli in te plannen. Daaronder beeldt logische synthese de RTL af op flipflops en poorten uit een standaardcelbibliotheek, geoptimaliseerd binnen randvoorwaarden voor timing, oppervlak en vermogen, waarna place-and-route de layout oplevert. Een deel van de ontwerpintentie wordt bewust buiten de RTL gehouden: het Unified Power Format (UPF, IEEE 1801) beschrijft power domains, uitschakeling, isolatie en level shifters in aparte bestanden, zodat de vermogensarchitectuur kan veranderen zonder de RTL aan te passen.

Synthetiseerbare code versus code alleen voor simulatie

Slechts een deel van een HDL laat zich op hardware afbeelden. Vertragingsstatements zoals #10 laten de simulatietijd verstrijken, maar worden door synthese genegeerd, omdat echte vertraging uit poorten en draden komt. Systeemtaken zoals $display, bestands-I/O en de case-equality-operator === zijn hulpmiddelen voor testbenches. Klassieke valkuilen bij het coderen veranderen de hardware zelf: een combinatorisch blok dat een uitgang niet op elk pad een waarde toekent, levert een onbedoelde latch op, en het slordig mengen van blocking en nonblocking assignments kan ervoor zorgen dat de simulatie afwijkt van de gesynthetiseerde schakeling. Een goede RTL-stijl houdt het gedrag in simulatie en in hardware identiek.

RTL verifiëren

Het meeste verificatiewerk gebeurt op RTL-niveau, waar simulatie snel genoeg is voor miljoenen cycli. De voortgang wordt gemeten met code coverage, die uitgevoerde regels en branches bijhoudt, en functional coverage, die gespecificeerde scenario's bijhoudt; volledige code coverage alleen bewijst niet dat elke gespecificeerde combinatie is getest. Sommige bugs zijn onzichtbaar voor RTL-simulatie. Tools voor clock-domain crossing (CDC) vinden ontbrekende synchronizers, omdat gesimuleerde flipflops nooit metastabiel worden. Formele equivalentiecontrole bevestigt dat de netlist overeenkomt met de RTL, en gate-level simulatie met SDF-vertragingsdata legt problemen met reset, onbekende waarden en timing bloot.

Nu oefenen: vragen over RTL (register transfer level)

Welke hardwarebeschrijvingstaal wordt vooral gebruikt bij RTL-ontwerp?

  1. AVerilog HDL en VHDL
  2. BHTML
  3. CSQL
Antwoord en toelichting tonen

Antwoord: A. Verilog HDL en VHDL

Bij RTL-ontwerp wordt in hardwarebeschrijvingstalen zoals Verilog HDL (en de uitbreiding SystemVerilog) en VHDL beschreven hoe gegevens per klokcyclus tussen registers stromen. Anders dan bij softwaretalen worden de beschreven bewerkingen als schakeling gelijktijdig en parallel uitgevoerd. HTML is een beschrijvingstaal voor webpagina's en SQL een querytaal voor databases; daarmee kunnen geen schakelingen worden beschreven.

Hoe heet de technologie die automatisch RTL genereert uit een beschrijving van een algoritme in onder meer C of C++?

  1. AHigh-level synthesis (HLS)
  2. BLogische synthese
  3. CPlace and route
Antwoord en toelichting tonen

Antwoord: A. High-level synthesis (HLS)

High-level synthesis is een technologie die uit een gedragsbeschrijving in C/C++ automatisch de toewijzing van rekeneenheden en registers en de klokcyclus waarin elke bewerking wordt uitgevoerd (scheduling) bepaalt en RTL genereert. Omdat uit dezelfde beschrijving meerdere opbouwen met verschillende pipelining en parallelle graad kunnen worden uitgeprobeerd, kan het abstractieniveau van het ontwerp worden verhoogd en de ontwikkeltijd worden verkort. Het wordt gebruikt voor onder meer signaalverwerking en schakelingsontwerp voor AI. Logische synthese is het proces dat uit RTL gates genereert.

Veelgestelde vragen

Wat is het verschil tussen RTL en een gate-level netlist?

RTL beschrijft registers en de logica daartussen in een hardwarebeschrijvingstaal zonder specifieke poorten te kiezen, terwijl een gate-level netlist het gesynthetiseerde resultaat is: een lijst van echte bibliotheekcellen en hun verbindingen.

Is RTL hetzelfde als Verilog?

Nee. RTL is een abstractieniveau; Verilog, SystemVerilog en VHDL zijn talen waarin je RTL kunt uitdrukken, maar ook testbenches en beschrijvingen op lager niveau met poorten.

Waarom werkt mijn RTL in simulatie wel maar na synthese niet?

Veelvoorkomende oorzaken zijn constructies die alleen voor simulatie bedoeld zijn, zoals vertragingen, latches die ontstaan door onvolledige toekenningen, onvolledige sensitivity lists en verkeerd gebruik van blocking/nonblocking assignments; daardoor wijkt het gesimuleerde gedrag af van de gegenereerde poorten.

“RTL (register transfer level)” in de toelichting

Vragen met “RTL (register transfer level)” (9)

  1. Welke hardwarebeschrijvingstaal wordt vooral gebruikt bij RTL-ontwerp?
  2. Hoe heet de technologie die automatisch RTL genereert uit een beschrijving van een algoritme in onder meer C of C++?
  3. Welke maat wordt bij RTL-verificatie gebruikt om te beoordelen hoe volledig de verificatie is uitgevoerd?
  4. Wat is de juiste reden waarom controle met een CDC-verificatietool nodig wordt geacht, ook als STA en RTL-simulatie worden uitgevoerd?
  5. Welke volgorde is juist voor de ontwerpflow van een gewone digitale LSI?
  6. Welke uitspraak over logische synthese is juist?
  7. Welk standaardformaat beschrijft bij laagvermogenontwerp de "voedingsintentie" zoals voedingsdomeinen, het uitschakelen van voeding en level shifters, afzonderlijk van de schakelingsbeschrijving?
  8. Welke van de volgende Verilog-beschrijvingen wordt door logische synthese niet tot een schakeling gemaakt maar genegeerd (een beschrijving voor simulatie)?
  9. Wat is het belangrijkste doel van het uitvoeren van simulatie met vertragingsinformatie op de schakeling na logische synthese en plaatsen en routeren (gate-level netlist)?

Vergelijkingen met deze term

Verwante termen

Logische synthese Verilog Netlist Plaatsing en routering (place and route) Hardwarebeschrijvingstaal (HDL) SystemVerilog High-level synthesis (HLS) Pipelining FIT STA (statische timinganalyse)

Naar de woordenlijst