Amazon Best VPN GoSearch

OnWorks-favicon

verilator - Online in de cloud

Voer verilator uit in de gratis hostingprovider van OnWorks via Ubuntu Online, Fedora Online, Windows online emulator of MAC OS online emulator

Dit is de opdrachtverilator die kan worden uitgevoerd in de gratis hostingprovider van OnWorks met behulp van een van onze meerdere gratis online werkstations zoals Ubuntu Online, Fedora Online, Windows online-emulator of MAC OS online-emulator

PROGRAMMA:

NAAM


Verilator - Converteer Verilog-code naar C++/SystemC

KORTE INHOUD


verilator --help
verilator --versie
verilator --cc [opties] [top_level.v]... [opt_c_files.cpp/c/cc/a/o/so]
verilator --sc [opties] [top_level.v]... [opt_c_files.cpp/c/cc/a/o/so]
verilator ---lint-only [top_level.v]...

PRODUCTBESCHRIJVING


Verilator converteert synthetiseerbare (niet gedragsmatige) Verilog-code, plus wat Synthese,
SystemVerilog en een kleine subset van Verilog AMS-beweringen, in C++- of SystemC-code. Het
is geen complete simulator, maar een compiler.

Verilator wordt aangeroepen met parameters die vergelijkbaar zijn met GCC, Cadence Verilog-XL/NC-Verilog of
VCS van Synopsys. Het leest de gespecificeerde Verilog-code, pluist het uit en voegt optioneel toe:
dekking en golfvorm-traceringscode. Voor C++- en SystemC-formaten voert het .cpp en .h . uit
bestanden.

De bestanden die door Verilator zijn gemaakt, worden vervolgens gecompileerd met C++. De gebruiker schrijft een beetje C++
wrapper-bestand, dat de module op het hoogste niveau aanmaakt, en deze bestandsnaam doorgeeft aan de
opdrachtregel. Deze C-bestanden zijn gecompileerd in C++ en gekoppeld aan de geverifieerde bestanden.

Het resulterende uitvoerbare bestand voert de daadwerkelijke simulatie uit.

Ga om te beginnen naar "VOORBEELD C++ UITVOERING".

ARGUMENT OVERZICHT


Dit is een korte samenvatting van de argumenten voor Verilator. Zie de gedetailleerde beschrijvingen in
de volgende secties voor meer informatie.

{file.v} Verilog-bestandsnamen op het hoogste niveau
{file.c/cc/cpp} Optionele C++-bestanden om in te compileren
{file.a/o/so} Optionele C++-bestanden om in te linken

+1364-1995ext+ Gebruik Verilog 1995 met bestandsextensie
+1364-2001ext+ Gebruik Verilog 2001 met bestandsextensie
+1364-2005ext+ Gebruik Verilog 2005 met bestandsextensie
+1800-2005ext+ Gebruik SystemVerilog 2005 met bestandsextensie
+1800-2009ext+ Gebruik SystemVerilog 2009 met bestandsextensie
+1800-2012ext+ Gebruik SystemVerilog 2012 met bestandsextensie
--asser Alle beweringen inschakelen
--autoflush Spoel streams na alle $displays
--bbox-sys Blackbox onbekende $systeemaanroepen
--bbox-unsup Niet-ondersteunde taalfuncties van Blackbox
--bin Verilator binair negeren
-CFLAGS C++ Compiler-vlaggen voor makefile
--cc C++-uitvoer maken
--cdc Analyse klokdomeinoverschrijding
--clk Markeer gespecificeerd signaal als klok
--compiler Stem af op gespecificeerde C++-compiler
--converge-limiet Tune convergentie afwikkelingstijd
--dekking Alle dekking inschakelen
--dekkingslijn Lijndekking inschakelen
--coverage-toggle Schakel de dekking in
--coverage-user SVL-gebruikersdekking inschakelen
--coverage-underscore Schakel dekking van _signalen . in
-D [= ] Preprocessor-definitie instellen
--debug Foutopsporing inschakelen
--debug-check Debug-beweringen inschakelen
--debugi Foutopsporing inschakelen op een bepaald niveau
--debugi- Debuggen van een bronbestand op een niveau inschakelen
--standaard taal Standaardtaal om te ontleden
+definieer+ = Preprocessor-definitie instellen
--dump-tree Schakel het dumpen van .tree-bestanden in
--dump-treei Schakel het dumpen van .tree-bestanden op een niveau in
--dump-treei- Schakel het dumpen van een .tree-bestand in bij een bronbestand op een niveau
-E Voorbewerken, maar niet compileren
--foutlimiet Afbreken na dit aantal fouten
--exe Link om uitvoerbaar bestand te maken
-F Parseer opties uit een bestand, relatief
-F Opties ontleden uit een bestand
--gdb Voer Verilator interactief uit onder GDB
--gdbbt Voer Verilator uit onder GDB voor backtrace
--help Deze help weergeven
-L Directory om naar te zoeken omvat
--if-diepte Stem IFDEPTH-waarschuwing af
+incdir+ Directory om naar te zoeken omvat
--inhibit-sim Functie aanmaken om sim uit te schakelen
--inline-multi Tune module inlining
-LDFLAGS Linker pre-object vlaggen voor makefile
-LDLIBS Linkerbibliotheekvlaggen voor makefile
--taal Standaard taalstandaard om te ontleden
+libext+ +[ext]... Extensies voor het vinden van modules
--Alleen pluisjes Lint, maar maak geen uitvoer
--MMD Maak .d-afhankelijkheidsbestanden
--MP Creëer valse afhankelijkheidsdoelen
--Mdir Naam van uitvoerobjectdirectory
--mod-voorvoegsel Naam die moet worden toegevoegd aan lagere klassen
--no-clk Voorkom dat het gespecificeerde signaal als klok wordt gemarkeerd;
--no-pins64 Gebruik geen vluit64_t's voor 33-64 bit sigs
--no-skip-identical Schakel het overslaan van identieke uitvoer uit
+notificatiecontroles Genegeerd
-O0 Optimalisaties uitschakelen
-O3 Optimalisaties van hoge prestaties
-O Selecteerbare optimalisaties
-O Naam van het laatste uitvoerbare bestand
--no-order-clock-delay Bestelklok uitschakelen toewijzingen inschakelen
--output-splitsing Splits .cpp-bestanden in stukjes
--output-split-cfuncs .cpp-functies splitsen
--output-split-ctrace Traceerfuncties splitsen
-P Schakel regelnummers en spaties uit met -E
--pins-bv Specificeer typen voor poorten op het hoogste niveau
--pins-sc-uint Specificeer typen voor poorten op het hoogste niveau
--pins-sc-biguint Specificeer typen voor poorten op het hoogste niveau
--pins-uint8 Specificeer typen voor poorten op het hoogste niveau
--pijp-filter Filter alle invoer via een script
--voorvoegsel Naam van klasse op het hoogste niveau
--profile-cfuncs Naamfuncties voor profilering
--privé foutopsporing; zie documenten
--openbare foutopsporing; zie documenten
--report-unoptflat Extra diagnostiek voor UNOPTFLAT
--savable Model opslaan-herstel inschakelen
--sc Creëer SystemC-uitvoer
--stats Statistiekenbestand maken
--stats-vars Statistieken over variabelen leveren
-sv SystemVerilog-parsing inschakelen
+systeemverilogext+ Synoniem voor +1800-2012ext+
--top-module Naam van invoermodule op het hoogste niveau
--trace Maken van golfvormen inschakelen
--spoor-diepte Diepte van tracering
--trace-max-array Maximale bitbreedte voor traceren
--trace-max-breedte Maximale arraydiepte voor tracering
--trace-params Traceerparameters inschakelen
--trace-structs Traceringsstructuurnamen inschakelen
--trace-underscore Schakel tracering van _signalen in
-U Undefine preprocessor definiëren
--uitrollen-telling Stem maximale lus-iteraties af
--unroll-stmts Stem de maximale lichaamsgrootte van de lus af
--unused-regexp Stem ONGEBRUIKTE pluissignalen af
-V Uitgebreide versie en configuratie
-v Verilog-bibliotheek
+verilog1995ext+ Synoniem voor +1364-1995ext+
+verilog2001ext+ Synoniem voor +1364-2001ext+
-fout- Waarschuwing omzetten in fout
-Wtoekomst- Waarschuwingen voor onbekende berichten uitschakelen
-Wnee- Waarschuwing uitschakelen
-Wno-lint Schakel alle pluiswaarschuwingen uit
-Wno-stijl Alle stijlwaarschuwingen uitschakelen
-Wno-fatal Schakel fatale exit uit bij waarschuwingen
--x-toewijzen Wijs in eerste instantie Xs toe aan deze waarde
--x-initial-edge Initiële X->0 en X->1 edge triggers inschakelen
-y Directory om naar modules te zoeken

