เหตุผลที่ UVM Testbench ส่วนใหญ่ไปไม่ถึงเป้าหมาย Coverage Closure
เจาะลึกปัญหาการออกแบบการทดสอบชิปที่มักมองข้าม พร้อมแนวทางแก้ปัญหาด้วย Sequence Taxonomy ตั้งแต่วันแรก

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
- วิเคราะห์จากโปรเจกต์ Verification กว่า 20 โปรเจกต์พบปัญหาการทำ Coverage Closure ตกม้าตายจุดเดียวกัน
- การเขียน Testbench มักเน้นแต่เส้นทางปกติ (happy path) และทิ้ง Corner cases ไว้ทำทีหลังในสัปดาห์ที่ 8
- การกำหนด Sequence Taxonomy ชัดเจนตั้งแต่ก่อนเขียน Driver ช่วยประหยัดเวลาแก้ไขในขั้นตอน Tape-out ได้ถึง 3-4 สัปดาห์
จากการศึกษาโปรเจกต์ Verification มากกว่า 20 โปรเจกต์ ปัญหาเดิมๆ มักจะวนกลับมาซ้ำซาก นั่นคือการเขียน Sequence ที่หน้าตาดูดีประมาณ 5 ตัว แต่ทั้งหมดกลับทดสอบเฉพาะเส้นทางที่ราบรื่นหรือที่เรียกว่า happy path เท่านั้น ส่วนกรณีใช้งานขอบเขตยากๆ (corner cases) กลับถูกเพิ่มเข้ามาทีหลังแบบขอไปทีในช่วงสัปดาห์ที่ 8 ของโครงการ
เมื่อถึงจุดนั้นช่องว่างของ Coverage จะบังคับให้วิศวกรต้องทำการสุ่มแบบจำกัด (constrained-random) แบบผ่าตัดเฉพาะจุด ซึ่งใช้เวลามากกว่าการออกแบบให้ถูกต้องตั้งแต่สัปดาห์แรกถึงสองเท่า

ภาพประกอบจากคลังภาพสต็อก ไม่ใช่ภาพจากเหตุการณ์จริง
ก่อนที่คุณจะเริ่มลงมือพิมพ์โค้ด Driver แม้แต่บรรทัดเดียว สิ่งที่ควรทำคือการกำหนดโครงสร้างลำดับหรือ Sequence Taxonomy ให้ชัดเจนตามแนวทางต่อไปนี้:
- baseline_seq: รูปแบบกระตุ้นที่ถูกต้องตามโปรโตคอลและเป็นมาตรฐาน
- stress_seq: การทำธุรกรรมแบบต่อเนื่องติดกัน (back-to-back) และความยาว Burst สูงสุด
- error_inject_seq: การจำลองแอดเดรสผิดพลาด, Burst ผิดกฎ และการละเมิดโปรโตคอล
- mixed_seq: การสลับระหว่างการอ่านและเขียนพร้อมช่องว่างแบบสุ่ม
จากนั้นให้นำแต่ละ Sequence ไปผูกเข้ากับ Functional Coverage Bin ทันที หากพบว่า Sequence ของคุณไม่สามารถเข้าถึง Bin นั้นได้ ให้พิจารณาว่าตัว Sequence นั้นเองที่ยังทำมาไม่สมบูรณ์ ไม่ใช่ความผิดของตัว Coverage Model
ในกระบวนการออกแบบ ASIC และ FPGA การทำ Coverage Closure มักเป็นคอขวดสำคัญที่กินเวลามากที่สุด การที่ผู้เชี่ยวชาญชี้ให้เห็นถึงความจำเป็นในการสร้าง Sequence Taxonomy ตั้งแต่ต้นสัปดาห์แรก ช่วยสะท้อนให้เห็นว่าการวางสถาปัตยกรรม Verification สำคัญไม่แพ้การออกแบบ RTL เพราะการแก้ปัญหาที่ปลายทางมักซับซ้อนและเสี่ยงต่อการหลุดรอดของ Bug ในซิลิคอนจริง
การปรับเปลี่ยนนิสัยการเขียนโค้ดเพียงเล็กน้อยนี้ จะช่วยลดความเจ็บปวดในการทำ Coverage Closure ช่วงใกล้วันส่งมอบหรือ Tape-out ได้ถึง 3-4 สัปดาห์เต็มๆ
ที่มา: Dev.to
พบข้อมูลผิดพลาดในบทความนี้? แจ้งปัญหาบทความนี้
ความคิดเห็น
แสดงความคิดเห็น