การออกแบบเพื่อความสามารถในการทดสอบ: เมตริกความสามารถในการควบคุมและความสามารถในการสังเกต

ค้นพบว่าตัวชี้วัดความสามารถในการควบคุมและความสามารถในการสังเกตทําให้การทดสอบวงจรเป็นเรื่องง่ายและมีประสิทธิภาพได้อย่างไร

การออกแบบเพื่อความสามารถในการทดสอบ: เมตริกความสามารถในการควบคุมและความสามารถในการสังเกต

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

ตัวชี้วัดเหล่านี้เป็นแนวทางสําหรับเครื่องมือ ATPG กลยุทธ์การแทรกจุดทดสอบ การออกแบบลําดับการสแกน และแม้กระทั่งมีอิทธิพลต่อแนวทางการเข้ารหัส RTL สําหรับการออกแบบที่เป็นมิตรกับการทดสอบ.

ทําไมเราถึงต้องการการควบคุมและการมองเห็น?

เพื่อให้การทดลองสามารถตรวจจับข้อผิดพลาดได้ต้องมีสามสิ่งเกิดขึ้น:

  1. ต้องทริกเกอร์ข้อผิดพลาด - โหนดข้อผิดพลาดต้องมีค่าตรรกะตรงกันข้ามกับสถานะค้าง.
  2. เอฟเฟกต์ข้อผิดพลาดจะต้องแพร่กระจาย—ต้องผ่านประตูตรรกะโดยไม่บดบัง.
  3. ต้องสังเกตเอฟเฟกต์ข้อผิดพลาด—ต้องปรากฏที่เอาต์พุตหลักหรือการสแกนฟลิปฟล็อป.

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

รูปที่ 1: เส้นเมตริก DFT ในตัว

ประเภทของเมตริก

ในการหาปริมาณความสามารถในการทดสอบของสัญญาณผู้เชี่ยวชาญอาศัยตัวชี้วัดที่กําหนดไว้จํานวนหนึ่งรวมถึง:

  • SCOAP (CC0, CC1, CO): การวัดโครงสร้างว่าการนําโหนดไปที่ 0 หรือ 1 นั้นยากเพียงใด และยากเพียงใดที่จะสังเกตข้อผิดพลาดที่โหนดนั้น.
  • COP (Controllability × Observability Product): จุดรวมที่เน้นโหนดที่ต้องแทรกจุดทดสอบมากที่สุด.
  • ความแตกต่างของบูลีน: เมตริกการทํางานที่ประมาณความน่าจะเป็นที่การเปลี่ยนแปลงที่โหนดหนึ่งจะส่งผลต่อโหนดอื่น.
  • ตัวชี้วัดระยะทาง: นับความยาวเส้นทางอย่างง่ายหรือระยะทางถ่วงน้ําหนักจากโหนดไปยังเอาต์พุตหลัก ซึ่งใช้เป็นทางเลือกที่รวดเร็วสําหรับการสังเกต.

1) ตัวชี้วัด SCOAP

เพื่อปรับปรุงความสามารถในการทดสอบของการออกแบบอย่างเป็นระบบเราจําเป็นต้องมีวิธีการวัดว่าการสร้างค่าตรรกะสําหรับสัญญาณภายในแต่ละสัญญาณนั้นง่ายเพียงใด (ความสามารถในการควบคุม) และง่ายต่อการสังเกตข้อผิดพลาดที่สัญญาณนั้นที่เอาต์พุต (ความสามารถในการสังเกต) ตัวบ่งชี้ SCOAP (Sandia Controllability/Observability Analysis Program) ให้สิ่งนี้: ค่าสเกลาร์สามค่า CC0, CC1 และ CO กําหนดคะแนน "ความยาก" ให้กับแต่ละโหนดในรายการเครือข่ายระดับพอร์ต.

CC0, CC1 และ CO คืออะไร?

  • ซีซี 0(n)
    ความสามารถในการควบคุมปุ่ม n เป็นตรรกะ 0 CC0 ต่ําหมายความว่าง่ายต่อการบีบ n เป็น 0 CC0 ที่สูงหมายความว่าจําเป็นต้องมีอินพุตจํานวนมากหรือระดับลอจิกเชิงลึก.
  • ซีซี 1(n)
    ความสามารถในการควบคุมปุ่ม n ตามตรรกะ*1 ในทํานองเดียวกัน CC1 ที่ต่ําบ่งชี้ถึงโหนดที่สามารถนํามาได้ถึง 1 โดยใช้ความพยายามเพียงเล็กน้อย CC1 สูงบ่งบอกถึงความซับซ้อน.
  • CO (n)
    ความสามารถในการสังเกตของ n. มันสะท้อนให้เห็นว่ามันยากเพียงใดเมื่อการเปลี่ยนแปลงที่ไม่คาดคิดที่ n (เนื่องจากข้อผิดพลาด) แพร่กระจายผ่านตรรกะถัดไปไปยังเอาต์พุตหลัก.

เมตริกแต่ละตัวจะแสดงเป็น "ต้นทุน" จํานวนเต็มที่ไม่เป็นลบ และคํานวณโดยการเรียกดูเน็ตลิสต์:

ความสามารถในการควบคุมการคํานวณ (CC0 & CC1)

  1. การเริ่มต้นสําหรับ
    กับโหนดอินพุตหลักแต่ละโหนด (PI):
    — CC0 = 1
    — CC1 = 1
  2. การอนุมัติโทโพโลยี:
    เข้าถึงพอร์ตตามลําดับอินพุต-เอาต์พุต สําหรับพอร์ต G ที่มีอินพุต i₁, i₂... เอาต์พุต IK และ O :
  • และพอร์ต
    • CC0(o) = 1 + min(CC0(i₁), CC0(i₂), …, CC0(iₖ))
    (ต้องการอินพุตเพียงครั้งเดียว 0)
    • CC1(o) = 1 + Σ CC1(ij) กับ j=1..k
    (อินพุตทั้งหมดต้องเป็น 1)
  • พอร์ต OR
    • CC0(o) = 1 + Σ CC0(ij)
    (อินพุตทั้งหมดต้องเท่ากับ 0)
    • CC1(o) = 1 + นาที(CC1(i₁), CC1(i₂), …)
  • NAND/NOR
    เหมือนกับ AND/OR แต่บทบาท CC0/CC1 เปลี่ยนไปเนื่องจากเอาต์พุตกลับด้าน.
  • XOR/XNOR
    • CC0(o) = 1 + Σ CC0(ij)
    • CC1(o) = 1 + Σ CC1(ij)
    (ทุกอินพุตต้องได้รับการควบคุม)
  • ประตูสตูลคอมเพล็กซ์
    สะสมการดําเนินการทางคณิตศาสตร์ขั้นพื้นฐานหรือใช้สูตรเฉพาะ.

ความสามารถในการสังเกตการณ์เชิงคํานวณ (CO))

  1. การเริ่มต้น
    สําหรับโหนดเอาต์พุตหลักแต่ละโหนด (PO):
    — CO = 0
  2. เรียกดูย้อนกลับ:
    เยี่ยมชมประตูตามลําดับเอาต์พุตต่ออินพุตสําหรับแต่ละเกต G ที่มีเอาต์พุต o และอินพุต i₁...ไอเค:
  3. สําหรับแต่ละอินพุต ij :
  • และพอร์ต
    CO(ij) = 1 + CO(o) + Σ CC1(im) สําหรับทุกๆ m ≠ j
    (อินพุตเสริมต้องเท่ากับ 1 เพื่อเผยแพร่การเปลี่ยนแปลง)
  • พอร์ต OR
    CO(ij) = 1 + CO(o) + Σ CC0(im) สําหรับทุกๆ m ≠ j
    (อินพุตที่ถูกต้องเท่ากับ 0)
  • NAND/NOR
    อินพุตทั้งหมดอยู่ด้านเดียวกัน เนื่องจากการผกผันไม่ส่งผลต่อการคํานวณความสามารถในการสังเกต.
  • XOR/XNOR
    CO(ij) = 1 + CO(o) + Σ min(CC0(im), CC1(im)) สําหรับทุก m ≠ j
    (อินพุตด้านขวาแต่ละช่องอนุญาตให้ใช้เอาต์พุตที่ขึ้นอยู่กับ IJ)

การตีความค่า SCOAP

  • CC0 หรือ CC1 ต่ํา (เช่น 1–3) หมายความว่าโหนดนั้นง่ายต่อการควบคุมตามค่าตรรกะนั้น.
  • CC สูง (เช่น >10) บ่งชี้ว่าการบังคับค่านั้นต้องใช้ตรรกะเชิงลึกหรือข้อจํากัดอินพุตหลายรายการ.
  • CO ต่ํา (ใกล้ 0) บ่งชี้ว่าการรบกวนใด ๆ ที่โหนดมีอยู่ที่เอาต์พุตได้ง่าย CO สูง (~10+) หมายความว่าโหนดซ่อนอยู่หลังตรรกะเกตหรือตรรกะการบรรจบกัน ทําให้ยากต่อการสังเกตผลกระทบจากข้อผิดพลาด.

ตัวอย่าง

ลองพิจารณาตรรกะเล็กๆ 2 ระดับ:

  1. อินพุตหลัก A, B, C มี CC0=CC1=1.
  2. สําหรับพอร์ต AND:
    CC0(M) = 1 + นาที(1,1) = 2
    CC1(M) = 1 + (1+1) = 3
  3. สําหรับพอร์ต OR:
    CC0(Y) = 1 + (CC0(M) + CC0(C)) = 1 + (2 + 1) = 4
    CC1(Y) = 1 + นาที(CC1(M), CC1(C)) = 1 + นาที(3,1) = 2
  4. ทัศนวิสัยย้อนกลับ:
    CO (Y) = 0
    สําหรับ M คืออินพุตของ OR: CO(M) = 1 + CO(Y) + CC0(C) = 1 + 0 + 1 = 2
    สําหรับ C: CO(C) = 1 + 0 + CC0(M) = 1 + 2 = 3
    สําหรับ A ที่ AND: CO(A) = 1 + CO(M) + CC1(B) = 1 + 2 + 1 = 4
    (และเช่นเดียวกับ B)

ค่าเหล่านี้ให้ข้อมูลเชิงลึกที่ถูกต้องว่าโหนดใดสามารถทดสอบได้และโหนดใดที่ต้องการการแทรกแซง DFT.

2) การควบคุมการมองเห็น (COP)

Control-Observability Product หรือ COP รวมความยากของโหนดเพื่อให้ได้ค่าตรรกะกับความยากในการสังเกตข้อผิดพลาดที่โหนดนั้น มันถูกกําหนดง่ายๆ ดังนี้:

COP (n) = นาที (CC0 (n), CC1 (n)) × CO (n)

  • CC0(n) คือต้นทุนในการบังคับให้โหนด n เป็นตรรกะ 0
  • CC1(n) คือค่าใช้จ่ายในการบังคับให้โหนด n เป็นตรรกะ 1
  • CO(n) คือค่าใช้จ่ายในการส่งข้อผิดพลาดที่โหนด n ไปยังเอาต์พุตหลัก
  • เราใช้ค่าต่ําสุดของ CC0 และ CC1 เนื่องจากเงื่อนไขทริกเกอร์ที่ง่ายกว่าจะควบคุมการเริ่มต้นข้อผิดพลาด

