ความแตกต่างระหว่างการทดสอบและการตรวจสอบคืออะไร?


15

หนังสือเรียนทุกเล่มที่ฉันเห็นทำให้เป็นเรื่องใหญ่ว่าการทดสอบและการตรวจสอบเป็นแนวคิดที่แตกต่างกันสองประการ ยังไม่มีใครในพวกเขาให้ความแตกต่างที่ชัดเจน (หรือชัดเจนพอที่ฉันในที่สุด)

เพื่อให้บริบทบางอย่างฉันสนใจในการตรวจสอบการออกแบบฮาร์ดแวร์ดิจิทัลโดยใช้ภาษาการออกแบบฮาร์ดแวร์ (HDL)

ฉันเคยเห็นคำอธิบายบางอย่างที่หันไปใช้ความแตกต่างที่ "จับต้องได้" หรือ "จับต้องได้": ถ้ามันเกี่ยวกับอุปกรณ์ที่ผลิตแล้วนั่นเป็นการทดสอบ นี่เป็นเรื่องราวทั้งหมดหรือไม่? ถ้าเป็นเช่นนั้นทำไมคำว่า "test" ถึงเกิดขึ้นบ่อยครั้งในการตรวจสอบ (โดยเฉพาะอย่างยิ่งในการตรวจสอบการทำงานเราพูดถึง testcase, testbenches, DUT (อุปกรณ์ภายใต้การทดสอบ), การทดสอบโดยตรง, การทดสอบแบบสุ่ม ฯลฯ )

คำตอบ:


21

เคยเป็นวิศวกรตรวจสอบการออกแบบ ASIC ที่ Qualcomm ด้วยวิธีที่ง่ายที่สุดฉันสามารถอธิบายได้:

การทดสอบ: ตรวจสอบให้แน่ใจว่าผลิตภัณฑ์ใช้งานได้หลังจากที่คุณสร้างผลิตภัณฑ์ (คิดว่า QA)

การยืนยัน: ทำให้แน่ใจว่าผลิตภัณฑ์ใช้งานได้ก่อนที่คุณจะสร้างขึ้น

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

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

โยนการตรวจสอบวิศวกรตรวจสอบสร้างแบบจำลองที่จำลองพฤติกรรมของชิปพวกเขาสร้าง testbench ที่จะทดสอบรูปแบบเฉพาะเหล่านั้น พวกเขาได้ผลลัพธ์ของโมเดลเหล่านี้แล้วเปรียบเทียบกับ RTL (โมเดลของวงจรการเขียนในภาษาการออกแบบฮาร์ดแวร์) หากพวกเขาตรงกันสิ่งต่าง ๆ (ปกติ) ตกลง

มีจำนวนของวิธีการที่แตกต่างกันสำหรับกระบวนการตรวจสอบที่มีหนึ่งที่นิยมเป็นสากลตรวจสอบวิธีการ (UVM)

มีความลึกในทุ่งนาเป็นอย่างมากและผู้คนสามารถใช้เวลาในอาชีพนี้ได้ทั้งหมด

อีกชิ้นอาหารอันโอชะสุ่มของข้อมูล: โดยปกติคุณจะต้องมี 3 วิศวกรตรวจสอบสำหรับ 1 วิศวกรออกแบบ นั่นคือสิ่งที่ทุกคนในสนามพูด

แก้ไข: ผู้คนจำนวนมากคิดว่าการตรวจสอบเป็นหน้าที่ทดสอบ แต่ไม่ใช่ มันมีบทบาทการออกแบบในตัวเองเพราะคุณต้องเข้าใจความซับซ้อนทั้งหมดของ IC ของคุณเช่นเดียวกับที่นักออกแบบทำแล้วคุณต้องรู้วิธีออกแบบแบบจำลอง testbenches และกรณีทดสอบทั้งหมดที่จะครอบคลุมคุณสมบัติการทำงานทั้งหมดของ IC ของคุณ เช่นเดียวกับการพยายามกดรหัส RTL ทุกบรรทัดสำหรับการรวมบิตที่เป็นไปได้ทั้งหมด โปรดจำไว้ว่าปัจจุบันโปรเซสเซอร์มีทรานซิสเตอร์เป็นพันล้านเนื่องจากกระบวนการผลิตทำให้มีขนาดเล็กลงและเล็กลง (ตอนนี้ 14nm)

