Membuat UVM lebih cepat melalui sistem konfigurasi baru - Semiwiki

Membuat UVM lebih cepat melalui sistem konfigurasi baru – Semiwiki

Node Sumber: 3036575

Metodologi Verifikasi Universal (UVM) adalah cara populer untuk membantu memverifikasi desain SystemVerilog, dan mencakup a sistem konfigurasi yang sayangnya memiliki beberapa masalah kecepatan dan penggunaan. Rich Edelman dari Siemens EDA menulis makalah terperinci setebal 20 halaman tentang topik cara menghindari masalah ini, dan saya telah membahasnya untuk merangkum hal-hal penting untuk Anda. Insinyur verifikasi menggunakan database konfigurasi UVM untuk menetapkan nilai, kemudian mendapatkan nilai tersebut nanti dalam pengujian UVM mereka. Salah satu contoh pengaturan dan mendapatkan nilai 'T' adalah:

uvm_config#(T)::set(scope, instance_path_name, field_name, value); uvm_config#(T)::get(scope, instance_path_name, field_name, value);

Menghubungkan meja uji UVM ke perangkat yang diuji menggunakan database konfigurasi untuk melewati antarmuka virtual. Ada tiga masalah dalam penggunaan konfigurasi UVM:

  • Kode besar, sekitar 2,600 baris kode
  • Memerlukan pencocokan tipe yang tepat, jadi 'int' dan 'bit' tidak sama
  • Kode lambat

Pertimbangkan kasus kode lambat, karena dengan ribuan panggilan ke set() menggunakan nama dengan wildcard dapat memakan waktu hingga 30 menit untuk menyelesaikan fase 'set' dan 'get'.

Waktu yang Berlalu min

Rich mengusulkan solusi baru untuk konfigurasi UVM yang memiliki kecepatan lebih cepat, hanya membutuhkan waktu beberapa detik dibandingkan.

solusi baru min

Jika kode UVM Anda menghindari penggunaan wildcard dan memiliki sedikit perintah 'set', maka kode Anda akan berjalan lebih cepat.

Solusi yang mungkin untuk masalah konfigurasi UVM adalah:

  • Gunakan variabel global sebagai gantinya
  • Gunakan konfigurasi UVM dengan satu set()
  • Gunakan konfigurasi UVM dengan beberapa set()
  • Gunakan pohon konfigurasi
  • Coba sesuatu yang berbeda

Pendekatan terakhir dalam mencoba sesuatu yang berbeda adalah solusi baru, dan pendekatan ini terus menggunakan API set() dan get(), lalu menyederhanakannya dengan menghapus parameterisasi konfigurasi, menghapus prioritas, dan menghapus perubahan algoritma pencarian. Hasil dari pendekatan baru ini adalah kecepatan yang tinggi.

Item konfigurasi baru Anda didefinisikan dalam kelas turunan dari 'config_item', dan contoh di bawah ini menunjukkan 'int value” sebagai properti yang sedang disetel. Untuk tujuan debug, Anda menambahkan fungsi cantik-cetak.

kelas my_special_config_item memperluas config_item; fungsi baru(string nama = "my_special_config_item"); super.baru(nama); nilai int fungsi akhir; string fungsi virtual convert2string(); kembalikan $sformatf("%s - nilai=%0d <%s>", get_name(), nilai, super.convert2string()); kelas akhir fungsi akhir

'config_item' memiliki atribut nama, dan nama ini dicari, ditambah nama instance. Objek konfigurasi juga memiliki fungsi get_name() untuk mengembalikan nama. Untuk menemukan “instance_name.field_name” database konfigurasi menggunakan array asosiatif untuk kecepatan pencarian dan pembuatan yang cepat.
Untuk ketertelusuran Anda dapat mengetahui siapa yang menyetel atau siapa yang memanggil get, karena nama file dan nomor baris adalah bidang dalam pemanggilan fungsi set() dan get().

set(null, "top.ab*", "SPEED", my_speed_config, `__FILE__, `__LINE__) get(null, "top.abcdmonitor1", "SPEED", speedconfig, `__FILE__, `__LINE__)

Antrian pengakses dapat dicetak selama debug untuk melihat siapa yang memanggil set() dan get().

Untuk mendukung wildcard diperlukan penambahan mekanisme pencarian menggunakan container. Pertimbangkan nama instance 'top.abcd*_0'.

pohon kontainer min
Pohon Kontainer

Bagian wildcard dari nama instance ditangani dengan menggunakan pohon kontainer, bukan array asosiatif.

Kesimpulan

Berbagi data antara modul/instance dan dunia berbasis kelas di testbench UVM dapat dilakukan menggunakan database konfigurasi UVM, namun waspadai penurunan kecepatannya. Jika metodologi Anda menggunakan banyak konfigurasi, maka pertimbangkan untuk menggunakan pendekatan baru yang diperkenalkan yang memiliki paket yang menggunakan sekitar 300 baris kode, bukan 2,600 baris kode dalam file database konfigurasi UVM.

Baca makalah 20 halaman penuh, Menghindari Kegilaan Konfigurasi Dengan Cara Mudah di Siemens EDA.

Blog terkait

Bagikan postingan ini melalui:

Stempel Waktu:

Lebih dari Semiwiki