ARGUMENTEN


{bestand.v}
Specificeert het Verilog-bestand dat de bovenste module bevat die moet worden geverifieerd.

{bestand.c/.cc/.cpp/.cxx}
Specificeert optionele C++-bestanden die moeten worden gekoppeld aan de Verilog-code. Als er C++-bestanden zijn
op deze manier zijn gespecificeerd, zal Verilator een make-regel bevatten die a . genereert module
uitvoerbaar. Zonder C++-bestanden stopt Verilator bij de module__ALL.een bibliotheek,
en ga ervan uit dat je doorgaat met koppelen met maakregels die je zelf schrijft. Zie ook de
-CFLAGS optie.

{bestand.a/.o/.so}
Specificeert optionele object- of bibliotheekbestanden die moeten worden gekoppeld aan de Verilog-code, als a
afkorting voor -LDFLAGS " ". Als er bestanden op deze manier zijn opgegeven, zal Verilator
zal een make-regel bevatten die deze bestanden gebruikt bij het koppelen van de module uitvoerbaar.
Dit is over het algemeen alleen nuttig bij gebruik met de --exe optie.

+1364-1995ext+ext
+1364-2001ext+ext
+1364-2005ext+ext
+1800-2005ext+ext
+1800-2009ext+ext
+1800-2012ext+ext
Specificeert de taalstandaard die moet worden gebruikt met een specifieke bestandsnaamextensie, ext.

Voor compatibiliteit met andere simulatoren, zie ook de synoniemen "+verilog1995ext+"ext,
"+verilog2001ext+"ext, en "+systemverilogext+"ext.

Voor elk bronbestand heeft de taal die door deze opties wordt gespecificeerd voorrang op elke
taal gespecificeerd door de "--default-taal" of "--taal" opties.

Deze opties worden van kracht in de volgorde waarin ze worden aangetroffen. Dus het volgende zou
gebruik Verilog 1995 voor "av" en Verilog 2001 voor "bv".

verilator ... +1364-1995ext+v av +1364-2001ext+v bv

Deze vlaggen worden alleen aanbevolen voor oudere ontwerpen met gemengde talen, bij voorkeur
optie is om de code te bewerken om nieuwe trefwoorden te repareren, of om geschikte toe te voegen
"`begin_keywords".

Note "`begin_keywords" is een SystemVerilog-constructie, die specificeert: Slechts welke de
reeks trefwoorden moet worden herkend. Welke set ook wordt gekozen, de semantiek zal zijn:
die van SystemVerilog. Daarentegen "+1364-1995ext+" etc. specificeer zowel de syntaxis en
semantiek te gebruiken.

--beweren
Schakel alle beweringen in.

Zie ook --x-assign en --x-initial-edge; instelling "--x-assign unique" en/of
"--x-initial-edge" kan wenselijk zijn.

--automatisch spoelen
Spoel na elke $display of $fdisplay de uitvoerstroom. Dit zorgt ervoor dat
berichten verschijnen onmiddellijk, maar kunnen de prestaties verminderen; bel voor de beste prestatie
"fflush(stdout)" af en toe in de hoofd-C-lus. Standaard uitgeschakeld, wat zal bufferen
output zoals geleverd door de normale C stdio-oproepen.

--bbox-sys
Black box elke onbekende $ systeemtaak of functieaanroepen. Systeemtaken zijn eenvoudig:
NOPed en systeemfuncties worden vervangen door nul. Argumenten voor zulke
functies worden geparseerd, maar niet anders gecontroleerd. Dit voorkomt fouten wanneer:
linting in aanwezigheid van bedrijfsspecifieke PLI-oproepen.

--bbox-unsup
Black box enkele niet-ondersteunde taalfuncties, momenteel UDP-tabellen en de cmos en
trans poort primitieven. Hierdoor kan de rest van het ontwerp pluizen, zelfs wanneer
niet-ondersteunde constructies aanwezig zijn.

--bak bestandsnaam
Zelden nodig. Overschrijf de standaard bestandsnaam voor Verilator zelf. Wanneer een afhankelijkheid
(.d) bestand is gemaakt, wordt deze bestandsnaam een ​​bronafhankelijkheid, zodat a
verandering in dit binaire bestand zal de uitvoerbestanden opnieuw moeten maken.

-CVLAGS vlaggen
Voeg gespecificeerde C-compilervlaggen toe aan de gegenereerde makefiles. Wanneer make wordt uitgevoerd op de
gegenereerde makefile deze worden doorgegeven aan de C++ compiler (gcc/g++/msvc++).

--cc
Specificeert C++ zonder SystemC-uitvoermodus; zie ook --sc.

--CDC
Experimenteel. Voer enkele controles op het overschrijden van klokdomeinen uit en geef gerelateerde waarschuwingen uit
(CDCRSTLOGIC) en verlaat dan; als er andere waarschuwingen dan CDC-waarschuwingen nodig zijn, maak dan een
tweede run met --lint-only. Aanvullende waarschuwingsinformatie is ook geschreven naar de
bestand {prefix}__cdc.txt.

Controleert momenteel alleen enkele items die andere CDC-tools hebben gemist; als je interesse hebt in
het toevoegen van meer traditionele CDC-controles, neem dan contact op met de auteurs.

--klk signaalnaam
Soms is het voor Verilator best moeilijk om kloksignalen van andere te onderscheiden
data signalen. Af en toe kunnen de kloksignalen in de controlelijst van
signalen die bepalen of verdere evaluatie nodig is. Dit zal sterk verslechteren
de prestaties van een geverifieerd model.

Met --clk , de gebruiker kan de root-klok in het model specificeren en vervolgens Verilator
zal het signaal markeren als klokken en het klokkenmerk automatisch doorgeven aan:
andere signalen daarvan afgeleid. Op deze manier zal Verilator proberen te voorkomen dat de
kloksignaal in controlelijst.

Opmerking signaalnaam wordt gespecificeerd door het RTL-hiërarchiepad. Bijvoorbeeld v.foo.bar. Indien
het signaal is de ingang naar de top-module, het is direct de signaalnaam. Als je het vindt
moeilijk om de exacte naam te vinden, probeer "/*verilator clocker*/" in het RTL-bestand te gebruiken om
markeer het signaal direct.

--compiler compilernaam
Schakelt afstemmingen en tijdelijke oplossingen in voor de opgegeven C++-compiler.

