Saya selalu membaca bahwa penundaan yang dinyatakan dalam kode RTL tidak pernah dapat disintesis. Mereka dimaksudkan hanya untuk tujuan simulasi dan alat sintesis modern hanya akan mengabaikan keterlambatan deklarasi dalam kode.
Misalnya: x = #10 y;
akan dianggap sebagai x = y;
oleh alat sintesis.
Apa alasan keterlambatan deklarasi dalam bahasa deskripsi perangkat keras (misalnya, VHDL, Verilog atau Sytem-Verilog) tidak dapat disintesis?
verilog
vlsi
system-verilog
asic
Anand
sumber
sumber
Jawaban:
Mensintesis berarti mengubah apa yang telah Anda deskripsikan (di Verilog di sini) menjadi perangkat keras nyata .
Sekarang di Verilog Anda, Anda mengatakan bahwa Anda memiliki penundaan 50ns. Ok, tapi sekarang, dalam hal perangkat keras, bagaimana Anda mengubahnya menjadi perangkat keras yang sebenarnya?
Jika Anda menggunakan FPGA, bagaimana Anda benar-benar membangun penundaan 50ns Anda menggunakan sumber daya FPGA yang tersedia (LUT, Register, elemen Ram, ...)? Dengan menambahkan penundaan perutean tambahan? bayangkan Anda menentukan penundaan 1s! Mustahil tanpa menggunakan SEMUA kemampuan perutean chip Anda (mungkin tidak cukup). Desain Anda tidak dapat dipasang. Sama untuk ASIC. Anda akan menggunakan 80% permukaan silikon untuk menambahkan penundaan ke SATU baris.
Cara itu seharusnya bekerja adalah bahwa Anda menggunakan desain sinkron dan Anda menerapkan penundaan sendiri menggunakan penghitung atau teknik lainnya. Tetapi penundaan harus merupakan kelipatan dari jam elemen itu.
Biasanya Anda menemukan hal-hal seperti "setelah 10 ns" tesis adalah penundaan propagasi. Saat melakukan simulasi ideal pada simulator Verilog, output terjadi tepat saat input berubah. Ini tidak realistis dan tidak menggambarkan cara kerja perangkat keras yang sebenarnya. Untuk memperhitungkan itu, Anda dapat menentukan setelah berapa lama output Anda akan diubah: menggunakan deklarasi keterlambatan.
sumber
Porting jawaban saya dari SO . Yang berfokus pada mengapa tidak praktis untuk mensintesis penundaan mutlak
Saat mensintesis pohon jam, alat sintesis menyeimbangkannya dengan menambahkan penundaan sehingga semua node menerima jam pada saat yang sama, sehingga alat sintesis tampaknya memiliki kemampuan untuk menambahkan penundaan.
Namun ketika ASIC diproduksi ada perbedaan dalam kecepatan, pada tingkat tinggi ini dapat dilihat sebagai Lambat, Khas dan Cepat. Dalam praktiknya ada ratusan variasi sudut ini di mana jenis perangkat tertentu dalam silikon berjalan cepat dan lainnya lambat.
Sudut-sudut silikon ini juga memiliki peringkat suhu, kasus terburuk mungkin + 140C Silikon cepat dan -40C Silikon lambat. Variasi dari penundaan melalui buffer dalam hal ini bisa dari 1ns hingga 30ns.
Untuk mengembalikan ini ke Verilog jika
#10
dapat disintesis, Anda akan benar-benar mendapatkan 155 + -145 yaitu 10ns hingga 300ns, jika Anda juga mendesain sesuatu dengan#20
menjadi bagian dari antarmuka atau struktur kontrol yang sama, ia akan memiliki kisaran 20ns hingga 600ns . Karena itu semuanya tidak benar-benar valid terhadap desain Anda. Anda tidak mendapatkan yang tepat#10
dan#20
yang ditentukan.Pohon jam dirancang dengan cara membatasi batas maksimum dan minimum, sehingga semua simpul pada pohon jam akan berskala relatif satu sama lain. Mereka tidak pernah diberikan aturan ketat yang harus # 10ns karena ini secara fisik tidak mungkin untuk dijamin dalam sirkuit kombinatorial.
sumber
Satu-satunya satuan waktu absolut adalah dari jam eksternal. Di mana penundaan sewenang-wenang akan datang - seperti apa logika digital yang setara yang akan menghasilkannya dari jam?
Jika Anda ingin penundaan yang dapat disintesis maka Anda harus menggunakan input jam eksternal dan mesin / penghitung keadaan yang sesuai yang akan menghitung jumlah siklus jam tertentu.
sumber