ค่า COP สูงระบุฮอตสปอตที่มีความสามารถในการทดสอบที่แท้จริง ซึ่งเป็นโหนดที่ควบคุมได้ยากและสังเกตได้ยาก.

วิธีคํานวณ CC0, CC1 และ CO

ก่อนคํานวณ COP คุณต้องรับเมตริก SCOAP สําหรับแต่ละโหนด:

การเริ่มต้นต้นทุน I/O หลัก

  • สําหรับอินพุตหลักแต่ละตัว ให้ตั้งค่า CC0 = 1 และ CC1 = 1
  • สําหรับเอาต์พุตหลักแต่ละตัว ให้ตั้งค่า CO = 0

การคํานวณ CC0 และ CC1 ในการเปลี่ยนผ่าน

  • พอร์ตรีเลย์อินพุตถึงเอาต์พุต
  • สําหรับเอาต์พุตพอร์ต AND Y พร้อมอินพุต A และ B:
  • CC0(Y) = 1 + นาที(CC0(A), CC0(B))
  • CC1(Y) = 1 + CC1(เอ) + ซีซี 1(บี)
  • สําหรับเอาต์พุตพอร์ต OR Y:
  • CC0(Y) = 1 + CC0(A) + CC0(B)
  • CC1(Y) = 1 + นาที(CC1(A), CC1(B))
  • ใช้สูตรเดียวกันกับ NAND, NOR, XOR ฯลฯ โดยใช้ข้อกําหนดการผกผันและอินพุตย่อย

การคํานวณ CO ในการวิ่งย้อนกลับ

  • พอร์ตส่งต่อจากเอาต์พุตกลับไปยังอินพุต
  • สําหรับอินพุตพอร์ตและตัวควบคุม A Y โดยเหลืออินพุต B:
  • CO (A) = 1 + CO (Y) + CC1 (B)
    (B ต้องเท่ากับ 1 เพื่อให้การเปลี่ยนแปลงที่ A ส่งผลต่อ Y)
  • สําหรับอินพุตพอร์ต OR A: CO(A) = 1 + CO(Y) + CC0(B)
  • ทําซ้ําสําหรับพอร์ตทุกประเภท บวกกับต้นทุนการควบคุมของอินพุตเสริม และเพิ่มหนึ่งพอร์ตสําหรับพอร์ตเอง

ตัวอย่างของ COP

ลองพิจารณาโหนด n ที่เราพบ:

  • CC0(n) = 8
  • CC1(n) = 12
  • CO (n) = 10

ขั้นแรก ให้ใช้ต้นทุนในการควบคุมที่น้อยลง:

นาที (CC0, CC1) = 8

จากนั้นคูณด้วยค่าใช้จ่ายในการสังเกต:

COP (n) = 8 × 10 = 80

COP 80 ทําเครื่องหมายโหนด n เป็นตัวเลือกหลักสําหรับการแทรกจุดตรวจสอบหรือการปรับโครงสร้างเชิงตรรกะ เนื่องจากเป็นการยากที่จะครอบคลุมด้วยรูปแบบการทดสอบที่มีอยู่.

3) ความแตกต่างของบูลีน

ในขณะที่เมตริก SCOAP ให้มุมมองที่มีโครงสร้างของการควบคุมและการสังเกต แต่ดิฟเฟอเรนเชียลบูลีนให้มุมมองการทํางานว่าการเปลี่ยนแปลงที่โหนดหนึ่งส่งผลต่ออีกโหนดหนึ่งอย่างไร ประมาณความน่าจะเป็นที่การแปลงสัญญาณภายในเฉพาะจะทําให้เกิดการเปลี่ยนแปลงที่เอาต์พุตหลักตามนิพจน์บูลีนของวงจร.

ความแตกต่างของบูลีนคืออะไร?

ด้วยฟังก์ชันตรรกะ F(X₁, X₂, ..., Xn) และโหนด Xi ความแตกต่างของบูลีน ∂F/∂Xi ถูกกําหนดเป็น:

• ∂F/∂Xi = F(X₁,..., Xi=0,...,Xn) ⊕ F(X₁,..., Xi=1,...,Xn)

กล่าวอีกนัยหนึ่งเราประเมิน F ด้วย Xi บีบเป็น 0 และอีกครั้งด้วย Xi บีบเป็น 1 การยกเว้นหรือการดําเนินการของผลลัพธ์ทั้งสองนี้บอกเราว่าการเปลี่ยนแปลงที่ Xi สามารถย้อนกลับผลลัพธ์ได้หรือไม่.

  • หาก ∂F/∂Xi = 1 สําหรับการกําหนดอินพุตที่กําหนด การแปลง Xi จะย้อนกลับเอาต์พุต.
  • ถ้า ∂F/∂Xi = 0 แสดงว่าเอาต์พุตไม่ไวต่อการเปลี่ยนแปลงใน Xi โดยการกําหนดนั้น.

ความแตกต่างของบูลีนเป็นค่าประมาณความสามารถในการสังเกตการณ์

ด้วยการหาค่าเฉลี่ย ∂F/∂Xi ในการกําหนดอินพุตที่เป็นไปได้ทั้งหมด เราจึงได้ความน่าจะเป็นของ Pi ที่การพลิกที่โหนด Xi จะแพร่กระจายไปยังเอาต์พุต Pi สูงหมายความว่า Xi สามารถสังเกตได้ตามฟังก์ชัน ในขณะที่ Pi ต่ําหมายถึงความคลุมเครือหรือไม่ไว.

ในทางปฏิบัติ:

  • เราสามารถสุ่มตัวอย่างชุดย่อยของเวกเตอร์อินพุต (เช่น ตัวอย่าง ATPG) และคํานวณ ∂F/∂Xi สําหรับแต่ละเวกเตอร์.
  • อัตราส่วนของเวกเตอร์ที่มี ∂F/∂Xi = 1 ต่อจํานวนเวกเตอร์การสุ่มตัวอย่างทั้งหมดที่ประเมินความสามารถในการสังเกตการทํางาน.

คํานวณความแตกต่างของบูลีนในรายการเครือข่ายระดับพอร์ต

ที่ระดับเกต ความแตกต่างของบูลีนสามารถคํานวณแบบเรียกซ้ําได้โดยใช้กฎท้องถิ่น:

  • พอร์ต AND Y = A &B
    ∂Y/∂A = B
    ∂Y/∂B = ก
  • พอร์ต หรือ Y = A | B
    ∂Y/∂A = ¬B
    ∂Y/∂B = ¬A
  • พอร์ต NO Y = ¬A
    ∂วาย/∂ก = 1
  • พอร์ต XOR Y = A ⊕ B
    ∂วาย/∂ก = 1
    ∂วาย/∂บี = 1

ด้วยการส่งความแตกต่างในท้องถิ่นเหล่านี้ผ่านเน็ตลิสต์ไปยังทุกเอาต์พุตหลักและรวม (ตรรกะ OR) ในหลายเอาต์พุต เราจะได้∂F/∂Xi โดยรวมสําหรับแต่ละโหนดภายใน.

ตัวอย่าง

พิจารณาฟังก์ชันตรรกะขนาดเล็ก:

Y = (A และ B) หรือ C

คํานวณ ∂Y/∂A

  • แก้ไข B=1, C=0:
    Y(A=0) = (0 & 1) | 0 = 0
    Y(A=1) = (1 & 1) | 0 = 1
    ∂Y/∂A = 1 ⊕ 0 = 1
  • แก้ไข B=0, C=1:
    Y(A=0) = (0 & 0) | 1 = 1
    Y(A=1) = (1 & 0) | 1 = 1
    ∂Y/∂A = 1 ⊕ 1 = 0

การสุ่มตัวอย่างชุดอินพุตทั้งสี่จะให้ผลสองกรณีที่ ∂Y/∂A = 1 และสองกรณีที่ ∂Y/∂A = 0 ดังนั้น P_A ประมาณการ = 0.5 ดังนั้นโหนด A มีโอกาส 50% ที่จะเกิดข้อผิดพลาดในการแปลงที่ Y.

4) ตัวชี้วัดระยะทาง

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

หน่วยวัดระยะทางคืออะไร?

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

  • ระยะระดับศูนย์
    จํานวนถ่วงน้ําหนักต่อพอร์ตหรือสุทธิไปข้างหน้าคือ "1" ระยะห่างของโหนด n คือจํานวนประตูขั้นต่ําระหว่าง n กับจุดสังเกตใด ๆ.
  • ระยะถ่วงน้ําหนัก:
    กําหนดน้ําหนักที่แตกต่างกันให้กับพอร์ตต่างๆ (เช่น พอร์ตที่ซับซ้อนที่มีน้ําหนักสูงกว่า) หรือเพิ่มต้นทุนการควบคุมอินพุตเพิ่มเติม ระยะทางคือน้ําหนักรวมตามเส้นทางที่สั้นที่สุด.

วิธีคํานวณระยะทาง

การเริ่มต้นจุดสังเกตการณ์
ตั้งค่าระยะห่างของทุกเอาต์พุตหลัก (และทุกปุ่มชัตเตอร์ scan-FF) เป็น 0 .

ความกว้างเป็นอันดับแรก)
เริ่มจากทุกมุมมอง เรียกดูรายการเครือข่ายย้อนกลับผ่านขอบพัดลม ด้วยโหนดก่อนหน้าแต่ละโหนด p:

  • ระยะทางที่ไม่ถ่วงน้ําหนัก:
    ระยะทาง (p) = 1 + นาที (ระยะห่างของพัดลมออกแต่ละตัว)
  • ระยะถ่วงน้ําหนัก:
    ระยะทาง (p) = gate_weight (G) + นาที (ระยะทางของผู้สืบทอดแต่ละคน)

ทําซ้ําจนกว่าปุ่มทั้งหมดจะถูกกําหนด
เรียกดูย้อนกลับต่อไปจนกว่าทุกโหนดในรายการเครือข่ายจะมีค่าระยะทาง.

เหตุใดเมตริกระยะทางจึงมีความสําคัญ

  • การประมาณการสังเกตการณ์อย่างรวดเร็ว
    โหนดที่มีระยะห่าง = 1 หรือ 2 มักจะสังเกตได้ง่าย โหนดที่มีระยะห่าง > 10 อาจต้องใช้จุดทดสอบพิเศษหรือความพยายามของ ATPG ที่เข้มข้น.
  • อัลกอริทึม ATPG
    ATPG ระยะแรกสามารถใช้ระยะทางเพื่อจัดอันดับเส้นการแพร่กระจาย—โหนดที่มีระยะห่างสั้นกว่าจะได้รับการจัดลําดับความสําคัญ ซึ่งจะลดผลตอบแทน.
  • การวางแผน DFT
    โหนดทางไกลที่ทําเครื่องหมายกรวยลอจิกจะได้รับประโยชน์จากการแทรกจุดสังเกตการณ์ โดยเฉพาะอย่างยิ่งเมื่อห่วงโซ่การสแกนไม่สามารถเข้าถึงได้โดยตรง.
  • คําแนะนําในการเข้ารหัส RTL
    นักออกแบบสามารถตรวจสอบระยะทางระหว่างกระบวนการสังเคราะห์เพื่อหลีกเลี่ยงการสร้างกรวยลอจิกที่ลึกเกินไปโดยไม่มีจุดดักจับตรงกลาง.