นอกจากนี้ในองค์กรขนาดใหญ่เช่น Intel, AMD, Qualcomm และอื่น ๆ ผู้ออกแบบไม่ได้ออกแบบชิปจริงๆ โดยทั่วไปแล้วสถาปนิกจะกำหนดรายละเอียดทั้งหมดจัดวางประเภทของชิ้นส่วนที่ต้องทำงานร่วมกันเพื่อให้ได้ฟังก์ชั่นเฉพาะที่มีความต้องการเฉพาะ (เช่นความเร็วความละเอียด ฯลฯ ) จากนั้นผู้ออกแบบจะใส่รหัสลงใน RTL มันไม่ใช่เรื่องง่ายเลยไม่ใช่แค่การออกแบบเท่าที่วิศวกรจำนวนมากออกจากโรงเรียนคิดว่าเป็น สิ่งที่ทุกคนต้องการเป็นสถาปนิก แต่ต้องใช้การศึกษาและประสบการณ์มากมายเพื่อให้ถึงจุดนั้น สถาปนิกจำนวนมากมีวุฒิการศึกษาระดับปริญญาเอกและมีประสบการณ์ในสาขานักออกแบบมากกว่า 15-20 ปี คนเหล่านี้เป็นคนที่ฉลาด (และบางครั้งก็บ้า) ที่สมควรทำสิ่งที่พวกเขาทำและพวกเขาทำได้ดี สถาปนิกในชิปตัวแรกที่ฉันทำงานอยู่นั้นค่อนข้างอึดอัดและไม่ได้ทำตามบรรทัดฐานทางสังคม แต่เขาสามารถแก้ไขสิ่งที่คุณติดอยู่กับชิปได้และบางครั้งเขาก็จะแก้ปัญหาในหัวของเขาและบอกคุณ เพื่อดูสัญญาณเดียวและคุณจะเป็นอย่างนั้น "เขาทำอย่างนั้นได้อย่างไร" จากนั้นคุณขอให้เขาอธิบายและเขาก็ทำและมันไปทางหัวของคุณ ที่จริงแล้วฉันเป็นแรงบันดาลใจให้อ่านหนังสือแม้ว่าฉันจะเรียนจบแล้ว


+1 ขอบคุณสำหรับคำพูดสุดท้ายช่วยให้เราเห็นว่าสนามมีความสำคัญแน่นอน (แม้ว่า RTL และวิศวกรรมการออกแบบฟังดูน่าสนใจยิ่งขึ้นสำหรับวิศวกรส่วนใหญ่ฉันคิดว่า)
VHDL Addict

เพื่อความสมบูรณ์คุณจะเพิ่มสิ่งที่ testcase คืออะไร?
VHDL Addict

ฉันได้เพิ่มชิ้นอาหารอันโอชะเกี่ยวกับการตรวจสอบสิ่งที่เป็นจริงเพราะความคิดเห็นแรกของคุณเกี่ยวกับบทบาทการออกแบบที่น่าสนใจยิ่งขึ้น; พวกเขาทั้งสองมีบทบาทที่ดีขึ้นอยู่กับสิ่งที่คุณชอบ สำหรับกรณีทดสอบ SoC อย่าง Snapdragon อาจมีกรณีทดสอบหลายหมื่นถึงแสนคดีและมีการทดสอบแบบสุ่มเป็นล้าน เพื่อให้ง่ายขึ้น: คุณกำลังใช้ชุดของอินพุตบิตและที่ได้รับการเปลี่ยนแปลงผ่านโมดูลจำนวนมากจากนั้นคุณจะได้รับบิตเอาต์พุตเป็นผลลัพธ์ที่คุณเปรียบเทียบกับผลลัพธ์ของโมเดลของคุณ สิ่งที่ง่ายเหมือนการทดสอบภาพที่ปรากฏบนโทรศัพท์ของคุณจะมี ...
PGT