kletteren
Stem af op gerinkel. Dit kan de uitvoeringssnelheid verminderen omdat het verschillende tijdelijke oplossingen mogelijk maakt
om dwaze hardcoded limieten in clang te vermijden. Dit omvat het doorbreken van diepe structuren
zoals voor msvc zoals hieronder beschreven.

gcc Tune voor Gnu C++, hoewel gegenereerde code zou moeten werken op bijna elke compatibele C++
compiler. Momenteel de standaard.

msvc
Stem af op Microsoft Visual C++. Dit kan de uitvoeringssnelheid verminderen omdat het mogelijk maakt:
verschillende tijdelijke oplossingen om dwaze hardcoded limieten in MSVC++ te vermijden. Dit bevat
diep geneste uitdrukkingen tussen haakjes opsplitsen in subuitdrukkingen om te vermijden
fout C1009, en het breken van diepe blokken in functies om fout C1061 te voorkomen.

--converge-limiet
Zelden nodig. Specificeert het maximum aantal runtime-iteraties voordat een a . wordt gemaakt
model kon de fout niet convergeren. Staat standaard op 100.

--Dekking
Schakelt alle vormen van dekking in, alias voor "--coverage-line --coverage-toggle
--dekking-gebruiker".

--dekkingslijn
Specificeert dat de basiscode voor de dekkingsanalyse van de blokregel moet worden ingevoegd.

Dekkingsanalyse voegt instructies toe bij elk wijzigingspunt van de codestroom, wat de
takken van IF- en CASE-statements, een superset van normale Verilog Line Coverage. Bij
bij elke tak wordt een unieke teller opgehoogd. Aan het einde van een test, de tellers
samen met de bestandsnaam en het regelnummer dat overeenkomt met elke teller worden geschreven in
logs/dekking.pl.

Verilator schakelt automatisch de dekking van filialen met een $stop in, omdat het
wordt aangenomen dat $stop branches een foutcontrole bevatten die niet zou moeten plaatsvinden. Een /*verilator
dekking_block_off*/commentaar zal een vergelijkbare functie uitvoeren op elke code in dat blok
of lager, of /*verilator coverage_on/coverage_off*/ schakelt de dekking rond lijnen uit
van code.

Opmerking Verilator kan combinatorische (niet-geklokte) blokken te veel tellen als die blokken
signalen ontvangen waarvoor de UNOPTFLAT-waarschuwing is uitgeschakeld; voor de meest nauwkeurige
resultaten schakelen deze waarschuwing niet uit bij gebruik van dekking.

--dekking-toggle
Specificeert dat de analysecode van de signaalwisseldekking moet worden ingevoegd.

Elk bit van elk signaal in een module heeft een teller. De teller zal
verhoging bij elke flankverandering van het corresponderende bit.

Signalen die deel uitmaken van taken of begin/eindblokken worden beschouwd als lokale variabelen en
zijn niet gedekt. Signalen die beginnen met onderstrepingstekens, gehele getallen zijn of erg breed zijn
(>256 bits totale opslag over alle dimensies) worden ook niet gedekt.

Hiërarchie is gecomprimeerd, zodat als een module meerdere keren wordt geïnstantieerd,
dekking wordt opgeteld voor dat bit over ALLE instanties van die module met de
dezelfde parameterset. Een module die is geïnstantieerd met verschillende parameterwaarden is:
beschouwd als een andere module, en wordt apart geteld.

Verilator neemt een minimaal intelligente beslissing over welk klokdomein het signaal is
gaat naar, en zoekt alleen naar randen in dat klokdomein. Dit betekent dat randen kunnen worden
genegeerd als bekend is dat de rand nooit kan worden gezien door de ontvangende logica. Dit
algoritme kan in de toekomst verbeteren. Het netto resultaat is dat de dekking lager kan zijn dan
wat zou worden gezien door naar sporen te kijken, maar de dekking is nauwkeuriger
weergave van de kwaliteit van de stimulus in het ontwerp.

Er kunnen randen worden geteld in de buurt van het tijdstip nul terwijl het model zich stabiliseert. Het is een goede
oefen om alle dekking op nul te zetten net voordat u reset loslaat om te voorkomen dat dergelijke
gedrag.

Een /*verilator coverage_off/on */ commentaarpaar kan worden gebruikt rond signalen die dat niet doen
hebben toggle-analyse nodig, zoals RAM's en registerbestanden.

--dekking-underscore
Schakel de dekking in van signalen die beginnen met een onderstrepingsteken. Normaal gesproken zijn deze signalen:
niet bedekt. Zie ook --trace-underscore.

--dekking-gebruiker
Maakt door de gebruiker ingevoegde functionele dekking mogelijk. Momenteel zijn alle functionele dekkingspunten
worden gespecificeerd met SVA die afzonderlijk moet worden ingeschakeld met --asset.

De volgende verklaring voegt bijvoorbeeld een dekkingspunt toe, met de opmerking
"StandaardKlok":

DefaultClock: dekkingseigenschap (@(posedge clk) cyc==3);

-Dvar=waarde
Definieert het gegeven preprocessor-symbool, zonder toe te staan. gelijk aan +define; +definieer
is redelijk standaard in alle Verilog-tools, terwijl -D een alias is voor GCC-compatibiliteit.

--debuggen
Selecteer de voor foutopsporing gebouwde afbeelding van Verilator (indien beschikbaar) en schakel meer interne in
beweringen (gelijk aan "--debug-check"), foutopsporingsberichten (gelijk aan
"--debugi 4"), en tussenliggende dumpbestanden (gelijk aan "--dump-treei 3").

--debug-controle
Zelden nodig. Interne debug-bevestigingscontroles inschakelen, zonder debug te wijzigen
breedsprakigheid. Automatisch ingeschakeld wanneer --debug opgegeven.

--debugi
--debugi-
Zelden nodig - voor gebruik door ontwikkelaars. Stel het interne foutopsporingsniveau globaal in op de
opgegeven debug-niveau (1-10) of stel het opgegeven Verilator-bronbestand in op de
gespecificeerd niveau (bijv. "--debugi-V3Width 9"). Hogere niveaus produceren meer gedetailleerd
berichten.

--standaard taal waarde
Selecteer de taal die standaard moet worden gebruikt bij de eerste verwerking van elk Verilog-bestand.
De taalwaarde moet "1364-1995", "1364-2001", "1364-2005", "1800-2005" zijn.
"1800-2009" of "1800-2012".

Elke taal die is gekoppeld aan een bepaalde bestandsextensie (zie de verschillende +LANGext+
opties) worden gebruikt in plaats van de taal gespecificeerd door --default-taal.

De vlag --default-taal wordt alleen aanbevolen voor oudere code die hetzelfde gebruikt
taal in alle bronbestanden, aangezien de voorkeursoptie is om de te repareren code te bewerken
nieuwe zoekwoorden, of voeg de juiste "`begin_keywords" toe. Voor legacy gemengde taalontwerpen,
de verschillende +LANGext+ opties moeten worden gebruikt.

Als er geen taal is gespecificeerd, hetzij door deze vlag of +LANGext+ opties, dan de laatste
SystemVerilog-taal (IEEE 1800-2012) wordt gebruikt.

+definieer+var=waarde
+definieer+var=waarde+var2=value2...
Definieert het gegeven preprocessor-symbool, of meerdere symbolen indien gescheiden door plustekens.
gelijk aan -D; +define is vrij standaard in alle Verilog-tools, terwijl -D een alias is
voor GCC-compatibiliteit.

