Amazon Best VPN GoSearch

Favicon OnWorks

verilator - Dalam talian di Awan

Jalankan verilator dalam penyedia pengehosan percuma OnWorks melalui Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS

Ini ialah pengesah perintah yang boleh dijalankan dalam penyedia pengehosan percuma OnWorks menggunakan salah satu daripada berbilang stesen kerja dalam talian percuma kami seperti Ubuntu Online, Fedora Online, emulator dalam talian Windows atau emulator dalam talian MAC OS.

JADUAL:

NAMA


Verilator - Tukar kod Verilog kepada C++/SystemC

SINOPSIS


verilator --bantuan
verilator --versi
verilator --cc [options] [top_level.v]... [opt_c_files.cpp/c/cc/a/o/so]
verilator --sc [options] [top_level.v]... [opt_c_files.cpp/c/cc/a/o/so]
verilator --lint-only [top_level.v]...

DESCRIPTION


Verilator menukar kod Verilog yang boleh disintesis (bukan tingkah laku), ditambah beberapa Sintesis,
SystemVerilog dan subset kecil pernyataan Verilog AMS, ke dalam kod C++ atau SystemC. Ia
bukanlah simulator lengkap, tetapi pengkompil.

Verilator digunakan dengan parameter yang serupa dengan GCC, Cadence Verilog-XL/NC-Verilog, atau
VCS Synopsys. Ia membaca kod Verilog yang ditentukan, menyelitkannya dan menambah secara pilihan
liputan dan kod pengesanan bentuk gelombang. Untuk format C++ dan SystemC, ia mengeluarkan .cpp dan .h
fail.

Fail yang dibuat oleh Verilator kemudiannya disusun dengan C++. Pengguna menulis sedikit C++
fail pembalut, yang menjadikan modul peringkat teratas, dan menghantar nama fail ini pada fail
baris arahan. Fail C ini disusun dalam C++ dan dipautkan dengan fail Disahkan.

Boleh laku yang terhasil akan melakukan simulasi sebenar.

Untuk bermula, lompat ke bawah ke "CONTOH C++ PELAKSANAAN".

ARGUMEN RINGKASAN


Ini ialah ringkasan ringkas hujah kepada Verilator. Lihat penerangan terperinci dalam
bahagian seterusnya untuk maklumat lanjut.

{file.v} Nama fail peringkat teratas Verilog
{file.c/cc/cpp} Fail C++ pilihan untuk dihimpun
{file.a/o/so} Fail C++ pilihan untuk dipautkan

+1364-1995ext+ Gunakan Verilog 1995 dengan sambungan fail
+1364-2001ext+ Gunakan Verilog 2001 dengan sambungan fail
+1364-2005ext+ Gunakan Verilog 2005 dengan sambungan fail
+1800-2005ext+ Gunakan SystemVerilog 2005 dengan sambungan fail
+1800-2009ext+ Gunakan SystemVerilog 2009 dengan sambungan fail
+1800-2012ext+ Gunakan SystemVerilog 2012 dengan sambungan fail
--assert Dayakan semua penegasan
--autoflush Flush mengalir selepas semua $paparan
--bbox-sys Blackbox tidak diketahui $system calls
--bbox-nyahsupkan ciri bahasa tidak disokong Blackbox
--bin Gantikan perduaan Verilator
-CFLAGS Bendera pengkompil C++ untuk makefile
--cc Cipta keluaran C++
--cdc Analisis persilangan domain Jam
--clk Tandakan isyarat yang ditentukan sebagai jam
--penyusun Tala untuk pengkompil C++ yang ditentukan
--had-tumpu Tune convergence settle time
--liputan Dayakan semua liputan
--coverage-line Dayakan liputan talian
--coverage-toggle Dayakan liputan togol
--coverage-user Dayakan liputan pengguna SVL
--coverage-underscore Dayakan liputan _signals
-D [= ] Tetapkan takrifan prapemproses
--debug Dayakan nyahpepijat
--debug-check Dayakan penegasan penyahpepijatan
--debugi Dayakan penyahpepijatan pada tahap tertentu
--debugi- Dayakan penyahpepijatan fail sumber pada tahap
--bahasa lalai Bahasa lalai untuk dihuraikan
+takrifkan+ = Tetapkan takrifan prapemproses
--dump-tree Dayakan lambakan fail .tree
--dump-treei Dayakan lambakan fail .tree pada tahap
--buang-pokok- Dayakan lambakan fail .tree pada fail sumber pada tahap
-E Praproses, tetapi jangan susun
--had-ralat Batalkan selepas bilangan ralat ini
--exe Pautan untuk mencipta boleh laku
-F Menghuraikan pilihan daripada fail, secara relatif
-f Menghuraikan pilihan daripada fail
--gdb Jalankan Verilator di bawah GDB secara interaktif
--gdbbt Jalankan Verilator di bawah GDB untuk jejak belakang
--help Paparkan bantuan ini
-saya Direktori untuk mencari termasuk
--jika-dalam Tune amaran IFDEPTH
+incdir+ Direktori untuk mencari termasuk
--inhibit-sim Cipta fungsi untuk mematikan sim
--inline-mult Laras modul sebaris
-LDFLAGS Bendera pra-objek pemaut untuk makefile
-LDLIBS Bendera perpustakaan pemaut untuk makefile
--bahasa Standard bahasa lalai untuk dihuraikan
+bebas+ +[ext]... Sambungan untuk mencari modul
--lint-only Lint, tetapi jangan buat output
--MMD Cipta fail pergantungan .d
--MP Cipta sasaran pergantungan palsu
--Mdir Nama direktori objek output
--mod-prefix Nama untuk diberikan kepada kelas bawahan
--tidak-clk Elakkan menandakan isyarat yang ditentukan sebagai jam
--no-pins64 Jangan gunakan vluint64_t untuk sig 33-64 bit
--no-skip-identical Lumpuhkan melangkau output yang sama
+notimingchecks Diabaikan
-O0 Lumpuhkan pengoptimuman
-O3 Pengoptimuman prestasi tinggi
-O Pengoptimuman yang boleh dipilih
-o Nama boleh laku akhir
--no-order-clock-delay Lumpuhkan pesanan jam membolehkan tugasan
--output-split Pisahkan fail .cpp kepada kepingan
--output-split-cfuncs Pisahkan fungsi .cpp
--output-split-ctrace Membahagikan fungsi pengesanan
-P Lumpuhkan nombor baris dan tempat kosong dengan -E
--pin-bv Tentukan jenis untuk port peringkat atas
--pins-sc-uint Nyatakan jenis untuk port peringkat atas
--pins-sc-biguint Nyatakan jenis untuk port peringkat atas
--pins-uint8 Tentukan jenis untuk port peringkat atas
--penapis paip Tapis semua input melalui skrip
--awalan Nama kelas peringkat atasan
--profile-cfuncs Nama fungsi untuk pemprofilan
--Penyahpepijatan peribadi; lihat dokumen
--Penyahpepijat awam; lihat dokumen
--report-unoptflat Diagnostik tambahan untuk UNOPTFLAT
--savable Dayakan model save-restore
--sc Cipta keluaran SystemC
--stats Cipta fail statistik
--stats-vars Menyediakan statistik tentang pembolehubah
-sv Dayakan penghuraian SystemVerilog
+systemverilogext+ Sinonim untuk +1800-2012ext+
--modul atas Nama modul input peringkat atas
--trace Dayakan penciptaan bentuk gelombang
--kedalaman jejak Kedalaman pengesanan
--trace-max-array Lebar bit maksimum untuk pengesanan
--jejak-max-lebar Kedalaman tatasusunan maksimum untuk pengesanan
--trace-params Dayakan parameter pengesanan
--trace-structs Dayakan pengesanan nama struktur
--trace-underscore Dayakan pengesanan _signals
-U Undefine preprocessor define
--buka gulungan-kiraan Tala lelaran gelung maksimum
--buka gulungan-stmts Tala saiz badan gelung maksimum
--unsed-regexp Tarik isyarat lint yang TIDAK DIGUNAKAN
-V Versi Verbose dan konfigurasi
-v Perpustakaan Verilog
+verilog1995ext+ Sinonim untuk +1364-1995ext+
+verilog2001ext+ Sinonim untuk +1364-2001ext+
-Werror- Tukar amaran kepada ralat
-Wfuture- Lumpuhkan amaran mesej yang tidak diketahui
-Wno- Lumpuhkan amaran
-Wno-lint Lumpuhkan semua amaran lint
-Wno-style Lumpuhkan semua amaran gaya
-Wno-fatal Lumpuhkan jalan keluar maut pada amaran
--x-tugaskan Pada mulanya tetapkan Xs kepada nilai ini
--x-initial-edge Dayakan pencetus tepi X->0 dan X->1 awal
-y Direktori untuk mencari modul

