• Reduce ATPG effort :Rút ngắn thời gian chạy ATPG • Improve test quality :Khả năng bao phủ lỗi cao, Rút ngắn độ lớn kiểm tra và thời gian kiểm tra • Reduce time to market : Chuẩn đốn và
GIỚI THIỆU
Tổng quan
Ngày nay các kĩ thuật kiểm tra mạch VLSI đang đối mặt với nhiều thách thức thú vị và phức tạp Trong thời đại các hệ thống lớn được nhúng trong một hệ thống trên chip (SOC) duy nhất và được chế tạo liên tục trong công nghệ thu hẹp, điều này quan trọng là phải đảm bảo hành vi đúng đắn của toàn bộ hệ thống Vì thế trường hợp tốt nhất cho hoàn cảnh hiện tại đó là tạo ra một môi trường thử nghiệm thuận lợi trên chip bằng cách sử dụng kĩ thuật Design For Test (DFT)
DFT là một kỹ thuật giúp cho một thiết kế có thể được kiểm tra (test) dễ dàng và đầy đủ hơn sau khi sản xuất thành chip mà không cần quan tâm đến chức năng của mạch (thiết kế) Một quy trình sản xuất không thể đảm bảo toàn bộ chip được sản xuất ra đều đạt chất lượng và không có lỗi Lỗi ở đây là lỗi vật lý (physical fault) sinh ra so quá trình sản xuất, không phải lỗi chức năng hay lỗi logic (logical fault) do thiết kế sai
Một số lỗi vật lý có thể gặp như nối đất GND (stuck-at-0, s-a-0), nối nguồn với VCC (stuck-at-1, s-a-1), ngắn mạch(short), hở mạch (open) Một lỗi vật lý sinh ra sẽ làm cho hoạt động của chip bị sai hoặc không thể hoạt động (hình 1.1) Lỗi chức năng Reduce test cost do thiết kế sai phải được phát hiện khi mô phỏng và kiểm tra trước khi sản xuất Để dễ hình dung, các bạn hãy liên tưởng đến việc kiểm tra các bo mạch in (PCB), một bo mạch in sau khi sản xuất phải được kiểm tra xem các đường mạch có bị nối GND, VCC, ngắn mạch hay hở mạch (bị đứt) hay không Chip cũng cần được kiểm tra các lỗi như vậy Một chip gồm hai phần logic là user logic và DFT logic Trong đó, user (function) logic là thành phần xử lý các chức năng dành cho người dùng chip, DFT logic dùng để test chip
Hình 1.1: Các lỗi vật lý có thể sinh ra trong quá trình sản xuất chip
Tóm lại, kỹ thuật DFT là kỹ thuật giúp kiểm tra chip dễ dàng và đầy đủ hơn bằng cách thêm các logic dùng cho việc test vào trong chip Nếu không có DFT, một chip vẫn có thể được kiểm tra thông qua đo đạc và chạy các test chức năng (function test) trên chip nhưng thời gian test rất lâu và không đảm bảo toàn bộ chip được test đầy đủ (coverage thấp) Ví dụ, một chip không có DFT, nếu chạy các test chức năng có thể mất 30 giây (hoặc nhiều hơn) cho một chip thì tổng thời gian test cho một lô sản phẩm 100.000 chip là khoảng 35 ngày, cho 1 triệu chip là 347 ngày Nhưng với kỹ thuật DFT, tổng thời gian test có thể giảm hơn 10 lần Tuy nhiên, việc áp dụng kỹ thuật DFT sẽ làm kích thước chip lớn hơn do phải thêm các logic phục vụ việc test.
Nhiệm vụ đề tài
Trong đề tài này chúng ta tập trung vào các nội dung chính như sau:
Nội dung 1: Tìm hiểu nguyên lý, lý thuyết về DFT
Nội dung 2: Nghiên cứu các phương pháp và giải thuật sử dụng trong DFT Nội dung 3: Thiết kế bộ scan flip flop để test các lỗi vật lý đúng với lý thuyết đề ra và giải thích sơ đồ máy trạng thái của memory built in self test
LÝ THUYẾT
Design for test là gì (DFT)
DFT là một kỹ thuật giúp cho một thiết kế có thể được kiểm tra (test) dễ dàng và đầy đủ hơn sau khi sản xuất thành chip mà không cần quan tâm đến chức năng của mạch (thiết kế) Một quy trình sản xuất không thể đảm bảo toàn bộ chip được sản xuất ra đều đạt chất lượng và không có lỗi Lỗi ở đây là lỗi vật lý (physical fault) sinh ra so quá trình sản xuất, không phải lỗi chức năng hay lỗi logic (logical fault) do thiết kế sai Lỗi chức năng Reduce test cost do thiết kế sai phải được phát hiện khi mô phỏng và kiểm tra trước khi sản xuất
Tại sao phải sử dụng design for test (DFT)?
• Reduce ATPG effort :Rút ngắn thời gian chạy ATPG
• Improve test quality :Khả năng bao phủ lỗi cao, Rút ngắn độ lớn kiểm tra và thời gian kiểm tra
• Reduce time to market : Chuẩn đoán và gỡ lỗi đơn giản
Fault Mode (physical fault)
• Single Stuck-at Fault (SSF)
Lỗi kẹt đơn có nghĩa là một đường tín hiệu trong mạng tổ hợp của cổng logic được cố định thành logic 0 hoặc logic 1, độc lập với các tín hiệu logic và các dòng tín hiệu khác
Kí hiệu : node x stuck-at fault o x/0, x/1 o x s@0, x s@1 o x SA0, x SA1
Số lượng lỗi đơn là tuyến tính đối với kích thước của mạch Bởi vì chúng ta có
2 lỗi đó là stuck-at one và stuck-at zero nên trên mỗi mạch chúng ta có 2n SSF trên mỗi nút
Examples: kiểm tra lỗi kẹt đơn tại hai ngõ vào của cổng AND
Hình 2.2.1.1: Các lỗi kẹt đơn tại các ngõ vào ra của cổng AND
Như hình trên thì chúng ta hoàn toàn có thể suy ra 6 lỗi: lỗi kẹt 0 hoặc 1 tại nút a, kẹt 0 hoặc 1 tại nút b, kẹt 0 hoặc 1 tại nút c Bây giờ chúng ta sẽ lập bảng các trường ngõ vào của a và b để kiểm tra quan sát các giá trị lỗi ở đầu ra
Fault Output Value with SSF a b a/0 a/1 b/0 b/1 c/0 c/1
Bảng 2.2.1.1: Bảng giá trị các lỗi đơn tại ngõ vào ra của cổng AND
Trong bảng này chúng ta kí hiệu tất cả các tín hiệu SSF màu đỏ để dễ dàng nhận biết, ta có thể thấy rằng tất cả 6 cột tín hiệu lỗi ngõ ra có thể được phát hiện bởi ít nhất 1 mẫu thử nghiệm Bây giờ nếu chúng ta thiết lập một bộ ba thử nghiệm cho ngõ vào a và b (01 11 10) khi đó chúng ta có thể thấy rằng 3 mẫu này có thể phát hiện hoàn toàn tất cả 6 lỗi này nên chúng ta kết luận rằng độ dài tối thiểu của thử nghiệm này là = 3 để đạt 100% độ bao phủ lỗi
Lỗi kẹt đơn trên Fanout stem không tương đương với lỗi kệt đơn trên Branches Bởi vì lỗi trên hai phần này được tính và xác định riêng, vậy để làm rõ vấn đề này chúng ta đi xét ví dụ dưới đây:
Hình 2.2.1.2: Lỗi kẹt đơn Fanout và Branches trên mạch
Bảng 2.2.1.2: Bảng giá trị biểu hiện Lỗi kẹt đơn Fanout và Branches trên mạch Ở bảng này chúng ta có 8 bộ mẫu thử kết hợp đầu vào của ABC, cột tín hiệu tốt và 6 cột giá trị đầu ra lỗi lần lượt là E/0, F/0, L/0,E/1, F/1, L/1 Vậy như quan sát tại các giá trị ngõ ra, đầu tiên là kẹt tại 0 tại E F L tín hiệu lỗi của E và L hoàn toàn khác nhau và sau đó là kẹt tại 1 thì chúng ta có thể thấy tín hiệu lỗi của E và F cũng khác nhau Từ đó chứng minh rằng lỗi kẹt đơn trên Fanout stem không tương đương với lỗi kẹt đơn trên Branches
Mô hình multiple stuck-at fault có nghĩa là có nhiều hơn 1 tín hiệu kẹt ở giá trị logic trong mạch
Vậy có bao nhiêu multiple stuck-at fault trong một mạch có n nút( không bao gồm lỗi kẹt đơn) Như các ví trước chúng ta có thể thấy rằng tại mỗi nút có thể có 3 trạng thái đó là SA1, SA0, good, vậy trong một mạch chúng ta có 3 𝑛 các kết hợp khác
6 nhau tại các nút và vì chúng ta không tính đến tín hiệu các tín hiệu kẹt đơn cũng như 1 tín hiệu output good nên lúc này sẽ là 3 𝑛 -2n-1 Vậy số multiple stuck-at fault trong một mạch có n nút( không bao gồm lỗi kẹt đơn) là 3 𝑛 -2n-1
Lỗi Bridging Fault (BF) có nghĩa là 2 hoặc nhiều hơn các tín hiệu logic khác nhau bị ngắn lại với nhau ngoài ý muốn và tạo ra wired logic
Hình 2.2.2.1: Các lỗi Bridging thực tế
Trong Bridging Fault chúng ta có các mô hình như sau:
Hình 2.2.2.2: Mô hình lỗi Wired-OR và Wired-AND
Bảng 2.2.2.1: Bảng biểu thị giá trị của mô hình lỗi Wired-OR và Wired-AND
Trong hình này, giả sử chúng ta có lỗi BF giữa 2 tín hiệu a và b nếu chúng ta mô hình hóa nó như wired -OR thì lúc này đoạn dây nối bắc cầu đó sẽ được xem như một cổng OR khi đó tín hiệu qua nó sẽ được tuân theo cổng logic này cùng với giá trị trội là 1 (quan sát ở bảng mẫu thử trên), hoặc chúng ta mô hình hóa lỗi này như wired- AND thì lúc này đoạn dây nối bắc cầu đó sẽ được xem như một cổng AND và tín hiệu qua nó sẽ được tuân theo cổng logic này cùng với giá trị trội là 0 (quan sát ở bảng mẫu thử trên)
Cuối cùng là A-dominant với mô hình này thì có nghĩa rằng là giá trị của b luôn được kiểm soát bởi a, như trên bảng mẫu thử chúng ta có thể thấy rằng nếu ban đầu a=1 và b=0 sau khi bị lỗi bridging thì tín hiệu a vẫn được giữ nguyên còn tín hiệu b=1, điều này chứng tỏ tín hiệu b đang bị kiểm soát chi phối hoàn toàn theo tín hiệu a
Trong delay fault một sô hành vi lỗi không giống stuck-at fault bởi vì lỗi có thể thay đổi thời gian mạch nhưng không thể thay đổi chức năng
Ta có thể lấy một số ví dụ :
• Lỗi ngẫu nhiên: resistive opens, resistive bridging
Hình 2.2.3: Hình mô phỏng lỗi hở điện trở
Trong hình 2.2.3 giả sử chúng ta có hở điện trở hoặc tiếp xúc kém giữa hai biến tần, nếu chúng ta áp dụng mức chuyển đổi falling kí hiệu là A thì tín hiệu ra tốt sẽ là tín hiệu kí hiệu là b như trong hình Nhưng tín hiệu lỗi sẽ bị chậm hơn kí hiệu là C so với tín hiệu b, vậy chúng ta có thể thấy rằng tuy dạng tín hiệu truyền ra đi qua lỗi có thể sẽ bị chậm hơn so với thời gian tín hiệu tốt nhưng nó vẫn được đảm bảo và không bị thay đổi dạng sóng tín hiệu
Vậy chúng ta sẽ áp dụng các loại mẫu thử nào cho delay fault?
Không giống như lỗi stuck-at chỉ cần một bộ mẫu thử, transion fault cần sử dụng đến 2 mẫu thử để kiểm tra đó là V1,V2
V1: khởi tạo trạng thái của mạch V2: khởi động quá trình chuyển đổi, truyền ảnh hưởng của lỗi tới đầu ra
Trong hình này ta có thể thấy đầu tiên ta sử dụng mẫu thử V1 để khởi tạo trạng thái cổng OR sau đó sử dụng đến mẫu thử V2 để truyền chuỗi tín hiệu ra quan sát Chúng ta có thể điều khiển thời gian T giữa V1 và V2 để ta có thể xác định xem mạch này có PASS/FAIL, nếu tín hiệu output tăng trong khoảng thời gian T thì PASS còn nếu tăng sau thời gian T thì FAIL
Bây giờ chúng ta sẽ đi tìm hiểu về hai mô hình delay fault phổ biến nhất hiện nay.
Các thuật toán sử dụng trong DFT
Ad-hoc DFT có nghĩa là một kĩ thuật DFT thiết kế cụ thể hoặc dành cho một mục đích cụ thể khái quát Phương pháp Ad-hoc là phương pháp chỉ nhắm đến các phần không thể kiểm tra được các phần rất khó để kiểm tra trong một thiết kế
Kĩ thuật DFT này dựa trên thực hành thiết kế tốt được lấy từ kinh nghiệm
• Quy tắc Ad-hoc DFT
Rule 1: thiết kế mạch dễ dàng được khởi tạo
Rule 2: vô hiệu hóa internal clock trong suốt thời gian kiểm tra
Rule 3: phân chia mạch lớn thành các khối nhỏ
Rule 4: chèn các điểm kiểm tra vào mạch có khả năng kiểm tra thấp
Mục đích: việc chèn kiểm tra nhằm mục đích để tăng khả năng điều khiển và khả năng quan sát
Có hai hai loại cho test point
Tín hiệu điều khiển thường từ ngõ vào chính PI hoặc scan FF
Original Control x to 0 Control x to 1
Hình 2.3.1: Chèn điểm kiểm tra
Chú thích: DI data input; DO data output TM test mode ; SI scan input ; SO scan output
Khi TM=0, mạch hoạt động ở chế độ bình thường ta tiến hành cắt kết nối ban đầu và kết nối nguồn với đầu vào DI của control point FF và gửi dữ liệu ngõ ra kết nối với điểm đến ban đầu
Khi TM=1, các node ABC được điều khiển bởi các FF tương ứng các dữ liệu đến Q sẽ được kết nối với mux và dữ liệu ngõ vào D được cấp từ SI
Hình 2.3.2: Chèn điểm quan sát Chú thích: DI data input
Khi SE=0, ABC sẽ được lưu vào FF bởi một chu kỳ
Khi SE=1 , sau ba chu kỳ thì giá trị quan sát sẽ được hiện tại SO
Các vấn đề của Test point
• Suy giảm hiệu suất: Thiết kế bị chậm với test point
• Tốn nhiều diện tích hơn: Mỗi một test point cần khoảng 1k cổng
• Cần phải hiểu rõ và biết vị trí chèn điểm: Cần một thước đo cho việc kiểm thử
Scan Flip flop có 4 chân chính:
Scan chain: scan input ( SI ), scan output (SO) Logic: data input (DI), data output (DO) Scan FF có hai chức năng chính: Shift và Capture
Mạch có hai chế độ hoạt động: Normal mode và test mode
Hình 2.3.2.1: Chế độ hoạt động của Scan flip flop
Normal mode: được cấu hình để capture để có thể nhận phản hồi từ logic và sau đó áp dụng phản hồi của nó cho logic một cách chính xác nhất
Test mode: đầu tiên được cấu hình để thực hiện thao tác vận chuyển (shift) để chúng ta có thể vận chuyển mẫu thử nghiệm của mình vào các FF Sau đó SFF được cấu hình capture phản hồi tín hiệu logic trong 1 hoặc 1 vài chu kỳ Và cuối cùng chúng ta cấu hình SFF thành shift out để ta có thể quan sát phản hồi của logic trong SFF
Scan FF giống như non-scan FF
Examples: Test mode Ở ví dụ này để phát hiện lỗi SA0, thì về cơ bản lỗi SA0 là kẹt trên đường tín hiệu mong muốn là 1 nên để có giá trị mong muốn ta tiến hành cấp tín hiệu vào bằng 1 và SFF1=1 tại cổng OR để xác định giá trị mong muốn là 1 và lỗi = 0 thì chúng ta cấp tín hiệu SFF2=0, sau khoảng thời gian 2 chu kỳ, ta tiến hành Capture tín hiệu vào SFF, sau khi capture tín hiệu thì tiến hành shift out trong 2 chu kỳ ta có thể quan sát được giá trị mong muốn và giá trị lỗi của mạch này
Việc xác định lỗi này hoàn toàn không thể xác định bằng phương pháp Normal mode
Scan có thể chuyển từ mạch tuần tự sang mạch tổ hợp
Hình 2.3.2.2: Sơ đồ chuyển đổi mạch tuần tự sang mạch tổ hợp
Thật sự chúng ta có thể chuyển mạch tuần tự thành mạch tổ hợp trong chế độ
Testing vì các FF có thể hoàn toàn scan được nên chúng ta có thể kiểm soát hoàn toàn đầu vào đầu ra của chúng Vì vậy trên thực tế chúng ta có thể bỏ các flip flop này trong chế độ kiểm thử, khi đó mạch ATPG sẽ chỉ còn là mạch tổ hợp
SFF D0 trở thành pseudo primary input (PPI), điều khiển toàn bộ ngõ vào
SFF DI trở thành pseudo primary output (PP0), quan sát toàn bộ ngõ ra
Muxed D scan Thường được sử dụng trong flip flop based, tiêu chuẩn thiết kế cell
3 ngõ vào: scan enable (SE), Data in (DI): dữ liệu vào từ logic, Scan in (SI): từ scanff trước
1 ngõ ra: Data output (Q) or scan output (SO)
Hình 2.3.2.3: Mô tả chế độ hoạt động của Muxed DFF
Muxed_D scan FF kích hoạt cạnh tích cực lên
Khi SE = 0, SI -> Q tại cạnh tích cực lên
Khi SE = 1, DI -> Q tại cạnh tích cực lên
Test Mode Operation ( hoạt động của chế độ kiểm tra)
• Kiểm tra lỗi stuck-at
Sử dụng một mẫu thử cho mỗi scan out/in
Trong sơ đồ hiển thị trên đây chúng ta có hàng đầu tiên PI và SI biểu thị cách chúng ta áp dụng mẫu thử, hàng thứ ba observe hiển thị cách chúng ta quan sát đầu ra, hàng thứ 4 hiển thị dạng sóng clock và hàng cuối cùng SE hiển thị tín hiệu sóng cho phép scan Tiếp theo đến cột, thì cột đầu tiên chúng ta sẽ tải chuỗi quét theo chuỗi xung clock CK Sau khi các mẫu thử này được tải đầy đủ vào chuỗi quét thì chúng ta bắt đầu capture giá trị này, chúng ta sẽ quan sát đầu ra chính P0 và tạo xung clock để lưu lại phản hồi vào SFF, và cuối cùng chúng ta sẽ tạo chuỗi CK để có thể quan sát giá trị phản hồi (SO) của SFF
Trong ví dụ này chúng ta sẽ tiến hành kiểm tra lỗi kẹt tại các vị trí đánh dấu trong mạch mạch Đầu tiên chúng ta tiến hành tải chuỗi dữ liệu SI = X011 và PI = 1 bằng cách cấp chuỗi xung CK PPPP và giữ SE=1 trong suốt thời gian tải này Bây giờ chúng ta tiến hành quan sát PO ngõ ra ta thấy lỗi kẹt ở đây kẹt 1 nên giá trị mong muốn trên đường kẹt này sẽ là 0 khi đó ngõ ra mong muốn PO sẽ là L Sau khi đã tải xong giá trị thử SI chúng ta tiến hành capture tín hiệu phản hồi từ logic vào các FF bằng một xung clock và giữ SE=0, ta thấy lỗi kẹt SA0 màu hồng đầu tiên, vì đây là lỗi kẹt 0 nên giá trị mong muốn phản hồi từ logic lúc này sẽ là 1 và lỗi sẽ là 0, cũng tại lỗi kẹt SA0 màu xanh thứ 2 chúng ta có giá trị mong muốn từ logic là 1 và lỗi là 0 Sau khi quan sát và tiến hành capture tín hiệu vào các FF ta tiến hành chuyển các phản hồi từ các FF này ra để quan sát bằng chuỗi các xung clock và giữa SE=1
Sử dụng 2 mẫu thử cho mỗi scan in/out, và có 2 phương pháp chính đó là: Launch-on-shift và Launch-on-capture
Phương pháp 1: Launch-on-shift (LOS)
Trong mô hình này đầu tiên chúng ta tải V1 bằng cách đặt chuỗi các clock CK và SE được giữ bằng 1, tiếp sau đó chúng ta thực hiện tải V2 bằng một xung clock khác và vẫn giữ SE=1 khi đó ta áp dụng mẫu thử thứ 2 PI2, SI2 Bây giờ chúng ta sẽ tiến hành quan sát giá trị đầu ra chính PO và sử dụng một xung clock để lưu phản hồi logic tại FF lúc này thì SE=0 Sau khi đã lưu giá trị phản hồi logic vào FF chúng ta thực hiện bước cuối cùng đó là shift out vận chuyển ra ngoài giá trị được lưu trong SFF để có thể quan sát đầu ra scan của mẫu này Ưu và nhược điểm của LOS
• Ưu điểm: dễ dàng cho việc tạo mẫu thử của mạch tổ hợp ATPG
- Giới hạn thời gian, giảm tín hiệu Scan-enable
- Một số lỗi trì hoãn quá trình TDF có thì không được kiểm tra rỗ ràng, vì đây là vấn đề về cấu trúc
Trong ví dụ này ta sẽ tiến hành kiểm tra lỗi STF được đánh dấu màu đỏ và lỗi STR được đánh dấu màu hồng bằng phương pháp LOS Đầu tiên chúng ta sẽ tiến hành
18 tải mẫu thử V1, SI= X101 bằng chuỗi Clock và giữ SE bằng 1 ngõ vào PI lúc này không cần, tiếp theo đó ta tiến hành tải V2 với mẫu thử SI=1, PI=1 và tạo một xung clock khác cũng như giữ cho SE=1 Lúc này giá trị trong FF đã được thay đổi khi V2 vào sẽ đẩy giá trị X ra và giá trị SFF này sẽ dịch lên SFF tiếp theo, khi này chúng ta cũng có thể quan sát đầu ra PO nếu giá trị tốt mong muốn sẽ là L nhưng do lỗi TRF nên giá trị lỗi lúc này sẽ là H Bây giờ chúng ta sẽ tiến hành capture phản hồi từ logic vô FF và tạo một xung clock cũng như chuyển SE=0, sau khi đã capture các phản hồi logic này ta tiến hành tạo chuỗi xung clock và giữ SE=1 để chuyển các giá trị này ra ngoài để quan sát
Phương pháp 2: Launch-on-capture (LOC)
Trong mô hình này đầu tiên thì chúng ta cũng tải chuỗi mẫu thử V1 bằng cách tạo chuỗi xung clock và tín hiệu quét SE được giữ bằng 1 Khi chúng ta áp dụng mẫu thử V2 thì lúc này SE sẽ được giữ bằng 0 và chúng ta áp dụng mẫu thử PI2 vào thời điểm này khi đó chúng ta sử dụng một xung clock để tạo vecto V2, sau đó chúng ta có thể quan sát ngõ ra chính PO và lưu giá trị phản hồi logic vào SFF Cuối cùng chúng ta tiến hành gỡ quá trình test bằng các tạo một chuỗi xung clock và giữ SE=1 để vận chuyển các giá trị phản hồi logic được lưu trong FF ra ngoài tiến hành quan sát
Trong ví dụ này chúng ta sẽ kiểm tra lỗi STR và lỗi STF bằng phương pháp LOC, thì đầu tiên chúng ta cũng tiến hành tải V1 SI=1X0001 bằng cách tạo một chuỗi xung clock tương đương và giữ SE=1 lúc này ngõ vào PI chung ta chưa xét đến Sau khi tải xong V1 ta tiến hành chuyển SE từ 1 xuống 0 và lúc này ta cấp cho nguồn vào PI=1, trong thời gian SE=0 này ta thì tạo một xung clock để tạo V2 cho quá trình chuyển đổi FF nhận giá trị từ mạch logic, lúc này ta có thể quan sát đầu ra chính PO có già trị mong muốn sẽ là L và giá trị lỗi sẽ là H Sau khi đã tiến hành tải các giá trị thì ta sẽ capture phản hồi từ logic vào FF, và cuối cùng là tạo chuỗi xung clock và chuyển SE lên chuỗi 1 để tiến hành chuyển giá trị trong FF ra ngoài quan sát
JTAG là một phương pháp test PCB được một nhóm kỹ sư Harry Wardrop đề xuất đầu tiên vào năm 1985 Sự ra đời của công cụ này xuất phát từ tính phức tạp của phần cứng của hệ thống ngày càng cao Hệ thống không chỉ là 1 chíp và là nhiều chíp,
PCB không chỉ 1 lớp, 2 lớp mà là nhiều lớp Chính vì thế người ta không thể dùng đầu dò để kiểm tra hệ thống
Tại sao phải sử dụng quét ranh giới ?
1 Kiểm tra và chuẩn đoán Board-level
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 cá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 phải cung cấp từ từ bên ngoài việc phân tích các 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
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)
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 2.4: Kiến trúc built in self test
Mbit tạo ra một cấu trúc BIT trên chip áp dụng mẫu thử so sánh các phản hồi của chip Kiểm tra bộ nhớ thông qua một thuật toán hiệu quả dù đó là lỗi stuck at (SAF), transion(TF), coupling ( CF), hay lỗi nhạy cảm lân cận (NPSF) Nó sử dụng một bộ điều khiển, bộ tạo địa chỉ, bộ tạo mẫu thử nền, bộ so sánh, tín hiệu ghi/đọc và bộ nhớ với trình đọc của nó
Bộ nhớ được kiểm tra bằng các thuật toán đặc biệt giúp phát hiện các lỗi xảy ra trong bộ nhớ Một số thuật toán khác nhau có thể được sử dụng để kiểm tra RAM và ROM, dưới đây chúng ta sẽ đi tìm hiểu hai trong số các thuật toán quan trọng nhất
41 được sử dụng để kiểm tra bộ nhớ Các thuật toán này có thể phát hiện nhiều lỗi trong bộ nhớ với số bước kiểm tra và thời gian kiểm tra tối thiểu
Trước khi tìm hiểu về các bước thực hiện của thuật toán thì chúng ta sẽ đi tìm hiểu hệ thống các lỗi trong phần này:
Stuck-at fault (SA0_SA1): lỗi kẹt tại giá trị 0 hoặc 1
Bộ nhớ bị lỗi nếu một trong các tín hiệu điều khiển hoặc ô nhớ của nó vẫn bị kẹt ở một giá trị cụ thể Các lỗi bị kẹt mô hình hóa hành vi này, trong đó tín hiệu hoặc cell dường như được gắn với nguồn điện (bị kẹt ở mức 1) hoặc mặt đất (bị kẹt ở mức
0) Để phát hiện lỗi bị kẹt, bạn đặt giá trị ngược lại với giá trị của lỗi bị kẹt tại vị trí lỗi Để phát hiện tất cả các lỗi bị kẹt tại 1, bạn phải đặt 0 tại tất cả các vị trí lỗi Để phát hiện tất cả các lỗi bị kẹt ở 0, bạn phải đặt 1 tại tất cả các vị trí lỗi
Một ô luôn bị kẹt ở 0 – SA0
Một ô luôn bị kẹt ở 1 – SA1
Trong ví dụ này đầu tiên ta tiến hành nhập hai nhóm mẫu thử 0 1 và tất cả các ô miễn sao mỗi ô là hai nhóm khác nhau, sau đó ta tiến hành đọc giá trị tất cả các ô và viết lại giá trị đảo ngược vào Ta thấy ở ô đầu tiên bị kẹt tại giá trị 1, nếu đúng thì giá trị mong muốn của nó sẽ là 0
Transion fault ( TF): lỗi truyền
Một bảng memories không thành công nếu một trong các tín hiệu điều khiển hoặc ô nhớ của nó không thể thực hiện chuyển đổi từ 0 sang 1 hoặc 1 đến 0 Hình cho thấy một ô có thể hoạt động bình thường khi một bài kiểm tra ghi và sau đó đọc 1 Nó thậm chí có thể chuyển đổi đúng cách từ 1 sang 0 Tuy nhiên, khi trải qua chuyển tiếp 0->1, ô có thể vẫn ở mức 0 thể hiện hành vi bị mắc kẹt ở mức 0 kể từ thời điểm đó Tuy nhiên, một thử nghiệm bị mắc kẹt ở mức 0 có thể không phát hiện ra lỗi này nếu cell ở mức 1 ban đầu
Kí hiệu: cell không thể tăng từ 0 lên 1 - cell không thể giảm từ 1 xuống 0 -
Bộ nhớ cũng thất bại khi thao tác ghi trong một ô ảnh hưởng đến giá trị trong một ô khác Lỗi khớp nối mô hình hóa hành vi này Lỗi khớp nối thuộc một số loại: đảo ngược, idempotent, bắc cầu và trạng thái
State coupling fault (CFst) Ở lỗi này nếu ô aggressor ở trạng thái nhất định thì, ô victim kế tiếp sẽ phải buộc ở trạng thái 0 hoặc 1
Kí hiệu: có 4 loại kí hiệu cho các trường hợp lỗi này
Trong ví dụ này ta có thể thấy nếu xảy ra lỗi giữa ô A và V thì khi A có giá trị bằng 0 ngay lập tức lỗi được kích hoạt và khiến cho V có giá trị bằng 1
Xảy ra khi quá trình chuyển đổi của một ô gây ra sự đảo ngược giá trị của một ô khác
Ví dụ : quá trình chuyển đổi 0->1 trong cell_n khiến giá trị trong cell_m đảo ngược trạng thái của nó
Xảy ra khi quá trình chuyển tiếp của một ô buộc một giá trị cụ thể lên một ô khác Ví dụ: quá trình chuyển đổi 0->1 trong cell_n khiến giá trị của cell_m thay đổi thành 1 nếu giá trị trước đó là 0 Tuy nhiên, nếu giá trị trước là 1, ô vẫn là 1
Lỗi khớp nối cầu (BFs) xảy ra khi một đoạn ngắn, hoặc cầu, tồn tại giữa hai hoặc nhiều ô hoặc tín hiệu Trong trường hợp này, một giá trị logic cụ thể kích hoạt hành vi bị lỗi, thay vì chuyển tiếp
Lỗi giải mã địa chỉ, ở đây ta đi tìm hiểu 4 hành vi thường xảy ra ở lỗi này:
• Đưa ra một địa chỉ nhất định, không một ô nào được truy cập
• Một ô nhất định sẽ không được truy cập bất kỳ địa chỉ nào
• Một ô nhất định có thể được truy cập bởi nhiều địa chỉ
• Đưa ra một địa chỉ và nhiều ô có thể truy cập
Lỗi địa chỉ được chia thành 2 loại: OR-type AF, AND-type AF
Trong ví dụ này ta có thể ở loại đầu tiên OR-AF giả sử A1 có giá trị 0 à A2 có giá trị 1, khi chúng ta đọc A2 thì được giá trị đúng còn khi đọc giá trị 1 thì có giá trị lỗi là 1 và giá trị mong muốn là 0 Tại lỗi này thật ra một cổng or tại đầu cuối và nhóm
2 giá trị A1 A2 là giá trị vào và kết quả sau khi qua cổng or sẽ là giá trị được được Ở loại thứ 2 AND-AF giả sử A1 có giá trị 0 à A2 có giá trị 1, khi chúng ta đọc A1 thì được giá trị đúng còn khi đọc giá trị A2 thì có giá trị lỗi là 0 và giá trị mong muốn là 1 Tại lỗi này thật ra một cổng and tại đầu cuối và nhóm 2 giá trị A1 A2 là giá trị vào và kết quả sau khi qua cổng and sẽ là giá trị được được
Mô hình vùng lân cận Lỗi nhạy cảm
Một cách khác mà các ô nhớ có thể bị lỗi liên quan đến thao tác ghi trên
46 một nhóm các ô xung quanh ảnh hưởng đến giá trị của một hoặc nhiều ô lân cận
Trong thuật toán này các số 0 và 1 được ghi vào các vị trí bộ nhớ của mảng ô theo mẫu bàn cờ Thuật toán chia các ô thành hai nhóm thay thế sao cho các ô lân cận thuộc các nhóm khác nhau Thuật toán được sử dụng chủ yếu để kích hoạt các lỗi do stuck-at(Sax), lỗi leakage, shorts between cells
• Bước 1: Viết mẫu bàn cờ cho tất cả các ô
• Bước 2: Đọc mẫu bàn cờ từ cả các ô
• Bước 3: Viết mẫu bàn cờ ngược với thứ tự ban đầu cho tất cả các ô
• Bước 4: Đọc mẫu bàn cờ với thứ tự ngược mới được viết vào
THIẾT KẾ PHẦN CỨNG
Thiết kế mạch kiểm tra Scan
Mục đích: kiểm tra được các lỗi stuck-at, delay transition
3.1.1 Kiểm tra lỗi stuck-at
Trong phương pháp này chúng ta sẽ tiến hành thiết kế một mạch đơn giản gồm hai cổng chính là AND và OR sau đó sẽ chèn thêm 4 bộ scan flip flop để test
Hình 3.1: Sơ đồ khối scan flip flop
Scan flip flop được cấu tạo bởi một cổng mux có chức năng điều khiển tín hiệu đầu vào và một bộ DFF có chức năng nhận và lưu trữ giữ liệu theo tín hiệu xung clock
• Mạch logic tích hợp scan kiểm tra
Trong mạch test này chúng ta giả sử mạch bị lỗi stuck-at 0 tại đầu ra của cổng
OR và cổng AND, để kiểm tra chúng ta tiến hành scan flip flop với một mẫu thử cho mỗi scan in/out
Hình 3.1.1: Sơ đồ mạch test stuck at trên candence
Trong mạch thử này chúng ta tiến hành shift in chuỗi giá trị dữ liệu SI = X011 bằng cách cấp chuỗi xung CK tích cực lên và giữ SE=1 trong suốt thời gian tải này
Mục đích: Sau khi đã tải xong giá trị thử SI chúng ta tiến hành capture tín hiệu phản hồi từ logic vào các FF bằng một xung clock và giữ SE=0, ta sẽ phát hiện thấy lỗi kẹt SA0 đầu tiên, vì đây là lỗi kẹt 0 nên giá trị mong muốn phản hồi từ logic lúc này sẽ là 1 và lỗi sẽ là 0, Sau khi quan sát và tiến hành capture tín hiệu vào các FF ta tiến hành chuyển các phản hồi từ các FF này ra để quan sát bằng chuỗi các xung clock và giữa SE=1
Hình 3.1.2: Kết quả dạng sóng biểu thị mẫu thử scanff
Trong kết quả dạng sóng trên hình 3.1.2 ta có thể thấy rằng chuỗi tín hiệu mẫu thử 1101 được tải khi SE=1 và hoàn thành tại chu kỳ thứ 4 (được kí hiệu là vùng màu đỏ) Tiếp theo đó khi tín hiệu cho phép SE=0 mạch bắt đầu nhận tín hiệu từ mạch logic và chụp tín hiệu bằng một xung clock tiếp theo (được đánh dấu là vùng màu vàng), khi này mạch đang bị lỗi stuck-at 0 tại 2 ngõ ra của cổng AND và OR và giá trị lỗi sẽ được hiển thị trong F3 và OUT Lúc này tín hiệu thu được là 1100 vậy rõ ràng tại chu kỳ thứ 5 này chúng ta có thể thấy được hai giá trị ngõ ra đều bị kẹt tại 0
Kết luận: Mạch test lỗi stuck-at với scan flip flop cho kết quả đúng với lý thuyết cũng như phát hiện và dự đoán đúng hoàn toàn các lỗi stuck at trong mạch
Phương pháp khắc phục: trong trường hợp chúng ta không thể tác động đến thay đổi thiết kế cổng logic trong mạch thì chúng ta sẽ tiến hành thêm một nguồn vdc có giá trị ngược với giá trị lỗi stuck at, khi đó tín hiệu sẽ truyền đúng trong một trường hợp ngõ vào tạm thời
3.1.2 Kiểm tra lỗi transition delay
Trong mạch kiểm tra này chúng ta cũng sử dụng các cổng logic cơ bản là NOT, AND, OR và giả sử mạch bị lỗi truyền tại cổng vào của cổng OR Để kiểm tra chúng ta sử dụng 2 mẫu thử cho mỗi scan in/out
Hình 3.1.3: Sơ đồ mạch kiểm tra lỗi delay transition trên candence
Ta tiến hành kiểm tra lỗi STF bằng phương pháp LOS Đầu tiên chúng ta sẽ tiến hành tải mẫu thử V1, SI= X101 bằng chuỗi Clock và giữ SE bằng 1 ngõ vào PI lúc này không cần, tiếp theo đó ta tiến hành tải V2 với mẫu thử SI=1, PI=1 và tạo một xung clock khác cũng như giữ cho SE=1 Lúc này giá trị trong FF đã được thay đổi khi V2 vào sẽ đẩy giá trị X ra và giá trị SFF này sẽ dịch lên SFF tiếp theo
Mục đích: capture phản hồi từ logic vô FF và tạo một xung clock cũng như chuyển SE=0, sau khi đã capture các phản hồi logic này ta tiến hành tạo chuỗi xung clock và giữ SE=1 để chuyển các giá trị này ra ngoài để quan sát
Hình 3.1.4: Kết quả tín hiệu dạng sóng mạch kiểm tra lỗi transition
Trong tín hiệu dạng sóng ở hình 3.1.4 tại vùng màu lam đầu tiên là chuỗi tín hiệu đầu vào V1 = 1110, tiếp theo đó ta sử dụng mẫu thử thứ 2 V2=1 lúc này giá trị là
1111 được biểu thị tại vùng màu đỏ Sau đó ta tiến hành cho tín hiệu SE=0 để lưu giá trị chuyển đổi, lúc này mạch đang bị lỗi truyền tăng chậm nên giá trị nhận được sẽ là
1110 được lưu tại vùng màu vàng Như vậy giá trị mong muốn nhận được sẽ là 1111 nhưng sau khi truyền giá trị vẫn là 1110 và phải sau một chu kỳ nữa thì giá trị mới là
1111 Nên ta kết luận mạch này bị lỗi delay transition
Kết luận: kết quả đã hoàn toàn cho ta thấy thiết kế hoàn toàn có thể phát hiện được lỗi truyền đúng như lý thuyết đã chứng minh và hoàn động rất ổn định.
THIẾT KẾ GIẢI THUẬT MBIST CHO SRAM
Mục tiêu cho phần này là làm sao thiết kế được sơ đồ giải thuật (FSM) phát hiện được hết các mô hình lỗi thông thường xuất hiện trên bộ nhớ SRAM, dựa trên kiến trúc MBIST được biểu thị như hình 4.1
Hình 4.1: Kiến trúc MBIST cho bộ nhớ
Sơ đồ máy trạng thái FSM thực hiện quy trình kiểm tra và phát hiện lỗi sai trên RAM dựa vào từng bước của thuật toán MarchC- , việc thực hiện kiểm tra được thực hiện thông qua sơ đồ trạng thái máy của giải thuật MarchC- theo mô tả như hình sau:
Hình 4.2: Mô hình trạng thái máy của giải thuật MarchC-
Bảng 4.1: Các giá trị trạng thái MarchC-
INITIAL Trạng thái ban đầu
START Trạng thái ban đầu thực hiện giải thuật MarchC-
Ghi giá trị 0 vào địa chỉ ô nhớ, từ địa chỉ thấp đến địa chỉ cao nhất
MARCHC_1 Đọc giá trị, so sánh, ghi giá trị 1
Thực hiện từ giá trị thấp nhất đến địa chỉ cao nhất
MARCHC_2 Đọc giá trị, so sánh, ghi giá trị 0
Thực hiện từ giá trị thấp nhất đến địa chỉ cao nhất
MARCHC_3 Đọc giá trị, so sánh, ghi giá trị 1
Thực hiện từ giá trị thấp nhất đến địa chỉ cao nhất
MARCHC_4 Đọc giá trị, so sánh, ghi giá trị 0
Thực hiện từ giá trị thấp nhất đến địa chỉ cao nhất
MARCHC_5 Đọc giá trị, so sánh
Thực hiện từ giá trị thấp nhất đến địa chỉ cao nhất FINISH Giải thuật MarchC- đã thực hiện hoàn tất
Bảng 4.2: Sự chuyển trạng thái trong MarchC-
Trạng thái kế tiếp Lý do chuyển trạng thái
INITIAL START Marchc_en=1 bắt đầu thực hiện giải thuật
START MARCH_1 Trạng thái Star thực hiện xong ( dựa trên dựa trên giá trị địa chỉ cao nhất vì giá trị 0 được ghi từ thấp đến cao)
MARCH_1 MARCH_2 Trạng thái MARCH_1 thực hiện xong ( dựa trên địa chỉ cao nhất)
MARCH_2 MARCH_3 Trạng thái MARCH_1 thực hiện xong ( dựa trên địa chỉ cao nhất)
MARCH_3 MARCH_4 Trạng thái MARCH_1 thực hiện xong ( dựa trên địa chỉ cao nhất)
MARCH_4 MARCH_5 Trạng thái MARCH_1 thực hiện xong ( dựa trên địa chỉ cao nhất)
MARCH_5 FINISH Trạng thái MARCH_1 thực hiện xong ( dựa trên địa chỉ cao nhất)
FINISH INITIAL MarchC_complete =1 giải thuật đã thực hiện xong
Như vậy với sơ đồ giải thuật MarchC- chúng ta có thể dễ dàng kiểm tra các mô hình lỗi thông thường trên bộ nhớ SRAM theo quy trình các bước như trên.