Chương 1. 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ớ Các nghiên cứu về kiểm tra bộ nhớ bán dẫn có lịch sử rất sớm từ đầu những năm 1960, cùng với sự phát triển của nền công nghiệp vi mạch bán dẫn. Mặc dù thời gian kiểm tra và phạm vi kiểm tra luôn là những điểm quan tâm chính, giới công nghiệp về cơ bản luôn ưu chuộng các kỹ thuật đã hoàn thiện và các công cụ kiểm tra công nghiệp các sản phẩm bộ nhớ. Sự ra đời của các hệ thống chip đã mang lại những vấn đề mới cho các nhà nghiên cứu.
Số lượng các bộ nhớ nhúng và diện tích các bộ nhớ này đã tăng lên rất nhanh chóng trong các hệ thống chip. Sản lượng của các bộ nhớ trên chip do đó sẽ xác định sản lượng của chip. Việc kiểm tra đúng/sai đã không còn đủ cho các bộ nhớ nhúng trong thời đại của các bộ vi mạch tích hợp SoC (system-on-chip). Ngoài ra, bộ nhớ thường được sử dụng như là một chỉ báo công nghệ, do đó chúng thường được thiết kế với mật độ rất lớn ở mỗi quy trình công nghệ.
Phân tích lỗi bộ nhớ nhanh chóng trở thành vấn đề quan trọng, giống như vấn đề về sản lượng công nghiệp và thời gian phát triển của các sản phẩm SoC. Chẩn đoán lỗi hiệu quả và các phương pháp phân tích lỗi bộ nhớ sẽ giúp cải thiện sản lượng của các sản phẩm SoC, đặc biệt là với sự thay đổi nhanh chóng của quá trình phát triển các sản phẩm mới và các quy trình công nghệ tiên tiến. Trong chương này, tôi sẽ trình bày về kiến trúc bộ nhớ SRAM, mô hình lỗi cho bộ nhớ và các thuật toán kiểm tra. Thuật toán March được sử dụng rộng rãi và được coi là hiệu quả nhất với mô hình bộ nhớ lỗi truyền thống.
Các thuật toán March khá ngắn và dễ phát triển. Đồng thời trong chương này, tôi cũng sẽ trình bày về mạch tự kiểm tra bộ nhớ Memory Built-in Self-test (BIST). Nó được xem là giải pháp tốt nhất cho việc kiểm tra bộ nhớ nhúng trên các chip SoC. 2 Nghiên cứu và thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ 1.
Giới thiệu Cùng với sự ra đời của 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 đã dịch chuyển sự quan tâm đến các giải pháp SoC. Đó là một xu hướng mới của tích hợp. Với một thiết kế hàng triệu phần tử cổng logic và số lượng chân (pad) hạn chế, chúng ta có thể thấy tại sao bộ nhớ nhúng lại là một giải pháp hấp dẫn như vậy. Hầu hết các hệ thống SoC đều chứa một vài loại bộ nhớ nhúng, nên bộ nhớ được coi là một 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ố, đầu đĩa DVD,… đều yêu cầu sử dụng hệ thống SoC với kiến trúc chứa nhiều bộ nhớ nhúng. Ứng dụng của bộ nhớ nhúng được thể hiện như hình 1-1 [4]. Hình 1–1 Ứng dụng bộ nhớ nhúng trong thiết kế SoC Thông thường bộ nhớ nhúng chiếm từ 30% đến 50% diện tích chip SoC. Con số này tăng nhanh qua từng thế hệ sản phẩm và hiện nay bộ nhớ nhúng đã có thể chiếm đến 90% diện tích chip.
Hiệp hội công nghiệp bán dẫn (Semiconductor Industry Association - SIA) đã dự đoán rằng con số này sẽ tăng lên 94% vào năm 2014 theo hình 1-2 [4]. 3 Nghiên cứu và thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ 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, …) với các thành phần logic khác. Để xử lý các vấn đề công nghệ, bảo đảm hiệu suất, chất lượng và độ tin cậy của các bộ nhớ nhúng với chi phí được sử dụng một cách hiệu quả; nó đòi hỏi những nỗ lực nghiên cứu sâu hơn.
Việc kiểm tra bộ nhớ nhúng lại càng khó hơn kiểm tra bộ nhớ thông thường. Vấn đề đầu tiên là tính truy cập. Truy cập lõi DRAM từ một thiết bị kiểm tra ngoại vi rất tốn kém - cả về vấn đề vượt quá số chân/diện tích, sụt giảm hiệu năng, và nhiễu – khi mà bộ nhớ DRAM được nhúng trong CPU hoặc ASIC và bao quanh bởi các khối logic khác [3]. Phương pháp thiết kế cho phép kiểm tra (DFT – design for test) phải được cung cấp cho việc cách ly lõi và cho phép truy cập, và cái giá phải trả là việc vượt quá số lượng cổng logic (hardware overhead), hiệu năng thấp, nhiễu và ảnh hưởng ký sinh.
Ngay cả khi đã chấp nhận những điều trên, thiết bị kiểm tra đáp ứng đủ tiêu chuẩn để kiểm tra bộ nhớ nhúng DRAM sẽ rất đắt vì tốc độ chạy kiểm tra và độ rộng băng thông I/O. Tổng chi phí đầu tư sẽ rất cao. Giải pháp triển vọng cho vấn đề trên là mạch logic tự kiểm tra (BIST). Với BIST, yêu 4 Nghiên cứu và thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ cầu cho thiết bị kiểm tra bộ nhớ nhúng DRAM được giảm thiểu, thời gian kiểm tra giảm đáng kể trong toàn bộ quy trình kiểm tra đối với DRAM.
Tất nhiên, tổng thời gian kiểm tra có thể được giảm nữa nếu kiểm tra song song các bộ nhớ ở mức chip bởi vì điều này rất dễ xử lý. Do đó mạch logic tự kiểm tra được xem như một yêu cầu bắt buộc với bộ nhớ nhúng DRAM. Một ưu điểm khác của BIST là vấn đề bảo vệ sở hữu trí tuệ. Ví dụ trong trường hợp này, nhà cung cấp bán dẫn chỉ cần đưa khối DRAM với chuỗi kích hoạt và đáp ứng BIST cho nhu cầu kiểm tra và chẩn đoán lỗi mà không phải cung cấp chi tiết thiết kế DRAM IP.
BIST cũng được áp dụng thành công với bộ nhớ nhúng SRAM, flash, CAM. Tuy nhiên, nó vẫn cần đến thiết bị kiểm tra ngoại vi trừ trường hợp việc chẩn đoán và sửa lỗi được tự thực hiện bên trong chip. Điều này hiển nhiên không thể thực hiện bởi kiến trúc BIST hiện tại cho SRAM. Đồng thời, các mô hình lỗi mới có thể cần được kiểm tra; và thuật toán March được sử dụng cho SRAM BIST có thể không tích hợp.
Nhiều thách thức khác vẫn tồn tại. Ví dụ như các thiết bị bộ nhớ thường yêu cầu sửa chữa cứng bằng cách lập trình các cầu chì điện (burn-in) để giảm tỉ lệ lỗi, nhưng với các thiết bị logic, IddQ có thể được sử dụng. Sử dụng IddQ cho bộ nhớ không hề dễ dàng. Vậy nếu chúng ta tích hợp bộ nhớ và logic, làm thế nào để đạt được yêu cầu về độ tin cậy? Thử thách tiếp theo là thiết kế tự động.
Thiết kế logic sử dụng các công cụ tổng hợp mạch trong khi thiết kế bộ nhớ thường sử dụng thiết kế tùy chỉnh hoàn toàn. Việc tích hợp hai luồng khác nhau đòi hỏi rất nhiều nỗ lực. Những thử thách khác nữa như là tiêu chuẩn thời gian, hay kiểm tra nguồn điện AC của bộ nhớ không đồng bộ với mạch logic BIST đồng bộ. 5 Nghiên cứu và thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ 1.
Bộ nhớ SRAM Bộ nhớ RAM tĩnh (SRAM - Statis RAM) được sử dụng rộng rãi trong nhiều ứng dụng. Một chip SRAM thường bao gồm các bộ giải mã địa chỉ, logic đọc/ghi, các bộ khuếch đại và một mảng phần tử nhớ. Ví dụ về SRAM đồng bộ dưới đây mô tả họ SRAM đồng bộ Micron. Tất cả đầu vào đồng bộ đi qua các thanh ghi được điều khiển bởi một 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. Hình 1–3 Một ô nhớ SRAM Khối chức năng: Hình 1-4 mô tả một ví dụ về sơ đồ khối chức năng của SRAM đồng bộ Micron [4]. Các đầu vào đồng bộ bao gồm tất cả các địa chỉ, tất cả đầu vào dữ liệu, tín hiệu kích hoạt mức thấp (CE#), hai tín hiệu kích hoạt bổ sung để dễ dàng mở rộng chiều sâu(CE2#,CE2), 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 theo 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#), clock(CLK) và kích hoạt cho phép dừng ngắn 6 Nghiên cứu và thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ (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: Một xung đầu vào điều khiển đơn giản lựa chọn hoạt động đọc hoặc ghi. Xung này không bị khóa và có thể lưu bởi một giá trị suốt toàn bộ quá trình hoạt động. Dữ liệu đầu ra (Q) được cho phép bởi tín hiệu /OE# là không đồng bộ.
Chu kỳ ghi có thể dài 1 đến 2 byte (x18) hoặc từ 1 đến 4 byte (x32/x36), được điều khiển bởi đầu vào điều khiển ghi. Tín hiệu hoạt động có thể được khởi tạo với 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ỉ. Các tín hiệu địa chỉ tiếp theo có thể được sinh ra bên trong khi được điều khiển bởi tín hiệu đầu vào cho trước (ADV#). Tín hiệu GW# ở mức thấp cho phép dữ liệu đượ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 của bộ nhớ, chúng ta thường mô tả các đặc điểm của thiết bị trước, từ đó xác định được các mô hình lỗi thường gặp của mạch được kiểm tra (CUT - circuit under test). Sau khi các lỗi điển hình được định nghĩa, chúng ta có thể chọn một tập các kịch bản kiểm tra nhằm phát hiện được 7 Nghiên cứu và thiết kế mạch tự kiểm tra và phân tích lỗi cho bộ nhớ lỗi này. Để làm việc dễ dàng với các mô hình lỗi hoặc khuyết tật, chúng ta mô hình hóa chúng dựa trên biểu hiện gây lỗi. Mặc dù mô hình lỗi chức năng này không được sử dụng rộng rãi trong giới công nghiệp, đây vẫn là một phương pháp phát triển 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].