HUJAH


{file.v}
Menentukan fail Verilog yang mengandungi modul teratas untuk Disahkan.

{file.c/.cc/.cpp/.cxx}
Menentukan fail C++ pilihan untuk dipautkan dengan kod Verilog. Jika ada fail C++
ditentukan dengan cara ini, Verilator akan memasukkan peraturan buat yang menjana a modul
boleh dilaksanakan. Tanpa sebarang fail C++, Verilator akan berhenti di modul__SEMUA.perpustakaan,
dan anggap anda akan terus memaut dengan membuat peraturan yang anda tulis sendiri. Lihat juga
-Pilihan CFLAGS.

{file.a/.o/.so}
Menentukan fail objek atau perpustakaan pilihan untuk dipautkan dengan kod Verilog, sebagai a
singkatan untuk -LDFLAGS " ". Jika mana-mana fail dinyatakan dengan cara ini, Verilator
akan memasukkan peraturan buat yang menggunakan fail ini apabila memautkan modul boleh laku.
Ini biasanya hanya berguna apabila digunakan dengan pilihan --exe.

+1364-1995ext+ext
+1364-2001ext+ext
+1364-2005ext+ext
+1800-2005ext+ext
+1800-2009ext+ext
+1800-2012ext+ext
Menentukan standard bahasa yang akan digunakan dengan sambungan nama fail tertentu, ext.

Untuk keserasian dengan simulator lain, lihat juga sinonim "+verilog1995ext+"ext,
"+verilog2001ext+"ext, dan "+systemverilogext+"ext.

Untuk mana-mana fail sumber, bahasa yang ditentukan oleh pilihan ini diutamakan daripada mana-mana
bahasa yang ditentukan oleh pilihan "--default-language" atau "--language".

Pilihan ini berkuat kuasa mengikut susunan yang ditemui. Oleh itu yang berikut akan
gunakan Verilog 1995 untuk "av" dan Verilog 2001 untuk "bv".

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

Bendera ini hanya disyorkan untuk reka bentuk bahasa campuran warisan, sebagai pilihan
pilihan ialah mengedit kod untuk membaiki kata kunci baharu, atau menambah yang sesuai
"`mulakan_kata kunci".

Nota "`begin_keywords" ialah binaan SystemVerilog, yang menentukan hanyalah yang
set kata kunci perlu dikenali. Apa sahaja set yang dipilih, semantiknya akan menjadi
mereka dari SystemVerilog. Sebaliknya "+1364-1995ext+" dsb. tentukan kedua-dua sintaks and
semantik yang akan digunakan.

--tegaskan
Dayakan semua dakwaan.

Lihat juga --x-assign dan --x-initial-edge; tetapan "--x-assign unique" dan/atau
"--x-initial-edge" mungkin diingini.

--autoflush
Selepas setiap $display atau $fdisplay, siram aliran keluaran. Ini memastikan bahawa
mesej akan muncul serta-merta tetapi mungkin mengurangkan prestasi; untuk panggilan prestasi terbaik
"fflush(stdout)" sekali-sekala dalam gelung C utama. Lalai dimatikan, yang akan menimbal
output seperti yang disediakan oleh panggilan stdio C biasa.

--bbox-sys
Kotak hitam sebarang panggilan tugas atau fungsi $sistem yang tidak diketahui. Tugas sistem akan menjadi mudah
NOPed, dan fungsi sistem akan digantikan dengan sifar tidak bersaiz. Hujah kepada sedemikian
fungsi akan dihuraikan, tetapi tidak disemak sebaliknya. Ini mengelakkan ralat apabila
linting dengan kehadiran panggilan PLI khusus syarikat.

--bbox-unsup
Kotak hitam beberapa ciri bahasa yang tidak disokong, pada masa ini jadual UDP dan cmos dan
primitif gerbang tran. Ini mungkin membolehkan linting reka bentuk yang lain walaupun semasa
binaan yang tidak disokong ada.

--bin nama fail
Jarang diperlukan. Gantikan nama fail lalai untuk Verilator itu sendiri. Apabila kebergantungan
(.d) fail dicipta, nama fail ini akan menjadi kebergantungan sumber, supaya a
perubahan dalam binari ini akan membuat membina semula fail output.

-CFLAGS bendera
Tambahkan bendera pengkompil C yang ditentukan pada fail make yang dihasilkan. Apabila membuat dijalankan pada
makefile yang dihasilkan ini akan dihantar kepada pengkompil C++ (gcc/g++/msvc++).

--cc
Menentukan C++ tanpa mod keluaran SystemC; lihat juga --sc.

--CDC
Percubaan. Lakukan beberapa semakan lintasan domain jam dan keluarkan amaran berkaitan
(CDCRSTLOGIC) dan kemudian keluar; jika amaran selain amaran CDC diperlukan buat a
larian kedua dengan --lint-only. Maklumat amaran tambahan juga ditulis kepada
fail {prefix}__cdc.txt.

Pada masa ini hanya menyemak beberapa item yang alat CDC lain terlepas; jika anda berminat
menambahkan lebih banyak pemeriksaan CDC tradisional, sila hubungi pengarang.

--clk nama isyarat
Kadangkala agak sukar untuk Verilator membezakan isyarat jam daripada yang lain
isyarat data. Kadangkala isyarat jam boleh berakhir dalam senarai semak
isyarat yang menentukan sama ada penilaian lanjut diperlukan. Ini akan sangat merosot
prestasi model yang disahkan.

Dengan --clk , pengguna boleh menentukan jam akar ke dalam model, kemudian Verilator
akan menandakan isyarat sebagai jam dan menyebarkan atribut jam secara automatik kepada
isyarat lain yang diperoleh daripada itu. Dengan cara ini, Verilator akan cuba mengelak daripada mengambil
isyarat jam ke dalam senarai semak.

Nota nama isyarat ditentukan oleh laluan hierki RTL. Contohnya, v.foo.bar. Jika
isyarat adalah input kepada modul atas, secara langsung nama isyarat. Jika anda menjumpainya
sukar untuk mencari nama yang tepat, cuba gunakan "/*verilator clocker*/" dalam fail RTL untuk
tandakan isyarat secara langsung.

--penyusun nama penyusun
Mendayakan penalaan dan penyelesaian untuk pengkompil C++ yang ditentukan.

dilafaz
Tune untuk denting. Ini boleh mengurangkan kelajuan pelaksanaan kerana ia membolehkan beberapa penyelesaian
untuk mengelakkan had kod keras bodoh dalam denting. Ini termasuk memecahkan struktur dalam
bagi msvc seperti yang diterangkan di bawah.