ตัวอย่าง

ลองนึกภาพลําดับตรรกะสามระดับ:

A → G1 → G2 → G3 → Y (เอาต์พุต)

  • Y มีระยะทาง 0
  • เอาต์พุตของ G3 (เรียกว่า N3) มีระยะห่าง 1
  • เอาต์พุตของ G2 (N2) เว้นระยะห่าง 2
  • เอาต์พุตของ G1 (N1) เว้นระยะห่าง 3
  • อินพุตหลัก A เว้นระยะห่าง 4

ความผิดพลาดบน N1 (ระยะทาง 3) จะต้องแพร่กระจายผ่านพอร์ตทั้งสามเพื่อไปถึง Y ซึ่งบ่งชี้ว่าต้องใช้ความพยายามสูงกว่าความผิดพลาดบน N3 (ระยะทาง 1).

การใช้ตัวบ่งชี้ความสามารถในการทดสอบใน DFT

ออกแบบเพื่อความสามารถในการทดสอบตามตัวชี้วัดเชิงปริมาณเพื่อระบุตําแหน่งข้อบกพร่องที่ตรวจจับได้ยากที่สุดและกําหนดเป้าหมายตําแหน่งการปรับปรุงที่จะให้ประโยชน์สูงสุด ด้วยการรวมการวัด SCOAP ความคลาดเคลื่อนบูลีน และระยะทาง วิศวกรจะได้รับมุมมองที่ครอบคลุมของความสามารถในการทดสอบ ซึ่งจะช่วยสนับสนุน ATPG การแทรกจุดทดสอบ และเพิ่มประสิทธิภาพการออกแบบ.

1. แนวทางของ ATPG และการตั้งค่าตัวอย่าง

เครื่องมือ ATPG ใช้การควบคุม SCOAP (CC0, CC1) เพื่อตัดสินใจว่าจะกําหนดเป้าหมายข้อบกพร่องใดก่อนข้อผิดพลาดบนโหนดที่ควบคุมง่ายมักจะถูกทริกเกอร์อย่างรวดเร็วในขณะที่ข้อผิดพลาดที่มีค่า CC สูงอาจต้องมีการจัดการเป็นพิเศษ ความสามารถในการสังเกตการณ์ SCOAP (CO) ช่วยในการเลือกสายส่งเพื่อเพิ่มโอกาสที่ความผิดพลาดจะไปถึงเอาต์พุต ด้วยการรวมปัจจัยเหล่านี้เข้ากับ COP ATPG สามารถจัดอันดับข้อผิดพลาดตามความยากในการทดสอบและจัดสรรความพยายามในการค้นหาไปยังสถานที่ที่สําคัญที่สุด.

สเปรดบูลีนช่วยปรับแต่งกระบวนการนี้ให้ดียิ่งขึ้น โหนดที่มีความน่าจะเป็นของความแตกต่างบูลีนสูงมีความไวต่อการทํางาน ซึ่งหมายความว่าโหนดจะสลับที่จุดเหล่านั้นมักจะส่งผลต่อเอาต์พุตตามการแจกแจงอินพุตจริง ข้อผิดพลาดบนโหนดที่มีความแตกต่างของบูลีนต่ําอาจล่าช้าหรืออยู่ภายใต้รูปแบบ "ละเอียดอ่อน" เฉพาะ การวัดระยะทาง—การวัดความยาวเส้นทางที่ระดับเกตถึงเอาต์พุต—นําทาง ATPG ไปยังเส้นทางที่สั้นลงและบดบังน้อยลง.

2. ปรับปรุงการแทรกจุดทดสอบและ DFT

เมื่อค่า COP สูง จุดความแตกต่างบูลีนต่ํา หรือค่าระยะทางขนาดใหญ่ทําเครื่องหมายโหนดว่าเป็นคอขวดในการทดสอบ นักออกแบบสามารถแทรกจุดควบคุม (เพื่อปรับปรุงความสามารถในการควบคุม) หรือจุดสังเกตการณ์ (เพื่อปรับปรุงความสามารถในการสังเกต) ตัวอย่าง:

  • โหนดที่มี CC1 = 15, CC0 = 12 และ CO = 20 (COP = 12 × 20 = 240) จะได้รับประโยชน์จากจุดควบคุมที่ลด CC อย่างเห็นได้ชัด.
  • โหนดที่มีความน่าจะเป็นเบี่ยงเบนบูลีนน้อยกว่า 10% บ่งชี้ว่าโหนดต้องการจุดสังเกตโครงสร้างหรือรูปแบบพิเศษ.
  • โหนดที่มีระยะห่าง = 8 อาจไม่สามารถเข้าถึงได้ด้วยสตริงการสแกนเพียงอย่างเดียว ดังนั้นจึงจําเป็นต้องมีพินจับระดับกลาง.

ด้วยการคํานวณเมตริกทั้งสามใหม่หลังจากการเปลี่ยนแปลง DFT แต่ละครั้ง วิศวกรสามารถยืนยันได้ว่าการแทรกจุดทดสอบแต่ละจุดหรือการปรับโครงสร้างลอจิกให้ผลการปรับปรุงที่วัดได้.

3. ข้อเสนอแนะการออกแบบเบื้องต้นและการแสดงภาพ

ในระหว่างขั้นตอน RTL และเกตเวย์ การเรียกใช้การวิเคราะห์ความสามารถในการทดสอบแบบไฮบริดจะเน้น "พื้นที่มืด" ในการออกแบบ — คลัสเตอร์โหนดที่ให้คะแนนต่ําในทุกเมตริก เครื่องมือสร้างภาพสามารถกําหนดรหัสสีกรวยลอจิกตาม COP, ความน่าจะเป็นออฟเซ็ตบูลีน หรือระยะทาง ทําให้ง่ายต่อการตรวจจับพัดลมที่หลอมรวมกัน ตรรกะที่ซ้อนกันอย่างลึกซึ้ง หรือโครงสร้างเกตที่ต้องใช้ความพยายาม ATPG ขนาดใหญ่.

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

4. วงปิดต่อเนื่อง

สุดท้าย เมตริกการทดสอบเหล่านี้จะถูกป้อนเข้าสู่ลูป DFT แบบวนซ้ํา :

  1. การวิเคราะห์เน็ตลิสต์ด้วย SCOAP ความแตกต่างและระยะทางบูลีน
  2. ระบุโหนดที่มีลําดับความสําคัญสูงสําหรับความเข้มข้นของ ATPG หรือการแทรก DFT
  3. ปรับปรุงการออกแบบด้วยลําดับการสแกน จุดตรวจสอบ หรือการปรับโครงสร้างตรรกะ
  4. สร้างต้นแบบและเรียกใช้การจําลองจุดบกพร่อง
  5. วัดความครอบคลุมและตรวจสอบเมตริกสําหรับปัญหาคอขวดที่เหลืออยู่

บทความที่เกี่ยวข้อง

การออกแบบเพื่อความสามารถในการทดสอบ: เมตริกความสามารถในการควบคุมและความสามารถในการสังเกต

ค้นพบว่าตัวชี้วัดความสามารถในการควบคุมและความสามารถในการสังเกตทําให้การทดสอบวงจรเป็นเรื่องง่ายและมีประสิทธิภาพได้อย่างไร

นักเขียนบทความ
by 
นักเขียนบทความ
การออกแบบเพื่อความสามารถในการทดสอบ: เมตริกความสามารถในการควบคุมและความสามารถในการสังเกต

การออกแบบเพื่อความสามารถในการทดสอบ: เมตริกความสามารถในการควบคุมและความสามารถในการสังเกต

ค้นพบว่าตัวชี้วัดความสามารถในการควบคุมและความสามารถในการสังเกตทําให้การทดสอบวงจรเป็นเรื่องง่ายและมีประสิทธิภาพได้อย่างไร

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

ตัวชี้วัดเหล่านี้เป็นแนวทางสําหรับเครื่องมือ ATPG กลยุทธ์การแทรกจุดทดสอบ การออกแบบลําดับการสแกน และแม้กระทั่งมีอิทธิพลต่อแนวทางการเข้ารหัส RTL สําหรับการออกแบบที่เป็นมิตรกับการทดสอบ.

ทําไมเราถึงต้องการการควบคุมและการมองเห็น?

เพื่อให้การทดลองสามารถตรวจจับข้อผิดพลาดได้ต้องมีสามสิ่งเกิดขึ้น:

  1. ต้องทริกเกอร์ข้อผิดพลาด - โหนดข้อผิดพลาดต้องมีค่าตรรกะตรงกันข้ามกับสถานะค้าง.
  2. เอฟเฟกต์ข้อผิดพลาดจะต้องแพร่กระจาย—ต้องผ่านประตูตรรกะโดยไม่บดบัง.
  3. ต้องสังเกตเอฟเฟกต์ข้อผิดพลาด—ต้องปรากฏที่เอาต์พุตหลักหรือการสแกนฟลิปฟล็อป.

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

รูปที่ 1: เส้นเมตริก DFT ในตัว

ประเภทของเมตริก

ในการหาปริมาณความสามารถในการทดสอบของสัญญาณผู้เชี่ยวชาญอาศัยตัวชี้วัดที่กําหนดไว้จํานวนหนึ่งรวมถึง:

  • SCOAP (CC0, CC1, CO): การวัดโครงสร้างว่าการนําโหนดไปที่ 0 หรือ 1 นั้นยากเพียงใด และยากเพียงใดที่จะสังเกตข้อผิดพลาดที่โหนดนั้น.
  • COP (Controllability × Observability Product): จุดรวมที่เน้นโหนดที่ต้องแทรกจุดทดสอบมากที่สุด.
  • ความแตกต่างของบูลีน: เมตริกการทํางานที่ประมาณความน่าจะเป็นที่การเปลี่ยนแปลงที่โหนดหนึ่งจะส่งผลต่อโหนดอื่น.
  • ตัวชี้วัดระยะทาง: นับความยาวเส้นทางอย่างง่ายหรือระยะทางถ่วงน้ําหนักจากโหนดไปยังเอาต์พุตหลัก ซึ่งใช้เป็นทางเลือกที่รวดเร็วสําหรับการสังเกต.

1) ตัวชี้วัด SCOAP

เพื่อปรับปรุงความสามารถในการทดสอบของการออกแบบอย่างเป็นระบบเราจําเป็นต้องมีวิธีการวัดว่าการสร้างค่าตรรกะสําหรับสัญญาณภายในแต่ละสัญญาณนั้นง่ายเพียงใด (ความสามารถในการควบคุม) และง่ายต่อการสังเกตข้อผิดพลาดที่สัญญาณนั้นที่เอาต์พุต (ความสามารถในการสังเกต) ตัวบ่งชี้ SCOAP (Sandia Controllability/Observability Analysis Program) ให้สิ่งนี้: ค่าสเกลาร์สามค่า CC0, CC1 และ CO กําหนดคะแนน "ความยาก" ให้กับแต่ละโหนดในรายการเครือข่ายระดับพอร์ต.

