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
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.
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.
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.