Saat ini saya terlibat dalam proyek universitas untuk mengimplementasikan prosesor dari set instruksi yang ada. Idenya adalah bahwa pada akhir proyek saya harus dapat mensintesis desain ini dan menjalankannya dalam FPGA. Semuanya berjalan dengan baik sejauh ini, saya mulai mengimplementasikan desain di Verilog HDL beberapa hari yang lalu dan membuat versi yang sangat sederhana berfungsi. Sekarang masalahnya: Saya menghubungi beberapa orang yang telah terlibat dalam desain perangkat keras selama bertahun-tahun dan mereka menyarankan sebelum saya melangkah lebih jauh saya harus beralih menggunakan SystemC untuk implementasi. Sekarang, membuat saya sangat bingung karena ini adalah pikiran saya:
Verilog -> Sebagai bahasa HDL secara khusus menargetkan desain perangkat keras. Memiliki beberapa level abstraksi seperti Verilog struktural dan perilaku, tetapi ini adalah bentuk yang sangat rapi untuk menentukan RTL suatu desain. Anda pasti dapat mensintesisnya menggunakan banyak alat tergantung pada FPGA yang Anda pilih (dalam kasus saya saya menggunakan Xilinx Vivado 2014 dan papan Zynq). Di sisi bawah, Verilog polos tidak menawarkan abstraksi yang cukup untuk verifikasi dan itulah sebabnya Anda memiliki hal-hal seperti System Verilog.
SystemC -> Ini adalah pustaka kelas C ++ yang secara efektif memperkenalkan konsep waktu dalam C ++ dan memungkinkan Anda untuk melakukan simulasi yang didorong oleh peristiwa. Jelas itu jauh lebih tinggi daripada HDL dan hal-hal di sini dapat diimplementasikan lebih cepat. Ini membuatnya menjadi alat yang sangat baik untuk hal-hal seperti verifikasi dan bahkan implementasi simulator sehingga orang dapat mulai merancang driver dan hal-hal untuk sebuah chip sebelum hal itu benar-benar dibuat. Rupanya, ada juga subset dari SystemC yang dapat disintesis (saya pikir bahkan Xilinx Vivado dapat melakukan ini) dan dalam beberapa kasus itu memungkinkan SystemC untuk digunakan untuk merancang sistem yang sangat besar di mana tingkat abstraksi yang lebih tinggi berguna.
Jadi, pertanyaan saya adalah:
- Apakah pengertian ini tentang apa yang systemC dan Verilog (atau bahasa HDL jika Anda suka) benar?
- Kapan saya harus menggunakan SystemC dan kapan Verilog?
- Saya diberitahu bahwa bahkan di Verilog, menggunakan banyak kode perilaku dapat sedikit bermasalah di bagian-bagian penting dari implementasi karena Anda pada dasarnya memberikan kendala yang jauh lebih sedikit pada alat sintesis tentang cara mensintesisnya. Dengan tingkat abstraksi yang lebih tinggi, bukankah ini akan menjadi masalah? yaitu Jika saya menggunakan systemC saya mungkin berakhir dengan desain yang sangat lambat, haus daya, besar ...
- Orang yang menyarankan SystemC menyebutkan bahwa sepertinya saya sedang melakukan "eksplorasi arsitektural" dan itulah sebabnya dia lebih suka Verilog. Apa sebenarnya artinya itu? Saya mendapat kesan bahwa arsitektur biasanya merujuk pada set instruksi dan mikroarsitektur ke implementasi set instruksi (jadi mikroarsitektur adalah rtl aktual yang mengeksekusi instruksi). Jadi, apakah eksplorasi arsitektural berarti bahwa menurutnya saya sedang mengimplementasikan prosesor untuk melihat seberapa layak sebuah set instruksi?
- Dia mengatakan bahwa argumen untuk menggunakan SystemC adalah bahwa itu jauh lebih mudah karena tingkat abstraksi yang lebih tinggi daripada HDL. Dia juga mengklaim bahwa lebih mudah untuk mendapatkan pengaturan waktu yang tepat. Sejauh mana ini benar?
Bantuan akan sangat dihargai, saya agak bingung dan sulit mendapatkan informasi yang jelas tentang ini secara online. Terima kasih!