gcc Tune untuk Gnu C++, walaupun kod yang dijana harus berfungsi pada hampir mana-mana C++ yang mematuhi
penyusun. Pada masa ini lalai.

msvc
Tune untuk Microsoft Visual C++. Ini boleh mengurangkan kelajuan pelaksanaan kerana ia membolehkan
beberapa penyelesaian untuk mengelakkan had kod keras yang bodoh dalam MSVC++. Ini termasuk
memecahkan ungkapan dalam kurungan bersarang dalam kepada sub-ungkapan untuk dielakkan
ralat C1009, dan memecahkan blok dalam ke dalam fungsi untuk mengelakkan ralat C1061.

--had-tumpu
Jarang diperlukan. Menentukan bilangan maksimum lelaran masa jalan sebelum membuat a
model gagal menumpu ralat. Lalai kepada 100.

--liputan
Mendayakan semua bentuk liputan, alias untuk "--coverage-line --coverage-toggle
--pengguna-liputan".

--garisan-liputan
Menentukan kod analisis liputan baris blok asas harus dimasukkan.

Analisis liputan menambah pernyataan pada setiap titik perubahan aliran kod, iaitu
cawangan penyata IF dan CASE, satu set super Liputan Talian Verilog biasa. Pada
setiap cawangan sedemikian kaunter unik ditambah. Pada akhir ujian, kaunter
bersama-sama dengan nama fail dan nombor baris yang sepadan dengan setiap pembilang ditulis ke dalam
log/liputan.pl.

Verilator secara automatik melumpuhkan liputan cawangan yang mempunyai $stop di dalamnya, kerana ia
diandaikan cawangan $stop mengandungi semakan ralat yang tidak sepatutnya berlaku. A /*verilator
coverage_block_off*/ komen akan melaksanakan fungsi yang sama pada mana-mana kod dalam blok itu
atau di bawah, atau /*verilator coverage_on/coverage_off*/ akan melumpuhkan liputan sekitar talian
kod.

Nota Verilator mungkin lebih mengira blok kombinatorial (tidak jam) apabila blok tersebut
menerima isyarat yang telah menyebabkan amaran UNOPTFLAT dilumpuhkan; untuk paling tepat
keputusan tidak melumpuhkan amaran ini apabila menggunakan perlindungan.

--liputan-togol
Menentukan kod analisis liputan togol isyarat harus dimasukkan.

Setiap bit setiap isyarat dalam modul mempunyai pembilang yang dimasukkan. Kaunter akan
kenaikan pada setiap perubahan tepi bit yang sepadan.

Isyarat yang merupakan sebahagian daripada tugas atau blok mula/akhir dianggap pembolehubah tempatan dan
tidak dilindungi. Isyarat yang bermula dengan garis bawah, adalah integer, atau sangat lebar
(>256 bit jumlah storan merentas semua dimensi) juga tidak dilindungi.

Hierarki dimampatkan, sedemikian rupa sehingga jika modul diwujudkan beberapa kali,
liputan akan dijumlahkan untuk bit itu merentas SEMUA instantiasi modul itu dengan
set parameter yang sama. Modul yang dibuat dengan nilai parameter yang berbeza ialah
dianggap sebagai modul yang berbeza, dan akan dikira secara berasingan.

Verilator membuat keputusan yang paling bijak tentang domain jam isyarat itu
pergi ke, dan hanya mencari tepi dalam domain jam itu. Ini bermakna bahawa tepi mungkin
diabaikan jika diketahui bahawa kelebihan tidak dapat dilihat oleh logik penerima. ini
algoritma mungkin bertambah baik pada masa hadapan. Hasil bersih adalah liputan mungkin lebih rendah daripada
apa yang akan dilihat dengan melihat kesan, tetapi liputan adalah lebih tepat
perwakilan kualiti rangsangan ke dalam reka bentuk.

Mungkin terdapat tepi dikira menghampiri masa sifar semasa model menjadi stabil. Ianya bagus
amalkan kepada sifar semua liputan sejurus sebelum melepaskan tetapan semula untuk mengelakkan pengiraan sedemikian
tingkah laku.

Pasangan komen /*verilator coverage_off/on */ boleh digunakan di sekeliling isyarat yang tidak
perlu analisis togol, seperti RAM dan fail daftar.

--liputan-garis bawah
Dayakan liputan isyarat yang bermula dengan garis bawah. Biasanya, isyarat ini adalah
tidak dilindungi. Lihat juga --trace-underscore.

--pengguna-liputan
Membolehkan liputan berfungsi yang dimasukkan pengguna. Pada masa ini, semua titik liputan berfungsi
ditentukan menggunakan SVA yang mesti didayakan secara berasingan dengan --assert.

Sebagai contoh, pernyataan berikut akan menambah titik liputan, dengan ulasan
"DefaultClock":

DefaultClock: harta penutup (@(posedge clk) cyc==3);

-Dvar=nilai
Mentakrifkan simbol prapemproses yang diberikan, tanpa membenarkan. Sama dengan +define; +takrifkan
adalah agak standard merentas alat Verilog manakala -D ialah alias untuk keserasian GCC.

--nyahpepijat
Pilih imej terbina nyahpepijat bagi Verilator (jika tersedia), dan dayakan lebih banyak dalaman
penegasan (bersamaan dengan "--debug-check"), mesej penyahpepijatan (sama dengan
"--debugi 4"), dan fail dump borang perantaraan (bersamaan dengan "--dump-treei 3").

--debug-check
Jarang diperlukan. Dayakan semakan penegasan penyahpepijatan dalaman, tanpa menukar nyahpepijat
keterlaluan. Didayakan secara automatik apabila --debug ditentukan.

--debugi
--debugi-
Jarang diperlukan - untuk kegunaan pembangun. Tetapkan tahap penyahpepijatan dalaman secara global kepada
tahap nyahpepijat yang ditentukan (1-10) atau tetapkan fail sumber Verilator yang ditentukan kepada
tahap tertentu (cth "--debugi-V3Width 9"). Tahap yang lebih tinggi menghasilkan lebih terperinci
mesej.

--bahasa lalai nilai
Pilih bahasa yang akan digunakan secara lalai apabila pertama kali memproses setiap fail Verilog.
Nilai bahasa mestilah "1364-1995", "1364-2001", "1364-2005", "1800-2005",
"1800-2009" atau "1800-2012".

Sebarang bahasa yang dikaitkan dengan sambungan fail tertentu (lihat pelbagai +langsamb+
pilihan) akan digunakan sebagai keutamaan kepada bahasa yang ditentukan oleh --default-language.

Bendera --default-language hanya disyorkan untuk kod warisan yang menggunakan kod yang sama
bahasa dalam semua fail sumber, kerana pilihan yang lebih baik ialah mengedit kod untuk dibaiki
kata kunci baharu atau tambahkan "`begin_keywords" yang sesuai. Untuk reka bentuk bahasa campuran warisan,
pelbagai +langpilihan ext+ harus digunakan.

Jika tiada bahasa ditentukan, sama ada oleh bendera ini atau +langpilihan ext+, kemudian yang terkini
Bahasa SystemVerilog (IEEE 1800-2012) digunakan.

+takrifkan+var=nilai
+takrifkan+var=nilai+var2=nilai2...
Mentakrifkan simbol prapemproses yang diberikan, atau berbilang simbol jika dipisahkan dengan tambah.
Sama seperti -D; +define adalah agak standard merentas alat Verilog manakala -D ialah alias
untuk keserasian GCC.

--buang-pokok
Jarang diperlukan. Dayakan menulis fail nyahpepijat .tree dengan lambakan tahap 3, yang membuang fail
peringkat kritikal standard. Untuk butiran tentang format lihat Bahagian Dalaman Verilator
manual. --dump-tree didayakan secara automatik dengan --debug, jadi "--debug
--no-dump-tree" mungkin berguna jika fail dump adalah besar dan tidak diingini.

