Show HN: Atopile - ออกแบบแผงวงจรด้วยโค้ด
(news.ycombinator.com)- atopile คือภาษาและ toolchain โอเพนซอร์สสำหรับอธิบายวงจรอิเล็กทรอนิกส์ด้วยโค้ด โดยมุ่งทำให้การแสดงความต้องการของการออกแบบ PCB, การนำแบบกลับมาใช้ซ้ำ, และการสร้างผลลัพธ์ต่าง ๆ ถูกจัดการได้เหมือนการพัฒนาซอฟต์แวร์
- จุดตั้งต้นคือความรู้สึกว่าการออกแบบฮาร์ดแวร์นั้น เหมือนการสร้างซอฟต์แวร์ด้วย assembly เพียงอย่างเดียว และเป็นความพยายามจะนำ workflow แบบ build·test·merge อัตโนมัติสไตล์ GitHub มาใช้กับการออกแบบวงจรด้วย
- ภาษา ato ของโครงการทำให้สามารถแยกวงจรออกเป็นโมดูล, คอมโพเนนต์, และอินเทอร์เฟซ แล้วซ้อนและเชื่อมต่อกันได้ โดยมีตัวอย่างโมดูล Blinky ที่ประกอบจาก RP2040, LED, 3.3V LDO, และคอนเนกเตอร์ USB-C
- คอมไพเลอร์จะสร้าง netlist ที่แสดงการเชื่อมต่อของวงจรและเลือกชิ้นส่วนทั่วไปให้ด้วย และในอนาคตตั้งใจจะเสริมการนำเลย์เอาต์กลับมาใช้ซ้ำ, ความสัมพันธ์เชิงคณิตศาสตร์ระหว่างค่า, และการนิยามวงจรที่คล้าย Rust trait
- เป้าหมายปัจจุบันคือการออกแบบ PCB ระดับความซับซ้อนต่ำถึงปานกลาง ไม่ใช่สำหรับการออกแบบชิป โดยเปิดเผยแกนหลักภายใต้ Apache 2.0 และวางแผนสร้างรายได้ด้วยการขายฟีเจอร์ระดับองค์กร
ความพยายามย้ายการออกแบบฮาร์ดแวร์ไปสู่ workflow แบบโค้ด
- atopile คือภาษาและ toolchain โอเพนซอร์สสำหรับ อธิบายวงจรอิเล็กทรอนิกส์ด้วยโค้ด
- ดูภาพรวมแบบรวดเร็วได้ใน เดโมสั้น
- คอมไพเลอร์เผยแพร่อยู่ใน GitHub repository และดูเอกสารได้ที่ getting started
- เนื้อหาที่ลงลึกถึงขั้นตอนออกแบบโมดูล ESP32 มีให้ดูใน วิดีโอเจาะลึก
- ผู้ก่อตั้งเคยต้องวาดและส่งออกแผงวงจรอิเล็กทรอนิกส์ด้วยตนเองในที่ทำงานเดิม และเมื่อเห็น workflow อัตโนมัติบน GitHub ของเพื่อนวิศวกรซอฟต์แวร์ ก็เริ่มคิดว่าจะแนวทางเดียวกันนี้มาใช้กับฮาร์ดแวร์ได้หรือไม่
ภาษา ato และผลลัพธ์จากการคอมไพล์
- ภาษา ato ทำให้สามารถแยกวงจรออกเป็นโมดูล, คอมโพเนนต์, และอินเทอร์เฟซ และเปิดให้บล็อกเหล่านี้ซ้อนกันหรือเชื่อมต่อกันได้
- ตัวอย่าง RP2040 นำองค์ประกอบต่อไปนี้มารวมเป็นโมดูล
BlinkyRP2040KitLEDIndicatorBlueLDOReg3V3USBCConn- ไฟเลี้ยง USB-C → อินพุตตัวปรับแรงดัน → ไฟเลี้ยงไมโครคอนโทรลเลอร์ → เชื่อมต่อ GPIO13 กับอินพุต LED
- ค่าความต้านทานของ LED กำหนดเป็น
100ohm +/- 10%
- คอมไพเลอร์จะสร้าง netlist สำหรับอธิบายการเชื่อมต่อของวงจร และยังทำการเลือกชิ้นส่วนทั่วไปด้วย
- คำอธิบายที่เกี่ยวข้องอยู่ใน บทความ cloud components
ขอบเขตปัจจุบันและทิศทางการพัฒนา
- จุดเน้นของการพัฒนาถัดไปคือ การนำเลย์เอาต์กลับมาใช้ซ้ำ, ความสัมพันธ์เชิงคณิตศาสตร์ระหว่างค่า, และฟังก์ชันสำหรับนิยามวงจรในลักษณะคล้าย trait ของ Rust
- ปัจจุบัน atopile มุ่งเป้าไปที่การออกแบบ แผงวงจรพิมพ์ (PCB) ทุกประเภทที่มีความซับซ้อนต่ำถึงปานกลาง
- มีแผนจะค่อย ๆ เพิ่มระดับความซับซ้อนของวงจรที่คอมไพเลอร์รองรับได้
- เป็นภาษาสำหรับ PCB โดยเฉพาะ ไม่ใช่สำหรับการออกแบบชิป
- แกนหลักของ atopile เปิดซอร์สภายใต้ Apache 2.0
- แผนสร้างรายได้คือแนวทางคล้าย GitLab โดยขายฟีเจอร์สำหรับลูกค้าองค์กร
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ความคิดเห็นเกี่ยวกับการแสดงวงจรด้วยโค้ด
ความคิดเห็นเกี่ยวกับเครื่องมือชิ้นส่วนอิเล็กทรอนิกส์
ความคิดเห็นเกี่ยวกับการแชร์โมดูล
ความคิดเห็นเกี่ยวกับแนวทางใหม่สำหรับการออกแบบ PCB
ข้อเสนอให้ใช้ Verilog
ความคิดเห็นเกี่ยวกับความแตกต่างระหว่างโปรแกรม EDA กับ CAD เชิงกล
ความคิดเห็นเกี่ยวกับไวยากรณ์การ import โค้ด
import Y from Xควรถูกเปลี่ยนเป็นรูปแบบอย่างimport X.Yหรือfrom X import Yเพื่อให้ใช้เครื่องมือ autocomplete ได้BFH - Health Without Borders
ความหลงใหลในงานโฮมออโตเมชัน