CC0, CC1 และ CO คืออะไร?

  • ซีซี 0(n)
    ความสามารถในการควบคุมปุ่ม n เป็นตรรกะ 0 CC0 ต่ําหมายความว่าง่ายต่อการบีบ n เป็น 0 CC0 ที่สูงหมายความว่าจําเป็นต้องมีอินพุตจํานวนมากหรือระดับลอจิกเชิงลึก.
  • ซีซี 1(n)
    ความสามารถในการควบคุมปุ่ม n ตามตรรกะ*1 ในทํานองเดียวกัน CC1 ที่ต่ําบ่งชี้ถึงโหนดที่สามารถนํามาได้ถึง 1 โดยใช้ความพยายามเพียงเล็กน้อย CC1 สูงบ่งบอกถึงความซับซ้อน.
  • CO (n)
    ความสามารถในการสังเกตของ n. มันสะท้อนให้เห็นว่ามันยากเพียงใดเมื่อการเปลี่ยนแปลงที่ไม่คาดคิดที่ n (เนื่องจากข้อผิดพลาด) แพร่กระจายผ่านตรรกะถัดไปไปยังเอาต์พุตหลัก.

เมตริกแต่ละตัวจะแสดงเป็น "ต้นทุน" จํานวนเต็มที่ไม่เป็นลบ และคํานวณโดยการเรียกดูเน็ตลิสต์:

ความสามารถในการควบคุมการคํานวณ (CC0 & CC1)

  1. การเริ่มต้นสําหรับ
    กับโหนดอินพุตหลักแต่ละโหนด (PI):
    — CC0 = 1
    — CC1 = 1
  2. การอนุมัติโทโพโลยี:
    เข้าถึงพอร์ตตามลําดับอินพุต-เอาต์พุต สําหรับพอร์ต G ที่มีอินพุต i₁, i₂... เอาต์พุต IK และ O :
  • และพอร์ต
    • CC0(o) = 1 + min(CC0(i₁), CC0(i₂), …, CC0(iₖ))
    (ต้องการอินพุตเพียงครั้งเดียว 0)
    • CC1(o) = 1 + Σ CC1(ij) กับ j=1..k
    (อินพุตทั้งหมดต้องเป็น 1)
  • พอร์ต OR
    • CC0(o) = 1 + Σ CC0(ij)
    (อินพุตทั้งหมดต้องเท่ากับ 0)
    • CC1(o) = 1 + นาที(CC1(i₁), CC1(i₂), …)
  • NAND/NOR
    เหมือนกับ AND/OR แต่บทบาท CC0/CC1 เปลี่ยนไปเนื่องจากเอาต์พุตกลับด้าน.
  • XOR/XNOR
    • CC0(o) = 1 + Σ CC0(ij)
    • CC1(o) = 1 + Σ CC1(ij)
    (ทุกอินพุตต้องได้รับการควบคุม)
  • ประตูสตูลคอมเพล็กซ์
    สะสมการดําเนินการทางคณิตศาสตร์ขั้นพื้นฐานหรือใช้สูตรเฉพาะ.

ความสามารถในการสังเกตการณ์เชิงคํานวณ (CO))

  1. การเริ่มต้น
    สําหรับโหนดเอาต์พุตหลักแต่ละโหนด (PO):
    — CO = 0
  2. เรียกดูย้อนกลับ:
    เยี่ยมชมประตูตามลําดับเอาต์พุตต่ออินพุตสําหรับแต่ละเกต G ที่มีเอาต์พุต o และอินพุต i₁...ไอเค:
  3. สําหรับแต่ละอินพุต ij :
  • และพอร์ต
    CO(ij) = 1 + CO(o) + Σ CC1(im) สําหรับทุกๆ m ≠ j
    (อินพุตเสริมต้องเท่ากับ 1 เพื่อเผยแพร่การเปลี่ยนแปลง)
  • พอร์ต OR
    CO(ij) = 1 + CO(o) + Σ CC0(im) สําหรับทุกๆ m ≠ j
    (อินพุตที่ถูกต้องเท่ากับ 0)
  • NAND/NOR
    อินพุตทั้งหมดอยู่ด้านเดียวกัน เนื่องจากการผกผันไม่ส่งผลต่อการคํานวณความสามารถในการสังเกต.
  • XOR/XNOR
    CO(ij) = 1 + CO(o) + Σ min(CC0(im), CC1(im)) สําหรับทุก m ≠ j
    (อินพุตด้านขวาแต่ละช่องอนุญาตให้ใช้เอาต์พุตที่ขึ้นอยู่กับ IJ)

การตีความค่า SCOAP

  • CC0 หรือ CC1 ต่ํา (เช่น 1–3) หมายความว่าโหนดนั้นง่ายต่อการควบคุมตามค่าตรรกะนั้น.
  • CC สูง (เช่น >10) บ่งชี้ว่าการบังคับค่านั้นต้องใช้ตรรกะเชิงลึกหรือข้อจํากัดอินพุตหลายรายการ.
  • CO ต่ํา (ใกล้ 0) บ่งชี้ว่าการรบกวนใด ๆ ที่โหนดมีอยู่ที่เอาต์พุตได้ง่าย CO สูง (~10+) หมายความว่าโหนดซ่อนอยู่หลังตรรกะเกตหรือตรรกะการบรรจบกัน ทําให้ยากต่อการสังเกตผลกระทบจากข้อผิดพลาด.

ตัวอย่าง

ลองพิจารณาตรรกะเล็กๆ 2 ระดับ:

  1. อินพุตหลัก A, B, C มี CC0=CC1=1.
  2. สําหรับพอร์ต AND:
    CC0(M) = 1 + นาที(1,1) = 2
    CC1(M) = 1 + (1+1) = 3
  3. สําหรับพอร์ต OR:
    CC0(Y) = 1 + (CC0(M) + CC0(C)) = 1 + (2 + 1) = 4
    CC1(Y) = 1 + นาที(CC1(M), CC1(C)) = 1 + นาที(3,1) = 2
  4. ทัศนวิสัยย้อนกลับ:
    CO (Y) = 0
    สําหรับ M คืออินพุตของ OR: CO(M) = 1 + CO(Y) + CC0(C) = 1 + 0 + 1 = 2
    สําหรับ C: CO(C) = 1 + 0 + CC0(M) = 1 + 2 = 3
    สําหรับ A ที่ AND: CO(A) = 1 + CO(M) + CC1(B) = 1 + 2 + 1 = 4
    (และเช่นเดียวกับ B)

ค่าเหล่านี้ให้ข้อมูลเชิงลึกที่ถูกต้องว่าโหนดใดสามารถทดสอบได้และโหนดใดที่ต้องการการแทรกแซง DFT.

2) การควบคุมการมองเห็น (COP)

Control-Observability Product หรือ COP รวมความยากของโหนดเพื่อให้ได้ค่าตรรกะกับความยากในการสังเกตข้อผิดพลาดที่โหนดนั้น มันถูกกําหนดง่ายๆ ดังนี้:

COP (n) = นาที (CC0 (n), CC1 (n)) × CO (n)

  • CC0(n) คือต้นทุนในการบังคับให้โหนด n เป็นตรรกะ 0
  • CC1(n) คือค่าใช้จ่ายในการบังคับให้โหนด n เป็นตรรกะ 1
  • CO(n) คือค่าใช้จ่ายในการส่งข้อผิดพลาดที่โหนด n ไปยังเอาต์พุตหลัก
  • เราใช้ค่าต่ําสุดของ CC0 และ CC1 เนื่องจากเงื่อนไขทริกเกอร์ที่ง่ายกว่าจะควบคุมการเริ่มต้นข้อผิดพลาด

ค่า COP สูงระบุฮอตสปอตที่มีความสามารถในการทดสอบที่แท้จริง ซึ่งเป็นโหนดที่ควบคุมได้ยากและสังเกตได้ยาก.

วิธีคํานวณ CC0, CC1 และ CO

ก่อนคํานวณ COP คุณต้องรับเมตริก SCOAP สําหรับแต่ละโหนด:

การเริ่มต้นต้นทุน I/O หลัก

  • สําหรับอินพุตหลักแต่ละตัว ให้ตั้งค่า CC0 = 1 และ CC1 = 1
  • สําหรับเอาต์พุตหลักแต่ละตัว ให้ตั้งค่า CO = 0

การคํานวณ CC0 และ CC1 ในการเปลี่ยนผ่าน

  • พอร์ตรีเลย์อินพุตถึงเอาต์พุต
  • สําหรับเอาต์พุตพอร์ต AND Y พร้อมอินพุต A และ B:
  • CC0(Y) = 1 + นาที(CC0(A), CC0(B))
  • CC1(Y) = 1 + CC1(เอ) + ซีซี 1(บี)
  • สําหรับเอาต์พุตพอร์ต OR Y:
  • CC0(Y) = 1 + CC0(A) + CC0(B)
  • CC1(Y) = 1 + นาที(CC1(A), CC1(B))
  • ใช้สูตรเดียวกันกับ NAND, NOR, XOR ฯลฯ โดยใช้ข้อกําหนดการผกผันและอินพุตย่อย

การคํานวณ CO ในการวิ่งย้อนกลับ

  • พอร์ตส่งต่อจากเอาต์พุตกลับไปยังอินพุต
  • สําหรับอินพุตพอร์ตและตัวควบคุม A Y โดยเหลืออินพุต B:
  • CO (A) = 1 + CO (Y) + CC1 (B)
    (B ต้องเท่ากับ 1 เพื่อให้การเปลี่ยนแปลงที่ A ส่งผลต่อ Y)
  • สําหรับอินพุตพอร์ต OR A: CO(A) = 1 + CO(Y) + CC0(B)
  • ทําซ้ําสําหรับพอร์ตทุกประเภท บวกกับต้นทุนการควบคุมของอินพุตเสริม และเพิ่มหนึ่งพอร์ตสําหรับพอร์ตเอง

ตัวอย่างของ COP

ลองพิจารณาโหนด n ที่เราพบ:

  • CC0(n) = 8
  • CC1(n) = 12
  • CO (n) = 10

ขั้นแรก ให้ใช้ต้นทุนในการควบคุมที่น้อยลง:

นาที (CC0, CC1) = 8

จากนั้นคูณด้วยค่าใช้จ่ายในการสังเกต:

COP (n) = 8 × 10 = 80

COP 80 ทําเครื่องหมายโหนด n เป็นตัวเลือกหลักสําหรับการแทรกจุดตรวจสอบหรือการปรับโครงสร้างเชิงตรรกะ เนื่องจากเป็นการยากที่จะครอบคลุมด้วยรูปแบบการทดสอบที่มีอยู่.

3) ความแตกต่างของบูลีน

ในขณะที่เมตริก SCOAP ให้มุมมองที่มีโครงสร้างของการควบคุมและการสังเกต แต่ดิฟเฟอเรนเชียลบูลีนให้มุมมองการทํางานว่าการเปลี่ยนแปลงที่โหนดหนึ่งส่งผลต่ออีกโหนดหนึ่งอย่างไร ประมาณความน่าจะเป็นที่การแปลงสัญญาณภายในเฉพาะจะทําให้เกิดการเปลี่ยนแปลงที่เอาต์พุตหลักตามนิพจน์บูลีนของวงจร.