--dump-boom
Zelden nodig. Schakel het schrijven van .tree-foutopsporingsbestanden in met dumpingniveau 3, waardoor de
standaard kritieke stadia. Voor details over het formaat, zie de Verilator Internals
handmatig. --dump-tree wordt automatisch ingeschakeld met --debug, dus "--debug
--no-dump-tree" kan handig zijn als de dumpbestanden groot en niet gewenst zijn.

--dump-treei
--dump-treei-
Zelden nodig - voor gebruik door ontwikkelaars. Stel het interne dumpniveau voor bomen globaal in op a
specifiek dumpniveau of stel het gespecificeerde Verilator-bronbestand in op het gespecificeerde
boomstortniveau (bijv. "--dump-treei-V3Order 9"). Niveau 0 schakelt stortplaatsen uit en is
gelijk aan "--no-dump-tree". Niveau 9 maakt het dumpen van elke fase mogelijk.

-E Bewerk de broncode voor, maar compileer niet, zoals bij 'gcc -E'. Uitvoer is geschreven
uit te standaarden. Pas op voor het inschakelen van foutopsporingsberichten, want deze gaan ook naar:
standaard uit.

--foutlimiet
Sluit af nadat dit aantal fouten of waarschuwingen is opgetreden. Staat standaard op 50.

--exe
Genereer een uitvoerbaar bestand. U moet ook extra .cpp-bestanden doorgeven op de
opdrachtregel die de hoofdlus voor uw simulatie implementeert.

-F filet
Lees het opgegeven bestand en doe alsof alle tekst erin als opdracht is opgegeven
lijn parameters. Alle relatieve paden zijn relatief ten opzichte van de map met de
opgegeven bestand. Zie ook -f. Opmerking -F is vrij standaard in alle Verilog-tools.

-f filet
Lees het opgegeven bestand en doe alsof alle tekst erin als opdracht is opgegeven
lijn parameters. Alle relatieve paden zijn relatief ten opzichte van de huidige map. Zie ook
-F. Opmerking -f is vrij standaard in alle Verilog-tools.

Het bestand kan // opmerkingen bevatten die aan het einde van de regel worden genegeerd. Elke $VAR,
$(VAR) of ${VAR} wordt vervangen door de opgegeven omgevingsvariabele.

--gdb
Voer Verilator uit onder een interactieve GDB (of VERILATOR_GDB omgevingsvariabele)
waarde) sessie. Zie ook --gdbbt.

--gdbbt
Als --debug is opgegeven, voer dan Verilator uit onder een GDB-proces en druk een backtrace af
bij afsluiten, verlaat dan onmiddellijk GDB. Zonder --debug of als GDB niet lijkt te werken,
deze vlag wordt genegeerd. Bedoeld voor het eenvoudig maken van backtraces door gebruikers; anders
zie de --gdb vlag.

--help
Toont dit bericht en de programmaversie en sluit af.

-Idir
Zie -y.

--if-diepte waarde
Zelden nodig. Stel de diepte in waarop de IFDEPTH-waarschuwing zal afgaan, standaard ingesteld op 0
waardoor deze waarschuwing wordt uitgeschakeld.

+incdir+dir
Zie -y.

--rem-sim
Zelden nodig. Maak een functie "inhibitSim(bool)" om evaluatie in en uit te schakelen.
Hierdoor kan een testbank op een hoger niveau modules uitschakelen die niet belangrijk zijn in een
gegeven simulatie, zonder dat u de SystemC-modules opnieuw hoeft te compileren of wijzigen
geïnstantieerd.

--inline-multi waarde
Stem de inlining van modules af. De standaardwaarde van 2000 geeft aan dat tot 2000 nieuwe
bewerkingen kunnen aan het model worden toegevoegd door inlining, indien meer dan dit aantal
bewerkingen zou resulteren, is de module niet inline. Grotere waarden, of een waarde <= 1
alles inline, zal leiden tot langere compileertijden, maar mogelijk sneller
looptijden. Deze instelling wordt genegeerd voor zeer kleine modules; dat zullen ze altijd zijn
inline, indien toegestaan.

-LDFLAGS vlaggen
Voeg gespecificeerde C linker-vlaggen toe aan de gegenereerde makefiles. Wanneer make wordt uitgevoerd op de
gegenereerde makefile deze worden doorgegeven aan de C++ linker (ld) *na* de primaire
bestand dat wordt gekoppeld. Deze vlag heet -LDFLAGS omdat dat de traditionele naam is in
simulatoren; het had beter LDLIBS genoemd kunnen worden, want dat is de Makefile-variabele
het controleert. (In Make staat LDFLAGS voor het eerste object, LDLIBS erna. -L
bibliotheken moeten in de Make-variabele LDLIBS staan, niet LDFLAGS.)

--taal waarde
Een synoniem voor "--default-langauge", voor compatibiliteit met andere tools en eerder
versies van Verilator.

+libext+ext+ext...
Geef de extensies op die moeten worden gebruikt voor het zoeken naar modules. Als bijvoorbeeld module
x wordt verwezen, kijk in x.ext. Opmerking +libext+ is redelijk standaard in Verilog
gereedschap. Standaard ingesteld op .v en .sv.

--alleen-pluizen
Controleer de bestanden alleen op lintovertredingen, maak geen andere uitvoer.

Misschien wilt u ook de -Wall-optie om berichten in te schakelen die als stilistisch worden beschouwd
en standaard niet ingeschakeld.

Als het ontwerp niet volledig geverifieerd moet worden, zie dan ook de --bbox-sys en
--bbox-unsup opties.

--MMD
Maak het maken van .d-afhankelijkheidsbestanden mogelijk, die worden gebruikt voor detectie van afhankelijkheid, vergelijkbaar met
gcc -MMD optie. Standaard ingeschakeld, gebruik --no-MMD om uit te schakelen.

--Kamerlid
Wanneer u .d-afhankelijkheidsbestanden maakt met --MMD, maak dan valse doelen. gelijk aan gcc -MP
optie.

--Mdir directory
Specificeert de naam van de Make-objectdirectory. Alle gegenereerde bestanden worden geplaatst
in deze map. Indien niet gespecificeerd, wordt "obj_dir" gebruikt. De map wordt aangemaakt als
het bestaat niet en de bovenliggende mappen bestaan; maak anders handmatig de Mdir
voordat u Verilator belt.

--mod-voorvoegsel topnaam
Specificeert de naam die moet worden toegevoegd aan alle klassen op een lager niveau. Standaard ingesteld op hetzelfde als
--voorvoegsel.

--no-clk
Voorkom dat het gespecificeerde signaal wordt gemarkeerd als klok. Zie "--clk".

--geen-pins64
Achterwaarts compatibel alias voor "--pins-bv 33".

--no-skip-identiek
Zelden nodig. Schakelt het overslaan van de uitvoering van Verilator uit als alle bronbestanden zijn
identiek, en alle uitvoerbestanden bestaan ​​met nieuwere datums.

+notificatiecontroles
Genegeerd vanwege compatibiliteit met andere simulatoren.

-O0 Schakelt optimalisatie van het model uit.

