Thứ Bảy, 22 tháng 9, 2018

[DFT] Các phương pháp thiết kế DFT

Qua bài viết mô tả tổng quan về DFT, chúng ta có thể hiểu cơ bản về kỹ thuật DFT. Kỹ thuật DFT có nhiều phương pháp thực hiện khác nhau gồm phương pháp Ad-hoc, phương pháp scan, phương pháp BIST. Bài này sẽ mô tả cơ bản về các kỹ thuật này.

1) Điều khiển, giám sát và dự đoán
Khả năng điều khiển (controllability), giám sát (observability) và dự đoán (predictability) là ba yếu tố quan trọng nhất đánh giá khả năng test (testability) của một mạch.
Khả năng điều khiển là khả năng thiết lập (lái) một tín hiệu đến một giá trị mong muốn thông qua các đầu vào (input) của mạch. Giá trị này có thể là mức 0 hoặc mức 1. Một tín hiệu có thể được điều khiển là một tín hiệu có thể được lái đến mức "0" và mức "1" bằng một tập test pattern nhất định. Một tín hiệu không thể điều khiển là tín hiệu không thể được lái đến mức "0" hoặc mức "1" hoặc cả hai thông qua tập test pattern hiện có. Một tín hiệu không thể điều khiển thì tín hiệu này không thể test được.
Khả năng giám sát là khả năng xác định giá trị của một tín hiệu trong mạch thông qua việc giám sát (đọc) đầu ra (output) của mạch. Một tín hiệu có thể được điều khiển đến giá trị logic mong muốn nhưng không thể kiểm tra được kết quả này thì cũng không thể test được.
Khả năng dự đoán là khả năng ngõ ra đạt được các giá trị có thể nhận biết đáp ứng theo giá trị ngõ vào đã biết. Khả năng này bị ảnh hưởng bởi trạng thái khởi tạo của mạch, chạy đua, hazard, và các dao động tự do. Khi giá trị ngõ ra không thể xác định (dự đoán) trước là "0" hay "1" thì không thể test được.
Các phương pháp thực hiện DFT đều có mục tiêu chính là cải thiện khả năng test thông qua việc tăng khả năng điều khiển, giám sát và dự đoán của mạch. Các phương pháp DFT hiện nay được chia thành 2 nhóm là nhóm phương pháp Ad-hoc và nhóm phương pháp có cấu trúc (structured).
2) Phương pháp Ad-hoc
Ad-hoc có ý nghĩa là "for this", đây là một thuật ngữ chỉ một giải pháp hoặc một phương pháp để giải quyết một vấn đề cụ thể hoặc dành cho một mục đích cụ thể chứ thể khái quát để dành cho nhiều mục đích khác nhau. Phương pháp Ad-hoc là phương pháp chỉ nhắm đến các phần không thể test (untestability) được hoặc các phần rất khó để test trong một thiết kế.
Phương pháp này sẽ thêm DFT logic, gọi là test point, để tăng khả năng điều khiển, giám sát và dự đoán cho các phần mạch khó hoặc không thể test được. Có hai loại test point là:
  • Controllability test point, gọi tắt là control point (CP), dùng để cải thiện khả năng điều khiển của điểm (vị trí) cần test
  • Observability test point, gọi tắt là observation point (OP), dùng để cải thiện khả năng giám sát của điểm (vị trí) cần test.
