Nghiên cứu và thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ Nghiên cứu và thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ Nghiên cứu và thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp luận văn tốt nghiệp,luận văn thạc sĩ, luận văn cao học, luận văn đại học, luận án tiến sĩ, đồ án tốt nghiệp
Tổng quan về kiểm tra bộ nhớ, các mô hình lỗi và mạch logic tự kiểm tra bộ nhớ
Giới thiệu
Với sự phát triển của công nghệ vi mạch tích hợp rất lớn (VLSI), các công ty bán dẫn đã chuyển hướng chú trọng đến giải pháp SoC, đánh dấu một xu hướng mới trong tích hợp Thiết kế với hàng triệu phần tử cổng logic và số lượng chân hạn chế đã làm cho bộ nhớ nhúng trở thành một giải pháp hấp dẫn Hầu hết các hệ thống SoC đều tích hợp ít nhất một loại bộ nhớ nhúng, khiến nó trở thành thành phần phổ biến nhất Các sản phẩm như điện thoại di động, thiết bị điện tử cá nhân, hệ thống tổng đài, máy ảnh kỹ thuật số và đầu đĩa DVD đều yêu cầu kiến trúc SoC với nhiều bộ nhớ nhúng Ứng dụng của bộ nhớ nhúng được thể hiện trong hình 1-1.
Hình 1–1 Ứng dụng bộ nhớ nhúng trong thiết kế SoC
Bộ nhớ nhúng hiện chiếm từ 30% đến 50% diện tích chip SoC, và con số này đang gia tăng nhanh chóng qua các thế hệ sản phẩm Hiện tại, bộ nhớ nhúng có thể chiếm đến 90% diện tích chip, với dự đoán của Hiệp hội công nghiệp bán dẫn (SIA) rằng con số này sẽ đạt 94% vào năm tới.
Hình 1–2 Dự báo về diện tích bộ nhớ nhúng trên chip SoC
Do xu hướng như vậy, việc kiểm tra bộ nhớ nhúng nhận được rất nhiều sự chú ý của giới công nghiệp cũng giống như cộng đồng nghiên cứu
Có rất nhiều thử thách trong việc kết hợp bộ nhớ (DRAM, SRAM, flash,
Để xử lý các vấn đề công nghệ và đảm bảo hiệu suất, chất lượng, độ tin cậy của bộ nhớ nhúng với chi phí hiệu quả, cần có những nỗ lực nghiên cứu sâu hơn Kiểm tra bộ nhớ nhúng khó hơn so với bộ nhớ thông thường, đặc biệt là về tính truy cập Việc truy cập lõi DRAM từ thiết bị kiểm tra ngoại vi rất tốn kém, gây ra vấn đề về số chân, hiệu năng và nhiễu Phương pháp thiết kế cho phép kiểm tra (DFT) cần được áp dụng để cách ly lõi và cho phép truy cập, nhưng điều này dẫn đến chi phí cao và hiệu năng thấp Giải pháp tiềm năng cho vấn đề này là mạch logic tự kiểm tra (BIST), giúp giảm thiểu yêu cầu thiết bị kiểm tra và thời gian kiểm tra cho bộ nhớ nhúng DRAM Kiểm tra song song các bộ nhớ ở mức chip cũng có thể giảm tổng thời gian kiểm tra Hơn nữa, BIST bảo vệ sở hữu trí tuệ của nhà cung cấp bán dẫn, cho phép họ cung cấp khối DRAM mà không cần tiết lộ chi tiết thiết kế DRAM IP.
BIST đã được áp dụng thành công cho các loại bộ nhớ nhúng như SRAM, flash và CAM, nhưng vẫn cần thiết bị kiểm tra ngoại vi trừ khi việc chẩn đoán và sửa lỗi được thực hiện tự động bên trong chip Kiến trúc BIST hiện tại cho SRAM không cho phép điều này, và các mô hình lỗi mới có thể cần được kiểm tra, trong khi thuật toán March sử dụng cho BIST SRAM có thể không được tích hợp.
Nhiều thách thức trong việc tích hợp bộ nhớ và logic vẫn tồn tại, bao gồm yêu cầu sửa chữa cứng cho thiết bị bộ nhớ thông qua lập trình cầu chì điện, trong khi IddQ có thể được áp dụng cho thiết bị logic Tuy nhiên, việc sử dụng IddQ cho bộ nhớ không hề đơn giản Để đảm bảo độ tin cậy khi tích hợp hai loại thiết bị này, thiết kế tự động trở thành một thách thức lớn, vì thiết kế logic thường sử dụng công cụ tổng hợp mạch, trong khi thiết kế bộ nhớ lại yêu cầu thiết kế tùy chỉnh hoàn toàn Ngoài ra, các vấn đề như tiêu chuẩn thời gian và kiểm tra nguồn điện AC của bộ nhớ không đồng bộ với mạch logic BIST đồng bộ cũng cần được giải quyết.
Bộ nhớ SRAM
Bộ nhớ RAM tĩnh (SRAM) là loại bộ nhớ phổ biến trong nhiều ứng dụng, bao gồm các thành phần như bộ giải mã địa chỉ, logic đọc/ghi, bộ khuếch đại và mảng phần tử nhớ Ví dụ, SRAM đồng bộ của Micron sử dụng các đầu vào đồng bộ đi qua các thanh ghi được điều khiển bởi xung clock đơn lật ở sườn dương (CLK).
Phần tử nhớ: Phần tử SRAM truyền thống được chỉ ra như trong hình 1-3 bao gồm 6 MOS
Khối chức năng của SRAM đồng bộ Micron được mô tả trong hình 1-4, bao gồm các đầu vào đồng bộ như địa chỉ, đầu vào dữ liệu, tín hiệu kích hoạt mức thấp (CE#), và hai tín hiệu kích hoạt bổ sung (CE2#, CE2) để mở rộng chiều sâu Ngoài ra, còn có các đầu vào tín hiệu điều khiển (ADSC#, ADSP#, ADV#), tín hiệu kích hoạt cho phép ghi theo byte (BWx#) và ghi toàn bộ (GW#) Các đầu vào không đồng bộ bao gồm tín hiệu kích hoạt đầu ra (OE#), đồng hồ (CLK) và kích hoạt cho phép dừng ngắn.
(ZZ) Có đầu vào chế độ tín hiệu (MODE) lựa chọn kiểu tín hiệu xen kẽ hay tuyến tính
Hình 1–4 Sơ đồ khối chức năng SRAM của Micron
Các lệnh chính cho phép điều khiển hoạt động đọc hoặc ghi thông qua một xung đầu vào không bị khóa, có thể lưu giá trị trong suốt quá trình hoạt động Dữ liệu đầu ra (Q) được cho phép bởi tín hiệu /OE# và hoạt động một cách không đồng bộ Chu kỳ ghi có thể kéo dài từ 1 đến 2 byte (x18) hoặc từ 1 đến 4 byte (x32/x36), tùy thuộc vào đầu vào điều khiển ghi Tín hiệu hoạt động có thể được khởi tạo từ các đầu vào bộ xử lý trạng thái địa chỉ (ADSP#) hoặc bộ điều khiển trạng thái địa chỉ, trong khi các tín hiệu địa chỉ tiếp theo được sinh ra bên trong và được điều khiển bởi tín hiệu ADV# Khi tín hiệu GW# ở mức thấp, dữ liệu có thể được ghi vào tất cả các byte.
Mô hình lỗi của bộ nhớ
Để kiểm tra chức năng bộ nhớ, chúng ta bắt đầu bằng cách mô tả các đặc điểm của thiết bị và xác định các mô hình lỗi thường gặp của mạch được kiểm tra (CUT) Sau khi định nghĩa các lỗi điển hình, chúng ta có thể lựa chọn các kịch bản kiểm tra để phát hiện lỗi Việc mô hình hóa các lỗi hoặc khuyết tật dựa trên biểu hiện gây lỗi giúp làm việc dễ dàng hơn Mặc dù mô hình lỗi chức năng chưa phổ biến trong ngành công nghiệp, nhưng đây vẫn là một phương pháp hiệu quả để giải quyết nhiều vấn đề trong kiểm tra bộ nhớ.
Mô hình lỗi chức năng có thể được phân loại như hình 1-5 [2,3]
Với các lỗi trong mảng ô nhớ của bộ nhớ nhúng, chúng ta sử dụng một số ký hiệu sau [3]:
↑ kí hiệu cho sự chuyển đổi tăng của một ô nhớ (liên quan đến lệnh ghi)
↓ kí hiệu cho sự chuyển đổi giảm của một ô nhớ
↕ kí hiệu cho sự chuyển đổi tăng hoặc giảm của một ô nhớ
∀ kí hiệu cho một lệnh bất kỳ của một ô nhớ
kí hiệu một lỗi trong ô nhớ, với S là giá trị hoặc lệnh kích hoạt lỗi, F là giá trị ô nhớ bị lỗi, S ∈ {0, 1, ↑, ↓, ↕}, và F ∈ {0, 1}
kí hiệu một lỗi liên quan đến m ô nhớ, với S 1 ,
Các điều kiện tương ứng S m-1 của m−1 ô nhớ cần thiết để kích hoạt lỗi trên ô nhớ m (có trạng thái S m) bao gồm giá trị lỗi F hoặc trạng thái của ô nhớ m, với 0 ≤ i ≤ m−1 và S i thuộc tập {0, 1, ↑, ↓, ↕}.
1.3.1 Các lỗi ô nhớ Memory Cell
Các lỗi ô nhớ Memory Cell được phân loại thành các nhóm lỗi chính như sau [2,3]:
Lỗi không thay đổi giá trị Stuck-at fault (SAF) xảy ra khi một ô nhớ giữ giá trị cố định bất kể lệnh nào được áp dụng Ký hiệu cho lỗi này là , biểu thị cho tình trạng stuck-at-1.
ký hiệu lỗi stuck-at-0
Lỗi Stuck-open fault (SOF) xảy ra khi một ô nhớ không thể truy cập được, thường do đường dữ liệu bị đứt hoặc một chuyển mạch luôn ở trạng thái mở.
Lỗi không chuyển trạng thái Transition fault (TF) – Một ô nhớ gặp lỗi không chuyển được trạng thái; nó có thể là hoặc
Lỗi mất dữ liệu Data retention fault (DRF) – Một ô nhớ lỗi không giữ được giá trị logic của nó sau một khoảng thời gian nhất định
Lỗi giữa các ô nhớ, hay còn gọi là lỗi nối (Coupling faults - CF), bao gồm lỗi đảo giá trị (Inversion coupling fault - CFin) Lỗi này xảy ra khi sự chuyển trạng thái của một ô nhớ làm cho một ô nhớ khác bị đảo giá trị, dẫn đến hiện tượng .
Lỗi chuyển trạng thái Idempotent coupling fault (CFid) xảy ra khi sự chuyển đổi của một ô nhớ ảnh hưởng đến giá trị của ô nhớ khác, với các trường hợp cụ thể là , , , hoặc Trong khi đó, lỗi trạng thái State coupling fault (CFst) xảy ra khi một ô nhớ hoặc hàng bị thay đổi thành giá trị xác định do ảnh hưởng từ một ô nhớ hoặc hàng khác đang ở trạng thái nhất định, với các tình huống như , , .
Lỗi nhiễu đọc Read disturb fault (RDF) – Giá trị một ô nhớ bị đảo khi được đọc (quá trình lặp lại)
Bridging fault (BF) – ngắn mạch giữa hai ô nhớ (có thể là loại AND hoặc
Lỗi ảnh hưởng của các ô nhớ Neighborhood Pattern Sensitive Fault
NPSF (Nội dung của một ô nhớ) là khả năng chuyển giao thông tin giữa các ô nhớ, bị ảnh hưởng bởi nội dung của các ô bên cạnh Có ba loại NPSF: NPSF động (Active) - khi các ô bên cạnh thay đổi, ô lỗi cũng thay đổi; NPSF thụ động (Passive) - khi các ô bên cạnh thay đổi, ô lỗi không thay đổi trạng thái; và NPSF tĩnh (Static) - khi các ô bên cạnh thay đổi, ô lỗi vẫn giữ một giá trị xác định.
1.3.2 Các lỗi giải mã địa chỉ Address Decoder
Không có ô nhớ nào được truy cập bởi một địa chỉ xác định
Có nhiều ô nhớ bị truy cập bởi cùng một địa chỉ xác định
Một ô nhớ xác định không thể truy cập bởi bất kỳ địa chỉ nào
Một ô nhớ xác định được truy cập bởi nhiều địa chỉ
Lỗi phục hồi xảy ra khi một số phần của bộ nhớ không thể khôi phục đủ nhanh từ trạng thái trước đó Một ví dụ là phục hồi bộ khuếch đại cảm biến, khi bộ khuếch đại bão hòa sau khi đọc hoặc ghi một chuỗi dài các bit 0 hoặc 1 Ngoài ra, lỗi phục hồi ghi cũng có thể xảy ra khi một lệnh ghi được thực hiện, tiếp theo là một lệnh đọc hoặc ghi ở một vị trí khác, nhưng lại dẫn đến kết quả ở cùng một vị trí Nguyên nhân chính của vấn đề này là do bộ giải mã địa chỉ hoạt động chậm.
Disturb faults: ô nhớ lỗi bị thay đổi giá trị thành 0 hoặc 1 nếu chúng ta đọc hoặc ghi trên ô nhớ khác có tác động (có thể là cùng một ô nhớ)
Lỗi lưu trữ dữ liệu xảy ra khi bộ nhớ mất dữ liệu một cách tự nhiên, không phải do các lệnh đọc hoặc ghi Một trong những lỗi này là lỗi làm mới DRAM, trong đó đường làm mới gặp lỗi stuck-at Ngoài ra, còn có lỗi rò rỉ DRAM, gây ra sự mất mát dữ liệu.
Bệnh ngủ (sleeping sickness) là hiện tượng mất dữ liệu trong khoảng thời gian ngắn hơn giá trị hold time, thường dao động từ vài trăm micro giây đến vài chục mili giây Hiện tượng này thường xảy ra do dò điện hoặc môi trường nhiễu, và có thể ảnh hưởng đến cả hàng hoặc cả cột bộ nhớ.
Static data losses – thiết bị có khuyết tật pull-up Gồm cả dòng điện quá mức rò rỉ cho phép và làm thay đổi trạng thái của ô nhớ.
Các thuật toán kiểm tra
Có nhiều loại thuật toán kiểm tra bộ nhớ, được phân loại thành hai nhóm chính: thuật toán truyền thống và thuật toán March.
1.4.1 Các thuật toán truyền thống
Các thuật toán truyền thống, như zero-one, Checker board, GALPAT và Walking1/0, đã được sử dụng phổ biến trong quá khứ nhờ khả năng phát hiện các lỗi không chức năng, chẳng hạn như lỗi thông số điện.
Thuật toán MSCAN (Memory Scan) là một phương pháp đơn giản, thực hiện việc ghi dữ liệu toàn bộ là 0 hoặc 1 vào bộ nhớ.
Bước 1: ghi 0 vào toàn bộ ô nhớ
Bước 2: đọc toàn bộ ô nhớ
Bước 3: ghi 1 vào toàn bộ ô nhớ
Bước 4: đọc toàn bộ ô nhớ
Thuật toán này rất dễ để thiết kế nhưng không đủ mạnh để kiểm tra bộ nhớ vì nó không phát hiện được hết các lỗi AF và CF
1.4.1.2 Thuật toán Checkerboard Đây cũng là một thuật toán ngắn và đơn giản Các ô nhớ của mảng ô nhớ được chia thành hai nhóm: nhóm ô nhớ 1 và nhóm ô nhớ 2, từ đó tạo nên đoạn mã kiểm tra để ghi vào bộ nhớ
Checkerboard có khả năng phát hiện lỗi như sau:
Không phải tất cả lỗi AF đều được phát hiện Nó chỉ đảm bảo cho hai ô nhớ được truy cập
Lỗi SAF chỉ được phát hiện khi chức năng giải mã địa chỉ hoạt động chính xác; nếu không, chỉ có hai ô nhớ được đảm bảo không có lỗi SAF.
Không phải tất cả lỗi TF và CF đều được phát hiện Nguyên nhân giống với thuật toán Zero-one
1.4.1.3 Thuật toán GALPAT và Walking 1/0
Thuật toán GALPAT (GALloping PATtern) và Walking 1/0 có sự tương đồng trong việc kiểm tra bộ nhớ Cả hai đều làm đầy bộ nhớ với dữ liệu là các bit 0 hoặc 1, ngoại trừ một ô nhớ cơ sở duy nhất chứa dữ liệu bit 1 hoặc 0 Trong quá trình kiểm tra, ô nhớ cơ sở được dịch qua từng vị trí trong bộ nhớ Sự khác biệt chính giữa GALPAT và Walking 1/0 là cách thức đọc ô nhớ; với Walking 1/0, ô nhớ cơ sở được đọc sau cùng, trong khi GALPAT đọc ô nhớ cơ sở sau mỗi ô nhớ được kiểm tra.
Khả năng phát hiện lỗi của cả hai thuật toán như sau:
Tất cả lỗi AF đều được phát hiện và đánh dấu
Tất cả lỗi SAF sẽ được đánh dấu
Tất cả lỗi All TF được đánh dấu
Tất cả lỗi CFid được đánh dấu
Kích thước bộ nhớ ngày càng lớn đồng nghĩa với việc xuất hiện nhiều lỗi phức tạp Các thuật toán truyền thống thường không đủ mạnh để phát hiện lỗi hoặc mất quá nhiều thời gian để kiểm tra Mặc dù nhiều thuật toán mới đã được phát triển, nhưng nếu chúng có độ phức tạp tính toán cao hơn độ phức tạp tuyến tính theo thời gian, việc áp dụng sẽ trở nên không khả thi Hình 1-6 minh họa mối liên hệ giữa độ phức tạp tính toán và thời gian kiểm tra.
Hình 1–6 So sánh độ phức tạp tính toán và thời gian kiểm tra
Theo dữ liệu từ hình 1-6, việc kiểm tra bộ nhớ 1 Gigabit với thuật toán có độ phức tạp tuyến tính n chỉ mất 1.75 phút, trong khi sử dụng thuật toán có độ phức tạp n² sẽ tốn tới 3659 năm.
Thuật toán March, một phương pháp tuyến tính theo thời gian, được phát triển để phát hiện các lỗi SAF, TF và CF một cách đơn giản nhưng hiệu quả Hiện nay, thuật toán này đã trở nên phổ biến với nhiều biến thể mới được giới thiệu Dưới đây là một số thông tin về thuật toán March.
1.4.2.1 Kí hiệu cho thuật toán March Test
↑ Địa chỉ thay đổi theo thứ tự tăng dần
↓ Địa chỉ thay đổi theo thứ tự giảm dần
↕ Địa chỉ thay đổi theo thứ tự bất kỳ
r0 lệnh đọc dữ liệu 0 từ ô nhớ
r1 lệnh đọc dữ liệu 1 từ ô nhớ
w0 lệnh ghi dữ liệu 0 từ ô nhớ
Độ phức tạp tính toán của thuật toán March phụ thuộc vào số lượng lệnh trong thuật toán Cụ thể, nếu thuật toán có 10 lệnh đọc/ghi dữ liệu, thì độ phức tạp tính toán sẽ là 10n.
1.4.2.2 Một số thuật toán March cơ bản
Sau đây là một số thuật toán March cơ bản đã được nghiên cứu và sử dụng [2,3,4,8] a) MATS+
Thuật toán MATS+ có khả năng phát hiện tất cả các lỗi SAF và AF, thường được sử dụng thay cho thuật toán MATS trong việc kiểm tra bộ nhớ khi công nghệ chưa rõ ràng Độ phức tạp tính toán của thuật toán này là 5n.
Thuật toán MATS++ là một giải pháp tối ưu và hoàn chỉnh, tương tự như MATS+ test nhưng có khả năng phát hiện lỗi TF Với độ phức tạp tính toán là 6n, thuật toán này được khuyến nghị cho việc kiểm tra các lỗi unlinked SAF và TF.
Thuật toán MARCH X, mặc dù chưa được công bố chính thức, đã được đặt tên dựa trên việc sử dụng của nó Thuật toán này có khả năng phát hiện các lỗi unlinked SAF và AF một cách hiệu quả.
TF và CFin Độ phức tạp tính toán của MARCH X là 6n
March C là một công cụ hữu ích để phát hiện các lỗi unlinked CFid, đồng thời cũng có khả năng phát hiện các lỗi AF, SAF, unlinked TF, CFst và unlinked CFin Độ phức tạp tính toán của March C là 11n.
March C− phát hiện lỗi SAF và unlinked TF thông qua việc đọc các ô nhớ theo trạng thái 0,1,0, , dẫn đến việc chuyển trạng thái cả chiều lên và xuống cùng với lệnh đọc sau đó Ngoài ra, March C− cũng phát hiện các lỗi CFid, CFin và CFst, với điều kiện là các lỗi CF không kết nối Độ phức tạp tính toán của phương pháp này là 10n.
Các kỹ thuật kiểm tra bộ nhớ
Hai vấn đề chính trong việc kiểm tra bộ nhớ nhúng bao gồm cách kiểm tra các logic liên quan đến bộ nhớ và việc kiểm tra chính bộ nhớ đó.
Có 4 kỹ thuật cơ bản được sử dụng hiện nay gồm: kiểm tra chức năng, kỹ thuật quét đường biên bộ nhớ (boundary scan), ghép cách li (multiplexor isolation) và mạch logic tự kiểm tra (build-in self-test)
Các bộ nhớ nhúng có thể được kiểm tra thông qua việc kiểm tra chức năng, đặc biệt hiệu quả khi chip truy cập trực tiếp vào bộ nhớ Ví dụ, chip vi điều khiển với các chỉ thị lệnh đặc biệt cho phép truy cập vào bộ nhớ đệm, làm cho việc kiểm tra chức năng trở nên đơn giản Kỹ thuật này mang lại nhiều ưu điểm trong quá trình kiểm tra.
Không có thêm mạch logic và độ trễ nào đối với việc kiểm tra
Bất kỳ thuật toán nào cũng có thể sử dụng để kiểm tra
Việc kiểm tra có thể thực hiện ở tần số hoạt động của bộ nhớ at-speed-testing
Các nhược điểm của kỹ thuật này gồm có:
Không hiệu quả cho bộ nhớ mà việc truy cập trực tiếp không đơn giản trong chế độ hoạt động chức năng của chip
Cần nhiều nguồn lực để thực hiện việc kiểm tra
Các logic xung quanh bộ nhớ không dễ để kiểm tra
Dữ liệu quá trình kiểm tra có thể lớn
1.5.2 Kỹ thuật quét đường biên Boundary Scan
Kỹ thuật quét đường biên sử dụng một vòng quét (scan chain) được đặt tại biên bộ nhớ, kết hợp với bộ ghép để lựa chọn giữa các chân chức năng và chân vòng quét Mục tiêu chính là thu thập toàn bộ dữ liệu đầu vào và đầu ra của bộ nhớ mà không làm ảnh hưởng đến nội dung bên trong Kiến trúc cơ bản của kỹ thuật này bao gồm các thành phần cấu trúc thiết yếu để đảm bảo hiệu quả quét.
Dữ liệu đầu vào của vòng quét được lấy từ chân SDI, trong khi dữ liệu đầu ra được xuất ra từ chân SDO Quá trình truy cập dữ liệu tại đầu vào và đầu ra của bộ nhớ diễn ra theo cách dịch tuần tự Kỹ thuật này mang lại nhiều ưu điểm đáng kể.
Khả năng phát hiện lỗi cao bên trong bộ nhớ
Khả năng phát hiện lỗi cao cho logic xung quanh bộ nhớ nếu sử dụng quét ATPG
Bất kỳ thuật toán nào cũng có thể sử dụng để kiểm tra
Diện tích mạch logic tăng thêm ít bởi có thêm một số thanh ghi quét ở đầu vào và đầu ra của bộ nhớ
Nhược điểm của kỹ thuật này gồm có:
Thời gian kiểm tra rất lâu vì cách dịch tuần tự của dữ liệu
Không thể chạy cùng tần số của bộ nhớ at-speed-testing
Dữ liệu quá trình kiểm tra rất lớn
Hiện không có công cụ thương mại nào có thể tạo đoạn mã quét cho bộ nhớ
1.5.3 Kỹ thuật ghép cách li Multiplexor Isolation
Kỹ thuật ghép cách li sử dụng bộ ghép ở đầu vào và đầu ra của bộ nhớ, với các tín hiệu đầu vào chính được kết nối trực tiếp tới đầu vào kiểm tra của bộ ghép đầu vào Tương tự, đầu ra của bộ nhớ cũng được nối trực tiếp tới đầu vào kiểm tra của bộ ghép đầu ra Kiến trúc cơ bản của kỹ thuật này đảm bảo tính chính xác và hiệu quả trong việc quản lý tín hiệu.
Kỹ thuật này tạo ra một kết nối trực tiếp giữa các tín hiệu đầu vào chính và đầu vào bộ nhớ, cũng như giữa đầu ra bộ nhớ và các tín hiệu đầu ra chính, cho phép truy cập trực tiếp vào bộ nhớ mà không cần qua logic xung quanh Những ưu điểm của kỹ thuật này bao gồm khả năng tối ưu hóa hiệu suất và giảm độ trễ trong quá trình xử lý dữ liệu.
Bất kỳ thuật toán nào cũng có thể sử dụng để kiểm tra
Việc kiểm tra có thể thực hiện ở tần số hoạt động của bộ nhớ at-speed-testing
Nhược điểm của kỹ thuật này gồm có:
Diện tích tăng thêm do quá trình định tuyến các kết nối là rất lớn
Dữ liệu quá trình kiểm tra có thể lớn
Logic xung quanh bộ nhớ khó kiểm tra
1.5.4 Mạch logic tự kiểm tra Build-in self-test
Mạch logic tự kiểm tra (BIST) là giải pháp tối ưu cho việc kiểm tra bộ nhớ nhúng, nơi bộ nhớ thường được kiểm tra thông qua mã do thuật toán kiểm tra tạo ra Thiết kế bao gồm khối tạo dữ liệu đầu vào và khối phân tích đáp ứng dữ liệu đầu ra, được điều chỉnh phù hợp với từng loại bộ nhớ cần kiểm tra Kiến trúc cơ bản của mạch logic tự kiểm tra có thể được mô tả như sau [3,5,9].
Hình 1–10 Build-in self-test
Với kiến trúc BIST, việc kiểm tra từ bên ngoài không cần thiết, nhờ vào việc phát triển một thuật toán kiểm tra có khả năng phát hiện lỗi cao và dễ thiết kế ở mức mạch logic phần cứng Kỹ thuật này mang lại nhiều ưu điểm đáng kể.
Không cần nhiều nguồn lực cho việc kiểm tra
Sử dụng được các thiết bị kiểm tra không đắt tiền
Việc kiểm tra có thể thực hiện ở tần số hoạt động của bộ nhớ at-speed-testing
Dữ liệu quá trình kiểm tra thấp
Việc kiểm tra được thực hiện tại các tầng khác nhau như: chip, bo mạch, và hệ thống
Nhược điểm của kỹ thuật này gồm có:
Cần dành một phần diện tích cho mạch logic BIST
Các thuật toán kiểm tra có thể không phát hiện được tất cả các loại lỗi.
Kết luận
Chương giới thiệu tổng quan đã nêu bật sự phát triển của ngành công nghiệp bán dẫn và sự phức tạp của hệ thống chip SoC cùng bộ nhớ nhúng Nó nhấn mạnh sự cần thiết của giải pháp kiểm tra bộ nhớ để đảm bảo hoạt động chính xác và độ tin cậy của bộ nhớ nhúng Ngoài ra, chương cũng cung cấp khái niệm cơ bản về bộ nhớ SRAM, các mô hình lỗi trong bộ nhớ, và các thuật toán phát hiện lỗi, tạo nền tảng cho thiết kế và kiểm tra bộ nhớ.
Chương này giới thiệu các kỹ thuật kiểm tra bộ nhớ hiện đang được áp dụng trong ngành công nghiệp bán dẫn, nêu rõ ưu nhược điểm của từng phương pháp Kỹ thuật phổ biến nhất là mạch logic tự kiểm tra BIST, với nhiều ưu điểm nổi bật như không cần thiết bị kiểm tra phức tạp, giảm chi phí, hạn chế phát triển phần mềm kiểm tra thủ công và rút ngắn thời gian kiểm tra.
Trong luận văn này, tôi đã tiến hành nghiên cứu và triển khai một thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ, với nhiều cải tiến nổi bật.
Thiết kế sử dụng 42 thuật toán March để kiểm tra và phát hiện nhiều loại lỗi, đồng thời cho phép tích hợp các thuật toán March tùy biến mới vào mạch Điều này tạo ra một hệ thống kiểm tra linh hoạt và hiệu quả.
Các thuật toán được lưu trữ bằng cách nén dữ liệu mới giúp tiết kiệm mạch logic BIST, đồng thời vẫn duy trì hiệu suất hoạt động cao Cụ thể, 42 thuật toán được nén bằng 8 đoạn mã điển hình và lưu trữ trong hai khối ROM.
Thiết kế tích hợp phần mềm xử lý dữ liệu để phân tích chính xác các loại lỗi và xác định nguyên nhân gây ra chúng Ngoài ra, phần mềm mô hình hóa cũng hỗ trợ kiểm tra độ chính xác của thiết kế mạch BIST.
Mỗi loại bộ nhớ nhúng đều có chuẩn giao tiếp riêng để thực hiện việc đọc và ghi dữ liệu Thiết kế khối giao tiếp có khả năng mở rộng, cho phép tương tác và kiểm tra với nhiều loại bộ nhớ khác nhau Trong luận văn này, tôi đã chọn bộ nhớ nhúng SRAM để triển khai thiết kế cho khối giao tiếp.
Triển khai thiết kế
Thiết kế phần cứng mạch BIST
Mạch logic tự kiểm tra lỗi bộ nhớ BIST là giải pháp hiệu quả để kiểm tra bộ nhớ nhúng trên chip Bài viết này đề xuất một kiến trúc BIST tổng quát cho việc kiểm tra bộ nhớ SRAM đồng bộ một cổng trên chip SoC, đồng thời kiến trúc này cũng có thể áp dụng cho các loại bộ nhớ nhúng khác như SRAM 2 cổng, DRAM và flash.
Một kỹ thuật mới đã được áp dụng để nén thông tin về thuật toán March, giúp tiết kiệm mạch logic và không gian lưu trữ trên ROM cho mạch BIST Thông tin của 42 thuật toán March được rút gọn và mã hóa thông qua 8 đoạn mã điển hình.
Kiến trúc BIST được trang bị nhiều thuật toán March, giúp kiểm tra và phát hiện đa dạng các loại lỗi, bao gồm lỗi Stuck-at, lỗi stuck-open, lỗi transition và lỗi coupling.
Kiến trúc BIST hỗ trợ kiểm tra các thuật toán mới một cách linh hoạt Các lệnh kiểm tra được đưa vào thanh ghi chỉ dẫn qua cổng đầu vào và sau đó được thực thi trên bộ nhớ nhúng cần kiểm tra.
2.1.1 Sơ đồ khối tổng quát
Chip SoC với khả năng kiểm tra bộ nhớ thông qua giải pháp BIST có thiết kế cơ bản bao gồm một khối điều khiển TAP Controller, khối mạch BIST và mạch giao tiếp giữa TAP Controller và logic BIST.
… failed_pass address_failed BIST_finished
Hình 2–1 Thiết kế chip SoC
Chuẩn giao tiếp JTAG 1149.1 là lựa chọn phổ biến của các kỹ sư thiết kế chip SoC nhờ vào kiến trúc đơn giản, tiêu chuẩn hóa và tiết kiệm tài nguyên, phù hợp cho việc kiểm tra Chuẩn này bao gồm 5 tín hiệu: TMS, TCK, TRST, TDI và TDO, trong đó TMS, TCK và TRST là tín hiệu điều khiển, còn TDI và TDO là đường dữ liệu vào và ra Các tín hiệu này có nhiệm vụ gửi dữ liệu, lệnh điều khiển và chọn chế độ hoạt động cho chip SoC trong quá trình kiểm tra Để thực hiện chức năng này, chip SoC cần có phần cứng tương ứng là khối điều khiển Tap Controller, chịu trách nhiệm giao tiếp với phần mềm điều khiển thông qua 5 chân tiêu chuẩn.
Các kỹ sư kiểm tra bộ nhớ làm việc với mạch BIST để điều khiển chế độ kiểm tra, thay đổi thuật toán và gửi thông tin cần kiểm tra vào chip Khối Mem BIST interface đóng vai trò quan trọng trong việc chuyển đổi dữ liệu từ phần mềm xuống chip SoC qua khối Tap Controller, đảm bảo dữ liệu đầu vào phù hợp với mạch BIST Sau khi hoàn tất kiểm tra, mạch BIST gửi dữ liệu đã kiểm tra ra ngoài, được đóng gói theo chuẩn và chuyển đến khối Tap Controller Phần mềm kiểm tra nhận dữ liệu này, giúp các kỹ sư phân tích quá trình hoạt động của mạch BIST, từ đó xác định xem chip SoC có lỗi bộ nhớ hay không, loại lỗi và nguyên nhân gây ra lỗi.
Trong chương này, luận văn tập trung vào việc thiết kế tổng quát cho phần mạch quan trọng nhất, đó là mạch BIST Sơ đồ khối tổng quát của mạch BIST được trình bày trong hình 2-2.
ASM shift_data failed_pass address_failed
Hình 2–2 Sơ đồ khối mạch BIST
Các khối chính gồm có:
Khối tạo chỉ thị lênh Test Instruction Generator: tạo các lệnh kiểm tra dựa trên thuật toán March có sẵn hoặc thuật toán được đưa từ bên ngoài vào
Khối tạo tín hiệu điều khiển vật lý (Physical Signal Generator) chuyển đổi lệnh từ khối tạo lệnh kiểm tra (Test Instruction Generator) thành tín hiệu điều khiển tương ứng với các giản đồ thời gian trong chu kỳ đọc ghi của bộ nhớ được kiểm tra Hiện tại, khối này được thiết kế đặc biệt để tương thích với bộ nhớ nhúng SRAM.
Khối tạo dữ liệu Data Background Generator chịu trách nhiệm tạo ra dữ liệu chuẩn để ghi vào bộ nhớ trong trong chu kỳ ghi, đồng thời cũng tạo dữ liệu chuẩn để so sánh với dữ liệu được lấy ra từ bộ nhớ trong trong chu kỳ đọc.
Khối So sánh Comparator thực hiện việc so sánh dữ liệu chuẩn được lấy từ khối Data Background Generator với dữ liệu từ bộ nhớ SRAM trong chu kỳ đọc, nhằm phát hiện lỗi trong bộ nhớ.
Khối điều khiển hoạt động chính của mạch FSM BIST: là một máy trạng thái được sử dụng để quản lý toàn bộ hoạt động của các khối khác
Trong bài viết này, chúng tôi trình bày thiết kế các thông số của mạch BIST nhằm kiểm tra hiệu suất của bộ nhớ SRAM một cổng đồng bộ từ công ty Dolphin Technology, model dti_sp_tm65gplus_144x26_twt4bw1xoe_m, với độ rộng bus dữ liệu là 26 bits.
I Số thứ tự thuật toán
BISTen_n I Tín hiệu khởi tạo hoạt động (mức thấp)
AMS I Chế độ chọn thuật toán, 1 for PAG, 0 for SAG shift_data I Dữ liệu dịch vào cho thuật toán của mode PAG failed_pass O Kết quả kiểm tra của mạch BIST address_failed
BIST_finished O Cờ báo kết thúc kiểm tra bởi 1 thuật toán Các thông số:
AL_LENGTH: Độ dài thuật toán = 6
ADDR_WIDTH: Độ rộng của bus địa chỉ SRAM = 25
2.1.3.1 Khối tạo chỉ thị lệnh Test Instruction Generator a) Giới thiệu
Khối tạo chỉ thị lệnh Test Instruction Generator (TIG) là thành phần đầu tiên trong thiết kế mạch BIST, có chức năng khởi tạo thông tin về tín hiệu điều khiển và dữ liệu của thuật toán March Khối TIG bao gồm hai khối nhỏ, trong đó có khối SAG (Stored).
Bộ tạo thuật toán (Algorithm Generator) lưu trữ 42 thuật toán March trong ROM, trong khi đó, bộ tạo thuật toán lập trình (Programmable Algorithm Generator - PAG) sử dụng các thanh ghi dịch để nhận thông tin về thuật toán March mới từ bên ngoài Khối PAG không sử dụng ROM, cho phép nó nhận bất kỳ thuật toán nào ngoài 42 thuật toán có trong khối SAG, mang lại khả năng xử lý các thuật toán tùy biến được thiết kế mới, hay còn gọi là khả năng lập trình Kiến trúc của khối TIG được mô tả chi tiết trong hình 2-3, bao gồm các thành phần như next_element, shift_data, pattern_len, up_down, pattern_code, data_valid và BIST_finished.
Hình 2–3 Sơ đồ khối TIG c) Tín hiệu vào ra
Clk I Tín hiệu Clock rst_n I Tín hiệu Reset (mức thấp)
BISTen_n I Tín hiệu khởi tạo hoạt động
Thiết kế phần mềm mô hình hóa hoạt động mạch BIST và mô hình lỗi SRAM 61 1 Các khối mô hình hóa
Để đảm bảo thiết kế phần cứng mạch BIST hoạt động chính xác và có khả năng phát hiện cũng như phân tích lỗi, tôi đã phát triển phần mềm mô hình hóa cho mạch BIST và mô hình các lỗi trong bộ nhớ Phần mềm này được tối ưu hóa đặc biệt cho bộ nhớ SRAM trong khuôn khổ luận văn.
2.2.1 Các khối mô hình hóa
Hình 2–48 Thiết kế của phần mềm mô hình hóa
Phần mềm mô hình hóa chia làm 3 khối chính: mô hình lỗi, mô hình mạch BIST, và mô hình bộ nhớ SRAM
Khối này đọc thông tin từ bộ nhớ được kiểm tra theo tài liệu mô tả kỹ thuật, cụ thể là tệp MemorySpec.txt Thông tin được xử lý và chia thành hai loại: đầu tiên là thông tin về bộ nhớ, bao gồm độ rộng bus địa chỉ, độ rộng bus dữ liệu và chiều sâu bộ nhớ SRAM; thứ hai là thông tin về dữ liệu ô nhớ bị lỗi và địa chỉ lỗi.
Mô hình bộ nhớ sử dụng dữ liệu từ khối Memory Parser để mô phỏng hoạt động của bộ nhớ Phần mềm tạo ra một ma trận M hàng và N cột, tương ứng với thông tin về bus dữ liệu và bus địa chỉ Sau khi khởi tạo các ô nhớ, thông tin về ô nhớ lỗi, bao gồm các lỗi như SAF và CF, sẽ được ghi vào các ô nhớ tương ứng nơi lỗi xảy ra.
Transition Fault 0, Transition Fault 1, Inverse Coupling Fault, State Coupling Fault, ID Coupling Fault, Address Decode Fault
Mô hình mạch BIST sẽ đọc thông tin từ bộ nhớ để xác định độ rộng của bus dữ liệu và dải địa chỉ, đồng thời thu thập thông tin về thuật toán March và dữ liệu tiêu chuẩn data background Dựa trên những thông tin này, mô hình sẽ xác định các lệnh kiểm tra cần thực hiện Trong quá trình mô hình hóa, thông tin sẽ được ghi lại để so sánh với kết quả trên phần cứng, bao gồm TIG log file với thông tin về phần tử trong thuật toán, Physical log file ghi lại giá trị đầu vào bộ nhớ tại mỗi thời điểm ghi hoặc đọc dữ liệu, và Compare log file chứa thông tin về lỗi so sánh, bao gồm địa chỉ lỗi, dữ liệu lỗi và dữ liệu kỳ vọng.
Phần mềm mô hình hóa sử dụng thông tin chứa trong 2 file text
Tệp Algorithms.txt chứa 42 thuật toán March cần được kiểm tra, và có khả năng bổ sung thêm nhiều thuật toán khác Khi phần mềm mô hình hóa khởi động, nó sẽ lấy dữ liệu từ tệp này, cho phép người sử dụng kiểm tra với bất kỳ thuật toán nào có trong danh sách.
Tất cả thông tin cần thiết để khởi tạo mô hình bộ nhớ SRAM sẽ được kiểm tra, bao gồm độ rộng bus địa chỉ, bus dữ liệu, độ sâu bộ nhớ, địa chỉ lỗi và loại lỗi.
Mô hình bộ nhớ trong phần mềm mô hình hóa tương tự như bộ nhớ trong phần cứng mạch BIST Luận văn này sử dụng bộ nhớ Single Port SRAM từ công ty Dolphin Technology.
Cấu trúc các log file như sau:
Adjustment for sense amp delay : 011