ความแตกต่างของบูลีนคืออะไร?

ด้วยฟังก์ชันตรรกะ F(X₁, X₂, ..., Xn) และโหนด Xi ความแตกต่างของบูลีน ∂F/∂Xi ถูกกําหนดเป็น:

• ∂F/∂Xi = F(X₁,..., Xi=0,...,Xn) ⊕ F(X₁,..., Xi=1,...,Xn)

กล่าวอีกนัยหนึ่งเราประเมิน F ด้วย Xi บีบเป็น 0 และอีกครั้งด้วย Xi บีบเป็น 1 การยกเว้นหรือการดําเนินการของผลลัพธ์ทั้งสองนี้บอกเราว่าการเปลี่ยนแปลงที่ Xi สามารถย้อนกลับผลลัพธ์ได้หรือไม่.

  • หาก ∂F/∂Xi = 1 สําหรับการกําหนดอินพุตที่กําหนด การแปลง Xi จะย้อนกลับเอาต์พุต.
  • ถ้า ∂F/∂Xi = 0 แสดงว่าเอาต์พุตไม่ไวต่อการเปลี่ยนแปลงใน Xi โดยการกําหนดนั้น.

ความแตกต่างของบูลีนเป็นค่าประมาณความสามารถในการสังเกตการณ์

ด้วยการหาค่าเฉลี่ย ∂F/∂Xi ในการกําหนดอินพุตที่เป็นไปได้ทั้งหมด เราจึงได้ความน่าจะเป็นของ Pi ที่การพลิกที่โหนด Xi จะแพร่กระจายไปยังเอาต์พุต Pi สูงหมายความว่า Xi สามารถสังเกตได้ตามฟังก์ชัน ในขณะที่ Pi ต่ําหมายถึงความคลุมเครือหรือไม่ไว.

ในทางปฏิบัติ:

  • เราสามารถสุ่มตัวอย่างชุดย่อยของเวกเตอร์อินพุต (เช่น ตัวอย่าง ATPG) และคํานวณ ∂F/∂Xi สําหรับแต่ละเวกเตอร์.
  • อัตราส่วนของเวกเตอร์ที่มี ∂F/∂Xi = 1 ต่อจํานวนเวกเตอร์การสุ่มตัวอย่างทั้งหมดที่ประเมินความสามารถในการสังเกตการทํางาน.

คํานวณความแตกต่างของบูลีนในรายการเครือข่ายระดับพอร์ต

ที่ระดับเกต ความแตกต่างของบูลีนสามารถคํานวณแบบเรียกซ้ําได้โดยใช้กฎท้องถิ่น:

  • พอร์ต AND Y = A &B
    ∂Y/∂A = B
    ∂Y/∂B = ก
  • พอร์ต หรือ Y = A | B
    ∂Y/∂A = ¬B
    ∂Y/∂B = ¬A
  • พอร์ต NO Y = ¬A
    ∂วาย/∂ก = 1
  • พอร์ต XOR Y = A ⊕ B
    ∂วาย/∂ก = 1
    ∂วาย/∂บี = 1

ด้วยการส่งความแตกต่างในท้องถิ่นเหล่านี้ผ่านเน็ตลิสต์ไปยังทุกเอาต์พุตหลักและรวม (ตรรกะ OR) ในหลายเอาต์พุต เราจะได้∂F/∂Xi โดยรวมสําหรับแต่ละโหนดภายใน.

ตัวอย่าง

พิจารณาฟังก์ชันตรรกะขนาดเล็ก:

Y = (A และ B) หรือ C

คํานวณ ∂Y/∂A

  • แก้ไข B=1, C=0:
    Y(A=0) = (0 & 1) | 0 = 0
    Y(A=1) = (1 & 1) | 0 = 1
    ∂Y/∂A = 1 ⊕ 0 = 1
  • แก้ไข B=0, C=1:
    Y(A=0) = (0 & 0) | 1 = 1
    Y(A=1) = (1 & 0) | 1 = 1
    ∂Y/∂A = 1 ⊕ 1 = 0

การสุ่มตัวอย่างชุดอินพุตทั้งสี่จะให้ผลสองกรณีที่ ∂Y/∂A = 1 และสองกรณีที่ ∂Y/∂A = 0 ดังนั้น P_A ประมาณการ = 0.5 ดังนั้นโหนด A มีโอกาส 50% ที่จะเกิดข้อผิดพลาดในการแปลงที่ Y.

4) ตัวชี้วัดระยะทาง

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

หน่วยวัดระยะทางคืออะไร?

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

  • ระยะระดับศูนย์
    จํานวนถ่วงน้ําหนักต่อพอร์ตหรือสุทธิไปข้างหน้าคือ "1" ระยะห่างของโหนด n คือจํานวนประตูขั้นต่ําระหว่าง n กับจุดสังเกตใด ๆ.
  • ระยะถ่วงน้ําหนัก:
    กําหนดน้ําหนักที่แตกต่างกันให้กับพอร์ตต่างๆ (เช่น พอร์ตที่ซับซ้อนที่มีน้ําหนักสูงกว่า) หรือเพิ่มต้นทุนการควบคุมอินพุตเพิ่มเติม ระยะทางคือน้ําหนักรวมตามเส้นทางที่สั้นที่สุด.

วิธีคํานวณระยะทาง

การเริ่มต้นจุดสังเกตการณ์
ตั้งค่าระยะห่างของทุกเอาต์พุตหลัก (และทุกปุ่มชัตเตอร์ scan-FF) เป็น 0 .

ความกว้างเป็นอันดับแรก)
เริ่มจากทุกมุมมอง เรียกดูรายการเครือข่ายย้อนกลับผ่านขอบพัดลม ด้วยโหนดก่อนหน้าแต่ละโหนด p:

  • ระยะทางที่ไม่ถ่วงน้ําหนัก:
    ระยะทาง (p) = 1 + นาที (ระยะห่างของพัดลมออกแต่ละตัว)
  • ระยะถ่วงน้ําหนัก:
    ระยะทาง (p) = gate_weight (G) + นาที (ระยะทางของผู้สืบทอดแต่ละคน)

ทําซ้ําจนกว่าปุ่มทั้งหมดจะถูกกําหนด
เรียกดูย้อนกลับต่อไปจนกว่าทุกโหนดในรายการเครือข่ายจะมีค่าระยะทาง.

เหตุใดเมตริกระยะทางจึงมีความสําคัญ

  • การประมาณการสังเกตการณ์อย่างรวดเร็ว
    โหนดที่มีระยะห่าง = 1 หรือ 2 มักจะสังเกตได้ง่าย โหนดที่มีระยะห่าง > 10 อาจต้องใช้จุดทดสอบพิเศษหรือความพยายามของ ATPG ที่เข้มข้น.
  • อัลกอริทึม ATPG
    ATPG ระยะแรกสามารถใช้ระยะทางเพื่อจัดอันดับเส้นการแพร่กระจาย—โหนดที่มีระยะห่างสั้นกว่าจะได้รับการจัดลําดับความสําคัญ ซึ่งจะลดผลตอบแทน.
  • การวางแผน DFT
    โหนดทางไกลที่ทําเครื่องหมายกรวยลอจิกจะได้รับประโยชน์จากการแทรกจุดสังเกตการณ์ โดยเฉพาะอย่างยิ่งเมื่อห่วงโซ่การสแกนไม่สามารถเข้าถึงได้โดยตรง.
  • คําแนะนําในการเข้ารหัส RTL
    นักออกแบบสามารถตรวจสอบระยะทางระหว่างกระบวนการสังเคราะห์เพื่อหลีกเลี่ยงการสร้างกรวยลอจิกที่ลึกเกินไปโดยไม่มีจุดดักจับตรงกลาง.

ตัวอย่าง

ลองนึกภาพลําดับตรรกะสามระดับ:

A → G1 → G2 → G3 → Y (เอาต์พุต)

  • Y มีระยะทาง 0
  • เอาต์พุตของ G3 (เรียกว่า N3) มีระยะห่าง 1
  • เอาต์พุตของ G2 (N2) เว้นระยะห่าง 2
  • เอาต์พุตของ G1 (N1) เว้นระยะห่าง 3
  • อินพุตหลัก A เว้นระยะห่าง 4

ความผิดพลาดบน N1 (ระยะทาง 3) จะต้องแพร่กระจายผ่านพอร์ตทั้งสามเพื่อไปถึง Y ซึ่งบ่งชี้ว่าต้องใช้ความพยายามสูงกว่าความผิดพลาดบน N3 (ระยะทาง 1).

การใช้ตัวบ่งชี้ความสามารถในการทดสอบใน DFT

ออกแบบเพื่อความสามารถในการทดสอบตามตัวชี้วัดเชิงปริมาณเพื่อระบุตําแหน่งข้อบกพร่องที่ตรวจจับได้ยากที่สุดและกําหนดเป้าหมายตําแหน่งการปรับปรุงที่จะให้ประโยชน์สูงสุด ด้วยการรวมการวัด SCOAP ความคลาดเคลื่อนบูลีน และระยะทาง วิศวกรจะได้รับมุมมองที่ครอบคลุมของความสามารถในการทดสอบ ซึ่งจะช่วยสนับสนุน ATPG การแทรกจุดทดสอบ และเพิ่มประสิทธิภาพการออกแบบ.

1. แนวทางของ ATPG และการตั้งค่าตัวอย่าง

เครื่องมือ ATPG ใช้การควบคุม SCOAP (CC0, CC1) เพื่อตัดสินใจว่าจะกําหนดเป้าหมายข้อบกพร่องใดก่อนข้อผิดพลาดบนโหนดที่ควบคุมง่ายมักจะถูกทริกเกอร์อย่างรวดเร็วในขณะที่ข้อผิดพลาดที่มีค่า CC สูงอาจต้องมีการจัดการเป็นพิเศษ ความสามารถในการสังเกตการณ์ SCOAP (CO) ช่วยในการเลือกสายส่งเพื่อเพิ่มโอกาสที่ความผิดพลาดจะไปถึงเอาต์พุต ด้วยการรวมปัจจัยเหล่านี้เข้ากับ COP ATPG สามารถจัดอันดับข้อผิดพลาดตามความยากในการทดสอบและจัดสรรความพยายามในการค้นหาไปยังสถานที่ที่สําคัญที่สุด.

สเปรดบูลีนช่วยปรับแต่งกระบวนการนี้ให้ดียิ่งขึ้น โหนดที่มีความน่าจะเป็นของความแตกต่างบูลีนสูงมีความไวต่อการทํางาน ซึ่งหมายความว่าโหนดจะสลับที่จุดเหล่านั้นมักจะส่งผลต่อเอาต์พุตตามการแจกแจงอินพุตจริง ข้อผิดพลาดบนโหนดที่มีความแตกต่างของบูลีนต่ําอาจล่าช้าหรืออยู่ภายใต้รูปแบบ "ละเอียดอ่อน" เฉพาะ การวัดระยะทาง—การวัดความยาวเส้นทางที่ระดับเกตถึงเอาต์พุต—นําทาง ATPG ไปยังเส้นทางที่สั้นลงและบดบังน้อยลง.