Phương pháp Ad-hoc cũng theo nguyên tắc chung của kỹ thuật DFT là giải quyết vấn đề "làm sao để điều khiển và giám sát trực tiếp điểm muốn test?". Một cấu trúc đơn giản của test point là dùng MUX.
Hình 1: Cấu trúc test point sử dụng MUX
Hình 2 là một ví dụ về chèn test point cho điểm na.
Hình 2: (a) mạch gốc (b) mạch được chèn thêm control point và observation point cho điểm na
Control point dùng MUX giúp lái na đến giá trị mong muốn 0 hoặc 1 dễ dàng. Hình 3 minh họa một cách chèn control point chỉ cho phép lái điểm na đến giá trị 0 (hình a) và chỉ cho phép lái điểm na đến giá trị 1 (hình b). Control point loại này còn gọi là "force test point".
Hình 3: (a) control point chỉ cho phép lái đến giá trị 0 (b) control point chỉ cho phép lái đến giá trị 1
Trong phương pháp Ad-hoc, khi số lượng các control point tăng lên thì số chân test input sẽ tăng lên, mỗi control point có một test input riêng, làm số chân ngõ vào của chip tăng lên. Khi số lượng observation point tăng lên thì số tín hiệu internal point tăng lên nên số lượng chân ngõ ra chip cũng không thể đáp ứng được nếu mỗi ngõ ra chỉ giám sát một internal point.
Để giảm số lượng chân ngõ vào của chip khi số lượng control point tăng, một DEMUX sẽ được sử dụng, để phân phối giá trị đến các control point từ một ngõ vào duy nhất như hình 4. Trong hình 4a, giả sử số lượng control point là n thì số lượng tín hiệu điều khiển DEMUX là x với 2^x >= n. Giá trị của mỗi đầu vào control point cần được lưu lại để điều khiển nên tại mỗi ngõ ra DEMUX sẽ có một FF như hình 4b. DEMUX cần x tín hiệu điều khiển sel_0, sel_1, ..., sel_x. Chúng không thể lấy từ các chân ngõ vào của chip vì nó sẽ làm chip tăng thêm chân không mong muốn. Giải pháp là có thể sử dụng một bộ đếm để mỗi chu kỳ clock bộ đếm tăng 1 giá trị và lựa chọn 1 ngõ ra DEMUX nối với test_in như hình 4c. Bên cạnh đó, chân test_in không cần là một chân riêng, nó có thể được tích hợp trong một chân chức năng của chip như hình 4d.
Hình 4: (a) DEMUX để điều khiển giá trị các control point (b) Dùng FF để lưu lại giá trị điều khiển (c) Thêm bộ đếm điều khiển DEMUX (d) Chân test_in có thể tích hợp với một chân chức năng khác
Đối với các observation point, để giảm số chân ngõ ra, chúng ta dùng một MUX để lựa chọn điểm giám sát như minh họa hình 5.

Hình 5: (a) Dùng MUX để lựa chọn điểm giám sát (b) Dùng bộ đếm điều khiển MUX và chân test_out có thể tích hợp với chân chức năng khác
Phương pháp Ad-hoc có lợi thế là giúp nhanh chóng giải quyết một vấn đề cụ thể nhưng việc thiết kế và chèn các test point theo phương pháp này phụ thuộc vào kinh nghiệm của người thực hiện. Vì vậy, việc phân tích và thiết kế DFT có thể phải lặp lại nhiều lần để đạt được mục tiêu coverage mong muốn. Bên cạnh đó, việc kiểm tra và đánh giá thiết kế DFT cũng mất thời gian hơn.
3) Phương pháp scan
Phương pháp scan thuộc nhóm phương pháp có cấu trúc. Phương pháp này chia thành các nhóm phổ biến như sau:
  • Scan nối tiếp (serial scan)
    • Scan toàn phần (full-scan)
    • Scan một phần (partial-scan)
  • Scan không nối tiếp (nonserial scan)
Khi trình bày về khái niệm DFT trong bài mô tả sơ bản về DFT, tác giả đã dùng phương pháp scan để minh họa việc thực hiện DFT như thế nào. Để thực hiện được phương pháp này, mỗi FF sẽ có thêm một MUX gắn ở ngõ vào D để lựa chọn giữa giá trị đầu vào giữa chế độ test (DFT) và chế độ xử lý thông thường.
Trong thực tế, người thiết kế sẽ không thêm MUX này bằng tay. Các phần mềm chuyên dụng như DFT compiler (Synopsys) sẽ làm việc này. Mỗi thư viện công nghệ dùng để tổng hợp đều hỗ trợ hai loại FF là loại có chức năng thông thường (non-scan FF) và loại hỗ trợ chức năng scan (scan FF). Trong đó:
  • Non-scan FF là FF thông thường, không hỗ trợ chức năng scan, hình 6.
  • Scan FF là FF có tích hợp sẵn MUX bên trong cho phép lựa chọn giữa chức năng thông thường và chế độ DFT, hình 7.