--dump-treei
--buang-pokok-
Jarang diperlukan - untuk kegunaan pembangun. Tetapkan tahap lambakan pokok dalaman secara global kepada a
tahap lambakan tertentu atau tetapkan fail sumber Verilator yang ditentukan kepada yang ditentukan
tahap lambakan pokok (cth "--dump-treei-V3Order 9"). Tahap 0 melumpuhkan pembuangan dan adalah
bersamaan dengan "--no-dump-tree". Tahap 9 membolehkan lambakan setiap peringkat.

-E Praproses kod sumber, tetapi jangan susun, seperti 'gcc -E'. Output ditulis
untuk standard keluar. Berhati-hati dengan mendayakan mesej penyahpepijatan, kerana ia juga akan pergi ke
standard keluar.

--had-ralat
Selepas bilangan ralat atau amaran ini ditemui, keluar. Lalai kepada 50.

--exe
Hasilkan boleh laku. Anda juga perlu menghantar fail .cpp tambahan pada
baris arahan yang melaksanakan gelung utama untuk simulasi anda.

-F fail
Baca fail yang ditentukan, dan bertindak seolah-olah semua teks di dalamnya ditentukan sebagai arahan
parameter baris. Sebarang laluan relatif adalah relatif kepada direktori yang mengandungi
fail yang ditentukan. Lihat juga -f. Nota -F adalah agak standard merentas alat Verilog.

-f fail
Baca fail yang ditentukan, dan bertindak seolah-olah semua teks di dalamnya ditentukan sebagai arahan
parameter baris. Sebarang laluan relatif adalah relatif kepada direktori semasa. Lihat juga
-F. Nota -f adalah agak standard merentas alat Verilog.

Fail mungkin mengandungi // komen yang diabaikan hingga ke hujung baris. Mana-mana $VAR,
$(VAR), atau ${VAR} akan digantikan dengan pembolehubah persekitaran yang ditentukan.

--gdb
Jalankan Verilator di bawah GDB interaktif (atau pembolehubah persekitaran VERILATOR_GDB
nilai) sesi. Lihat juga --gdbbt.

--gdbbt
Jika --debug ditentukan, jalankan Verilator di bawah proses GDB dan cetak jejak belakang
semasa keluar, kemudian keluar dari GDB serta-merta. Tanpa --debug atau jika GDB nampaknya tidak berfungsi,
bendera ini diabaikan. Bertujuan untuk memudahkan penciptaan jejak belakang oleh pengguna; sebaliknya
lihat bendera --gdb.

- membantu
Memaparkan mesej dan versi program ini dan keluar.

-Idir
Lihat -y.

--jika-dalam nilai
Jarang diperlukan. Tetapkan kedalaman amaran IFDEPTH akan menyala, lalai kepada 0
yang melumpuhkan amaran ini.

+incdir+dir
Lihat -y.

--menghalang-sim
Jarang diperlukan. Cipta fungsi "inhibitSim(bool)" untuk mendayakan dan melumpuhkan penilaian.
Ini membenarkan meja ujian peringkat atas untuk melumpuhkan modul yang tidak penting dalam a
simulasi yang diberikan, tanpa perlu menyusun semula atau menukar modul SystemC
instantiated.

--inline-mult nilai
Selaraskan sebaris modul. Nilai lalai 2000 menyatakan bahawa sehingga 2000 baharu
operasi boleh ditambah pada model dengan menyelaraskan, jika lebih daripada bilangan ini
operasi akan terhasil, modul tidak sebaris. Nilai yang lebih besar, atau nilai <= 1
akan menyelaraskan segala-galanya, akan membawa kepada masa penyusunan yang lebih lama, tetapi berpotensi lebih pantas
masa tayangan. Tetapan ini diabaikan untuk modul yang sangat kecil; mereka akan sentiasa
sebaris, jika dibenarkan.

-LDFLAGS bendera
Tambahkan bendera pemaut C yang ditentukan pada makefiles yang dihasilkan. Apabila membuat dijalankan pada
makefile yang dihasilkan ini akan dihantar kepada pemaut C++ (ld) *selepas* utama
fail sedang dipautkan. Bendera ini dipanggil -LDFLAGS kerana itulah nama tradisionalnya
simulator; ia lebih baik dipanggil LDLIBS kerana itu adalah pembolehubah Makefile
ia mengawal. (Dalam Make, LDFLAGS adalah sebelum objek pertama, LDLIBS selepas. -L
perpustakaan perlu berada dalam Buat pembolehubah LDLIBS, bukan LDFLAGS.)

--bahasa nilai
Sinonim untuk "--default-langauge", untuk keserasian dengan alat lain dan lebih awal
versi Verilator.

+bebas+ext+ext...
Nyatakan sambungan yang harus digunakan untuk mencari modul. Jika misalnya modul
x dirujuk, lihat dalam x.ext. Nota +libext+ adalah agak standard di seluruh Verilog
alatan. Lalai kepada .v dan .sv.

--lint-sahaja
Semak fail untuk pelanggaran lin sahaja, jangan buat sebarang output lain.

Anda juga mungkin mahu pilihan -Wall untuk membolehkan mesej yang dianggap gaya
dan tidak didayakan secara lalai.

Jika reka bentuk itu tidak disahkan sepenuhnya lihat juga --bbox-sys dan
--bbox-unsup pilihan.

--MMD
Dayakan penciptaan fail pergantungan .d, digunakan untuk membuat pengesanan pergantungan, serupa dengan
gcc -MMD pilihan. Hidupkan secara lalai, gunakan --no-MMD untuk melumpuhkan.

--MP
Apabila mencipta fail pergantungan .d dengan --MMD, buat sasaran palsu. Sama seperti gcc -MP
pilihan.

--Mdir direktori
Menentukan nama direktori objek Buat. Semua fail yang dihasilkan akan diletakkan
dalam direktori ini. Jika tidak dinyatakan, "obj_dir" digunakan. Direktori dibuat jika
ia tidak wujud dan direktori induk wujud; sebaliknya buat Mdir secara manual
sebelum memanggil Verilator.

--mod-prefix nama teratas
Menentukan nama untuk ditambah kepada semua kelas peringkat rendah. Lalai kepada yang sama seperti
--awalan.

--tidak-clk
Elakkan isyarat yang ditentukan daripada ditanda sebagai jam. Lihat "--clk".

--tiada-pin64
Alias ​​serasi ke belakang untuk "--pins-bv 33".

--tidak-langkau-sama
Jarang diperlukan. Melumpuhkan melangkau pelaksanaan Verilator jika semua fail sumber adalah
sama, dan semua fail output wujud dengan tarikh yang lebih baharu.

+notimingchecks
Diabaikan kerana keserasian dengan simulator lain.

-O0 Melumpuhkan pengoptimuman model.

