Perbedaan antara RTL dan Verilog Behavioral


10

Dapatkah seseorang memberi tahu saya apa perbedaan antara RTL dan kode Verilog perilaku? Apakah ada batas demarkasi yang jelas antara desain pada kedua level ini?

Jawaban:


5

Kode perilaku adalah tingkat yang lebih tinggi dan biasanya tidak dapat disintesis. Konstruk seperti loop, penundaan, dan pernyataan "awal" adalah perilaku.

Kode RTL adalah level yang lebih rendah dan dimaksudkan untuk disintesis. Ini mendefinisikan sirkuit sebagai kombinasi register yang saling berhubungan dan operasi yang dilakukan pada sinyal antara register tersebut.

Diambil dari Yahoo Answers dan ditemukan langsung dengan Google!


1
loop dapat digunakan dalam kode rtl asalkan jumlah iterasi terbatas. Beberapa alat juga mendukung penggunaan blok intital untuk menentukan kondisi peningkatan daya.
Peter Green

Pertanyaan / tanggapan ini sebenarnya adalah tanggapan pertama yang diberikan Google kepada saya
Drewster

3

Kode "Register transfer level" adalah kode yang dijelaskan dalam hal register dan logika kombinatorial yang berada di antara mereka dan dimaksudkan untuk digunakan sebagai input ke alat sintesis. Kode menempel pada subset [1] bahasa yang dapat disintesis. Tidak ada penundaan eksplisit, semua waktu dalam hal tepi jam. Struktur yang mewakili kait yang dipicu level umumnya dihindari. Register biasanya mencatat sejumlah kecil jam yang detailnya dapat diberikan kepada penganalisa waktu. Logika kombinatorial biasanya diharapkan [2] untuk menetap dalam satu siklus clock tunggal yang membatasi kompleksitasnya. Level ini lebih tinggi daripada model level gerbang tetapi masih menentukan nilai apa yang dimiliki setiap register pada setiap siklus clock.

Kode "behavioral" umumnya adalah kode yang menjelaskan perilaku pada level yang lebih tinggi untuk digunakan dalam simulasi tetapi tidak dimaksudkan untuk dapat disintesis. Ini dapat digunakan untuk menggambarkan lingkungan di sekitar desain Anda dalam simulasi. Ini dapat digunakan sebagai langkah awal dalam desain untuk mendapatkan desain keseluruhan di tempat sebelum desain RTL rinci dari masing-masing modul diambil alih.

[1] Subset persis yang diizinkan bervariasi antara alat sintesis.
[2] Jika tidak diselesaikan dalam satu siklus dari simulasi dan synthisis dapat memberikan hasil yang berbeda dan penganalisa waktu akan menunjukkan pelanggaran kecuali secara eksplisit disuruh tidak melakukannya.


2

Definisi yang lebih umum.

Kode Perilaku: Menurut definisi, kode ini mendefinisikan perilaku komponen digital. Itu tidak memberikan informasi bagaimana itu akan diimplementasikan ke dalam HW aktual (sintesis). Itu tidak akan memberikan informasi bagaimana register dan gerbang akan dilaksanakan untuk melakukan operasi yang diperlukan. Ini lebih seperti menulis sebuah algoritma atau FSM dalam C.

RTL: Ini adalah bentuk yang lebih tepat dari komponen digital. Ini memberi informasi, bagaimana kode akan diimplementasikan sebagai HW yang sebenarnya (setelah sintesis). Juga memberikan informasi bagaimana data akan ditransfer antara register dan gerbang.


1

Ini bahasa yang sama, tetapi gaya yang berbeda digunakan. Dengan pengalaman Anda dapat membedakan mereka dengan cepat, berikut adalah beberapa ciri masing-masing:

Kode Verilog perilaku biasanya lebih mirip program komputer berurutan yang berjalan dari atas ke bawah dalam satu initial beginblok. Anda mungkin menemukan tidak ada port input / output yang didefinisikan dalam modul perilaku level atas, karena output mungkin untuk fasilitas simulator, seperti konsol $display()atau sistem file dengan $openatau waveform dumper dengan $dumpfiledan $dumpvars. Perhatikan keterlambatan antara pernyataan yang diimplementasikan menggunakan waktu simulasi yang lama, misalnya, #4000dan menjalankan tugas wishbone_master.checked_read(addr, value). Untuk konstruksi tingkat yang lebih tinggi ini, tidak jelas apa yang ekuivalen dengan teknologi yang disintesis / bisa.

Verilog untuk sintesis selalu memiliki port input / output, karena tanpa port yang terhubung modul tidak memiliki efek samping dan dapat dihilangkan [1]. Penundaan mungkin dilaksanakan dengan menghitung siklus beberapa jam tertentu. Perhatikan beberapa fungsi sistem Verilog misalnya, $clog2(PARAMETER)mungkin diizinkan dalam kode untuk sintesis, jadi keberadaannya $functionbukan merupakan jaminan. Kode untuk sintesis cenderung terdiri dari banyak 'proses' independen masing-masing dengan daftar sensitivitas. Beberapa teknologi mengizinkan initial beginblok untuk inisialisasi memori sehingga sekali lagi itu bukan jaminan.

Pada akhirnya perancang tahu tujuan kode yang mereka tulis dan akan memakainya dengan tepat dengan perangkat sintesis atau dalam simulator.

[1] kecuali untuk blok IP tertentu yang dapat membuat koneksi pintu belakang ke fasilitas chip internal, misalnya JTAG

Dengan menggunakan situs kami, Anda mengakui telah membaca dan memahami Kebijakan Cookie dan Kebijakan Privasi kami.
Licensed under cc by-sa 3.0 with attribution required.