Do đó, một vấn đề rất quan trọng đã được nghiên cứu và triển khai từ rất sớm là làm thế nào để kiểm tra, phân tích được lỗi trong các bộ nhớ nhúng của chip SoC.. Một hệ thống SoC với các
Trang 1NGHIÊ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 THẠC SĨ KỸ THUẬT
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
-
LÊ HẢI ANH
NGHIÊN CỨU VÀ THIẾT KẾ MẠCH TỰ KIỂM TRA VÀ PHÂN
TÍCH LỖI CHO BỘ NHỚ
CHUYÊN NGÀNH KỸ THUẬT ĐIỆN TỬ
LUẬN VĂN THẠC SĨ KỸ THUẬT
KỸ THUẬT ĐIỆN TỬ
NGƯỜI HƯỚNG DẪN KHOA HỌC : TS NGUYỄN VŨ THẮNG
Hà Nội – Năm 2013
Trang 3MỤC LỤC
MỤC LỤC I LỜI CAM ĐOAN III DANH MỤC CÁC HÌNH VẼ IV DANH MỤC CÁC BẢNG BIỂU VII DANH MỤC CÁC TỪ VIẾT TẮT VIII
PHẦN MỞ ĐẦU 1
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ớ 2
1.1 Giới thiệu 3
1.2 Bộ nhớ SRAM 6
1.3 Mô hình lỗi của bộ nhớ 7
1.3.1 Các lỗi ô nhớ Memory Cell 9
1.3.2 Các lỗi giải mã địa chỉ Address Decoder 10
1.3.3 Các lỗi Dynamic 10
1.4 Các thuật toán kiểm tra 11
1.4.1 Các thuật toán truyền thống 11
1.4.2 Các thuật toán March 12
1.5 Các kỹ thuật kiểm tra bộ nhớ 17
1.5.1 Kiểm tra chức năng 17
1.5.2 Kỹ thuật quét đường biên Boundary Scan 18
1.5.3 Kỹ thuật ghép cách li Multiplexor Isolation 19
1.5.4 Mạch logic tự kiểm tra Build-in self-test 20
Trang 41.6 Kết luận 21
Chương 2 Triển khai thiết kế 23
2.1 Thiết kế phần cứng mạch BIST 23
2.1.1 Sơ đồ khối tổng quát 23
2.1.2 Tín hiệu vào ra 26
2.1.3 Các khối chính 26
2.2 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 2.2.1 Các khối mô hình hóa 62
2.2.2 Input files 63
2.2.3 Output Files 63
Chương 3 Kết quả mô phỏng, tổng hợp mạch BIST và hướng phát triển 65
3.1 Kết quả mô phỏng 65
3.1.1 Kết quả mô phỏng mạch BIST trên QuestaSim 67
3.1.2 Kết quả mô phỏng trên phần mềm mô hình hóa 68
3.1.3 Đối chiếu kết quả 69
3.1.4 Code coverage 70
3.2 Kết quả tổng hợp 71
3.3 Kết luận 72
3.4 Hướng phát triển 73
KẾT LUẬN 75
TÀI LIỆU THAM KHẢO 77
PHỤ LỤC 78
Trang 5LỜI CAM ĐOAN
Trước hết, tôi xin gửi lời cảm ơn chân thành tới tập thể các thầy cô trong Viện Điện tử viễn thông, trường Đại học Bách Khoa Hà Nội đã tạo ra một môi trường tốt để tôi học tập và nghiên cứu Tôi cũng xin cảm ơn các thầy cô trong Viện Đào tạo sau đại học đã quan tâm đến khóa học này, tạo điều kiện cho các học viên có điều kiện thuận lợi để học tập và nghiên cứu Và đặc biệt tôi xin gửi lời cảm ơn sâu sắc đến thầy giáo TS Nguyễn Vũ Thắng, đã tận tình hướng dẫn
và sửa chữa cho nội dung của luận văn này
Tôi xin cam đoan rằng nội dung của luận văn này hoàn toàn do tôi tìm hiểu, nghiên cứu và viết ra Tất cả đều được tôi thực hiện cẩn thận, có sự góp ý
và sửa chữa của giáo viên hướng dẫn
Tôi xin chịu trách nhiệm với tất cả nội dung trong luận văn này
Tác giả
Lê Hải Anh
Trang 6DANH MỤC CÁC HÌNH VẼ
Hình 1–1 Ứng dụng bộ nhớ nhúng trong thiết kế SoC 3
Hình 1–2 Dự báo về diện tích bộ nhớ nhúng trên chip SoC 4
Hình 1–3 Một ô nhớ SRAM 6
Hình 1–4 Sơ đồ khối chức năng SRAM của Micron 7
Hình 1–5 Mô hình lỗi 8
Hình 1–6 So sánh độ phức tạp tính toán và thời gian kiểm tra 13
Hình 1–7 Khả năng phát hiện lỗi của một số thuật toán 16
Hình 1–8 Memory boundary scan 18
Hình 1–9 Multiplexor Isolation 19
Hình 1–10 Build-in self-test 20
Hình 2–1 Thiết kế chip SoC 24
Hình 2–2 Sơ đồ khối mạch BIST 25
Hình 2–3 Sơ đồ khối TIG 27
Hình 2–4 Sơ đồ khối SAG 29
Hình 2–5 Giản đồ thời gian khối SAG 31
Hình 2–6 Giản đồ thời gian SAG chi tiết 31
Hình 2–7 Sơ đồ khối Offset Decoder 32
Hình 2–8 Giản đồ thời gian Offset Decoder 32
Hình 2–9 Sơ đồ khối Step Decoder 32
Hình 2–10 Giản đồ thời gian khối Step Decoder 33
Hình 2–11 Khối SA Step Counter 33
Hình 2–12 Giản đồ thời gian khối SA Step Counter 33
Trang 7Hình 2–13 Sơ đồ khối Full Adder 34
Hình 2–14 Giản đồ thời gian khối Full Adder 34
Hình 2–15 Sơ đồ khối P_ROM 35
Hình 2–16 Giản đồ thời gian khối P_ROM 35
Hình 2–17 Sơ đồ khối S_ROM 35
Hình 2–18 Giản đồ thời gian của khối S_ROM 36
Hình 2–19 Sơ đồ khối PAG 37
Hình 2–20 Giản đồ thời gian khối PAG 38
Hình 2–21 Khung dữ liệu chuẩn 39
Hình 2–22 Ví dụ khung dữ liệu cho thuật toán MATS 39
Hình 2–23 Sơ đồ khối Shift Register 39
Hình 2–24 Giản đồ thời gian Shift Register 40
Hình 2–25 Sơ đồ khối Counter16 40
Hình 2–26 Giản đồ thời gian Counter16 40
Hình 2–27 Sơ đồ khối Data Controller 41
Hình 2–28 Giản đồ thời gian Data Controller 41
Hình 2–29 Sơ đồ khối Register File 42
Hình 2–30 Giản đồ thời gian khối Register File 42
Hình 2–31 Sơ đồ khối PAG Step Counter 43
Hình 2–32 Giản đồ thời gian khối PAG Step Counter 43
Hình 2–33 Giản đồ thời gian đọc ghi Dolphin SP SRAM 44
Hình 2–34 Sơ đồ khối Physical Signal Generator 45
Hình 2–35 Thiết kế khối Physical Signal Generator 45
Trang 8Hình 2–36 Giản đồ thời gian khối Physical Signal Generator 47
Hình 2–37 Sơ đồ khối Physical Counter 47
Hình 2–38 Thuật toán khối Physical Counter 48
Hình 2–39 Bảng dữ liệu không đảo chuẩn và dữ liệu đảo chuẩn 49
Hình 2–40 Sơ đồ khối Data Background Generator 52
Hình 2–41 Thuật toán trong khối Data Background Generator 53
Hình 2–42 Giản đồ thời gian khối Data Background Generator 54
Hình 2–43 Sơ đồ khối Comparator 55
Hình 2–44 Giản đồ thời gian khối Comparator 56
Hình 2–45 Sơ đồ khối FSM BIST 57
Hình 2–46 Các trạng thái của FSM BIST 58
Hình 2–47 Giản đồ thời gian của khối FSM BIST 61
Hình 2–48 Thiết kế của phần mềm mô hình hóa 62
Hình 3–1 Mô hình kiểm tra từng khối 65
Hình 3–2 Mô hình kiểm tra toàn bộ mạch BIST 66
Hình 3–3 Kịch bản fsm_bist_tb_failed_ram_fullAgorithm_fullData 67
Hình 3–4 Kịch bản fsm_bist_tb_failed_ram_fullAgorithm_randomData 67 Hình 3–5 Kịch bản fsm_bist_tb_failed_ram_MarchC_fullData 68
Hình 3–6 Phần mềm mô hình hóa 68
Hình 3–7 Mô hình đối chiếu kết quả 69
Trang 9DANH MỤC CÁC BẢNG BIỂU
Bảng 1–1 Tổng kết mô hình lỗi 16
Bảng 1–2 Tổng kết 42 thuật toán March 17
Bảng 2–1 I/O mạch BIST 26
Bảng 2–2 I/O khối TIG 27
Bảng 2–3 I/O khối SAG 30
Bảng 2–4 Địa chỉ offset của S_ROM 36
Bảng 2–5 I/O khối PAG 37
Bảng 2–6 I/O khối Physical Signal Generator 45
Bảng 2–7 I/O khối Physical Counter 48
Bảng 2–8 Dữ liệu không đảo chuẩn 51
Bảng 2–9 Bảng dữ liệu cho độ rộng bus 32 bit 52
Bảng 2–10 I/O khối Data Background Generator 53
Bảng 2–11 I/O khối Comparator 55
Bảng 2–12 I/O khối FSM BIST 57
Bảng 3–1 Các kịch bản kiểm tra 66
Bảng 3–2 Kết quả file Log.txt 69
Bảng 3–3 Code coverage kịch bản 1 70
Bảng 3–4 Code coverage kịch bản 2 71
Bảng 3–5 Kết quả tổng hợp 71
Trang 10DANH MỤC CÁC TỪ VIẾT TẮT
ATPG Automatic test pattern generation
NPSF Neighborhood Pattern Sensitive Fault
Trang 11TIG Test Instruction Generator
Trang 12PHẦN MỞ ĐẦU
Với sự phát triển nhanh chóng của nền công nghiệp bán dẫn, các thiết bị điện tử ngày càng sử dụng nhiều các hệ thống System-on-chip (SoC) Một thành phần quan trọng không thể thiếu trong chip SoC là các bộ nhớ nhúng Quy trình công nghệ càng tiến tiến; bộ nhớ nhúng càng được thu nhỏ, có mật độ tích hợp và kích thước càng lớn Đi cùng với những ưu điểm đó, một nhược điểm lớn là bộ nhớ nhúng có thể chứa rất nhiều lỗi Điều này dẫn đến hoạt động của hệ thống SoC không ổn định, chất lượng chip không đảm bảo và không thể sử dụng được trong thực tế
Do đó, một vấn đề rất quan trọng đã được nghiên cứu và triển khai từ rất sớm là làm thế nào để kiểm tra, phân tích được lỗi trong các bộ nhớ nhúng của chip SoC Từ đó các kĩ sư thiết kế có thể sớm xác định được nguyên nhân gây ra lỗi và cải tiến thiết kế của các bộ nhớ nhúng Một hệ thống SoC với các bộ nhớ
đã được kiểm tra và không có lỗi là một hệ thống ổn định, đáng tin cậy và sẽ được sử dụng trong các thiết bị điện tử hiện đại
Hiện nay có rất nhiều phương pháp để kiểm tra bộ nhớ Tuy nhiên, giải pháp tốt nhất và được sử dụng rộng rãi trong các công ty thiết kế SoC là mạch logic tự kiểm tra lỗi BIST cho bộ nhớ Đề tài luận văn này nghiên cứu và đưa ra
1 thiết kế mạch logic tự kiểm tra và phân tích lỗi cho bộ nhớ với một số cải tiến mới Thiết kế sử dụng nhiều thuật toán March để kiểm tra giúp phát hiện được nhiều loại lỗi Thông tin về các thuật toán được lưu trữ bằng một cách nén dữ liệu mới do đó tiết kiệm mạch logic BIST nhưng vẫn có hiệu suất hoạt động cao Ngoài ra, thiết kế còn kết hợp với phần mềm xử lí dữ liệu giúp phân tích chính xác loại lỗi từ đó xác định được nguyên nhân gây lỗi Thiết kế mạch BIST phù hợp với nhiều loại bộ nhớ nhúng Tuy nhiên trong khuôn khổ luận văn, tôi chọn thiết kế mạch BIST phù hợp để kiểm tra SRAM, bộ nhớ nhúng phổ biến nhất trong các chip SoC
Trang 13Chươ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
Trang 141.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]
Trang 15Hì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
Trang 16cầ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ộ
Trang 171.2 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
Trang 18(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
Để 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
Trang 19lỗ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]
↓ 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ớ
<S/F> 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}
<S1, …, Sm-1; Sm/F> kí hiệu một lỗi liên quan đến m ô nhớ, với S1,
…Sm-1 là các điều kiện tương ứng của m−1 ô nhớ được yêu cầu để kích hoạt lỗi trên ô nhớ m (có trạng thái là Sm), F là giá trị lỗi hoặc trạng thái của ô nhớ m, và 0 ≤ i ≤ m−1, Si ∈{0, 1, ↑, ↓, ↕}
Memory – Functional Fault Models
Memory Cell Faults
Dynamic faults
Address decoder Faults
Trang 201.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) – Một ô nhớ có giá trị
không đổi với mọi lệnh áp dụng lên ô nhớ đó, <∀/1> ký hiệu lỗi stuck-at-1 và
<∀/0> ký hiệu lỗi stuck-at-0
Lỗi không truy cập được Stuck-open fault (SOF) – Một ô nhớ không thể
truy cập được ví dụ nguyên nhân vì đường dữ liệu bị đứt hoặc một chuyển mạch luôn 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à <↑/0> hoặc <↓/1>
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ớ Coupling faults(CF)
o Lỗi đảo giá trị Inversion coupling fault (CFin) – Sự chuyển trạng thái
của một ô nhớ làm một ô nhớ khác bị đảo giá trị; đó là <↑/↕> hoặc
<↓/↕>
o Lỗi chuyển trạng thái Idempotent coupling fault (CFid) – Sự chuyển
trạng thái của một ô nhớ khiến cho ô nhớ khác có một giá trị xác định; đó
là <↑; 1/0>, <↑; 0/1>, <↓; 1/0>, hoặc <↓; 0/1>
o Lỗi trạng thái State coupling fault (CFst) – Một ô nhớ hoặc một hàng
bị chuyển thành một giá trị xác định nếu một ô nhớ hoặc một hàng khác
ở trong một trạng thái xác định; đó là <0; 0/1>, <1; 0/1>, <0; 1/0>, hoặc
Trang 21 Lỗi ảnh hưởng của các ô nhớ Neighborhood Pattern Sensitive Fault
(NPSF) – Nội dung của một ô nhớ hoặc khả năng để chuyển nội dung một ô nhớ bị ảnh hưởng bởi nội dung của một số ô nhớ bên cạnh trong bộ nhớ
o Active (Dynamic) NPSF – khi các ô bên cạnh thay đổi, ô lỗi bị thay đổi
o Passive NPSF – khi các ô bên cạnh thay đổi, ô lỗi không thay đổi được
trạng thái
o Static NPSF – khi các ô bên cạnh thay đổi, ô lỗi có 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ỉ
1.3.3 Các lỗi Dynamic
Recovery faults: 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 đó
o Sense amplifier recovery: bộ khuếch đại bão hòa sau khi đọc/ghi một
chuỗi dài các bit 0 hoặc 1
o Write recovery: Một lệnh ghi, theo sau đó là một lệnh đọc hoặc ghi ở
một vị trí khác nhưng đem lại kết quả là lệnh đọc hoặc ghi ở cùng vị trí Nguyên nhân là do bộ giải mã địa chỉ bị 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ớ)
Data Retention faults: bộ nhớ bị mất dữ liệu một cách tự nhiên, không do
lệnh đọc hoặc ghi
o DRAM refresh fault: Đường Refresh gặp lỗi stuck-at
o DRAM leakage fault:
Sleeping sickness – mất dữ liệu trong khoảng thời gian ngắn hơn
giá trị hold time (thông thường vài trăm us cho đến vài chục ms);
Trang 22gây ra bởi dò điện hoặc môi trường nhiễu, thường tác độ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ó khá nhiều loại thuật toán được sử dụng để kiểm tra bộ nhớ Chúng có thể được phân loại vào hai nhóm chính là thuật toán truyền thống và thuật toán March [2,3]
1.4.1 Các thuật toán truyền thống
Các thuật toán truyền thống được sử dụng rộng rãi trong quá khứ Chúng được sử dụng vì khả năng phát hiện được các lỗi không chức năng như lỗi thông
số điện Các thuật toán truyền thống cơ bản gồm có: zero-one, Checker board, and GALPAT and Walking1/0 [3]
1.4.1.1 Thuật toán Zero-one
Thuật toán này còn được biết đến với tên MSCAN (Memory Scan) Thuật toán đơn giản chỉ gồm có lệnh ghi dữ liệu toàn 0 hoặc toàn 1 vào bộ nhớ Giả mã của thuật toán như sau:
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:
Trang 23 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 được phát hiện nếu có điều kiện đảm bảo là chức năng giải mã địa chỉ phải đúng, nếu không cũng chỉ có hai ô nhớ được bảo đảm 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 là tương tự nhau Bộ nhớ được làm đầy 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ở này được dịch lần lượt qua từng vị trí của bộ nhớ Điểm khác biệt giữa GALPAT
và Walking 1/0 là khi đọc ô nhớ cơ sở với Walking 1/0, sau mỗi bước các ô nhớ đều được đọc và ô nhớ cơ sở được đọc cuối cùng Với GALPAT, tất cả các ô nhớ được đọc nhưng sau mỗi ô nhớ thì ô nhớ cơ sở cũng được đọc
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
1.4.2 Các thuật toán March
Kích thước của bộ nhớ càng ngày lớn và nhiều lỗi phức tạp xuất hiện Các thuật toán truyền thống hoặc là không đủ mạnh để phát hiện lỗi, hoặc là mất quá nhiều thời gian để chạy kiểm tra Có 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 thì việc sử dụng sẽ là không khả thi Hình 1-6 thể hiện mối liên hệ giữa độ phức tạp tính toán và thời gian kiểm tra [3]
Trang 24Hì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 trong hình 1-6, nếu bộ nhớ 1Gigabit được kiểm tra với thuật toán có độ phức tạp tuyến tính n thì thời gian kiểm tra chỉ là 1.75 phút nhưng nếu kiểm tra với thuật toán có độ phức tạp n2 thì sẽ mất 3659 năm
Vì lí do đó, một thuật toán tuyến tính theo thời gian, đủ đơn giản mà vẫn phát hiện được các lỗi SAF, TF, CF được phát triển Chúng ta gọi đó là thuật toán March Hiện nay, thuật toán March đã phát triển rất phổ biến và có rất nhiều thuật toán March biến thể mới Một số thông tin về thuật toán March được giới thiệu dưới đây [3]
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ớ
w1 lệnh ghi dữ liệu 1 từ ô nhớ
Trang 25Độ phức tạp tính toán của thuật toán March phụ thuộc số lượng lệnh có trong thuật toán Ví dụ với thuật toán có 10 lệnh đọc/ghi dữ liệu thì độ phức tạp tính toán 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+ phát hiện được tất cả lỗi SAF và AF, nó thường được
sử dụng thay cho thuật toán MATS khi kiểm tra bộ nhớ với công nghệ được sử dụng chưa rõ Độ phức tạp tính toán là 5n Kí hiệu cho MATS+ như sau
{↕(w0);↑(r0,w1);↓(r1,w0)}
b) MATS++
Thuật toán MATS++ là một thuật toán hoàn chỉnh, không dư thừa và đã được tối ưu Nó khá giống MATS+ test nhưng có thể phát hiện lỗi TF Độ phức tạp tính toán là 6n và thuật toán này được đề cử cho việc kiểm tra các lỗi unlinked SAF và TF
March C thường được dùng để phát hiện các lỗi unlinked CFid; tất nhiên
nó cũng phát hiện được các lỗi AF, SAF, unlinked TF, CFst, and unlinked CFin
Độ phức tạp tính toán của March C là 11n
{↕(w0);↑(r0,w1);↑(r1,w0);↕(r0);↓(r0,w1);↓(r1,w0);↕(r0)}
March C− phát hiện được các lỗi SAF and unlinked TF bởi vì các ô nhớ được đọc theo trạng thái 0,1,0, Do đó cả chiều chuyển trạng thái ↑ và ↓, và lệnh
Trang 26đọc sau đó đều được diễn ra March C− cũng phát hiện các lỗi CFid, CFin and CFst với sự giới hạn là các lỗi CF là không kết nối Độ phức tạp tính toán là 10n
{↕(w0);↑(r0,w1);↑(r1,w0);↓(r0,w1);↓(r1,w0);↕(r0)}
e) March A
March A là thuật toán ngắn nhất để phát hiện lỗi linked CFids; tất nhiên
nó kiểm tra được các lỗi AF, SAF, linked CFid, TF không liên kết với CFid, và lỗi CFin liên kết với CFid Chứng minh cho March A đã được hoàn thiện Độ phức tạp của nó là 15n
Trang 27Hình 1–7 Khả năng phát hiện lỗi của một số thuật toán
Và bảng 1-1 tóm tắt mô hình lỗi mà một số thuật toán phát hiện được [2]
N=‟No‟, L=‟locate‟, D=‟detect‟, LS= „locate some‟, DS=„detect some‟, TC=‟Test complexity‟
Các thuật toán được mô tả bên trên là các thuật toán tiêu biểu và được sử dụng rộng rãi Thực tế, càng nhiều thuật toán được triển khai, càng nhiều lỗi bộ
Trang 28nhớ được phát hiện Tôi đã thống kê và tìm được 42 thuật toán March Do đó trong luận văn này, tôi đề xuất kiến trúc kiểm tra bộ nhớ sử dụng đủ thông tin từ
42 thuật toán March Với số lượng thuật toán lớn như vậy, kiến trúc kiểm tra bộ nhớ này có thể phát hiện được nhiều lỗi cho nhiều loại bộ nhớ khác nhau Kiến trúc này đồng thời cũng rất linh hoạt, chúng ta có thể chọn thuật toán tốt nhất để kiểm tra cho một loại bộ nhớ nhất định
Danh sách 42 thuật toán March được sử dụng trong việc thiết kế thuật toán kiểm tra như bảng 1-2 [1,3,4,9]:
Check board March FT
Có hai vấn đề chính đối với việc kiểm tra bộ nhớ nhúng là làm thế nào để kiểm tra được các logic xung quanh bộ nhớ nhúng và chính bản thân 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)
1.5.1 Kiểm tra chức năng
Các bộ nhớ nhúng có thể được kiểm tra bằng cách kiểm tra chức năng Đây là phương pháp hiệu quả nếu hoạt động của chip truy cập trực tiếp vào các
bộ nhớ Một ví dụ là chip vi điều khiển với các chỉ thị lệnh đặc biệt để truy cập vào bộ nhớ đệm, do đó việc kiểm tra chức năng cho bộ nhớ đệm này rất đơn giản
Trang 29Ưu điểm của kỹ thuật này gồm có:
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 này sử dụng một vòng quét (scan chain) đặt tại đường biên của
bộ nhớ Một bộ ghép được sử dụng để chọn giữa các chân chức năng của bộ nhớ
và chân vòng quét Mục đích của việc này là bắt được nội dung của toàn bộ dữ liệu đầu vào và đầu ra của bộ nhớ mà không gây ảnh hưởng đến nội dung của bộ nhớ Một kiến trúc cơ bản của kỹ thuật quét đường biên như sau:
Hình 1–8 Memory boundary scan
Dữ liệu đầu vào của vòng quét là chân SDI và dữ liệu đầu ra là chân SDO Việc truy cập dữ liệu tại đầu vào và đầu ra của bộ nhớ được thực hiện theo cách dịch tuần tự
Trang 30Ưu điểm của kỹ thuật này gồm có:
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
Trong kỹ thuật này, một bộ ghép được sử dụng ở đầu vào của bộ nhớ, vài tín hiệu đầu vào chính được 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ự thế, một bộ ghép được sử dụng ở đầu ra của bộ nhớ và đầu ra của
bộ nhớ được nối trực tiếp tới đầu vào kiểm tra của bộ ghép đầu ra Một kiến trúc
cơ bản của kỹ thuật ghép cách li như sau:
Hình 1–9 Multiplexor Isolation
Trang 31Kỹ thuật này cung cấp một đường kết nối trực tiếp từ các tín hiệu đầu vào chính đến đầu vào bộ nhớ, và từ đầu ra bộ nhớ đến các tín hiệu đầu ra chính Nó
có nghĩa là các logic xung quanh đầu vào và đầu ra bộ nhớ được bỏ qua và chúng
ta có thể truy cập trực tiếp vào bộ nhớ thông qua các tín hiệu đầu vào chính và đầu ra chính
Ưu điểm của kỹ thuật này gồm có:
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 là giải pháp tốt nhất cho việc kiểm tra bộ nhớ nhúng Bộ nhớ thường được kiểm tra bằng một đoạn mã do thuật toán kiểm tra tạo ra Việc thiết kế 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 gọi là mạch logic tự kiểm tra Build-in self-test (BIST) Khối tạo dữ liệu và khối phân tích đáp ứng được điều chỉnh để phù hợp với từng bộ nhớ cần kiểm tra Một kiến trúc cơ bản của mạch logic tự kiểm tra như sau [3,5,9]:
Hình 1–10 Build-in self-test
Trang 32Với kiến trúc BIST như trên, việc kiểm tra từ bên ngoài không cần được
sử dụng Kỹ thuật này xuất phát từ ý tưởng xây dựng một thuật toán kiểm tra có khả năng phát hiện lỗi cao nhưng lại dễ dàng thiết kế ở mức mạch logic phần cứng
Ưu điểm của kỹ thuật này gồm có:
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
Qua chương giới thiệu tổng quan này, chúng ta đã biết được sự phát triển của nền công nghiệp bán dẫn, sự phức tạp của các hệ thống chip SoC và các bộ nhớ nhúng trong đó Chúng ta cũng thấy được yêu cầu bắt buộc phải có một giải pháp kiểm tra bộ nhớ để đảm bảo sự hoạt động chính xác, không có lỗi, cũng như
độ tin cậy của bộ nhớ nhúng Đồng thời chương này cũng cung cấp một số khái niệm cơ bản về bộ nhớ nhúng được sử dụng nhiều nhất hiện nay là bộ nhớ SRAM, các mô hình lỗi đã được nghiên cứu trong bộ nhớ, các thuật toán đã được xây dựng để phát hiện lỗi Đây là những khái niệm nền tảng trong lĩnh vực thiết
kế và kiểm tra bộ nhớ
Quan trọng nhất, chương này đã giới thiệu những kỹ thuật kiểm tra bộ nhớ đang được sử dụng trong giới công nghiệp bán dẫn hiện nay cùng với ưu nhược điểm của từng kỹ thuật Trong đó có kỹ thuật kiểm tra được sử dụng nhiều nhất
và phổ biến nhất hiện nay là mạch logic tự kiểm tra BIST Các ưu điểm nổi bật của BIST là không yêu cầu thiết bị kiểm tra phức tạp, giảm chi phí kiểm tra, hạn
Trang 33chế việc phát triển các phần mềm kiểm tra thủ công, thời gian kiểm tra được rút ngắn nhiều lần
Vì vậy, trong luận văn này tôi đã chọn 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ớ Thiết kế này có một số cải tiến nổi bật như:
Thiết kế sử dụng nhiều thuật toán March để kiểm tra giúp phát hiện được nhiều loại lỗi Các thuật toán được sử dụng là 42 thuật toán March đã được trình bày trong phần trên Ngoài ra, các thuật toán March tùy biến mới cũng
có thể được đưa vào mạch để kiểm tra Đây là một thiết kế rất linh hoạt
Thông tin về các thuật toán được lưu trữ bằng một cách nén dữ liệu mới do đó tiết kiệm mạch logic BIST nhưng vẫn có hiệu suất hoạt động cao Thông tin
về 42 thuật toán được nén bằng 8 đoạn mã điển hình và lưu trữ bằng hai khối ROM
Ngoài ra, thiết kế còn kết hợp với phần mềm xử lí dữ liệu giúp phân tích chính xác loại lỗi từ đó xác định được nguyên nhân gây lỗi Phần mềm mô hình hóa còn giúp cho việc kiểm tra lại thiết kế mạch BIST là chính xác
Mỗi loại bộ nhớ nhúng có một chuẩn giao tiếp riêng để thực hiện việc đọc ghi
dữ liệu Do thiết kế có thể mở rộng khối giao tiếp nên nó có khả năng làm việc, kiểm tra với các 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
Trang 34Chương 2 Triển khai thiết kế
Mạch logic tự kiểm tra lỗi bộ nhớ BIST được xem là giải pháp tốt nhất để kiểm tra các bộ nhớ nhúng trên chip Trong khuôn khổ luận văn này, tôi xin đề xuất một kiến trúc BIST tổng quát được sử dụng để kiểm tra bộ nhớ nhúng SRAM đồng bộ một cổng (synchronous single port) trên chip SoC Kiến trúc này cũng có thể được áp dụng với bất kỳ loại bộ nhớ nhúng khác như SRAM 2 cổng, DRAM, flash, …
Một kỹ thuật mới được áp dụng để nén thông tin về thuật toán March, do
đó tiết kiệm được mạch logic và không gian lưu trữ trên ROM đối với mạch BIST Thông tin về 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 này chứa nhiều thuật toán March, do đó có khả năng kiểm tra và phát hiện được nhiều loại lỗi như Stuck-at fault, stuck-open fault, transition fault, coupling faults, …
Hơn thế nữa, kiến trúc này cũng hỗ trợ để kiểm tra với những thuật toán mới Một thuật toán mới có thể được chạy bằng cách đưa các lệnh kiểm tra của
nó vào các thanh ghi chỉ dẫn thông qua các cổng đầu vào, sau đó các lệnh này được thực thi trên bộ nhớ nhúng cần kiểm tra Do đó kiến trúc BIST này rất linh hoạt
2.1.1 Sơ đồ khối tổng quát
Một chip SoC có khả năng kiểm tra bộ nhớ bởi giải pháp BIST sẽ có thiết
kế cơ bản như hình 2-1 Chip SoC sẽ gồm 1 khối điều khiển TAP Controller, khối mạch BIST và mạch giao tiếp giữa TAP Controller và BIST logic
Trang 35AMS BISTen_n
failed_pass address_failed BIST_finished
CHIP
Test Instruction Generator
Physical Signal Generator
Data Background Top
Comparator …
FSM BIST
Hình 2–1 Thiết kế chip SoC
Có rất nhiều chuẩn giao tiếp với chip SoC như RS232, USB, PCI Tuy nhiên các kĩ sư thiết kế thường chọn chuẩn giao tiếp JTAG 1149.1 vì kiến trúc này đơn giản, được chuẩn hóa, thiết kế tốn ít tài nguyên, phù hợp với việc kiểm tra Chuẩn này gồm có 5 tín hiệu trong đó có 3 tín hiệu điều khiển chip SoC là TMS, TCK và TRST, 1 đường dữ liệu vào TDI và 1đường dữ liệu ra TDO 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 khi người kĩ sư thực hiện việc kiểm tra hoạt động của một con chip Để thực hiện được việc này chip SoC cần có phần cứng tương ứng là khối điều khiển Tap Controller Khối này chịu trách nhiệm giao tiếp với các phần mềm điều khiển thông qua 5 chân tiêu chuẩn trên
Các kĩ sư kiểm tra bộ nhớ cần phải làm việc với mạch BIST như điều khiển chế độ kiểm tra, thay đổi thuật toán kiểm tra, gửi thông tin cần kiểm tra vào chip và lấy dữ liệu đã kiểm tra ra ngoài để phân tích Từ đó, một khối phục
vụ cho việc giao tiếp giữa mạch BIST và khối giao tiếp Tap Controller là khối Mem BIST interface Khối này có nhiệm vụ chuyển đổi dữ liệu được gửi từ phần mềm xuống chip SoC qua khối giao tiếp Tap Controller thành các dữ liệu phù hợp với đầu vào của mạch BIST Sau khi mạch BIST kiểm tra xong bộ nhớ, dữ liệu lại được mạch BIST gửi ra Khối này sẽ đóng gói dữ liệu theo chuẩn, đưa vào khối Tap Controller và gửi ra ngoài Phần mềm kiểm tra sẽ nhận các dữ liệu này và các kĩ sư sẽ phân tích quá trình chạy của mạch BIST Từ đó, chúng ta sẽ
Trang 36biết con chip SoC trên có lỗi trên bộ nhớ hay không, lỗi như thế nào và có thể dự đoán được nguyên nhân gây lỗi
Trong chương này, luận văn chỉ triển khai thiết kế tổng quát cho phần mạch quan trọng nhất là phần mạch BIST Sơ đồ khối tổng quát của mạch BIST như trong hình 2-2:
BIST
Test Instruction Generator
Physical Signal Generator
Data Background Top
Khối tạo dữ liệu Data Background Generator: tạo dữ liệu chuẩn để ghi vào bộ nhớ trong chu kỳ ghi và tạo dữ liệu chuẩn để so sánh với dữ liệu lấy ra từ bộ nhớ trong chu kỳ đọc
Khối So sánh Comparator: so sánh dữ liệu chuẩn lấy từ khối Data Background Generator và dữ liệu đưa ra từ bộ nhớ SRAM trong chu kỳ đọc
để phát hiện bộ nhớ có lỗi hay không
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
Trang 37Trong luận văn này, các thông số của mạch BIST được thiết kế để kiểm tra chạy thử nghiệm trên bộ nhớ SRAM một cổng đồng bộ của công ty Dolphin Technology dti_sp_tm65gplus_144x26_twt4bw1xoe_m Độ rộng bus dữ liệu của
BISTen_n I Tín hiệu khởi tạo hoạt động (mức thấp)
for SAG shift_data I Dữ liệu dịch vào cho thuật toán của
AL_LENGTH: Độ dài thuật toán = 6
ADDR_WIDTH: Độ rộng của bus địa chỉ SRAM = 25
Trang 38Algorithm Generator) chứa thông tin của 42 thuật toán March trong ROM, và PAG (Programmable Algorithm Generator) gồm các thanh ghi dịch để nhận thông tin về thuật toán March mới được gửi từ ngoài vào Khối PAG không sử dụng ROM nên nó có thể nhận bất kỳ thuật toán khác ngoài 42 thuật toán trong khối SAG Vì vậy bộ tạo chỉ thị lệnh TIG có 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 được Kiến trúc của khối TIG được mô tả như trong hình 2-3
b) Sơ đồ khối
next_element
shift_data
pattern_len up_down
Shift Register
Counter16
Data Controller
Offset Decoder
Full Adder
Trang 39shift_data I Dữ liệu dịch vào, sử dụng
trong chế độ PAG
thuật toán pattern_len[PATTERN_LENGTH-
AL_LENGTH: Độ dài thuật toán = 6
PATTERN_LENGTH: Độ dài đoạn mã = 3
Sơ đồ khối
Trang 40Offset Decoder Full Adder
Step Decoder
SA Step Counter
BIST_index
SAG_pattern_code
SAG_up_down SAG_pattern_len
Hình 2–4 Sơ đồ khối SAG
Mỗi khối nhỏ trong hình trên được mô tả như sau:
Khối Offset Decoder
Khối này sẽ tạo địa chỉ offset của mỗi thuật toán March tương ứng Đây là địa chỉ đầu tiên của vùng ROM chứa thông tin của thuật toán March đã được chọn
Khối Step Decoder
Khối này đưa ra tổng số bước kiểm tra của thuật toán March đã chọn Giá trị này sẽ cho ta biết thời gian kết thúc khi kiểm tra bộ nhớ bằng thuật toán March này
Khối SA Step Counter
Khối này đếm số bước của thuật toán March, và đưa ra giá trị cho khối Full Adder
Khối Full Adder
Khối Full Adder tính toán tổng giá trị của địa chỉ offset và bước kiểm tra hiện tại của thuật toán đã chọn, sau đó gửi thông tin về địa chỉ của bước tiếp theo đến khối P_ROM
P_ROM
Khối P_ROM là ROM chứa thông tin về mỗi thuật toán March Các thông tin của từng bước kiểm tra trong một thuật toán March bao gồm chiều kiểm tra (tăng hay giảm), độ dài của đoạn mã, và địa chỉ của phần tử tương ứng trong S_ROM