-O3 Mendayakan pengoptimuman perlahan untuk kod yang dihasilkan oleh Verilator sendiri (berbanding dengan
"-CFLAGS -O3" yang memberi kesan kepada pengoptimuman pengkompil C. -O3 boleh mengurangkan simulasi
runtimes dengan kos masa penyusunan. Ini pada masa ini menetapkan --inline-mult -1.

-Osurat pengoptimuman
Jarang diperlukan. Mendayakan atau melumpuhkan pengoptimuman tertentu, dengan pengoptimuman
dipilih berdasarkan surat yang diluluskan. Huruf kecil melumpuhkan pengoptimuman, an
huruf besar membolehkannya. Ini bertujuan untuk penggunaan debugging sahaja; lihat sumbernya
kod untuk pemetaan bergantung kepada versi pengoptimuman kepada huruf -O.

-o
Nyatakan nama untuk binaan boleh laku akhir jika menggunakan --exe. Lalai kepada
--awalan jika tidak dinyatakan.

--tiada-order-jam-kelewatan
Jarang diperlukan. Melumpuhkan pembetulan pepijat untuk pesanan jam membolehkan dengan tertunda
tugasan. Bendera ini hanya boleh digunakan apabila dicadangkan oleh pembangun.

--output-split bait
Membolehkan membahagikan fail .cpp/.sp output kepada berbilang output. Apabila fail C++
melebihi bilangan operasi yang ditentukan, fail baharu akan dibuat pada seterusnya
sempadan fungsi. Di samping itu, sebarang rutin yang perlahan akan diletakkan ke dalam fail __Slow.
Ini mempercepatkan kompilasi kerana pengoptimuman boleh dilumpuhkan pada rutin yang perlahan,
dan fail yang selebihnya boleh disusun pada mesin selari. Menggunakan --output-split
seharusnya hanya memberi kesan yang remeh terhadap prestasi. Dengan GCC 3.3 pada Opteron 2GHz,
--output-split 20000 akan mengakibatkan pemisahan menjadi kira-kira satu minit-kompilasi
ketulan.

--output-split-cfuncs kenyataan
Mendayakan pemisahan fungsi dalam output .cpp/.sp fail kepada berbilang fungsi.
Apabila fungsi yang dijana melebihi bilangan operasi yang ditentukan, fungsi baharu
akan diwujudkan. Dengan --output-split, ini akan membolehkan GCC menyusun dengan lebih pantas, pada a
kerugian kecil dalam prestasi yang menjadi lebih teruk dengan penurunan nilai pecahan. Perhatikan bahawa
pilihan ini lebih kuat daripada --output-split dalam erti kata bahawa --output-split tidak akan
berpecah di dalam fungsi.

--output-split-ctrace kenyataan
Mendayakan pemisahan fungsi surih dalam output .cpp/.sp fail kepada berbilang
fungsi. Lalai kepada tetapan yang sama seperti --output-split-cfuncs.

-P Dengan -E, lumpuhkan penjanaan `penanda baris dan garisan kosong, serupa dengan bendera GCC -P.

--pin64
Alias ​​serasi ke belakang untuk "--pins-bv 65". Perhatikan bahawa 65, bukan 64.

--pin-bv lebar
Menentukan input/output SystemC lebih besar daripada atau sama dengan lebar bit lebar sepatutnya
gunakan sc_bv dan bukannya uint32/vluint64_t's. Lalai ialah "--pins-bv 65". Versi
sebelum Verilator 3.671 lalai kepada "--pins-bv 33". Lebih banyak sc_bv digunakan, lebih teruk
untuk prestasi. Gunakan atribut "/*verilator sc_bv*/" untuk memilih port tertentu
jadi sc_bv.

--pin-sc-uint
Menentukan input/output SystemC yang lebih besar daripada 2 bit lebar harus menggunakan sc_uint
antara 2 dan 64. Apabila digabungkan dengan gabungan "--pins-sc-biguint", ia menghasilkan
dalam sc_uint digunakan antara 2 dan 64 dan sc_biguint digunakan antara 65 dan 512.

--pin-sc-biguint
Menentukan input/output SystemC yang lebih besar daripada 65 bit lebar harus menggunakan sc_biguint
antara 65 dan 512, dan sc_bv dari 513 ke atas. Apabila digabungkan dengan
Gabungan "--pins-sc-uint", ia menyebabkan sc_uint digunakan antara 2 dan 64 dan
sc_biguint digunakan antara 65 dan 512.

--pin-uint8
Menentukan input/output SystemC yang lebih kecil daripada tetapan --pins-bv dan 8
bit atau kurang harus menggunakan uint8_t dan bukannya uint32_t. Begitu juga pin lebar 9-16 akan
gunakan uint16_t dan bukannya uint32_t.

--penapis paip arahan
Jarang diperlukan dan eksperimen. Verilator akan menghasilkan arahan yang ditentukan sebagai a
paip subproses, untuk membenarkan arahan melakukan suntingan tersuai pada kod Verilog
sebelum ia mencapai Verilator.

Sebelum membaca setiap fail Verilog, Verilator akan menyerahkan nama fail kepada subproses'
stdin dengan 'read_verilog " "'. Penapis kemudiannya boleh membaca fail dan melaksanakan
sebarang penapisan yang diingininya, dan suapan semula kandungan fail baharu kepada Verilator pada stdout
dengan 'Panjang Kandungan'. Output kepada stderr daripada suapan penapis hingga ke Verilator's
stdout dan jika penapis keluar dengan status bukan sifar Verilator ditamatkan. Lihat
ujian t/t_pipe_filter sebagai contoh.

Untuk nyahpepijat output penapis, cuba gunakan pilihan -E untuk melihat output praproses.

--awalan nama teratas
Menentukan nama kelas peringkat atas dan makefile. Lalai kepada V ditambah kepada
nama suis --top-module, atau V didahulukan pada nama fail Verilog yang pertama
diluluskan pada baris arahan.

--profile-cfuncs
Ubah suai fungsi C++ yang dibuat untuk menyokong pemprofilan. Fungsinya ialah
diminimumkan untuk mengandungi satu pernyataan "asas", biasanya satu blok atau wayar
kenyataan. (Perhatikan ini akan memperlahankan boleh laku sebanyak ~5%.) Tambahan pula, the
nama fungsi akan diakhiri dengan nama asas modul Verilog dan nombor baris
kenyataan itu datang dari. Ini membolehkan laporan gprof atau oprofile dikaitkan dengan
kenyataan sumber Verilog yang asal.

--swasta
Bertentangan dengan --awam. Adakah lalai; pilihan ini wujud untuk keserasian ke belakang.

--awam
Ini hanya untuk kegunaan nyahpepijat sejarah. Menggunakannya boleh mengakibatkan salah simulasi
jam yang dihasilkan.

Mengisytiharkan semua isyarat dan modul awam. Ini akan mematikan pengoptimuman isyarat sebagai
jika semua isyarat mempunyai /*verilator public*/ komen dan sebaris. Ini juga akan bertukar
off inlining seolah-olah semua modul mempunyai /*verilator public_module*/, melainkan modul tersebut
secara khusus mendayakannya dengan /*verilator inline_module*/.

--report-unoptflat
Diagnostik tambahan untuk amaran UNOPTFLAT. Ini termasuk untuk setiap gelung, 10 terluas
pembolehubah dalam gelung, dan 10 pembolehubah yang paling banyak dikipas dalam gelung. Ini adalah
calon untuk membelah kepada berbilang pembolehubah untuk memecahkan gelung.

Selain itu, menghasilkan fail DOT GraphViz bagi keseluruhan komponen yang bersambung kuat
dalam sumber yang dikaitkan dengan setiap gelung. Ini dihasilkan tanpa mengira sama ada
--dump-tree ditetapkan. Graf sedemikian boleh membantu dalam menganalisis masalah, tetapi boleh menjadi sangat
besar sungguh.

Pelbagai arahan wujud untuk melihat dan memanipulasi fail DOT. Contohnya dot
arahan boleh digunakan untuk menukar fail DOT kepada PDF untuk dicetak. Sebagai contoh:

dot -Tpdf -O Vt_unoptflat_simple_2_35_unoptflat.dot

akan menjana PDF Vt_unoptflat_simple_2_35_unoptflat.dot.pdf daripada fail DOT.

--boleh diselamatkan
Dayakan termasuk menyimpan dan memulihkan fungsi dalam model yang dijana.

Kod pengguna mesti mencipta objek VerilatedSerialize atau VerilatedDeserialze kemudian
memanggil operator << atau >> pada model yang dihasilkan dan mana-mana data lain sebagai proses
keperluan disimpan/dipulihkan. Sebagai contoh:

void save_model(const char* nama fail) {
VerilasiSave os;
os.open(nama fail);
os << main_time; // kod pengguna mesti menyimpan cap masa, dsb
os << *atas;
}
void restore_model(const char* nama fail) {
VeriratedRestore os;
os.open(nama fail);
os >> main_time;
os >> *topp;
}

--sc
Menentukan mod keluaran SystemC; lihat juga --cc.

--statistik
Mencipta fail dump dengan statistik pada reka bentuk dalam {prefix}__stats.txt.

--stats-vars
Mencipta statistik yang lebih terperinci termasuk senarai semua pembolehubah mengikut saiz (plain
--stats hanya memberikan kiraan). Lihat --stats, yang tersirat oleh ini.

-sv Menentukan ciri bahasa SystemVerilog harus didayakan; bersamaan dengan "--language
1800-2005". Pilihan ini dipilih secara lalai, ia wujud untuk keserasian dengan
simulator lain.

+systemverilogext+ext
Sinonim untuk "+1800-2012ext+"ext.

--modul atas nama teratas
Apabila input Verilog mengandungi lebih daripada satu modul peringkat atas, tentukan nama
modul Verilog peringkat atas untuk menjadi teratas, dan menetapkan lalai untuk if --prefix
tidak digunakan. Ini tidak diperlukan dengan reka bentuk standard dengan hanya satu bahagian atas.

--jejak
Menambah kod pengesanan bentuk gelombang pada model. Verilator akan menjana tambahan
{prefix}__Trace*.cpp fail yang perlu disusun. Sebagai tambahan
verilated_vcd_sc.cpp (untuk jejak SystemC) atau verilated_vcd_c.cpp (untuk kedua-duanya) mestilah
disusun dan dipautkan masuk. Jika menggunakan Makefiles yang dijana Verilator, ini akan menjadi
ditambah sebagai sasaran sumber untuk anda. Jika anda tidak menggunakan makefiles Verilator, anda
perlu menambahkannya pada Makefile anda secara manual.

Penjejakan yang dikompilasi mungkin mengakibatkan beberapa kehilangan prestasi yang kecil, walaupun ketika itu
bentuk gelombang tidak dihidupkan semasa pelaksanaan model.

--kedalaman jejak tahap
Tentukan bilangan tahap dalam untuk mendayakan pengesanan, contohnya --trace-level 1 hingga
hanya melihat isyarat peringkat atas. Lalai kepada keseluruhan model. Menggunakan nombor yang kecil
akan mengurangkan keterlihatan, tetapi sangat meningkatkan masa jalan dan mengesan saiz fail.

--trace-max-array kedalaman
Jarang diperlukan. Tentukan kedalaman tatasusunan maksimum bagi isyarat yang mungkin dikesan.
Lalai kepada 32, kerana menjejak tatasusunan besar mungkin memperlahankan simulasi yang dikesan.

--jejak-max-lebar lebar
Jarang diperlukan. Tentukan lebar bit maksimum isyarat yang mungkin dikesan.
Lalai kepada 256, kerana mengesan vektor besar mungkin memperlahankan simulasi yang dikesan.

--no-trace-params
Lumpuhkan pengesanan parameter.

--trace-structs
Dayakan penjejakan untuk menunjukkan nama struktur padat, kesatuan dan medan tatasusunan yang dibungkus,
bukannya bas pek gabungan simgle. Disebabkan oleh kekangan format fail VCD ini mungkin
menghasilkan masa surih yang lebih perlahan dan fail surih yang lebih besar.

--jejak-garis bawah
Dayakan pengesanan isyarat yang bermula dengan garis bawah. Biasanya, isyarat ini adalah
bukan keluaran semasa pengesanan. Lihat juga --liputan-garis bawah.

-Uvar
Menyahtakrifkan simbol prapemproses yang diberikan.

--buka gulungan-kiraan gelung
Jarang diperlukan. Menentukan bilangan maksimum lelaran gelung yang mungkin dibuka.
Lihat juga amaran BLKLOOPINIT.

--buka gulungan-stmts kenyataan
Jarang diperlukan. Menentukan bilangan maksimum pernyataan dalam gelung untuk gelung itu
dibongkarkan. Lihat juga amaran BLKLOOPINIT.

--unsed-regexp regexp
Jarang diperlukan. Menentukan regexp mudah dengan * dan ? bahawa jika nama isyarat sepadan
akan menyekat amaran yang TIDAK DIGUNAKAN. Lalai kepada "*tidak digunakan*". Menetapkannya kepada "" melumpuhkan
sepadan.

-V Menunjukkan versi verbose, termasuk maklumat konfigurasi yang disusun ke dalam
Verilator. (Serupa dengan perl -V.)

-v nama fail
Baca nama fail sebagai pustaka Verilog. Mana-mana modul dalam fail boleh digunakan untuk
menyelesaikan instantiasi sel dalam modul peringkat atas, jika tidak diabaikan. Nota -v adalah adil
standard merentas alat Verilog.

+verilog1995ext+ext
+verilog2001ext+ext
Sinonim untuk "+1364-1995ext+"ext dan "+1364-2001ext+"ext masing-masing

-Dinding
Dayakan semua amaran, termasuk amaran gaya kod yang biasanya dilumpuhkan oleh
lalai.

-Werror-mesej
Tukar mesej amaran yang ditentukan kepada mesej ralat. Ini secara amnya kepada
tidak menggalakkan pengguna daripada melanggar peraturan penting seluruh tapak, contohnya
"-Werror-NOUNOPTFLAT".

-Wfuture-mesej
Jarang diperlukan. Sekat komen Verilator yang tidak diketahui atau mesej amaran dengan yang diberikan
kod mesej. Ini digunakan untuk membenarkan kod yang ditulis dengan pragmas untuk versi kemudian
Verilator untuk dijalankan di bawah versi yang lebih lama; tambah -Wfuture- argumen untuk setiap kod mesej
atau komen bahawa versi baharu menyokong yang versi lama tidak menyokong.

-Wno-mesej
Lumpuhkan mesej amaran yang ditentukan. Ini akan mengatasi sebarang arahan lint_on dalam
sumber, iaitu amaran masih tidak akan dicetak.

-Wno-lint
Lumpuhkan semua mesej amaran berkaitan lint, dan semua amaran gaya. Ini adalah setara
kepada "-Wno-ALWCOMBORDER -Wno-CASEINCOMPLETE -Wno-CASEOVERLAP -Wno-CASEX -Wno-CASEWITHX
-Wno-CMPCONST -Wno-ENDLABEL -Wtia-IMPLICIT -Wtia-LITENDIAN -Wno-PINCONNECTEMPTY
-Wno-PINMISSING -Wno-SYNCASYNCNET -Wno-UNDRIVEN -Wtia-UNTIGNED -Wtia-UNUSED -Wno-WIDTH"
serta senarai yang ditunjukkan untuk gaya Wno.

Anda amat disyorkan untuk membersihkan kod anda dan bukannya menggunakan pilihan ini
hanya bertujuan untuk digunakan semasa menjalankan kes ujian kod yang diterima daripada pihak ketiga.

-gaya Wno
Lumpuhkan semua mesej amaran berkaitan gaya kod (perhatikan secara lalai ia sudah ada
kurang upaya). Ini bersamaan dengan "-Wno-DECLFILENAME -Wno-DEFPARAM -Wno-INCABSPATH
-Tiada-PINCONNECTEMPTY -Tiada-PINNOCONNECT -Tiada-SYNCASYNCNET -Tiada-UNDRIVEN -Tiada-TIDAK DIGUNAKAN
-Wno-VARHIDDEN".

-Wno-fatal
Apabila amaran dikesan, cetaknya, tetapi jangan keluar dari simulator.

Mempunyai mesej amaran dalam binaan adalah ceroboh. Anda amat disyorkan untuk membersihkannya
kod anda, gunakan lint_off sebaris, atau gunakan -Wno-... bendera daripada menggunakan pilihan ini.

-Wwarn-mesej
Mendayakan mesej amaran yang ditentukan.

-Wwarn-lint
Dayakan semua mesej amaran berkaitan lint (perhatikan secara lalai ia sudah didayakan),
tetapi tidak menjejaskan mesej gaya. Ini bersamaan dengan "-Wwarn-ALWCOMBORDER
-Wwarn-CASEINCOMPLETE -Wwarn-CASEOVERLAP -Wwarn-CASEX -Wwarn-CASEWITHX -Wwarn-CMPCONST
-Wwarn-ENDLABEL -Wwarn-IMPLICIT -Wwarn-LITENDIAN -Wwarn-PINMISSING -Wwarn-REALCVT
-Wwarn-TIDAK TANDA -Wwarn-LEBAR".

-Gaya Wwarn
Dayakan semua mesej amaran berkaitan gaya kod. Ini bersamaan dengan "-Wwarn
ASSIGNDLY -Wwarn-DECLFILENAME -Wwarn-DEFPARAM -Wwarn-INCABSPATH -Wwarn-PINNOCONNECT
-Wwarn-SYNCASYNCNET -Wwarn-UNDRIVEN -Wwarn-TIDAK DIGUNAKAN -Wwarn-VARHIDDEN".

--x-assign 0
--x-assign 1
--x-assign cepat (lalai)
--x-assign unik
Mengawal nilai dua keadaan yang digantikan apabila tugasan kepada X ditemui.
--x-assign=fast, lalai, menukar semua X kepada apa sahaja yang terbaik untuk prestasi.
--x-assign=0 menukar semua Xs kepada 0s, dan juga pantas. --x-assign=1 menukar semua Xs kepada
1s, ini hampir sepantas 0, tetapi lebih berkemungkinan mencari pepijat tetapan semula setinggi aktif
logik akan menyala. --x-assign=unique akan memanggil fungsi untuk menentukan nilai, ini
membenarkan rawak semua X untuk mencari pepijat tetapan semula dan merupakan yang paling perlahan, tetapi paling selamat untuk
mencari pepijat tetapan semula dalam kod.

Jika menggunakan --x-assign unique, anda mungkin ingin membenihkan penjana nombor rawak anda sedemikian
bahawa setiap larian regresi mendapat urutan rawak yang berbeza. Gunakan sistem
srand48() atau untuk Windows srand () fungsi untuk melakukan ini. Anda mungkin juga mahu
cetak mana-mana benih yang dipilih, dan kodkan untuk membolehkan dijalankan semula dengan benih yang sama supaya anda boleh
membiak pepijat.

Catatan. Pilihan ini hanya terpakai kepada pembolehubah yang secara eksplisit diberikan kepada X dalam
Kod sumber Verilog. Nilai awal jam ditetapkan kepada 0 melainkan --x-initial-edge ialah
ditentukan. Nilai awal semua pembolehubah pegangan negeri lain ditetapkan sebagai walaupun
--x-assign unique telah ditentukan.

--x-initial-edge
Mendayakan emulasi simulator dipacu peristiwa yang biasanya mencetuskan kelebihan pada a
peralihan daripada X kepada 1 ("posedge") atau X kepada 0 ("negedge"). Oleh itu kod berikut,
apabila "rst_n" tidak dimulakan akan menetapkan "res_n" kepada "1'b1" apabila "rst_n" pertama kali ditetapkan
kepada sifar:

reg res_n = 1'b0;

sentiasa @(negedge rst_n) bermula
jika (rst_n == 1'b0) bermula
res_n <= 1'b1;
akhir
akhir

Dalam Verilator, secara lalai, jam yang tidak dimulakan diberi nilai sifar, jadi perkara di atas
sekatan "sentiasa" tidak akan dicetuskan.

Walaupun ia bukan amalan yang baik, terdapat beberapa reka bentuk yang bergantung pada XX 0 pencetus a
"negedge", terutamanya dalam urutan tetapan semula. Menggunakan --x-initial-edge dengan Verilator akan
meniru tingkah laku ini. Ia juga akan memastikan bahawa XX 1 mencetuskan "posedge".

Catatan. Sesetengah pengguna telah melaporkan bahawa menggunakan pilihan ini boleh menjejaskan penumpuan, dan itu
mungkin perlu menggunakan --converge-limit untuk meningkatkan bilangan penumpuan
lelaran. Ini mungkin satu lagi petunjuk masalah dengan reka bentuk model itu
hendaklah dialamatkan.

-y dir
Tambahkan direktori ke senarai direktori yang perlu dicari termasuk fail
atau perpustakaan. Tiga bendera -y, +incdir dan -I mempunyai kesan yang sama; +incdir dan +y
adalah agak standard merentas alat Verilog manakala -I ialah alias untuk keserasian GCC.

Verilator lalai kepada direktori semasa ("-y .") dan mana-mana --Mdir yang ditentukan, walaupun
laluan lalai ini digunakan selepas mana-mana direktori yang ditentukan pengguna. Ini membolehkan '-y
"$(pwd)"' untuk digunakan jika nama fail mutlak dikehendaki untuk mesej ralat dan bukannya
nama fail relatif.

CONTOH C + + PERLAKSANAAN


Kami akan menyusun contoh ini ke dalam C++.

mkdir test_our
cd test_our

kucing < kami.v
modul kami;
permulaan permulaan $display("Hello World"); $finish; tamat
endmodule
EOF

kucing < sim_main.cpp
#include "Vour.h"
#include "verited.h"
int main(int argc, char **argv, char **env) {
Disahkan::commandArgs(argc, argv);
Vour* atas = Vour baharu;
manakala (!Disahkan::gotFinish()) { top->eval(); }
padam bahagian atas;
keluar(0);
}
EOF

Jika anda memasang Verilator daripada sumber, atau bola tar, tetapi bukan sebagai sebahagian daripada operasi anda
sistem (sebagai RPM), pertama anda perlu menunjuk ke kit:

eksport VERILATOR_ROOT=/path/to/where/verilator/was/installed
eksport PATH=$VERILATOR_ROOT/bin:$PATH

Sekarang kami menjalankan Verilator pada contoh kecil kami.

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

Kita boleh melihat kod sumber di bawah direktori "obj_dir". Lihat bahagian FAIL di bawah untuk
penerangan beberapa fail yang telah dibuat.

ls -l obj_dir

Kami kemudian boleh menyusunnya

cd obj_dir
buat -j -f Vour.mk Vour

(Verilator menyertakan peraturan kompilasi lalai dan peraturan pautan, kerana kami menggunakan --exe dan lulus a
.cpp fail pada baris arahan Verilator. Anda juga boleh menulis peraturan penyusunan anda sendiri, sebagai
kami akan tunjukkan dalam bahagian SYSTEMC.)

Dan sekarang kita menjalankannya

cd ..
obj_dir/Vour

Dan kita dapat sebagai output

Hello World
- our.v:2: Verilog $finish

Sebenarnya, anda lebih baik menulis Makefile untuk melakukan semua ini untuk anda. Kemudian, apabila anda
perubahan sumber ia akan menjalankan semua langkah ini secara automatik. Lihat direktori test_c dalam
pengedaran sebagai contoh.

CONTOH SISTEM PERLAKSANAAN


Ini adalah contoh yang serupa dengan di atas, tetapi menggunakan SystemC.

mkdir test_our_sc
cd test_our_sc

kucing < kami.v
modul kami (clk);
input clk; // Jam diperlukan untuk mendapatkan pengaktifan awal
sentiasa @ (posedge clk)
mulakan $display("Hello World"); $finish; tamat
endmodule
EOF

kucing < sc_main.cpp
#include "Vour.h"
int sc_main(int argc, char **argv) {
Disahkan::commandArgs(argc, argv);
sc_clock clk ("clk",10, 0.5, 3, benar);
Vour* atas;
atas = new Vour("atas"); // SP_CELL (atas, Vour);
atas->clk(clk); // SP_PIN (atas, clk, clk);
manakala (!Disahkan::gotFinish()) { sc_start(1, SC_NS); }
padam bahagian atas;
keluar(0);
}
EOF

Jika anda memasang Verilator daripada sumber, atau bola tar, tetapi bukan sebagai sebahagian daripada operasi anda
sistem (sebagai RPM), pertama anda perlu menunjuk ke kit:

eksport VERILATOR_ROOT=/path/to/where/verilator/was/installed
eksport PATH=$VERILATOR_ROOT/bin:$PATH

Sekarang kami menjalankan Verilator pada contoh kecil kami.

verilator -Dinding --sc our.v

Kami kemudian boleh menyusunnya

buat -j -f Vour.mk Vour__ALL.a
buat -j -f Vour.mk ../sc_main.o disahkan.o

Dan pautan dengan SystemC. Perhatikan laluan anda ke perpustakaan mungkin berbeza-beza, bergantung pada
sistem operasi.

eksport SYSTEMC_LIBDIR=/path/to/where/libsystemc.a/exists
eksport LD_LIBRARY_PATH=$SYSTEMC_LIBDIR:$LD_LIBRARY_PATH
# Mungkin diperlukan jika SystemC 2.3.0
eksport SYSTEMC_CXX_FLAGS=-pthread

g++ -L$SYSTEMC_LIBDIR ../sc_main.o Vour__SEMUA*.o disahkan.o \
-o Vour -lsystemc

Dan sekarang kita menjalankannya

cd ..
obj_dir/Vour

Dan kami mendapat output yang sama seperti contoh C++:

Hello World
- our.v:2: Verilog $finish

Sebenarnya, anda lebih baik menggunakan Makefile untuk melakukan semua ini untuk anda. Kemudian, apabila sumber anda
perubahan ia akan menjalankan semua langkah ini secara automatik. Lihat direktori test_sc dalam
pengedaran sebagai contoh.

PENANDAARASAN & PENGOPTIMUMAN


Untuk prestasi terbaik, jalankan Verilator dengan bendera "-O3 --x-assign=fast --noassert". The
-Bendera O3 akan memerlukan masa penyusunan yang lebih lama, dan --x-assign=fast boleh meningkatkan risiko
set semula pepijat dalam perdagangan untuk prestasi; lihat dokumentasi di atas untuk bendera ini.

Perubahan kod Verilog kecil juga boleh memberikan kemenangan besar. Anda tidak sepatutnya mempunyai sebarang UNOPTFLAT
amaran daripada Verilator. Membetulkan amaran ini boleh menghasilkan peningkatan yang besar; satu pengguna
membetulkan satu amaran UNOPTFLAT mereka dengan membuat perubahan mudah pada selak jam yang digunakan untuk pintu pagar
jam dan memperoleh peningkatan prestasi sebanyak 60%.

Selain itu, prestasi model Disahkan bergantung pada pengkompil C++ anda dan
saiz cache CPU anda.

Secara lalai, fail lib/verilated.mk telah dimatikan pengoptimuman. Ini adalah untuk
manfaat pengguna baharu, kerana ia meningkatkan masa penyusunan pada kos masa jalanan. Untuk menambah
pengoptimuman sebagai lalai, tetapkan satu daripada tiga pembolehubah, OPT, OPT_FAST atau OPT_SLOW
lib/verilated.mk. Atau, gunakan pilihan -CFLAGS dan/atau -LDFLAGS pada arahan verilator
baris untuk menghantar bendera terus kepada pengkompil atau pemaut. Atau, hanya untuk satu larian, lulus
mereka pada baris arahan untuk membuat:

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

OPT_FAST menentukan pengoptimuman untuk program tersebut yang merupakan sebahagian daripada laluan pantas, kebanyakannya
kod yang dilaksanakan setiap kitaran. OPT_SLOW menentukan pengoptimuman untuk fail laluan perlahan
(ditambah pengesanan), yang jarang dilaksanakan, namun mengambil masa yang lama untuk disusun
pengoptimuman pada. OPT menentukan pengoptimuman keseluruhan dan mempengaruhi semua penyusunan, termasuk
kesan OPT_FAST dan OPT_SLOW. Untuk hasil terbaik, gunakan OPT="-O2", dan pautkan dengan
"-statik". Hasil yang hampir sama boleh didapati dengan masa penyusunan yang lebih baik dengan
OPT_FAST="-O1 -fstrict-aliasing". Pengoptimuman yang lebih tinggi seperti "-O3" mungkin membantu, tetapi gcc
masa penyusunan mungkin berlebihan di bawah O3 pada reka bentuk bersaiz sederhana walaupun. Sebagai alternatif, beberapa
reka bentuk yang lebih besar melaporkan prestasi yang lebih baik menggunakan "-Os".

Malangnya, menggunakan pengoptimum dengan fail SystemC boleh mengakibatkan pengambilan kompilasi
beberapa minit. (Perpustakaan SystemC mempunyai banyak fungsi sebaris kecil yang memacu fail
kacang penyusun.)

Untuk hasil terbaik, gunakan GCC 3.3 atau lebih baharu. GCC 3.2 dan lebih awal mempunyai pepijat pengoptimuman
pengesanan aliasing penunjuk, yang boleh mengakibatkan kehilangan prestasi 2x ganda.

Jika anda akan menjalankan banyak simulasi pada satu kompilasi, siasat maklum balas yang didorong
kompilasi. Dengan GCC, menggunakan -fprofile-arcs, maka -fbranch-probabilities akan menghasilkan
15% lagi atau lebih.

Penyusun moden juga menyokong pengoptimuman masa pautan (LTO), yang boleh membantu terutamanya jika
anda pautkan dalam kod DPI. Untuk mendayakan LTO pada GCC, hantar "-flto" dalam kedua-dua kompilasi dan pautan.
Nota LTO boleh menyebabkan masa penyusunan yang berlebihan pada reka bentuk yang besar.

Jika anda menggunakan makefiles anda sendiri, anda mungkin mahu menyusun kod Disahkan dengan
-DVL_INLINE_OPT=dalam talian. Ini akan berfungsi sebaris, namun ini memerlukan semua cpp
fail disusun dalam satu pengkompil dijalankan.

Anda boleh mendedahkan kemungkinan penalaan selanjutnya dengan memprofilkan kod Verilog. guna
Verilator --profile-cfuncs, kemudian GCC -g -pg. Anda kemudiannya boleh menjalankan sama ada oprofile atau
gprof untuk melihat di mana dalam kod C++ masa dihabiskan. Jalankan output gprof melalui
verilator_profcfunc dan ia akan memberitahu anda nombor baris Verilog yang kebanyakannya
masa sedang dihabiskan.

Apabila selesai, sila maklumkan kepada penulis hasilnya. Saya suka memantau cara Verilator
membandingkan, dan mungkin boleh mencadangkan penambahbaikan tambahan.

Gunakan verilator dalam talian menggunakan perkhidmatan onworks.net


Pelayan & Stesen Kerja Percuma

Muat turun apl Windows & Linux

Arahan Linux

Ad




×
Pengiklanan
❤ ️Beli, tempah atau beli di sini — tanpa kos, membantu memastikan perkhidmatan percuma.