-O3 Maakt langzame optimalisaties mogelijk voor de code die Verilator zelf genereert (in tegenstelling tot
"-CFLAGS -O3" die de optimalisatie van de C-compiler beïnvloedt. -O3 kan simulatie verminderen
runtimes ten koste van compileertijd. Dit stelt momenteel --inline-mult -1 in.

-Ooptimalisatie-letter
Zelden nodig. Schakelt een specifieke optimalisatie in of uit, met de optimalisatie
geselecteerd op basis van de doorgegeven brief. Een kleine letter schakelt een optimalisatie uit, en
hoofdletter maakt het mogelijk. Dit is alleen bedoeld voor foutopsporing; zie de bron
code voor versie-afhankelijke toewijzingen van optimalisaties naar -O letters.

-O
Geef de naam op voor het uiteindelijke uitvoerbare bestand dat is gebouwd als --exe wordt gebruikt. Standaard ingesteld op de
--prefix indien niet gespecificeerd.

--geen-bestelling-klok-vertraging
Zelden nodig. Schakelt een bugfix uit voor het bestellen van de klok ingeschakeld met vertraagd
opdrachten. Deze vlag mag alleen worden gebruikt als de ontwikkelaars dit voorstellen.

--output-splitsing bytes
Maakt het splitsen van de output .cpp/.sp-bestanden in meerdere outputs mogelijk. Wanneer een C++-bestand
het opgegeven aantal bewerkingen overschrijdt, wordt een nieuw bestand gemaakt bij de volgende
functie grens. Bovendien worden langzame routines in __Slow-bestanden geplaatst.
Dit versnelt de compilatie doordat optimalisatie kan worden uitgeschakeld op de langzame routines,
en de overige bestanden kunnen op parallelle machines worden gecompileerd. --output-split gebruiken
zou slechts een onbeduidende invloed op de prestaties moeten hebben. Met GCC 3.3 op een 2GHz Opteron,
--output-split 20000 zal resulteren in een splitsing in ongeveer één minuut compileren
brokken.

--output-split-cfuncs verklaringen
Maakt het splitsen van functies in de .cpp/.sp-uitvoerbestanden in meerdere functies mogelijk.
Wanneer een gegenereerde functie het opgegeven aantal bewerkingen overschrijdt, wordt een nieuwe functie
zal gemaakt worden. Met --output-split stelt dit GCC in staat om sneller te compileren, tegen een
klein prestatieverlies dat erger wordt naarmate de split-waarden afnemen. Let daar op
deze optie is sterker dan --output-split in die zin dat --output-split niet
splitsen in een functie.

--output-split-ctrace verklaringen
Maakt het splitsen van traceerfuncties in de uitvoer .cpp/.sp-bestanden in meerdere mogelijk
functies. Standaard ingesteld op dezelfde instelling als --output-split-cfuncs.

-P Schakel met -E het genereren van `lijnmarkeringen en lege regels uit, vergelijkbaar met de GCC -P-vlag.

--pinnen64
Achterwaarts compatibel alias voor "--pins-bv 65". Merk op dat het een 65 is, geen 64.

--pins-bv Breedte
Specificeert SystemC inputs/outputs groter dan of gelijk aan Breedte beetjes breed moeten
gebruik sc_bv's in plaats van uint32/vluit64_t's. De standaard is "--pins-bv 65". versies
voordat Verilator 3.671 standaard op "--pins-bv 33" stond. Hoe meer sc_bv wordt gebruikt, hoe slechter
voor prestaties. Gebruik het kenmerk "/*verilator sc_bv*/" om specifieke poorten te selecteren
wees sc_bv.

--pins-sc-uint
Specificeert SystemC inputs/outputs van meer dan 2 bits breed moeten sc_uint . gebruiken
tussen 2 en 64. Wanneer gecombineerd met de "--pins-sc-biguint" combinatie, resulteert dit
in sc_uint wordt gebruikt tussen 2 en 64 en sc_biguint wordt gebruikt tussen 65 en 512.

--pins-sc-biguint
Specificeert SystemC inputs/outputs van meer dan 65 bits breed sc_biguint
tussen 65 en 512, en sc_bv vanaf 513. In combinatie met de
"--pins-sc-uint" combinatie, resulteert dit in sc_uint wordt gebruikt tussen 2 en 64 en
sc_biguint wordt gebruikt tussen 65 en 512.

--pins-uint8
Specificeert SystemC inputs/outputs die kleiner zijn dan de --pins-bv instelling en 8
bits of minder moeten uint8_t gebruiken in plaats van uint32_t. Evenzo zullen pinnen met een breedte van 9-16:
gebruik uint16_t in plaats van uint32_t.

--pijp-filter commando
Zelden nodig en experimenteel. Verilator spawnt het gespecificeerde commando als a
subprocess-pipe, zodat de opdracht aangepaste bewerkingen kan uitvoeren op de Verilog-code
voordat het Verilator bereikt.

Voordat elk Verilog-bestand wordt gelezen, geeft Verilator de bestandsnaam door aan het subproces'
stdin met 'read_verilog " "'. Het filter kan dan het bestand lezen en uitvoeren
elke gewenste filtering en voert de nieuwe bestandsinhoud terug naar Verilator op stdout
met 'Content-Length'. Uitvoer naar stderr van het filter gaat door naar Verilator's
stdout en als het filter wordt afgesloten met een status die niet nul is, wordt Verilator beëindigd. Zie de
t/t_pipe_filter test voor een voorbeeld.

Om de uitvoer van het filter te debuggen, probeert u de optie -E te gebruiken om voorverwerkte uitvoer te zien.

--voorvoegsel topnaam
Specificeert de naam van de hoogste klasse en makefile. Standaard ingesteld op V toegevoegd aan
de naam van de --top-module switch, of V toegevoegd aan de eerste Verilog-bestandsnaam
doorgegeven op de opdrachtregel.

--profiel-cfuncs
Wijzig de gemaakte C++-functies om profilering te ondersteunen. De functies zullen zijn:
geminimaliseerd om één "basis" -statement te bevatten, over het algemeen een enkel blok of draad
uitspraak. (Merk op dat dit het uitvoerbare bestand met ~5% vertraagt.) Bovendien is de
functienaam krijgt het achtervoegsel met de basisnaam van de Verilog-module en het regelnummer
de verklaring vandaan kwam. Hierdoor kunnen gprof- of oprofile-rapporten worden gecorreleerd met
de originele Verilog-bronverklaringen.

--privaat
Tegenover --public. Is de standaard; deze optie bestaat voor achterwaartse compatibiliteit.

--openbaar
Dit is alleen voor historisch debug-gebruik. Het gebruik ervan kan leiden tot een verkeerde simulatie van
gegenereerde klokken.

Verklaart alle seinen en modules openbaar. Hierdoor worden signaaloptimalisaties uitgeschakeld als:
als alle signalen een /*verilator public*/ opmerkingen en inlining hadden. Dit zal ook draaien
off inlining alsof alle modules een /*verilator public_module*/ hebben, tenzij de module
specifiek ingeschakeld met /*verilator inline_module*/.

--rapport-unoptflat
Extra diagnostiek voor UNOPTFLAT-waarschuwingen. Dit omvat voor elke lus de 10 breedste
variabelen in de lus, en de 10 meest uitgewaaierde variabelen in de lus. Dit zijn
kandidaten voor het splitsen in meerdere variabelen om de lus te doorbreken.

Produceert bovendien een GraphViz DOT-bestand van de volledige sterk verbonden componenten
binnen de bron die bij elke lus hoort. Dit wordt geproduceerd ongeacht of:
--dump-boom is ingesteld. Dergelijke grafieken kunnen helpen bij het analyseren van het probleem, maar kunnen zeer
groot inderdaad.

Er bestaan ​​verschillende commando's voor het bekijken en manipuleren van DOT-bestanden. bijvoorbeeld de stip
commando kan worden gebruikt om een ​​DOT-bestand naar een PDF te converteren om af te drukken. Bijvoorbeeld:

punt -Tpdf -O Vt_unoptflat_simple_2_35_unoptflat.dot

genereert een PDF Vt_unoptflat_simple_2_35_unoptflat.dot.pdf uit het DOT-bestand.

--op te slaan
Schakel het opnemen van functies voor opslaan en herstellen in het gegenereerde model in.

De gebruikerscode moet dan een VerilatedSerialize- of VerilatedDeserialze-object maken:
het aanroepen van de << of >> operators op het gegenereerde model en alle andere gegevens het proces
moet worden bewaard/gerestaureerd. Bijvoorbeeld:

void save_model(const char* bestandsnaamp) {
VerilatedOpslaan os;
os.open(bestandsnaam);
os << main_time; // gebruikerscode moet de tijdstempel opslaan, enz.
os << *top;
}
void restore_model(const char* bestandsnaamp) {
VerilatedHerstel os;
os.open(bestandsnaam);
os >> main_time;
os >> *top;
}

--sc
Specificeert de uitvoermodus van SystemC; zie ook --cc.

--statistieken
Creëert een dumpbestand met statistieken over het ontwerp in {prefix}__stats.txt.

--stats-vars
Creëert meer gedetailleerde statistieken, inclusief een lijst van alle variabelen op grootte (plain
--stats geeft alleen een telling). Zie --stats, wat hierdoor wordt geïmpliceerd.

-sv Specificeert SystemVerilog taalfuncties moeten worden ingeschakeld; gelijk aan "--taal
1800-2005". Deze optie is standaard geselecteerd, het bestaat voor compatibiliteit met:
andere simulatoren.

+systeemverilogext+ext
Een synoniem voor "+1800-2012ext+"ext.

-topmodule topnaam
Wanneer de invoer Verilog meer dan één module op het hoogste niveau bevat, specificeert de naam van
de Verilog-module op het hoogste niveau om de top te worden, en stelt de standaard in voor if --prefix
het is niet gebruikt. Dit is niet nodig bij standaard ontwerpen met slechts één blad.

--spoor
Voegt golfvormtraceercode toe aan het model. Verilator genereert extra
{prefix}__Trace*.cpp-bestanden die moeten worden gecompileerd. In aanvulling
verilated_vcd_sc.cpp (voor SystemC-traceringen) of verilated_vcd_c.cpp (voor beide) moet zijn
gecompileerd en gekoppeld. Als u de door Verilator gegenereerde Makefiles gebruikt, zijn deze:
toegevoegd als brondoelen voor u. Als u de Verilator-makefiles niet gebruikt, kunt u:
zult u deze handmatig aan uw Makefile moeten toevoegen.

Als tracering is gecompileerd, kan dit leiden tot kleine prestatieverliezen, zelfs wanneer:
golfvormen zijn niet ingeschakeld tijdens de uitvoering van het model.

--spoor-diepte niveaus
Geef het aantal niveaus diep op om tracering mogelijk te maken, bijvoorbeeld --trace-level 1 tot
zie alleen de signalen van het hoogste niveau. Standaard ingesteld op het hele model. Een klein aantal gebruiken
zal de zichtbaarheid verminderen, maar de runtime en de traceerbestandsgrootte aanzienlijk verbeteren.

--trace-max-array diepte
Zelden nodig. Specificeer de maximale arraydiepte van een signaal dat getraceerd kan worden.
Standaard ingesteld op 32, omdat het traceren van grote arrays de getraceerde simulaties aanzienlijk kan vertragen.

--trace-max-breedte Breedte
Zelden nodig. Specificeer de maximale bitbreedte van een signaal dat getraceerd kan worden.
Standaard ingesteld op 256, omdat het traceren van grote vectoren de getraceerde simulaties aanzienlijk kan vertragen.

--no-trace-params
Schakel het traceren van parameters uit.

--trace-structuren
Schakel tracering in om de naam van verpakte structuur-, unie- en verpakte matrixvelden weer te geven,
in plaats van een enkele gecombineerde gepakte bus. Vanwege beperkingen in het VCD-bestandsformaat kan dit:
resulteren in aanzienlijk langzamere traceertijden en grotere traceerbestanden.

--trace-underscore
Schakel tracering in van signalen die beginnen met een onderstrepingsteken. Normaal gesproken zijn deze signalen:
niet uitgevoerd tijdens het traceren. Zie ook --coverage-underscore.

-Uvar
Definieert het gegeven preprocessor-symbool.

--uitrollen-telling loops
Zelden nodig. Specificeert het maximum aantal lus-iteraties dat kan worden uitgerold.
Zie ook BLKLOOPINIT-waarschuwing.

--unroll-stmts verklaringen
Zelden nodig. Specificeert het maximum aantal instructies in een lus voor die lus om
worden uitgerold. Zie ook BLKLOOPINIT-waarschuwing.

--ongebruikte-regexp regexp
Zelden nodig. Specificeert een eenvoudige regexp met * en ? dat als een signaalnaam overeenkomt
zal de ONGEBRUIKTE waarschuwing onderdrukken. Standaard ingesteld op "*ongebruikt*". Als u het instelt op "" wordt uitgeschakeld
bij elkaar passen.

-V Toont de uitgebreide versie, inclusief configuratie-informatie gecompileerd in
verificateur. (Vergelijkbaar met perl -V.)

-v bestandsnaam
Lees de bestandsnaam als een Verilog-bibliotheek. Alle modules in het bestand kunnen worden gebruikt om:
los celinstanties op in de module op het hoogste niveau, anders genegeerd. Opmerking -v is redelijk
standaard voor alle Verilog-tools.

+verilog1995ext+ext
+verilog2001ext+ext
Synoniemen voor "+1364-1995ext+"ext en "+1364-2001ext+"ext respectievelijk

-Muur
Schakel alle waarschuwingen in, inclusief waarschuwingen in codestijlen die normaal gesproken worden uitgeschakeld door:
standaard.

-fout-bericht
Zet het opgegeven waarschuwingsbericht om in een foutbericht. Dit is over het algemeen om
gebruikers ontmoedigen om bijvoorbeeld belangrijke regels voor de hele site te overtreden
"-Werror-NOUNOPTFLAT".

-Wtoekomst-bericht
Zelden nodig. Onderdruk onbekende Verilator-opmerkingen of waarschuwingsberichten met het gegeven
berichtcode. Dit wordt gebruikt om code toe te staan ​​die met pragma's is geschreven voor een latere versie van
Verilator om onder een oudere versie te draaien; voeg -Wfuture- argumenten toe voor elke berichtcode
of opmerking dat de nieuwe versie ondersteunt die de oudere versie niet ondersteunt.

-Wnee-bericht
Schakel het opgegeven waarschuwingsbericht uit. Dit overschrijft alle lint_on-richtlijnen in
de bron, dwz de waarschuwing wordt nog steeds niet afgedrukt.

-Wno-lint
Schakel alle waarschuwingsberichten met betrekking tot pluisjes en alle stijlwaarschuwingen uit. Dit is equivalent
naar "-Wno-ALWCOMBORDER -Wno-CASEINCOMPLEET -Wno-CASEOVERLAP -Wno-CASEX -Wno-CASEWITHX
-Wno-CMPCONST -Wno-ENDLABEL -Wno-IMPLICIET -Wno-LITENDIAN -Wno-PINCONNECTEMPTY
-Wno-PINMISSING -Wno-SYNCASYNCNET -Wno-UNDRIVEN -Wno-UNSIGNED -Wno-UNUSED -Wno-BREEDTE"
plus de lijst die wordt weergegeven voor Wno-stijl.

Het wordt ten zeerste aanbevolen om uw code op te schonen in plaats van deze optie te gebruiken, het is:
alleen bedoeld om te worden gebruikt bij het uitvoeren van testgevallen van code die van derden is ontvangen.

-Wno-stijl
Schakel alle waarschuwingsberichten met betrekking tot codestijlen uit (let op: ze zijn standaard al
gehandicapt). Dit komt overeen met "-Wno-DECLFILENAME -Wno-DEFPARAM -Wno-INCABSPATH
-Wno-PINCONNECTEMPTY -Wno-PINNOCONNECT -Wno-SYNCASYNCNET -Wno-UNDRIVEN -Wno-ONGEBRUIKT
-Wno-VARHIDDEN".

-Wno-fataal
Wanneer waarschuwingen worden gedetecteerd, drukt u deze af, maar verlaat u de simulator niet.

Het hebben van waarschuwingsberichten in builds is slordig. Het wordt sterk aanbevolen om op te ruimen
uw code, gebruik inline lint_off, of gebruik -Wno-... vlaggen in plaats van deze optie te gebruiken.

-Waarschuwing-bericht
Schakelt het opgegeven waarschuwingsbericht in.

-Wwarn-lint
Schakel alle lintgerelateerde waarschuwingsberichten in (merk op dat ze standaard al zijn ingeschakeld),
maar hebben geen invloed op stijlberichten. Dit komt overeen met "-Wwarn-ALWCOMBORDER
-Wwarn-CASEINCOMPLEET -Wwarn-CASEOVERLAP -Wwarn-CASEX -Wwarn-CASEWITHX -Wwarn-CMPCONST
-Wwarn-ENDLABEL -Wwarn-IMPLICIET -Wwarn-LITENDIAN -Wwarn-PINMISSING -Wwarn-REALCVT
-Wwarn-UNSIGNED -Wwarn-BREEDTE".

-Wwarn-stijl
Schakel alle waarschuwingsberichten met betrekking tot codestijlen in. Dit komt overeen met "-Wwarn
TOEGEWEZEN -Wwarn-DECLFILENAME -Wwarn-DEFPARAM -Wwarn-INCABSPATH -Wwarn-PINNOCONNECT
-Wwarn-SYNCASYNCNET -Wwarn-UNDRIVEN -Wwarn-UNUSED -Wwarn-VARHIDDEN".

--x-toewijzen 0
--x-toewijzen 1
--x-snel toewijzen (standaard)
--x-uniek toewijzen
Bepaalt de waarde met twee statussen die wordt vervangen wanneer een toewijzing aan X wordt aangetroffen.
--x-assign=fast, de standaard, converteert alle X'en naar wat het beste is voor prestaties.
--x-assign=0 converteert alle X'en naar 0's en is ook snel. --x-assign=1 converteert alle X'en naar
1s, dit is bijna net zo snel als 0, maar het is waarschijnlijker dat reset-bugs actief hoog zijn
logica zal vuren. --x-assign=unique zal een functie aanroepen om de waarde te bepalen, dit
maakt randomisatie van alle X's mogelijk om reset-bugs te vinden en is de langzaamste, maar veiligste voor
het vinden van reset-bugs in code.

Als u --x-assign unique gebruikt, wilt u misschien uw generator voor willekeurige getallen zaaien, zoals:
dat elke regressierun een andere randomisatievolgorde krijgt. Gebruik de systeem
zand48() of voor Windows zand() functie om dit te doen. U zult waarschijnlijk ook willen
print alle geselecteerde zaden en codeer om opnieuw uitvoeren met diezelfde seed mogelijk te maken, zodat je kunt
fouten reproduceren.

Notes. Deze optie is alleen van toepassing op variabelen die expliciet zijn toegewezen aan X in de
Verilog-broncode. Beginwaarden van klokken zijn ingesteld op 0 tenzij --x-initial-edge is
gespecificeerd. De beginwaarden van alle andere variabelen voor het vasthouden van de status worden ingesteld alsof
--x-assign unique is opgegeven.

--x-initiële-rand
Maakt emulatie mogelijk van gebeurtenisgestuurde simulators die over het algemeen een voorsprong op a . veroorzaken
overgang van X naar 1 ("posedge") of X naar 0 ("negedge"). Dus de volgende code,
waarbij "rst_n" niet is geïnitialiseerd, zou "res_n" worden ingesteld op "1'b1" wanneer "rst_n" voor het eerst wordt ingesteld
naar nul:

reg res_n = 1'b0;

altijd @(negedge rst_n) begin
if (rst_n == 1'b0) begin
res_n <= 1'b1;
einde
einde

In Verilator krijgen niet-geïnitialiseerde klokken standaard de waarde nul, dus het bovenstaande:
"altijd" blok zou niet worden geactiveerd.

Hoewel het geen goede gewoonte is, zijn er enkele ontwerpen die erop vertrouwen dat XX 0 a . activeert
"negedge", met name in reset-sequenties. Het gebruik van --x-initial-edge met Verilator zal
dit gedrag herhalen. Het zorgt er ook voor dat XX 1 een "posedge" activeert.

Notes. Sommige gebruikers hebben gemeld dat het gebruik van deze optie de convergentie kan beïnvloeden, en dat:
het kan nodig zijn om --converge-limit te gebruiken om het aantal convergentie te vergroten
iteraties. Dit kan een andere indicatie zijn van problemen met het gemodelleerde ontwerp dat:
moet worden aangepakt.

-y dir
Voeg de map toe aan de lijst met mappen waarnaar moet worden gezocht inclusief bestanden
of bibliotheken. De drie vlaggen -y, +incdir en -I hebben hetzelfde effect; +incdir en +y
zijn redelijk standaard in alle Verilog-tools, terwijl -I een alias is voor GCC-compatibiliteit.

Verilator is standaard ingesteld op de huidige map ("-y .") en elke gespecificeerde --Mdir, hoewel
deze standaardpaden worden gebruikt na door de gebruiker opgegeven mappen. Hierdoor kan '-y
"$(pwd)"' te gebruiken als absolute bestandsnamen gewenst zijn voor foutmeldingen in plaats van
relatieve bestandsnamen.

VOORBEELD C + + EXECUTIE


We zullen dit voorbeeld in C++ compileren.

mkdir test_our
cd test_onze

kat < onze.v
module onze;
begin begin $display("Hallo wereld"); $afwerking; einde
endmodule
EOF

kat < sim_main.cpp
#include "Vour.h"
#include "verilated.h"
int main(int argc, char **argv, char **env) {
Geverifieerd::commandArgs(argc, argv);
Vour* top = nieuw Vour;
while (!Verilated::gotFinish()) { top->eval(); }
boven verwijderen;
afrit(0);
}
EOF

Als u Verilator hebt geïnstalleerd vanuit bronnen of een tarball, maar niet als onderdeel van uw besturingsprogramma
systeem (als een RPM), moet u eerst naar de kit wijzen:

export VERILATOR_ROOT=/pad/naar/waar/verilator/was/geïnstalleerd
export PATH=$VERILATOR_ROOT/bin:$PATH

Nu draaien we Verilator op ons kleine voorbeeld.

verilator -Wall --cc our.v --exe sim_main.cpp

We kunnen de broncode zien onder de map "obj_dir". Zie het gedeelte BESTANDEN hieronder voor:
beschrijvingen van enkele van de bestanden die zijn gemaakt.

ls -l obj_dir

We kunnen het dan compileren

cd obj_dir
make -j -f Vour.mk Vour

(Verilator bevatte een standaard compileerregel en linkregel, aangezien we --exe hebben gebruikt en a . hebben doorgegeven
.cpp-bestand op de Verilator-opdrachtregel. U kunt ook uw eigen compileerregels schrijven, zoals:
we laten het zien in de SYSTEMC-sectie.)

En nu voeren we het uit

cd ..
obj_dir/Vour

En we krijgen als output

Hallo Wereld
- onze.v:2: Verilog $finish

Echt, je kunt beter een Makefile schrijven om dit allemaal voor je te doen. Dan, wanneer uw
bronwijzigingen, worden al deze stappen automatisch uitgevoerd. Zie de test_c directory in
bijvoorbeeld de distributie.

VOORBEELD SYSTEEMC EXECUTIE


Dit is een voorbeeld dat lijkt op het bovenstaande, maar met SystemC.

mkdir test_onze_sc
cd test_onze_sc

kat < onze.v
module onze (clk);
invoer clk; // Klok is vereist om de eerste activering te krijgen
altijd @ (posedge clk)
begin $display("Hallo wereld"); $afwerking; einde
endmodule
EOF

kat < sc_main.cpp
#include "Vour.h"
int sc_main(int argc, char **argv) {
Geverifieerd::commandArgs(argc, argv);
sc_clock clk ("clk", 10, 0.5, 3, waar);
Voor* boven;
top = nieuwe Vour("top"); // SP_CELL (boven, Vour);
top->clk(clk); // SP_PIN (top, clk, clk);
terwijl (!Verilated::gotFinish()) { sc_start(1, SC_NS); }
boven verwijderen;
afrit(0);
}
EOF

Als u Verilator hebt geïnstalleerd vanuit bronnen of een tarball, maar niet als onderdeel van uw besturingsprogramma
systeem (als een RPM), moet u eerst naar de kit wijzen:

export VERILATOR_ROOT=/pad/naar/waar/verilator/was/geïnstalleerd
export PATH=$VERILATOR_ROOT/bin:$PATH

Nu draaien we Verilator op ons kleine voorbeeld.

verilator -Wall --sc onze.v

We kunnen het dan compileren

make -j -f Vour.mk Vour__ALL.a
make -j -f Vour.mk ../sc_main.o verilated.o

En link met SystemC. Merk op dat uw pad naar de bibliotheken kan variëren, afhankelijk van de
besturingssysteem.

export SYSTEMC_LIBDIR=/pad/naar/waar/libsystemc.a/bestaat
exporteren LD_LIBRARY_PATH=$SYSTEMC_LIBDIR:$LD_LIBRARY_PATH
# Mogelijk nodig als SystemC 2.3.0
exporteer SYSTEMC_CXX_FLAGS=-pthread

g++ -L$SYSTEMC_LIBDIR ../sc_main.o Vour__ALL*.o geverifieerd.o \
-o Vour -lsysteemc

En nu voeren we het uit

cd ..
obj_dir/Vour

En we krijgen dezelfde output als het C++-voorbeeld:

Hallo Wereld
- onze.v:2: Verilog $finish

Echt, je kunt beter een Makefile gebruiken om dit allemaal voor je te doen. Dan, wanneer uw bron
verandert, worden al deze stappen automatisch uitgevoerd. Zie de test_sc directory in de
distributie bijvoorbeeld.

BENCHMARKING & OPTIMIZATION


Voor de beste prestaties voert u Verilator uit met de vlaggen "-O3 --x-assign=fast --noasset". De
-O3-vlag vereist langere compileertijden en --x-assign=fast kan het risico op
reset bugs in ruil voor prestaties; zie bovenstaande documentatie voor deze vlaggen.

Kleine wijzigingen in de Verilog-code kunnen ook grote winsten opleveren. U mag geen UNOPTFLAT hebben
waarschuwingen van Verilator. Het oplossen van deze waarschuwingen kan leiden tot enorme verbeteringen; één gebruiker
hun enige UNOPTFLAT-waarschuwing gerepareerd door een eenvoudige wijziging aan te brengen in een klokvergrendeling die wordt gebruikt om te poorten
klokken en behaalde een prestatieverbetering van 60%.

Verder hangen de prestaties van een Verilated-model grotendeels af van uw C++-compiler en
grootte van de caches van uw CPU.

Standaard is optimalisatie uitgeschakeld voor het bestand lib/verilated.mk. Dit is voor de
voordeel van nieuwe gebruikers, omdat het de compile-tijden verbetert ten koste van de runtimes. Toevoegen
optimalisatie als standaard, stel een van de drie variabelen in, OPT, OPT_FAST of OPT_SLOW
lib/verilated.mk. Of gebruik de -CFLAGS en/of -LDFLAGS optie op het verilator commando
regel om de vlaggen rechtstreeks door te geven aan de compiler of linker. Of, slechts voor één run, pass
ze op de opdrachtregel om het volgende te maken:

make OPT_FAST="-O2" -f Vour.mk Vour__ALL.a

OPT_FAST specificeert optimalisaties voor die programma's die deel uitmaken van het snelle pad, meestal
code die elke cyclus wordt uitgevoerd. OPT_SLOW specificeert optimalisaties voor slow-path-bestanden
(plus tracering), die slechts zelden worden uitgevoerd, maar toch lang duren om te compileren met
optimalisatie aan. OPT specificeert algehele optimalisatie en is van invloed op alle compilaties, inclusief:
die OPT_FAST en OPT_SLOW beïnvloeden. Gebruik voor de beste resultaten OPT="-O2", en koppel met
"-statisch". Bijna dezelfde resultaten kunnen worden verkregen met veel betere compileertijden met
OPT_FAST="-O1 -fstrict-aliasing". Hogere optimalisatie zoals "-O3" kan helpen, maar gcc
compilatietijden kunnen buitensporig zijn onder O3, zelfs bij middelgrote ontwerpen. Als alternatief, sommige
grotere ontwerpen rapporteren betere prestaties met "-Os".

Helaas kan het gebruik van de optimizer met SystemC-bestanden ertoe leiden dat compilaties duren
enkele minuten. (De SystemC-bibliotheken hebben veel kleine inline-functies die de
compiler noten.)

Gebruik voor de beste resultaten GCC 3.3 of nieuwer. GCC 3.2 en eerder hebben optimalisatiebugs in de buurt
pointer aliasing detectie, wat kan resulteren in 2x prestatieverlies.

Als u veel simulaties op een enkele compilatie wilt uitvoeren, onderzoek dan feedbackgestuurde
compilatie. Met GCC, met behulp van -fprofile-arcs, zullen -fbranch-probabilities opleveren
nog eens 15% of zo.

Moderne compilers ondersteunen ook link-time-optimalisatie (LTO), wat vooral kan helpen als:
je linkt in DPI-code. Om LTO op GCC in te schakelen, geeft u "-flto" door in zowel de compilatie als de link.
Opmerking LTO kan bij grote ontwerpen buitensporige compileertijden veroorzaken.

Als je je eigen makefiles gebruikt, wil je misschien de geverifieerde code compileren met:
-DVL_INLINE_OPT=inline. Dit zal inline functies, maar dit vereist dat alle cpp
bestanden worden gecompileerd in een enkele compiler-run.

U kunt verdere afstemmingsmogelijkheden ontdekken door de Verilog-code te profileren. Gebruik maken van
Verilator's --profile-cfuncs, dan GCC's -g -pg. U kunt dan oprofile of . uitvoeren
gprof om te zien waar in de C++-code de tijd wordt besteed. Voer de gprof-uitvoer door
verilator_profcfunc en het zal u vertellen op welke Verilog-regelnummers de meeste van de
tijd wordt besteed.

Als u klaar bent, laat de auteur dan de resultaten weten. Ik hou ervan om in de gaten te houden hoe Verilator
vergelijkt, en kan aanvullende verbeteringen voorstellen.

Gebruik verilator online met behulp van onworks.net-services


Gratis servers en werkstations

Windows- en Linux-apps downloaden

Linux-commando's

Ad




×
advertentie
❤️Koop, boek of koop hier — het is gratis, en zo blijven onze diensten gratis.