จำนวนมากของ testcases สมมติว่าคุณต้องการแสดงพิกเซลเดียวบนหน้าจอมือถือของคุณ สิ่งที่ใครบางคนที่อยู่นอกสนามจะคิดว่าใช้ 1 บิตสำหรับสีขาวและ 0 สำหรับสีดำ ในโลกมือถือจริงพิกเซลนั้นอาจแตกต่างกันไปตามขนาดความเข้มการหมุนรูปแบบสี (YUV ###, RGB ### ฯลฯ ) และคุณอาจทดสอบ 1 บิตภายในชุดของบิตที่นำไปใช้กับอินพุตด้วยกัน บิตอื่น ๆ อาจเป็น 0 เพราะเป็นสีดำหรืออาจเป็น 1 เนื่องจากเป็นการจัดการข้อมูลอื่น ๆ เช่นวิธีจัดการกับโหมดการส่งข้อมูล CLK เปิด / ปิดการใช้งานทริกเกอร์สิ่งแฟนซีเช่นนั้น
PGT

6

ในการตรวจสอบหนังสือของฉันคือทำให้แน่ใจว่าสิ่งที่คุณได้ออกแบบไว้ "ทำงาน" - กล่าวคือคุณมีชุดของสิ่งที่อุปกรณ์ "จำเป็นต้องดำเนินการ" และการตรวจสอบจะทำเครื่องหมายที่รายการเหล่านั้น

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

สรุปการตรวจสอบกำลังตรวจสอบการออกแบบและการทดสอบกำลังตรวจสอบผลิตภัณฑ์


ฉันคิดว่าฉันเริ่มเข้าใจ ... คุณช่วยยกตัวอย่างให้หน่อยได้ไหม?
VHDL Addict

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

@ Majenko - คุณเขียนหนังสือเกี่ยวกับการยืนยันหรือไม่ คุณจะแบ่งปันรายละเอียดเพิ่มเติมเกี่ยวกับเรื่องนี้หรือไม่?
Michael Karas

4

มาจากพื้นหลังออกแบบ ASIC (ฮาร์ดแวร์) มีสามข้อสำคัญ: การตรวจสอบ , การตรวจสอบและทดสอบ คำตอบก่อนหน้านี้โดยทั่วไปพูดถึงหนึ่งหรือสองของคำเหล่านี้ แต่ไม่ชัดเจนทั้งสามในวิธีที่ฉันจะ นี่คือวิธีที่ฉันเข้าใจพวกเขา:

  • การตรวจสอบความถูกต้อง: ข้อกำหนด (มักเป็นแบบ C) ตรงตามข้อกำหนดของตลาดหรือลูกค้า
  • การตรวจสอบ: การใช้งาน (RTL, netlist หรือ GDS2) ตรงกับข้อกำหนดหรือไม่
  • ทดสอบ: อุปกรณ์ที่ผลิตตรงกับการใช้งานหรือไม่

Netlist และ GDS2 สามารถให้ผลลัพธ์ที่ต่างกันได้หรือไม่?
Ciro Santilli 新疆改造中心法轮功六四事件

1
@CiroSantilli 巴拿馬文件六四事件法轮功ฉันคิดว่าคุณกำลังถามเกี่ยวกับพฤติกรรมของเกตกับทรานซิสเตอร์ สำหรับแรงดันไฟฟ้าแบบดิจิตอลและรูปคลื่นปกติผมว่าพวกมันจะให้ผลลัพธ์เหมือนกัน แต่อาจมีเอฟเฟกต์ "แบบอะนาล็อก" ที่ไม่ได้รับการพิจารณาโดยประตูที่เงียบสงบเช่นการเปลี่ยนแปลงพลังงาน / ภาคพื้นดินหรือการแบ่งปันค่าสัญญาณ หากมีเอฟเฟกต์เหล่านั้นแสดงว่าพฤติกรรมดิจิทัลในอุดมคติอาจไม่เป็นจริง
Winston Smith

1
@CiroSantilli 新疆改造中心法轮功六四事件ใช่พวกเขาสามารถให้ผลลัพธ์ที่แตกต่างอย่างมีนัยสำคัญ เคยทำผิดพลาดไปแล้ว
Elliot Alderson

1

การทดสอบออกแบบมาเพื่อดูว่าตรงตามข้อกำหนดหรือไม่ การตรวจสอบคือการตรวจสอบว่าอุปกรณ์ตรงตามอินพุตการออกแบบหรือไม่ - รายละเอียดทั้งหมด ฉันคิดว่ามีการตีความอีกมากมาย แต่นี่คือสิ่งที่ฉันเห็นในเอกสารแนะนำ FIA


ฉันเห็นฉันเปลี่ยนข้อความเล็กน้อย (จากการทดสอบเป็นการทดสอบ ) เพื่อให้ชัดเจนว่าทั้งสองเป็นกระบวนการ ผมเห็นด้วยกับคุณว่าสำหรับการทดสอบแต่ละคำว่าการทดสอบมีความเหมาะสม (บางครั้งฉันรู้สึกเหมือนฉันงบการเงินเฉพาะกิจการที่เห็นได้ชัดกับคำถามคำศัพท์เหล่านี้ ... ) :)
VHDL ติดยาเสพติด