Hình 6: Sơ đồ mạch nguyên lý của Non-scan FF
Hình 7: Sơ đồ mạch nguyên lý của Scan FF sử dụng MUX
Khi tổng hợp RTL code để tạo ra GATE netlist , chúng ta sẽ làm những bước sau:
  1. Chuyển RTL code thành GATE netlist dùng non-scan FF bằng phần mềm tổng hợp như Design Compiler (Synopsys). Các dòng RTL code viết bằng Verilog hoặc VHDL sẽ được chuyển thành một netlist. Netlist gọi các cell của thư viện công nghệ và kết nối các cell này để tạo thành những mạch có chức năng tương đương với RTL code.
  2. Chuyển GATE netlist dùng non-scan FF (pre-DFT) thành GATE netlist dùng scan FF (post-DFT) bằng phần mềm tổng hợp như DFT compiler (Synopsys). Bước này chuyển các non-scan FF trong netlist thành các scan FF.
Scan toàn phần (full-scan) là phương pháp thay toàn bộ các non-scan FF trong thiết kế thành scan FF, hình 8.
Hình 8: (a) Mạch pre-DFT sử dụng non-scan FF (b) minh họa về scan toàn phần, toàn bộ non-scan FF được thay bằng scan FF
Scan một phần (partial-scan) là phương pháp chỉ chọn một phần các non-scan FF để chuyển thành scan FF, hình 9.
Hình 9: Minh họa về scan một phần (partial-scan)
Trong phương pháp scan nối tiếp, giá trị của một FF không thể được điều khiển và giám sát độc lập (trực tiếp). Mỗi FF là một phần của chuỗi scan, khi cần điều khiển và giám sát một FF thì phải tác động đến toàn bộ chuỗi scan. Phương pháp scan ngẫu nhiên (Random-access scan - RAS) sẽ tránh được điều này. RAS là một phương pháp non-serial scan. Trong phương pháp này, mỗi FF được xem như một ô nhớ trong một mảng bộ nhớ, tương tự như RAM. Mỗi FF sẽ có một giá trị địa chỉ cho phép "ghi" (điều khiển) và "đọc" (giám sát) trực tiếp FF.
Hình 10: Random-access scan, một loại non-serial scan
Phương pháp RAS có bất lợi lớn và phần mạch giải mã địa chỉ (address decoder) sẽ lớn đáng kể khi số lượng FF tăng lên.
4) Phương pháp BIST
BIST là viết tắt của Built-In Self-Test, đây là một kỹ thuật cho phép một chip tự tạo ra các test pattern và tự kiểm tra các mạch bên trong nó rồi báo kết quả PASS/FAIL. Với kỹ thuật này, để test một thành phần bên trong chip, các test pattern không cần phải cung cấp từ bên ngoài, việc phân tích kết quả cũng không cần phải thực hiện bên ngoài chip như kỹ thuật Ad-hoc hay scan nên BIST có một ưu điểm lớn là giảm thời gian test và giảm chi phí test chip.
Cấu trúc BIST gồm các phần cơ bản sau đây:
  • Bộ tạo test pattern (Test pattern generator - TPG)
  • Bộ phân tích đáp ứng ngõ ra (Output Response Analyzer - ORA)
  • Bộ điều khiển BIST (Test controller)
Hình 11: Minh họa kỹ thuật BIST
Kỹ thuật BIST có thể được áp dụng để test logic của thiết kế (Logic BIST - LBIST) và bộ nhớ (Memory BIST - MBIST).

1 bình luận:

  1. cảm ơn tác giả đã cho mình có cách nhìn tổng quan về các phương pháp Ad-hoc, Scan, BIST. Mong tác giả sớm đưa ra thêm các bài viết về DFT

    Trả lờiXóa