
██████╗ ██╗██████╗ ███████╗██╗ ██╗███╗ ██╗███████╗ ██████╗
██╔══██╗██║██╔══██╗██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝
██████╔╝██║██████╔╝█████╗ ██║ ██║██╔██╗ ██║█████╗ ██║
██╔═══╝ ██║██╔═══╝ ██╔══╝ ██║ ██║██║╚██╗██║██╔══╝ ██║
██║ ██║██║ ███████╗███████╗██║██║ ╚████║███████╗╚██████╗
╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝
Silakan pesan - sangat senang membuat Pipelinec bekerja untuk Anda! Selalu mencari bantuan juga. -Julian
Memulai
Mulailah dengan membaca wiki.
Apa itu Pipelinec?
A-C-Like (1) Perangkat Keras Deskripsi Bahasa (HDL) (2) Menambahkan sintesis tingkat tinggi (HLS) -Se seperti pipelining otomatis (3) sebagai fitur konstruk/kompiler bahasa.
- Bukan sebenarnya C. reguler tetapi sebagian dapat dikompilasi oleh GCC/LLVM untuk melakukan verifikasi fungsional dasar/'simulasi'. Jangkau jika tertarik untuk mengembangkan sintaksis bahasa yang lebih kompleks!
- Dapat secara wajar menggantikan Verilog/VHDL. Kompiler menghasilkan VHDL yang dapat disintesiasi dan dapat dibaca manusia+debuggable. Ada kait untuk memasukkan VHDL mentah / kotak IP / hitam yang ada.
- Jika perhitungan dapat ditulis sebagai fungsi murni tanpa efek samping (yaitu tidak ada variabel global/statis) maka itu akan autopipelined. Secara konseptual mirip dengan teknologi seperti variabel latency hyper-pipelining dan opsi retiming Xilinx. Berbagi beberapa tujuan desain yang digerakkan oleh kompiler dari proyek XLS Google, bahasa Dfianthdl, dan dialek Circt tertentu juga.
Apa yang bukan Pipelinec?
- Sintesis tingkat tinggi kode C sewenang -wenang dengan model / utas memori global / dll:
- Tidak dapat melakukan 'loop bersarang untuk arsitektur memori' untuk Anda.
- Simulator perangkat keras berbasis C yang dikompilasi:
- Hanya bagian dari kode Pipelinec yang dapat dikompilasi oleh C Compilers and Run (didorong).
- Tetapi seluruh multi-modul, multi-jam-domain, dll. Seluruh desain tidak dapat begitu saja dikompilasi dan dijalankan seperti program C biasa.
- Meta-Programming Hardware-Generator (Kel. Menggunakan Sistem Jenis C dan Preprocessor).
- Alat jahitan mengotomatiskan aliran build dari kode/modul ke bitstream:
- Alat melakukan sebagian mengotomatiskan sintesis tetapi otomatisasi ke bitstream akhir diserahkan kepada pengguna.
Fitur/manfaat inti
Bahasa deskripsi perangkat keras yang mudah dimengerti dengan kompiler autopipelining yang kuat dan kumpulan fitur desain perangkat keras kehidupan nyata.
- Sintaks C yang akrab yang menghilangkan banyak kebiasaan HDL yang pemula (dan para ahli) dapat menjadi korban (mis. Memblokir/menugasi nonblocking, beralasan tentang pemesanan berurutan logika kombinatorial).
- Kompatibel dengan semua simulator HDL. Mantan. Dapat memulai modelSim dalam hitungan detik dan mengimpor manusia yang dapat dibaca+vhdl debuggable w/ working printf's. Dapat juga membuat 'simulasi' berbasis C yang dikompilasi dengan ultra-cepat. Konversi ke Verilog juga disertakan sesuai kebutuhan, yaitu untuk Verilator.
- Umpan balik waktu yang bermanfaat yang berasal dari laporan alat sintesis untuk membantu mengidentifikasi logika jalur kritis yang tidak dapat secara otomatis disalurkan - terutama bermanfaat bagi mereka yang baru untuk desain logika digital.
- Terintegrasi dengan sisi perangkat lunak C dengan mudah; Membantu pembuatan kode bawaan. (Kel. Untuk struct un/pengepakan dari array byte de/serial saat memindahkan data dari host <-> FPGA).
- Penggantian Bahasa Deskripsi Perangkat Keras Lengkap. Dapat memulai dengan mengkloning desain VHDL/Verilog yang ada atau termasuk VHDL mentah - tidak dipaksa untuk menggunakan seluruh bahasa setiap saat.
- Kabel point-to-point yang terlihat secara global, penyeberangan domain jam multi-tingkat/lebar, dan FSM yang diturunkan, hanyalah beberapa dari daftar fitur komposabilitas yang meningkat yang diilhami oleh persyaratan/tugas desain perangkat keras kehidupan nyata.
- Pipelining otomatis sebagai fitur kompiler. Penggunaan dasar alat ini adalah untuk menghasilkan pipa tunggal untuk jatuh ke desain yang ada di tempat lain. Hilangkan praktik Pipelining Logic dengan tangan = tidak portabel (bergantung pada frekuensi dan bagian operasi).
Elemen desain mendasar adalah mesin negara/elemen stateful (register, RAM, dll), fungsi murni tanpa kewarganegaraan yang diubah secara otomatis, dan interkoneksi (kabel, CDC, async fifo, dll). Desain dapat disusun agar terlihat seperti 'mengkomunikasikan proses/benang berurutan' sesuai kebutuhan.
Dengan mengisolasi logika kompleks ke dalam fungsi yang dapat autopipelin, dan hanya menulis jam literal dengan deskripsi perangkat keras jam bila benar -benar diperlukan, desain Pipelinec tidak perlu ditulis ulang untuk setiap perangkat target / frekuensi operasi baru. Harapannya adalah untuk membangun desain perangkat keras yang dibagikan, berkinerja tinggi, perangkat tinggi, yang dijelaskan dalam tampilan bahasa C yang akrab dan kuat.
Untuk perangkat lunak, orang -orang yang menulis Pipelinec harus merasa ingin memecahkan teka -teki pemrograman di C - aturan puzzle menyembunyikan/menyiratkan konsep perangkat keras. Untuk orang -orang perangkat keras, Pipelinec adalah bahasa deskripsi perangkat keras yang lebih baik yang mencoba menemukan jalan tengah antara RTL tradisional dan HLS. Ini adalah bahasa pilihan saya sebagai insinyur FPGA :).