2 คะแนน โดย GN⁺ 2024-02-06 | 1 ความคิดเห็น | แชร์ทาง WhatsApp
  • 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 นำองค์ประกอบต่อไปนี้มารวมเป็นโมดูล Blinky
    • RP2040Kit
    • LEDIndicatorBlue
    • LDOReg3V3
    • USBCConn
    • ไฟเลี้ยง USB-C → อินพุตตัวปรับแรงดัน → ไฟเลี้ยงไมโครคอนโทรลเลอร์ → เชื่อมต่อ GPIO13 กับอินพุต LED
    • ค่าความต้านทานของ LED กำหนดเป็น 100ohm +/- 10%
  • คอมไพเลอร์จะสร้าง netlist สำหรับอธิบายการเชื่อมต่อของวงจร และยังทำการเลือกชิ้นส่วนทั่วไปด้วย

ขอบเขตปัจจุบันและทิศทางการพัฒนา

  • จุดเน้นของการพัฒนาถัดไปคือ การนำเลย์เอาต์กลับมาใช้ซ้ำ, ความสัมพันธ์เชิงคณิตศาสตร์ระหว่างค่า, และฟังก์ชันสำหรับนิยามวงจรในลักษณะคล้าย trait ของ Rust
  • ปัจจุบัน atopile มุ่งเป้าไปที่การออกแบบ แผงวงจรพิมพ์ (PCB) ทุกประเภทที่มีความซับซ้อนต่ำถึงปานกลาง
    • มีแผนจะค่อย ๆ เพิ่มระดับความซับซ้อนของวงจรที่คอมไพเลอร์รองรับได้
    • เป็นภาษาสำหรับ PCB โดยเฉพาะ ไม่ใช่สำหรับการออกแบบชิป
  • แกนหลักของ atopile เปิดซอร์สภายใต้ Apache 2.0
  • แผนสร้างรายได้คือแนวทางคล้าย GitLab โดยขายฟีเจอร์สำหรับลูกค้าองค์กร

1 ความคิดเห็น

 
GN⁺ 2024-02-06
ความคิดเห็นจาก Hacker News
  • ความคิดเห็นเกี่ยวกับการแสดงวงจรด้วยโค้ด

    • สิ่งนี้ไม่ใช่การแสดงวงจรด้วยโค้ด แต่เป็นการแสดงด้วยข้อความ เป็นการแทน netlist ในรูปแบบที่ไม่เป็นมาตรฐานและเพิ่มเมทาดาทาเข้าไป ซึ่งมีประโยชน์ แต่ไม่ได้ระบุคุณลักษณะการแบ่งจริงหรือค่าความคลาดเคลื่อน เป็นต้น
    • ควรกำหนดฟังก์ชันสร้างโมดูลเพื่อสร้างโมดูลแบ่งสัญญาณตามอัตราส่วนที่ต้องการ ค่าความคลาดเคลื่อนของเอาต์พุต และกระแสเอาต์พุตสูงสุด นอกจากนี้ การเพิ่มคอมโพเนนต์ที่เป็นไปได้ลงใน BOM ก็สำคัญเช่นกัน
    • แนวทางนี้ช่วยลดงานซ้ำในการออกแบบวงจร และทำให้สามารถตรวจทานไฟล์วงจรได้เหมือนกับการทำ code review
  • ความคิดเห็นเกี่ยวกับเครื่องมือชิ้นส่วนอิเล็กทรอนิกส์

    • สถานะของเครื่องมือชิ้นส่วนอิเล็กทรอนิกส์นั้นแย่มาก และในปัจจุบันผู้ออกแบบส่วนใหญ่ยังคงคัดลอกข้อมูลจาก PDF เมื่อต้องเพิ่มคาปาซิเตอร์ คริสตัล หรือพอร์ตสำหรับโปรแกรม เข้าไปพร้อมกับเรกูเลเตอร์หรือไมโครคอนโทรลเลอร์ในแผนผังวงจร
    • การที่หลายคนทำงานออกแบบเดียวกันและรวมการเปลี่ยนแปลงเข้าด้วยกันนั้นยากมาก
    • หากย้ายไปสู่โลกที่เป็นโมดูลมากขึ้น การออกแบบจะง่ายขึ้น และนี่เป็นแนวโน้มที่น่าสนใจมาก
  • ความคิดเห็นเกี่ยวกับการแชร์โมดูล

    • การแชร์และทำให้เป็นไลบรารีสำหรับโมดูลอย่างตัวแบ่งแรงดันไฟฟ้าเป็นไอเดียที่ดี
    • หากทำข้อจำกัดด้านเลย์เอาต์ให้เป็นโมดูล ก็อาจสร้างเลย์เอาต์ของทั้งโปรเจกต์แบบอัตโนมัติได้ ซึ่งช่วยให้การออกแบบมีประสิทธิภาพ
  • ความคิดเห็นเกี่ยวกับแนวทางใหม่สำหรับการออกแบบ PCB

    • การวางรากฐานด้านข้อมูลที่สมบูรณ์และการทำงานร่วมกันได้สำหรับแนวทางใหม่ในการออกแบบ PCB เป็นไอเดียที่ยอดเยี่ยม
    • เนื่องจากแผนผังวงจรไฟฟ้าคุ้นเคยกับวิศวกรไฟฟ้ามากกว่า จึงจำเป็นต้องมีความสามารถในการสลับไปมาระหว่างข้อความกับแผนผังวงจรแบบภาพ
  • ข้อเสนอให้ใช้ Verilog

    • มีข้อเสนอให้ใช้ Verilog หรือ SystemVerilog เพื่อกำหนดข้อมูลชิ้นส่วนเป็นพารามิเตอร์ และใช้สิ่งนั้นสร้างแผนผังวงจร
    • ยังสามารถใช้ Verilog-AMS สำหรับการจำลองแบบแอนะล็อกได้ด้วย
  • ความคิดเห็นเกี่ยวกับความแตกต่างระหว่างโปรแกรม EDA กับ CAD เชิงกล

    • รู้สึกประหลาดใจกับการขาด "ความสัมพันธ์" ในโปรแกรม EDA เมื่อเทียบกับ CAD เชิงกล
    • เครื่องมืออย่าง KiCad มี 'netclasses' สำหรับกำหนดความกว้างของลายทองแดงด้วยตนเอง แต่ก็ยังต้องการเครื่องมือที่มีประสิทธิภาพกว่านี้
  • ความคิดเห็นเกี่ยวกับไวยากรณ์การ import โค้ด

    • import Y from X ควรถูกเปลี่ยนเป็นรูปแบบอย่าง import X.Y หรือ from X import Y เพื่อให้ใช้เครื่องมือ autocomplete ได้
  • BFH - Health Without Borders

    • BFH หรือ BorderFreeHealth สนับสนุนการเข้าถึงผลิตภัณฑ์เพื่อสุขภาพอย่างทั่วถึง โดยขจัดอุปสรรคทางภูมิศาสตร์และให้บริการจัดส่งเวชภัณฑ์หลากหลายประเภททั่วโลก
  • ความหลงใหลในงานโฮมออโตเมชัน

    • มีการทำงานด้านโฮมออโตเมชันจำนวนมาก และรู้สึกไม่พอใจกับการต้องใช้เวลามากไปกับการใช้ breadboard หรือออกแบบรีเลย์โมดูลที่มี IO แบบกำหนดเอง
    • ถามว่ามีวิธีใดบ้างที่จะสามารถบริจาคให้กับโปรเจกต์นี้ได้