2. ปรับปรุงการแทรกจุดทดสอบและ DFT

เมื่อค่า COP สูง จุดความแตกต่างบูลีนต่ํา หรือค่าระยะทางขนาดใหญ่ทําเครื่องหมายโหนดว่าเป็นคอขวดในการทดสอบ นักออกแบบสามารถแทรกจุดควบคุม (เพื่อปรับปรุงความสามารถในการควบคุม) หรือจุดสังเกตการณ์ (เพื่อปรับปรุงความสามารถในการสังเกต) ตัวอย่าง:

  • โหนดที่มี CC1 = 15, CC0 = 12 และ CO = 20 (COP = 12 × 20 = 240) จะได้รับประโยชน์จากจุดควบคุมที่ลด CC อย่างเห็นได้ชัด.
  • โหนดที่มีความน่าจะเป็นเบี่ยงเบนบูลีนน้อยกว่า 10% บ่งชี้ว่าโหนดต้องการจุดสังเกตโครงสร้างหรือรูปแบบพิเศษ.
  • โหนดที่มีระยะห่าง = 8 อาจไม่สามารถเข้าถึงได้ด้วยสตริงการสแกนเพียงอย่างเดียว ดังนั้นจึงจําเป็นต้องมีพินจับระดับกลาง.

ด้วยการคํานวณเมตริกทั้งสามใหม่หลังจากการเปลี่ยนแปลง DFT แต่ละครั้ง วิศวกรสามารถยืนยันได้ว่าการแทรกจุดทดสอบแต่ละจุดหรือการปรับโครงสร้างลอจิกให้ผลการปรับปรุงที่วัดได้.

3. ข้อเสนอแนะการออกแบบเบื้องต้นและการแสดงภาพ

ในระหว่างขั้นตอน RTL และเกตเวย์ การเรียกใช้การวิเคราะห์ความสามารถในการทดสอบแบบไฮบริดจะเน้น "พื้นที่มืด" ในการออกแบบ — คลัสเตอร์โหนดที่ให้คะแนนต่ําในทุกเมตริก เครื่องมือสร้างภาพสามารถกําหนดรหัสสีกรวยลอจิกตาม COP, ความน่าจะเป็นออฟเซ็ตบูลีน หรือระยะทาง ทําให้ง่ายต่อการตรวจจับพัดลมที่หลอมรวมกัน ตรรกะที่ซ้อนกันอย่างลึกซึ้ง หรือโครงสร้างเกตที่ต้องใช้ความพยายาม ATPG ขนาดใหญ่.

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

4. วงปิดต่อเนื่อง

สุดท้าย เมตริกการทดสอบเหล่านี้จะถูกป้อนเข้าสู่ลูป DFT แบบวนซ้ํา :

  1. การวิเคราะห์เน็ตลิสต์ด้วย SCOAP ความแตกต่างและระยะทางบูลีน
  2. ระบุโหนดที่มีลําดับความสําคัญสูงสําหรับความเข้มข้นของ ATPG หรือการแทรก DFT
  3. ปรับปรุงการออกแบบด้วยลําดับการสแกน จุดตรวจสอบ หรือการปรับโครงสร้างตรรกะ
  4. สร้างต้นแบบและเรียกใช้การจําลองจุดบกพร่อง
  5. วัดความครอบคลุมและตรวจสอบเมตริกสําหรับปัญหาคอขวดที่เหลืออยู่

Lorem ipsum dolor sit amet, consectetur adipiscing elit. Suspendisse varius enim in eros elementum tristique. Duis cursus, mi quis viverra ornare, eros dolor interdum nulla, ut commodo diam libero vitae erat. Aenean faucibus nibh et justo cursus id rutrum lorem imperdiet. Nunc ut sem vitae risus tristique posuere.

การออกแบบเพื่อความสามารถในการทดสอบ: เมตริกความสามารถในการควบคุมและความสามารถในการสังเกต

การออกแบบเพื่อความสามารถในการทดสอบ: เมตริกความสามารถในการควบคุมและความสามารถในการสังเกต

ค้นพบว่าตัวชี้วัดความสามารถในการควบคุมและความสามารถในการสังเกตทําให้การทดสอบวงจรเป็นเรื่องง่ายและมีประสิทธิภาพได้อย่างไร

Lorem ipsum dolor amet consectetur adipiscing elit tortor massa arcu non.

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

ตัวชี้วัดเหล่านี้เป็นแนวทางสําหรับเครื่องมือ ATPG กลยุทธ์การแทรกจุดทดสอบ การออกแบบลําดับการสแกน และแม้กระทั่งมีอิทธิพลต่อแนวทางการเข้ารหัส RTL สําหรับการออกแบบที่เป็นมิตรกับการทดสอบ.

ทําไมเราถึงต้องการการควบคุมและการมองเห็น?

เพื่อให้การทดลองสามารถตรวจจับข้อผิดพลาดได้ต้องมีสามสิ่งเกิดขึ้น:

  1. ต้องทริกเกอร์ข้อผิดพลาด - โหนดข้อผิดพลาดต้องมีค่าตรรกะตรงกันข้ามกับสถานะค้าง.
  2. เอฟเฟกต์ข้อผิดพลาดจะต้องแพร่กระจาย—ต้องผ่านประตูตรรกะโดยไม่บดบัง.
  3. ต้องสังเกตเอฟเฟกต์ข้อผิดพลาด—ต้องปรากฏที่เอาต์พุตหลักหรือการสแกนฟลิปฟล็อป.

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

รูปที่ 1: เส้นเมตริก DFT ในตัว

ประเภทของเมตริก

ในการหาปริมาณความสามารถในการทดสอบของสัญญาณผู้เชี่ยวชาญอาศัยตัวชี้วัดที่กําหนดไว้จํานวนหนึ่งรวมถึง:

  • SCOAP (CC0, CC1, CO): การวัดโครงสร้างว่าการนําโหนดไปที่ 0 หรือ 1 นั้นยากเพียงใด และยากเพียงใดที่จะสังเกตข้อผิดพลาดที่โหนดนั้น.
  • COP (Controllability × Observability Product): จุดรวมที่เน้นโหนดที่ต้องแทรกจุดทดสอบมากที่สุด.
  • ความแตกต่างของบูลีน: เมตริกการทํางานที่ประมาณความน่าจะเป็นที่การเปลี่ยนแปลงที่โหนดหนึ่งจะส่งผลต่อโหนดอื่น.
  • ตัวชี้วัดระยะทาง: นับความยาวเส้นทางอย่างง่ายหรือระยะทางถ่วงน้ําหนักจากโหนดไปยังเอาต์พุตหลัก ซึ่งใช้เป็นทางเลือกที่รวดเร็วสําหรับการสังเกต.

1) ตัวชี้วัด SCOAP

เพื่อปรับปรุงความสามารถในการทดสอบของการออกแบบอย่างเป็นระบบเราจําเป็นต้องมีวิธีการวัดว่าการสร้างค่าตรรกะสําหรับสัญญาณภายในแต่ละสัญญาณนั้นง่ายเพียงใด (ความสามารถในการควบคุม) และง่ายต่อการสังเกตข้อผิดพลาดที่สัญญาณนั้นที่เอาต์พุต (ความสามารถในการสังเกต) ตัวบ่งชี้ SCOAP (Sandia Controllability/Observability Analysis Program) ให้สิ่งนี้: ค่าสเกลาร์สามค่า CC0, CC1 และ CO กําหนดคะแนน "ความยาก" ให้กับแต่ละโหนดในรายการเครือข่ายระดับพอร์ต.

CC0, CC1 และ CO คืออะไร?

  • ซีซี 0(n)
    ความสามารถในการควบคุมปุ่ม n เป็นตรรกะ 0 CC0 ต่ําหมายความว่าง่ายต่อการบีบ n เป็น 0 CC0 ที่สูงหมายความว่าจําเป็นต้องมีอินพุตจํานวนมากหรือระดับลอจิกเชิงลึก.
  • ซีซี 1(n)
    ความสามารถในการควบคุมปุ่ม n ตามตรรกะ*1 ในทํานองเดียวกัน CC1 ที่ต่ําบ่งชี้ถึงโหนดที่สามารถนํามาได้ถึง 1 โดยใช้ความพยายามเพียงเล็กน้อย CC1 สูงบ่งบอกถึงความซับซ้อน.
  • CO (n)
    ความสามารถในการสังเกตของ n. มันสะท้อนให้เห็นว่ามันยากเพียงใดเมื่อการเปลี่ยนแปลงที่ไม่คาดคิดที่ n (เนื่องจากข้อผิดพลาด) แพร่กระจายผ่านตรรกะถัดไปไปยังเอาต์พุตหลัก.

เมตริกแต่ละตัวจะแสดงเป็น "ต้นทุน" จํานวนเต็มที่ไม่เป็นลบ และคํานวณโดยการเรียกดูเน็ตลิสต์:

ความสามารถในการควบคุมการคํานวณ (CC0 & CC1)

  1. การเริ่มต้นสําหรับ
    กับโหนดอินพุตหลักแต่ละโหนด (PI):
    — CC0 = 1
    — CC1 = 1
  2. การอนุมัติโทโพโลยี:
    เข้าถึงพอร์ตตามลําดับอินพุต-เอาต์พุต สําหรับพอร์ต G ที่มีอินพุต i₁, i₂... เอาต์พุต IK และ O :
  • และพอร์ต
    • CC0(o) = 1 + min(CC0(i₁), CC0(i₂), …, CC0(iₖ))
    (ต้องการอินพุตเพียงครั้งเดียว 0)
    • CC1(o) = 1 + Σ CC1(ij) กับ j=1..k
    (อินพุตทั้งหมดต้องเป็น 1)
  • พอร์ต OR
    • CC0(o) = 1 + Σ CC0(ij)
    (อินพุตทั้งหมดต้องเท่ากับ 0)
    • CC1(o) = 1 + นาที(CC1(i₁), CC1(i₂), …)
  • NAND/NOR
    เหมือนกับ AND/OR แต่บทบาท CC0/CC1 เปลี่ยนไปเนื่องจากเอาต์พุตกลับด้าน.
  • XOR/XNOR
    • CC0(o) = 1 + Σ CC0(ij)
    • CC1(o) = 1 + Σ CC1(ij)
    (ทุกอินพุตต้องได้รับการควบคุม)
  • ประตูสตูลคอมเพล็กซ์
    สะสมการดําเนินการทางคณิตศาสตร์ขั้นพื้นฐานหรือใช้สูตรเฉพาะ.

