
██████╗ ██╗██████╗ ███████╗██╗ ██╗███╗ ██╗███████╗ ██████╗
██╔══██╗██║██╔══██╗██╔════╝██║ ██║████╗ ██║██╔════╝██╔════╝
██████╔╝██║██████╔╝█████╗ ██║ ██║██╔██╗ ██║█████╗ ██║
██╔═══╝ ██║██╔═══╝ ██╔══╝ ██║ ██║██║╚██╗██║██╔══╝ ██║
██║ ██║██║ ███████╗███████╗██║██║ ╚████║███████╗╚██████╗
╚═╝ ╚═╝╚═╝ ╚══════╝╚══════╝╚═╝╚═╝ ╚═══╝╚══════╝ ╚═════╝
โปรดอย่าลังเลที่จะส่งข้อความ - มีความสุขมากที่จะทำให้ PipelInec ทำงานให้คุณ! มักจะมองหาความช่วยเหลือเช่นกัน -จูเลียน
เริ่มต้น
เริ่มต้นด้วยการอ่านวิกิ
Pipelinec คืออะไร?
A-C-like (1) Hardware Description Language (HDL) (2) การเพิ่มการสังเคราะห์ระดับสูง (HLS) ที่มีลักษณะเหมือนไปป์เพลินอัตโนมัติ (3) เป็นคุณสมบัติการสร้างภาษา/คอมไพเลอร์
- ไม่ปกติ C. จริง ๆ แต่สามารถรวบรวมได้บางส่วนโดย GCC/LLVM สำหรับการตรวจสอบการทำงานพื้นฐาน/'การจำลอง' เข้าถึงหากสนใจในการพัฒนาไวยากรณ์ภาษาที่ซับซ้อนมากขึ้น!
- สามารถแทนที่ Verilog/VHDL ได้อย่างสมเหตุสมผล คอมไพเลอร์ผลิต VHDL ที่สามารถสังเคราะห์ได้และสามารถอ่านได้ มีตะขอสำหรับการแทรก VHDL ดิบ / กล่อง IP / Black ที่มีอยู่
- หากการคำนวณสามารถเขียนเป็นฟังก์ชั่นที่บริสุทธิ์โดยไม่มีผลข้างเคียง (เช่นไม่มีตัวแปรทั่วโลก/สแตติก) ก็จะถูกอัตโนมัติ แนวคิดคล้ายกับเทคโนโลยีเช่นการใช้เวลาแฝงตัวแปรของ Intel และตัวเลือกการปรับเปลี่ยนของ Xilinx การแบ่งปันเป้าหมายการออกแบบท่อที่ขับเคลื่อนด้วยคอมไพเลอร์บางส่วนของโครงการ XLS ของ Google, ภาษา Dfianddl และภาษา Circt บางอย่างเช่นกัน
Pipelinec ไม่ใช่อะไร?
- การสังเคราะห์รหัส C ระดับสูงด้วยโมเดลหน่วยความจำทั่วโลก / เธรด / etc:
- ไม่สามารถทำ 'ลูปซ้อนกันกับสถาปัตยกรรมหน่วยความจำ' สำหรับคุณ
- คอมไพล์มาจำลองฮาร์ดแวร์ที่ใช้ C:
- เฉพาะ บางส่วน ของรหัส PipelInec เท่านั้นที่สามารถรวบรวมได้โดย C Compilers และ Run (ได้รับการสนับสนุน)
- แต่การออกแบบทั้งหมดหลายโมดูลทั้งหมด-โดเมน ฯลฯ การออกแบบทั้งหมดไม่สามารถรวบรวมและทำงานได้เหมือนโปรแกรม C ปกติ
- Meta-Programming Hardware-Generator (เช่นใช้ระบบประเภท C และตัวประมวลผลล่วงหน้า)
- การเย็บเครื่องมือโดยอัตโนมัติการสร้างโฟลว์จากรหัส/โมดูลเป็นบิตสตรีม:
- เครื่องมือทำให้การสังเคราะห์โดยอัตโนมัติบางส่วนทำงาน แต่ระบบอัตโนมัติไปยังบิตสตรีมสุดท้ายจะถูกทิ้งไว้ให้ผู้ใช้
คุณสมบัติหลัก/ประโยชน์
ภาษาคำอธิบายฮาร์ดแวร์ที่เข้าใจง่ายด้วยคอมไพเลอร์ที่มีประสิทธิภาพและการเติบโตของการออกแบบฮาร์ดแวร์ในชีวิตจริงที่ได้รับแรงบันดาลใจ
- ไวยากรณ์ C ที่คุ้นเคยที่กำจัด HDL quirks จำนวนมากที่ผู้เริ่มต้น (และผู้เชี่ยวชาญ) สามารถตกเป็นเหยื่อของ (เช่นการปิดกั้น/การไม่ปิดกั้นการกำหนดเหตุผลเกี่ยวกับการสั่งซื้อตามลำดับของตรรกะ combinatorial)
- เข้ากันได้กับเครื่องจำลอง HDL ทั้งหมด อดีต. สามารถเริ่มต้นโมเดลได้ในไม่กี่วินาทีและนำเข้า VHDL ที่อ่านได้+DEBUGGABLE W/ Working Printf's นอกจากนี้ยังสามารถสร้าง 'การจำลอง' ที่รวบรวมได้อย่างรวดเร็วเป็นพิเศษ C การแปลงเป็น Verilog นั้นรวมอยู่ในความจำเป็นเช่นสำหรับ Verilator
- ข้อเสนอแนะการกำหนดเวลาที่เป็นประโยชน์ที่ได้มาจากรายงานเครื่องมือการสังเคราะห์เพื่อช่วยระบุตรรกะเส้นทางวิกฤตที่ไม่สามารถจัดส่งโดยอัตโนมัติ - เป็นประโยชน์อย่างยิ่งสำหรับผู้ที่เพิ่งเริ่มต้นด้วยการออกแบบตรรกะดิจิตอล
- รวมเข้ากับซอฟต์แวร์ด้าน C ได้อย่างง่ายดาย การสร้างรหัสในตัวที่เป็นประโยชน์ (เช่นสำหรับโครงสร้าง Un/Packing structs จาก de/serialized byte array เมื่อย้ายข้อมูลจากโฮสต์ <-> FPGA)
- การเปลี่ยนภาษาฮาร์ดแวร์เต็มรูปแบบ สามารถเริ่มต้นด้วยการโคลนการออกแบบ VHDL/Verilog ที่มีอยู่หรือรวมถึง VHDL ดิบ - ไม่ถูกบังคับให้ใช้ทั้งภาษาตลอดเวลา
- สายไฟจุดต่อจุดที่มองเห็นได้ทั่วโลกการข้ามโดเมนโดเมนนาฬิกาหลายอัตรา/ความกว้างและ FSM ที่ได้มาจากความซับซ้อนเป็นเพียงรายการคุณสมบัติการเพิ่มความสามารถในการรวบรวมที่ได้รับแรงบันดาลใจจากข้อกำหนด/งานการออกแบบฮาร์ดแวร์ในชีวิตจริง
- การวางท่ออัตโนมัติเป็นคุณสมบัติของคอมไพเลอร์ การใช้เครื่องมือขั้นพื้นฐานสามารถสร้างท่อเดียวเพื่อลดลงในการออกแบบที่มีอยู่ที่อื่น กำจัดการปฏิบัติของตรรกะการวางท่อด้วยมือ = ไม่พกพา (ขึ้นอยู่กับความถี่ในการทำงานและส่วน)
องค์ประกอบการออกแบบพื้นฐานคือเครื่องจักรของรัฐ/องค์ประกอบสถานะ (ลงทะเบียน, Rams, ฯลฯ ), ฟังก์ชั่นบริสุทธิ์ไร้สัญชาติอัตโนมัติและการเชื่อมต่อระหว่างกัน (สาย, CDC, Async Fifos, ฯลฯ ) การออกแบบสามารถจัดโครงสร้างให้ดูเหมือน 'การสื่อสารกระบวนการ/เธรดตามลำดับ' ตามต้องการ
ด้วยการแยกตรรกะที่ซับซ้อนออกเป็นฟังก์ชั่น autopipeline- และการเขียนเฉพาะนาฬิกาตามตัวอักษรโดยคำอธิบายฮาร์ดแวร์นาฬิกาเมื่อจำเป็นอย่างยิ่งการออกแบบ pipelinec ไม่จำเป็นต้องเขียนใหม่สำหรับแต่ละอุปกรณ์เป้าหมายใหม่ / ความถี่ในการทำงาน ความหวังคือการสร้างการใช้งานร่วมกันประสิทธิภาพสูงอุปกรณ์การออกแบบฮาร์ดแวร์ที่อธิบายไว้ในรูปลักษณ์ภาษา C ที่คุ้นเคยและมีพลัง
สำหรับคนซอฟต์แวร์ที่เขียน pipelinec ควรรู้สึกเหมือนการแก้ปริศนาการเขียนโปรแกรมใน C - กฎของแนวคิดการซ่อน/บอกเป็นนัยถึงแนวคิดฮาร์ดแวร์ สำหรับคนฮาร์ดแวร์ PipelInec เป็นภาษาคำอธิบายฮาร์ดแวร์ที่ดีกว่าพยายามหาพื้นกลางระหว่าง RTL แบบดั้งเดิมและ HLS มันเป็นภาษาที่ฉันเลือกในฐานะวิศวกร FPGA :)