1

เราสร้างความแตกต่างระหว่างการทดสอบการตรวจสอบและการทดสอบการตรวจสอบ สมมติว่าคุณกำลังออกแบบพัดลมที่ทำให้อุปกรณ์เย็นลง มีการทดสอบการตรวจสอบเพื่อให้แน่ใจว่าพัดลมตรงตามข้อกำหนดการออกแบบทั้งหมด ดังนั้นคุณอาจทดสอบการไหลเวียนของอากาศการหมุนเวียนความร้อนการสั่นสะเทือนเป็นต้น

การทดสอบการตรวจสอบความถูกต้องทำให้แน่ใจว่าข้อกำหนดการออกแบบนั้นเหมาะสม การออกแบบที่เราป้อนให้กับแฟน ๆ ทำให้เราเป็นแฟนที่เราต้องการหรือไม่? ตัวอย่างเช่นคุณต้องแน่ใจว่าแฟน ๆ ทำให้อุปกรณ์เย็นลงจริง ๆ


นี่คือความหมายของหนังสือที่เกี่ยวกับวิศวกรรมซอฟต์แวร์ที่ฉันได้อ่าน Validation = ตรวจสอบให้แน่ใจว่าข้อกำหนดนั้นถูกต้อง (ตรวจสอบกับลูกค้าข้อบังคับ ฯลฯ ); การตรวจสอบความถูกต้อง = ตรวจสอบให้แน่ใจว่าผลิตภัณฑ์นั้นถูกต้อง (ทดสอบกับสเปค)
Wouter van Ooijen

1

ISO9000 พูดถึงการตรวจสอบและการตรวจสอบ ในบริบทของการตรวจสอบ ISO9000 หมายถึงการทดสอบการออกแบบต้นแบบเพื่อพิสูจน์ว่าตรงตามการทำงานและประสิทธิภาพที่คาดหวัง การตรวจสอบความถูกต้องหมายถึงการทดสอบการผลิตครั้งแรกที่ตรงกับความคาดหวังในการออกแบบ ตรวจสอบก่อนตรวจสอบในภายหลังเป็นวิธีเล็ก ๆ ของฉัน rememeeibg ลำดับของสิ่งต่าง ๆ

มาตรฐานซอฟต์แวร์จำนวนมากกลับเรียงลำดับการตรวจสอบและตรวจสอบและอาจทำให้เกิดความสับสนได้ดังนั้นควรตระหนักถึงสิ่งนี้

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

เพียงแค่ประสบการณ์ส่วนตัวของฉัน


0

จากการอ่านคำตอบเหล่านี้ตอนนี้ฉันตระหนักว่าไม่มีคำจำกัดความที่กำหนดว่า "การทดสอบ" แตกต่างจาก "การยืนยัน" ในอุตสาหกรรมอย่างไร

เมื่อทำงานกับการออกแบบ HW (การออกแบบ HW "จริง" เช่นเนื้อหาบน PCB ไม่ใช่การเขียนโปรแกรม VHDL) เราจะผ่านขั้นตอนการตรวจสอบความถูกต้องและการตรวจสอบและขั้นตอนการทดสอบการผลิต (จริง ๆ แล้วเพียงแค่ออกแบบการทดสอบการผลิตเอง - การตรวจสอบ - (1) ตรวจสอบว่าสินค้าต้นแบบ / มวลผลิตรายการเป็นไปตามข้อกำหนด HW (2) ตรวจสอบข้อกำหนด HW กับข้อกำหนด SYS - การทดสอบการผลิต - การทดสอบควันและกรณีทดสอบการตรวจสอบที่ง่ายและรวดเร็วซึ่งปรับใช้เพื่อคัดกรองข้อบกพร่องการผลิตจำนวนมากโดยไม่ต้องผ่านกระบวนการตรวจสอบทั้งหมดสำหรับแต่ละ 500,000 หน่วยที่ผลิตต่อปี

ดังนั้นใน "การทดสอบ" บริษัท ข้ามชาติโดยเฉพาะนั้นหมายถึงการทดสอบการผลิตและไม่มีอะไรเพิ่มเติม

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.