ความสามารถในการสังเกตการณ์เชิงคํานวณ (CO))

  1. การเริ่มต้น
    สําหรับโหนดเอาต์พุตหลักแต่ละโหนด (PO):
    — CO = 0
  2. เรียกดูย้อนกลับ:
    เยี่ยมชมประตูตามลําดับเอาต์พุตต่ออินพุตสําหรับแต่ละเกต G ที่มีเอาต์พุต o และอินพุต i₁...ไอเค:
  3. สําหรับแต่ละอินพุต ij :
  • และพอร์ต
    CO(ij) = 1 + CO(o) + Σ CC1(im) สําหรับทุกๆ m ≠ j
    (อินพุตเสริมต้องเท่ากับ 1 เพื่อเผยแพร่การเปลี่ยนแปลง)
  • พอร์ต OR
    CO(ij) = 1 + CO(o) + Σ CC0(im) สําหรับทุกๆ m ≠ j
    (อินพุตที่ถูกต้องเท่ากับ 0)
  • NAND/NOR
    อินพุตทั้งหมดอยู่ด้านเดียวกัน เนื่องจากการผกผันไม่ส่งผลต่อการคํานวณความสามารถในการสังเกต.
  • XOR/XNOR
    CO(ij) = 1 + CO(o) + Σ min(CC0(im), CC1(im)) สําหรับทุก m ≠ j
    (อินพุตด้านขวาแต่ละช่องอนุญาตให้ใช้เอาต์พุตที่ขึ้นอยู่กับ IJ)

การตีความค่า SCOAP

  • CC0 หรือ CC1 ต่ํา (เช่น 1–3) หมายความว่าโหนดนั้นง่ายต่อการควบคุมตามค่าตรรกะนั้น.
  • CC สูง (เช่น >10) บ่งชี้ว่าการบังคับค่านั้นต้องใช้ตรรกะเชิงลึกหรือข้อจํากัดอินพุตหลายรายการ.
  • CO ต่ํา (ใกล้ 0) บ่งชี้ว่าการรบกวนใด ๆ ที่โหนดมีอยู่ที่เอาต์พุตได้ง่าย CO สูง (~10+) หมายความว่าโหนดซ่อนอยู่หลังตรรกะเกตหรือตรรกะการบรรจบกัน ทําให้ยากต่อการสังเกตผลกระทบจากข้อผิดพลาด.

ตัวอย่าง

ลองพิจารณาตรรกะเล็กๆ 2 ระดับ:

  1. อินพุตหลัก A, B, C มี CC0=CC1=1.
  2. สําหรับพอร์ต AND:
    CC0(M) = 1 + นาที(1,1) = 2
    CC1(M) = 1 + (1+1) = 3
  3. สําหรับพอร์ต OR:
    CC0(Y) = 1 + (CC0(M) + CC0(C)) = 1 + (2 + 1) = 4
    CC1(Y) = 1 + นาที(CC1(M), CC1(C)) = 1 + นาที(3,1) = 2
  4. ทัศนวิสัยย้อนกลับ:
    CO (Y) = 0
    สําหรับ M คืออินพุตของ OR: CO(M) = 1 + CO(Y) + CC0(C) = 1 + 0 + 1 = 2
    สําหรับ C: CO(C) = 1 + 0 + CC0(M) = 1 + 2 = 3
    สําหรับ A ที่ AND: CO(A) = 1 + CO(M) + CC1(B) = 1 + 2 + 1 = 4
    (และเช่นเดียวกับ B)

ค่าเหล่านี้ให้ข้อมูลเชิงลึกที่ถูกต้องว่าโหนดใดสามารถทดสอบได้และโหนดใดที่ต้องการการแทรกแซง DFT.

2) การควบคุมการมองเห็น (COP)

Control-Observability Product หรือ COP รวมความยากของโหนดเพื่อให้ได้ค่าตรรกะกับความยากในการสังเกตข้อผิดพลาดที่โหนดนั้น มันถูกกําหนดง่ายๆ ดังนี้:

COP (n) = นาที (CC0 (n), CC1 (n)) × CO (n)

  • CC0(n) คือต้นทุนในการบังคับให้โหนด n เป็นตรรกะ 0
  • CC1(n) คือค่าใช้จ่ายในการบังคับให้โหนด n เป็นตรรกะ 1
  • CO(n) คือค่าใช้จ่ายในการส่งข้อผิดพลาดที่โหนด n ไปยังเอาต์พุตหลัก
  • เราใช้ค่าต่ําสุดของ CC0 และ CC1 เนื่องจากเงื่อนไขทริกเกอร์ที่ง่ายกว่าจะควบคุมการเริ่มต้นข้อผิดพลาด

ค่า COP สูงระบุฮอตสปอตที่มีความสามารถในการทดสอบที่แท้จริง ซึ่งเป็นโหนดที่ควบคุมได้ยากและสังเกตได้ยาก.

วิธีคํานวณ CC0, CC1 และ CO

ก่อนคํานวณ COP คุณต้องรับเมตริก SCOAP สําหรับแต่ละโหนด:

การเริ่มต้นต้นทุน I/O หลัก

  • สําหรับอินพุตหลักแต่ละตัว ให้ตั้งค่า CC0 = 1 และ CC1 = 1
  • สําหรับเอาต์พุตหลักแต่ละตัว ให้ตั้งค่า CO = 0

การคํานวณ CC0 และ CC1 ในการเปลี่ยนผ่าน

  • พอร์ตรีเลย์อินพุตถึงเอาต์พุต
  • สําหรับเอาต์พุตพอร์ต AND Y พร้อมอินพุต A และ B:
  • CC0(Y) = 1 + นาที(CC0(A), CC0(B))
  • CC1(Y) = 1 + CC1(เอ) + ซีซี 1(บี)
  • สําหรับเอาต์พุตพอร์ต OR Y:
  • CC0(Y) = 1 + CC0(A) + CC0(B)
  • CC1(Y) = 1 + นาที(CC1(A), CC1(B))
  • ใช้สูตรเดียวกันกับ NAND, NOR, XOR ฯลฯ โดยใช้ข้อกําหนดการผกผันและอินพุตย่อย

การคํานวณ CO ในการวิ่งย้อนกลับ

  • พอร์ตส่งต่อจากเอาต์พุตกลับไปยังอินพุต
  • สําหรับอินพุตพอร์ตและตัวควบคุม A Y โดยเหลืออินพุต B:
  • CO (A) = 1 + CO (Y) + CC1 (B)
    (B ต้องเท่ากับ 1 เพื่อให้การเปลี่ยนแปลงที่ A ส่งผลต่อ Y)
  • สําหรับอินพุตพอร์ต OR A: CO(A) = 1 + CO(Y) + CC0(B)
  • ทําซ้ําสําหรับพอร์ตทุกประเภท บวกกับต้นทุนการควบคุมของอินพุตเสริม และเพิ่มหนึ่งพอร์ตสําหรับพอร์ตเอง

ตัวอย่างของ COP

ลองพิจารณาโหนด n ที่เราพบ:

  • CC0(n) = 8
  • CC1(n) = 12
  • CO (n) = 10

ขั้นแรก ให้ใช้ต้นทุนในการควบคุมที่น้อยลง:

นาที (CC0, CC1) = 8

จากนั้นคูณด้วยค่าใช้จ่ายในการสังเกต:

COP (n) = 8 × 10 = 80

COP 80 ทําเครื่องหมายโหนด n เป็นตัวเลือกหลักสําหรับการแทรกจุดตรวจสอบหรือการปรับโครงสร้างเชิงตรรกะ เนื่องจากเป็นการยากที่จะครอบคลุมด้วยรูปแบบการทดสอบที่มีอยู่.

3) ความแตกต่างของบูลีน

ในขณะที่เมตริก SCOAP ให้มุมมองที่มีโครงสร้างของการควบคุมและการสังเกต แต่ดิฟเฟอเรนเชียลบูลีนให้มุมมองการทํางานว่าการเปลี่ยนแปลงที่โหนดหนึ่งส่งผลต่ออีกโหนดหนึ่งอย่างไร ประมาณความน่าจะเป็นที่การแปลงสัญญาณภายในเฉพาะจะทําให้เกิดการเปลี่ยนแปลงที่เอาต์พุตหลักตามนิพจน์บูลีนของวงจร.

ความแตกต่างของบูลีนคืออะไร?

ด้วยฟังก์ชันตรรกะ F(X₁, X₂, ..., Xn) และโหนด Xi ความแตกต่างของบูลีน ∂F/∂Xi ถูกกําหนดเป็น:

• ∂F/∂Xi = F(X₁,..., Xi=0,...,Xn) ⊕ F(X₁,..., Xi=1,...,Xn)

กล่าวอีกนัยหนึ่งเราประเมิน F ด้วย Xi บีบเป็น 0 และอีกครั้งด้วย Xi บีบเป็น 1 การยกเว้นหรือการดําเนินการของผลลัพธ์ทั้งสองนี้บอกเราว่าการเปลี่ยนแปลงที่ Xi สามารถย้อนกลับผลลัพธ์ได้หรือไม่.

  • หาก ∂F/∂Xi = 1 สําหรับการกําหนดอินพุตที่กําหนด การแปลง Xi จะย้อนกลับเอาต์พุต.
  • ถ้า ∂F/∂Xi = 0 แสดงว่าเอาต์พุตไม่ไวต่อการเปลี่ยนแปลงใน Xi โดยการกําหนดนั้น.

ความแตกต่างของบูลีนเป็นค่าประมาณความสามารถในการสังเกตการณ์

ด้วยการหาค่าเฉลี่ย ∂F/∂Xi ในการกําหนดอินพุตที่เป็นไปได้ทั้งหมด เราจึงได้ความน่าจะเป็นของ Pi ที่การพลิกที่โหนด Xi จะแพร่กระจายไปยังเอาต์พุต Pi สูงหมายความว่า Xi สามารถสังเกตได้ตามฟังก์ชัน ในขณะที่ Pi ต่ําหมายถึงความคลุมเครือหรือไม่ไว.

ในทางปฏิบัติ:

  • เราสามารถสุ่มตัวอย่างชุดย่อยของเวกเตอร์อินพุต (เช่น ตัวอย่าง ATPG) และคํานวณ ∂F/∂Xi สําหรับแต่ละเวกเตอร์.
  • อัตราส่วนของเวกเตอร์ที่มี ∂F/∂Xi = 1 ต่อจํานวนเวกเตอร์การสุ่มตัวอย่างทั้งหมดที่ประเมินความสามารถในการสังเกตการทํางาน.

คํานวณความแตกต่างของบูลีนในรายการเครือข่ายระดับพอร์ต

ที่ระดับเกต ความแตกต่างของบูลีนสามารถคํานวณแบบเรียกซ้ําได้โดยใช้กฎท้องถิ่น:

  • พอร์ต AND Y = A &B
    ∂Y/∂A = B
    ∂Y/∂B = ก
  • พอร์ต หรือ Y = A | B
    ∂Y/∂A = ¬B
    ∂Y/∂B = ¬A
  • พอร์ต NO Y = ¬A
    ∂วาย/∂ก = 1
  • พอร์ต XOR Y = A ⊕ B
    ∂วาย/∂ก = 1
    ∂วาย/∂บี = 1

ด้วยการส่งความแตกต่างในท้องถิ่นเหล่านี้ผ่านเน็ตลิสต์ไปยังทุกเอาต์พุตหลักและรวม (ตรรกะ OR) ในหลายเอาต์พุต เราจะได้∂F/∂Xi โดยรวมสําหรับแต่ละโหนดภายใน.

