Pertimbangkan ungkapan seperti:
assign x = func(A) ^ func(B);
di mana output dari func adalah lebar 32 bit, dan x adalah kawat 16 bit. Saya hanya ingin menetapkan 16 bit terendah dari xor yang dihasilkan.
Saya tahu kode di atas sudah melakukan itu, tetapi juga menghasilkan peringatan. Pendekatan "jelas" tidak berhasil:
assign x = (func(A) ^ func(B))[15:0]; // error: '[' is unexpected
Dalam contoh Anda, Anda secara implisit memotong bit.
Membuat pemotongan secara eksplisit sering dapat menghapus peringatan dalam simulasi / lint / sintesis.
Salah satu cara untuk melakukan ini secara in-line adalah dengan menggunakan operator transmisi, misalnya:
Pendekatan ini mungkin masuk akal jika jelas dari konteks bahwa semua bit yang dijatuhkan adalah 0's.
Jika beberapa bit mungkin bukan nol maka saya akan menyarankan masih menggunakan net perantara seperti @dwikle yang disarankan dalam jawaban sebelumnya , karena itu membuatnya lebih jelas bahwa Anda benar-benar membuang bit. Ini lagi untuk referensi.
sumber
Saya pikir ini mungkin membantu menjaga agar garis tetap rendah.
Tidak yakin apakah itu valid untuk yang ditugaskan.
sumber