Altifigence Academy

35 / 37 · Konsep

Kompilasi, lint dan sintesis: cakupan diagnostik

Tetapkan sumber, top dan bahasa serta bedakan sintaks, lebar, latch dan pemeriksaan fungsi.

Tetapkan tugas alat

Hasil bergantung pada sumber, top, parameter, bahasa dan versi. Kompilasi DUT beserta dependensi dan pilih testbench sebagai top terpisah. Jangan sintesis pembangkit clock testbench atau menyamakan modul tak diinstansiasi dengan modul diuji. Contoh memakai subset yang praktis untuk sintesis; simulator dan engine produk bisa mendukung bagian berbeda. .sv tidak otomatis mengaktifkan semua fitur.

Kompilasi dan simulasi memiliki cakupan berbeda

Kompilasi dapat menolak sintaks, modul hilang dan referensi invalid, tetapi tidak membuktikan aritmetika atau prioritas. Simulasi membandingkan skenario yang dijalankan; PASS berlaku pada perbandingan dan sumber itu. Untuk laboratorium:

text
iverilog -g2012 -s tb -o sim.vvp modulo_tick.sv tb.sv
vvp sim.vvp

Catat kedua status. Menjalankan sim.vvp lama setelah kompilasi gagal dapat memberi PASS menyesatkan. Buat berkas baru tiap konfigurasi dan berhenti bila kompilasi gagal.

Periksa sebabnya

DiagnostikPertanyaan
Modul hilangBerkas dan nama benar?
PemotonganBit, carry atau tanda mana hilang?
Latch disimpulkanJalur kombinasional mana tidak menugaskan?
Banyak penggerakSiapa pemilik variabel?
Sinyal tak digunakanSengaja atau koneksi hilang?
Putaran kombinasionalKembali ke masukan tanpa register?

Jangan menonaktifkan semua peringatan demi log bersih. Perbaiki atau catat pengecualian sempit, sengaja dan diuji. Kategori berubah per versi. Referensi resmi peringatan Verilator menjelaskan WIDTH, LATCH. Bila terpasang, opsi tambahan:

text
verilator --lint-only --top-module periodic_accumulator modulo_tick.sv periodic_accumulator.sv

Ini jalur saran, bukan bukti eksekusi. Bedakan perintah dijalankan dari yang diusulkan.

Sintesis adalah batas lain

Pemeriksaan generik Yosys:

text
yosys -p 'read_verilog -sv modulo_tick.sv periodic_accumulator.sv; hierarchy -check -top periodic_accumulator; proc; opt; check -assert; stat'

Memeriksa front end dan struktur generik, bukan sumber daya FPGA tertentu, placement, routing, timing atau manufaktur. Pemetaan teknologi serta constraint membutuhkan pekerjaan lain.

Praktik: pisahkan varian rusak

Buat tiga salinan sementara: nama anak salah, jumlah sembilan bit disimpan delapan, penugasan kombinasional hilang. Lihat apa yang dideteksi alat dan apa yang memerlukan uji fungsi. Lebar bisa sengaja, latch bisa berhasil dikompilasi: bandingkan persyaratan. Simpan kegagalan relevan bersama sumber dipulihkan. Diagnostik belum dijelaskan tetap tertunda.

Pilihan berlaku di peramban ini. Ubah kapan saja di bagian bawah halaman.