ตัวอย่าง

พิจารณาฟังก์ชันตรรกะขนาดเล็ก:

Y = (A และ B) หรือ C

คํานวณ ∂Y/∂A

  • แก้ไข B=1, C=0:
    Y(A=0) = (0 & 1) | 0 = 0
    Y(A=1) = (1 & 1) | 0 = 1
    ∂Y/∂A = 1 ⊕ 0 = 1
  • แก้ไข B=0, C=1:
    Y(A=0) = (0 & 0) | 1 = 1
    Y(A=1) = (1 & 0) | 1 = 1
    ∂Y/∂A = 1 ⊕ 1 = 0

การสุ่มตัวอย่างชุดอินพุตทั้งสี่จะให้ผลสองกรณีที่ ∂Y/∂A = 1 และสองกรณีที่ ∂Y/∂A = 0 ดังนั้น P_A ประมาณการ = 0.5 ดังนั้นโหนด A มีโอกาส 50% ที่จะเกิดข้อผิดพลาดในการแปลงที่ Y.

4) ตัวชี้วัดระยะทาง

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

หน่วยวัดระยะทางคืออะไร?

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

  • ระยะระดับศูนย์
    จํานวนถ่วงน้ําหนักต่อพอร์ตหรือสุทธิไปข้างหน้าคือ "1" ระยะห่างของโหนด n คือจํานวนประตูขั้นต่ําระหว่าง n กับจุดสังเกตใด ๆ.
  • ระยะถ่วงน้ําหนัก:
    กําหนดน้ําหนักที่แตกต่างกันให้กับพอร์ตต่างๆ (เช่น พอร์ตที่ซับซ้อนที่มีน้ําหนักสูงกว่า) หรือเพิ่มต้นทุนการควบคุมอินพุตเพิ่มเติม ระยะทางคือน้ําหนักรวมตามเส้นทางที่สั้นที่สุด.

วิธีคํานวณระยะทาง

การเริ่มต้นจุดสังเกตการณ์
ตั้งค่าระยะห่างของทุกเอาต์พุตหลัก (และทุกปุ่มชัตเตอร์ scan-FF) เป็น 0 .

ความกว้างเป็นอันดับแรก)
เริ่มจากทุกมุมมอง เรียกดูรายการเครือข่ายย้อนกลับผ่านขอบพัดลม ด้วยโหนดก่อนหน้าแต่ละโหนด p:

  • ระยะทางที่ไม่ถ่วงน้ําหนัก:
    ระยะทาง (p) = 1 + นาที (ระยะห่างของพัดลมออกแต่ละตัว)
  • ระยะถ่วงน้ําหนัก:
    ระยะทาง (p) = gate_weight (G) + นาที (ระยะทางของผู้สืบทอดแต่ละคน)

ทําซ้ําจนกว่าปุ่มทั้งหมดจะถูกกําหนด
เรียกดูย้อนกลับต่อไปจนกว่าทุกโหนดในรายการเครือข่ายจะมีค่าระยะทาง.

เหตุใดเมตริกระยะทางจึงมีความสําคัญ

  • การประมาณการสังเกตการณ์อย่างรวดเร็ว
    โหนดที่มีระยะห่าง = 1 หรือ 2 มักจะสังเกตได้ง่าย โหนดที่มีระยะห่าง > 10 อาจต้องใช้จุดทดสอบพิเศษหรือความพยายามของ ATPG ที่เข้มข้น.
  • อัลกอริทึม ATPG
    ATPG ระยะแรกสามารถใช้ระยะทางเพื่อจัดอันดับเส้นการแพร่กระจาย—โหนดที่มีระยะห่างสั้นกว่าจะได้รับการจัดลําดับความสําคัญ ซึ่งจะลดผลตอบแทน.
  • การวางแผน DFT
    โหนดทางไกลที่ทําเครื่องหมายกรวยลอจิกจะได้รับประโยชน์จากการแทรกจุดสังเกตการณ์ โดยเฉพาะอย่างยิ่งเมื่อห่วงโซ่การสแกนไม่สามารถเข้าถึงได้โดยตรง.
  • คําแนะนําในการเข้ารหัส RTL
    นักออกแบบสามารถตรวจสอบระยะทางระหว่างกระบวนการสังเคราะห์เพื่อหลีกเลี่ยงการสร้างกรวยลอจิกที่ลึกเกินไปโดยไม่มีจุดดักจับตรงกลาง.

ตัวอย่าง

ลองนึกภาพลําดับตรรกะสามระดับ:

A → G1 → G2 → G3 → Y (เอาต์พุต)

  • Y มีระยะทาง 0
  • เอาต์พุตของ G3 (เรียกว่า N3) มีระยะห่าง 1
  • เอาต์พุตของ G2 (N2) เว้นระยะห่าง 2
  • เอาต์พุตของ G1 (N1) เว้นระยะห่าง 3
  • อินพุตหลัก A เว้นระยะห่าง 4

ความผิดพลาดบน N1 (ระยะทาง 3) จะต้องแพร่กระจายผ่านพอร์ตทั้งสามเพื่อไปถึง Y ซึ่งบ่งชี้ว่าต้องใช้ความพยายามสูงกว่าความผิดพลาดบน N3 (ระยะทาง 1).

การใช้ตัวบ่งชี้ความสามารถในการทดสอบใน DFT

ออกแบบเพื่อความสามารถในการทดสอบตามตัวชี้วัดเชิงปริมาณเพื่อระบุตําแหน่งข้อบกพร่องที่ตรวจจับได้ยากที่สุดและกําหนดเป้าหมายตําแหน่งการปรับปรุงที่จะให้ประโยชน์สูงสุด ด้วยการรวมการวัด SCOAP ความคลาดเคลื่อนบูลีน และระยะทาง วิศวกรจะได้รับมุมมองที่ครอบคลุมของความสามารถในการทดสอบ ซึ่งจะช่วยสนับสนุน ATPG การแทรกจุดทดสอบ และเพิ่มประสิทธิภาพการออกแบบ.

1. แนวทางของ ATPG และการตั้งค่าตัวอย่าง

เครื่องมือ ATPG ใช้การควบคุม SCOAP (CC0, CC1) เพื่อตัดสินใจว่าจะกําหนดเป้าหมายข้อบกพร่องใดก่อนข้อผิดพลาดบนโหนดที่ควบคุมง่ายมักจะถูกทริกเกอร์อย่างรวดเร็วในขณะที่ข้อผิดพลาดที่มีค่า CC สูงอาจต้องมีการจัดการเป็นพิเศษ ความสามารถในการสังเกตการณ์ SCOAP (CO) ช่วยในการเลือกสายส่งเพื่อเพิ่มโอกาสที่ความผิดพลาดจะไปถึงเอาต์พุต ด้วยการรวมปัจจัยเหล่านี้เข้ากับ COP ATPG สามารถจัดอันดับข้อผิดพลาดตามความยากในการทดสอบและจัดสรรความพยายามในการค้นหาไปยังสถานที่ที่สําคัญที่สุด.

สเปรดบูลีนช่วยปรับแต่งกระบวนการนี้ให้ดียิ่งขึ้น โหนดที่มีความน่าจะเป็นของความแตกต่างบูลีนสูงมีความไวต่อการทํางาน ซึ่งหมายความว่าโหนดจะสลับที่จุดเหล่านั้นมักจะส่งผลต่อเอาต์พุตตามการแจกแจงอินพุตจริง ข้อผิดพลาดบนโหนดที่มีความแตกต่างของบูลีนต่ําอาจล่าช้าหรืออยู่ภายใต้รูปแบบ "ละเอียดอ่อน" เฉพาะ การวัดระยะทาง—การวัดความยาวเส้นทางที่ระดับเกตถึงเอาต์พุต—นําทาง ATPG ไปยังเส้นทางที่สั้นลงและบดบังน้อยลง.

2. ปรับปรุงการแทรกจุดทดสอบและ DFT

เมื่อค่า COP สูง จุดความแตกต่างบูลีนต่ํา หรือค่าระยะทางขนาดใหญ่ทําเครื่องหมายโหนดว่าเป็นคอขวดในการทดสอบ นักออกแบบสามารถแทรกจุดควบคุม (เพื่อปรับปรุงความสามารถในการควบคุม) หรือจุดสังเกตการณ์ (เพื่อปรับปรุงความสามารถในการสังเกต) ตัวอย่าง:

  • โหนดที่มี CC1 = 15, CC0 = 12 และ CO = 20 (COP = 12 × 20 = 240) จะได้รับประโยชน์จากจุดควบคุมที่ลด CC อย่างเห็นได้ชัด.
  • โหนดที่มีความน่าจะเป็นเบี่ยงเบนบูลีนน้อยกว่า 10% บ่งชี้ว่าโหนดต้องการจุดสังเกตโครงสร้างหรือรูปแบบพิเศษ.
  • โหนดที่มีระยะห่าง = 8 อาจไม่สามารถเข้าถึงได้ด้วยสตริงการสแกนเพียงอย่างเดียว ดังนั้นจึงจําเป็นต้องมีพินจับระดับกลาง.

ด้วยการคํานวณเมตริกทั้งสามใหม่หลังจากการเปลี่ยนแปลง DFT แต่ละครั้ง วิศวกรสามารถยืนยันได้ว่าการแทรกจุดทดสอบแต่ละจุดหรือการปรับโครงสร้างลอจิกให้ผลการปรับปรุงที่วัดได้.

3. ข้อเสนอแนะการออกแบบเบื้องต้นและการแสดงภาพ

ในระหว่างขั้นตอน RTL และเกตเวย์ การเรียกใช้การวิเคราะห์ความสามารถในการทดสอบแบบไฮบริดจะเน้น "พื้นที่มืด" ในการออกแบบ — คลัสเตอร์โหนดที่ให้คะแนนต่ําในทุกเมตริก เครื่องมือสร้างภาพสามารถกําหนดรหัสสีกรวยลอจิกตาม COP, ความน่าจะเป็นออฟเซ็ตบูลีน หรือระยะทาง ทําให้ง่ายต่อการตรวจจับพัดลมที่หลอมรวมกัน ตรรกะที่ซ้อนกันอย่างลึกซึ้ง หรือโครงสร้างเกตที่ต้องใช้ความพยายาม ATPG ขนาดใหญ่.

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

4. วงปิดต่อเนื่อง

สุดท้าย เมตริกการทดสอบเหล่านี้จะถูกป้อนเข้าสู่ลูป DFT แบบวนซ้ํา :

  1. การวิเคราะห์เน็ตลิสต์ด้วย SCOAP ความแตกต่างและระยะทางบูลีน
  2. ระบุโหนดที่มีลําดับความสําคัญสูงสําหรับความเข้มข้นของ ATPG หรือการแทรก DFT
  3. ปรับปรุงการออกแบบด้วยลําดับการสแกน จุดตรวจสอบ หรือการปรับโครงสร้างตรรกะ
  4. สร้างต้นแบบและเรียกใช้การจําลองจุดบกพร่อง
  5. วัดความครอบคลุมและตรวจสอบเมตริกสําหรับปัญหาคอขวดที่เหลืออยู่

Related articles