Bên cạnh đó, nhiều mô hình lỗi mới của bộ nhớ nhúng trong SoC có thể không bị phát hiện, làm cho hoạt động của SoC sau quá trình kiểm tra truyền thống không ổn định, thậm chí không thể s
Trang 2BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI
- NGUYỄN MINH DŨNG
NGHIÊN CỨU VÀ THIẾT KẾ MẠCH TỰ KIỂM TRA VÀ PHÂN TÍCH LỖI BỘ NHỚ NHÚNG VỚI GIẢI THUẬT KHẢ TRÌ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: PGS.TS PHẠM NGỌC NAM
Hà Nội – Năm 2014
Trang 3MỤC LỤC
MỤC LỤC I LỜI CAM ĐOAN IV DANH MỤC CÁC HÌNH VẼ V DANH MỤC CÁC BẢNG BIỂU VIII DANH MỤC CÁC TỪ VIẾT TẮT XI
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ớ 3
1.1 Giới thiệu 4
1.2 Mô hình lỗi của bộ nhớ 7
1.2.1 Các lỗi ô nhớ Memory Cell 10
1.2.2 Các lỗi giải mã địa chỉ (AFs) 11
1.2.3 Các lỗi Dynamic 12
1.3 Các thuật toán kiểm tra 13
1.3.1 Các thuật toán truyền thống 13
1.3.2 Các thuật toán March 14
1.4 Các kỹ thuật kiểm tra bộ nhớ 23
1.4.1 Kiểm tra chức năng 23
1.4.2 Kỹ thuật quét đường biên Boundary Scan 23
1.4.3 Kỹ thuật ghép cách li Multiplexor Isolation 25
1.4.4 Mạch logic tự kiểm tra Build-in self-test 26
1.5 Kết luận 30
Trang 4Chương 2 Triển khai thiết kế 32
2.1 Tổng quan về hệ thống 32
2.1.1 Giới thiệu 32
2.1.2 Sơ đồ khối tổng quát 32
2.2 Thiết kế mạch BISD 34
2.2.1 Tín hiệu vào ra 36
2.2.2 Khối tạo chỉ thị lệnh Test Instruction Generator 37
2.2.3 Khối tạo tín hiệu điều khiển vật lý Physical Signal Generator 46
2.2.4 Khối tạo dữ liệu Data Background Top 53
2.2.5 Khối so sánh Comparator 62
2.2.6 Khối điều khiển hoạt động chính của mạch FSM BISD 64
2.3 Thiết kế khối Tap Controller 68
2.3.1 Sơ đồ khối 68
2.3.2 Tín hiệu vào ra 69
2.3.3 Mô tả hoạt động 70
2.4 Thiết kế khối RAM BISD Interface 77
2.4.1 Sơ đồ khối 77
2.4.2 Tín hiệu vào ra 78
2.4.3 Mô tả hoạt động và các khối chính 79
Chương 3 Phần mềm mô hình hóa hoạt động mạch BISD và mô hình lỗi bộ nhớ SRAM 84 3.1 Giới thiệu về phần mềm 84
3.2 Các khối mô hình hóa 84
Trang 53.2.1 Các file dữ liệu 85
3.2.2 Mô hình lỗi 90
3.2.3 Các mô đun chính 90
3.2.4 Các File kết quả 95
Chương 4 Kết quả mô phỏng, tổng hợp mạch BISD và hướng phát triển 97
4.1 Kết quả mô phỏng 97
4.1.1 Kết quả mô phỏng mạch BISD trên QuestaSim 99
4.1.2 Kết quả mô phỏng trên phần mềm mô hình hóa 99
4.1.3 Đối chiếu kết quả 99
4.1.4 Code coverage 101
4.2 Kết quả tổng hợp 105
4.3 Kết luận 107
4.4 Hướng phát triển 108
KẾT LUẬN 110
TÀI LIỆU THAM KHẢO 112
PHỤ LỤC 114
Trang 6LỜ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 PGS.TS PHẠM NGỌC NAM, đã 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ả
Nguyễn Minh Dũng
Trang 7DANH MỤC CÁC HÌNH VẼ
Hình 1-1 Kiến trúc chung SoC dựa trên các khối nhúng 4
Hình 1-2 Dự báo về diện tích bộ nhớ nhúng trên chip SoC 5
Hình 1-3 Mô hình chức năng bộ nhớ SRAM 8
Hình 1-4 Mô hình chức năng rút gọn của bộ nhớ SRAM 8
Hình 1-5 Mô hình lỗi 9
Hình 1-6 So sánh độ phức tạp tính toán và thời gian kiểm tra 15
Hình 1-7 Khả năng phát hiện lỗi của một số thuật toán 19
Hình 1-8 Đánh giá thời gian kiểm tra của thuật toán March Cocktail 22
Hình 1-9 Memory boundary scan 24
Hình 1-10 Multiplexor Isolation 25
Hình 1-11 Kiến trúc mạch Build-in self-test 26
Hình 1-12 Kiến trúc mạch BISD 27
Hình 1-13 Thanh ghi EOP 28
Hình 1-14 Từ điển cấu trúc thông tin lỗi với thuật toán March-17N 28
Hình 1-15 Sơ đồ khối mạch BISD 29
Hình 1-16 Sơ đồ khối mạch BISR sử dụng Fuse Macro 30
Hình 2-1 Thiết kế chip SoC hỗ trợ mạch BISD 33
Hình 2-2 Sơ đồ khối mạch BISD 34
Hình 2-3 Sơ đồ khối TIG 37
Hình 2-4 Sơ đồ khối SAG 39
Hình 2-5 Giản đồ thời gian khối SAG 40
Hình 2-6 Khối SA Step Counter 41
Trang 8Hình 2-7 Sơ đồ khối SAG ROM 42
Hình 2-8 Sơ đồ khối PAG 43
Hình 2-9 Giản đồ thời gian khối PAG 44
Hình 2-10 Cấu trúc của thanh ghi shift_data 44
Hình 2-11 Cấu trúc FIFO 45
Hình 2-12 Sơ đồ thuật toán khối PAG 46
Hình 2-13 Giản đồ thời gian đọc ghi Dolphin SP SRAM 47
Hình 2-14 Sơ đồ khối Physical Signal Generator 48
Hình 2-15 Giản đồ thời gian khối Physical Signal Generator 50
Hình 2-16 Sơ đồ khối Physical Counter 50
Hình 2-17 Thuật toán khối Physical Counter 52
Hình 2-18 Bảng dữ liệu không đảo chuẩn và dữ liệu đảo chuẩn 53
Hình 2-19 Sơ đồ khối Data Background Top 56
Hình 2-20 Sơ đồ khối Data Background Monitor 58
Hình 2-21 Giản đồ thời gian khối Data Background Generator 59
Hình 2-22 Sơ đồ khối Data Background Generator 61
Hình 2-23 Thuật toán khối Data Background Generator 61
Hình 2-24 Sơ đồ khối Comparator 62
Hình 2-25 Thuật toán khối Comparator 63
Hình 2-26 Cấu trúc thông tin lỗi BISD_syndrome 64
Hình 2-27 Giản đồ thời gian khối Comparator 64
Hình 2-28 Các trạng thái của FSM BISD 66
Hình 2-29 Sơ đồ khối TAP Controller 68
Trang 9Hình 2-30 Sơ đồ khối chi tiết TAP Controller 70
Hình 2-31 Máy trạng thái FSM TAP Controller 71
Hình 2-32 Sơ đồ khối Instruction Register 72
Hình 2-33 Sơ đồ khối Instruction Decoder 73
Hình 2-34 Sơ đồ khối Bypass Register 74
Hình 2-35 Sơ đồ khối ID Register 75
Hình 2-36 Sơ đồ khối BISD_in Register 75
Hình 2-37 Sơ đồ khối BISD_out Register 76
Hình 2-38 Sơ đồ khối RAM BISD Interface 77
Hình 2-39 Sơ đồ kiến trúc khối RAMBISD Interface 79
Hình 2-40 Sơ đồ khối async_cmp 80
Hình 2-41 Sơ đồ khối wptr_full 80
Hình 2-42 Sơ đồ khối rptr_empty 81
Hình 2-43 Sơ đồ khối fifomem 82
Hình 3-1 Thiết kế của phần mềm mô hình hóa 84
Hình 3-2 Mô hình giải thuật cho BISD 94
Hình 4-1 Mô hình kiểm tra từng khối 97
Hình 4-2 Mô hình kiểm tra toàn bộ mạch BISD 98
Hình 4-3 Phần mềm mô hình hóa 99
Hình 4-4 Mô hình đối chiếu kết quả 100
Trang 10DANH MỤC CÁC BẢNG BIỂU
Bảng 1-1 Ký hiệu các lỗi trong mảng ô nhớ của bộ nhớ nhúng 9
Bảng 1-2 Bảng các lỗi giải mã địa chỉ 12
Bảng 1-3 Bảng các ký hiệu sử dụng trong các thuật toán March 16
Bảng 1-4 Bảng danh sách 42 thuật toán March cơ bản 18
Bảng 1-5 Khả năng phát hiện lỗi của một số thuật toán March cơ bản kiểm tra bộ nhớ theo từng bit 18
Bảng 1-6 Kết quả mô phỏng thuật toán MATS++ theo word với nhiều dữ liệu chuẩn 20
Bảng 1-7 Kết quả mô phỏng thuật toán March C- theo word với nhiều dữ liệu chuẩn 20
Bảng 2-1 I/O mạch BISD 36
Bảng 2-2 I/O khối TIG 38
Bảng 2-3 I/O khối SAG 40
Bảng 2-4 I/O khối PAG 43
Bảng 2-5 I/O khối Physical Signal Generator 49
Bảng 2-6 I/O khối Physical Counter 51
Bảng 2-7 Dữ liệu không đảo chuẩn 55
Bảng 2-8 Bảng dữ liệu cho độ rộng bus 32 bit 56
Bảng 2-9 I/O khối Data Background Top 57
Bảng 2-10 I/O khối Data Background Monitor 59
Bảng 2-11 I/O khối Comparator 63
Bảng 3-1 Bảng các file dữ liệu trong phần mềm mô hình hóa 85
Bảng 3-2 Các thuộc tính của cell 87
Trang 11Bảng 3-3 Hành vi của cell 87
Bảng 3-4 Các thuộc tính của lỗi 87
Bảng 3-5 Các loại lỗi 88
Bảng 3-6 Hành vi của lỗi hàng/cột 88
Bảng 3-7 Định dạng chuỗi TDO 89
Bảng 3-8 Các nhóm lỗi 90
Bảng 3-9 Các thuộc tính của cell 91
Bảng 3-10 Các thuộc tính lớp cơ sở Fault 92
Bảng 3-11 Các thuộc tính lớp AF (mở rộng từ lớp Fault) 92
Bảng 3-12 Các thuộc tính lớp CFid (mở rộng từ lớp Fault) 92
Bảng 3-13 Các thuộc tính lớp ColF (mở rộng từ lớp Fault) 92
Bảng 3-14 Các thuộc tính lớp RowF (mở rộng từ lớp Fault) 92
Bảng 3-15 Các thuộc tính lớp SAF (mở rộng từ lớp Fault) 92
Bảng 3-16 Các thuộc tính lớp CellInfo 93
Bảng 4-1 Kết quả file Log.txt 101
Bảng 4-2 Code coverage khối CORE BISD 102
Bảng 4-3 Code coverage khối TIG 102
Bảng 4-4 Code coverage khối SAG 102
Bảng 4-5 Code coverage khối SAG Step Counter 102
Bảng 4-6 Code coverage khối SAG Rom 103
Bảng 4-7 Code coverage khối PAG 103
Bảng 4-8 Code coverage khối Data Background Top 103
Bảng 4-9 Code coverage khối Data Background Generator 103
Trang 12Bảng 4-10 Code coverage khối Data Background Monitor 104
Bảng 4-11 Code coverage khối Physical Signal Generator 104
Bảng 4-12 Code coverage khối Physical Counter 104
Bảng 4-13 Code coverage khối Comparator 104
Bảng 4-14 Kết quả tổng hợp mach BISD với bộ nhớ SRAM Dolphin dti_sp_tm65gplus_144x26_twt4bw1xoe_m 105
Bảng 4-15 Kết quả tổng hợp mach BISD với bộ nhớ SRAM Dolphin dti_sp_tm65gplus_512x256_twt4bw1xoe_m 106
Bảng 4-16 Kết quả tổng hợp mach BISD với bộ nhớ SRAM Dolphin dti_sp_tm65gplus_1024x288_twt4bw1xoe_m 106
Trang 13DANH MỤC CÁC TỪ VIẾT TẮT
ATPG Automatic test pattern generation
BIRA Built-in Redundancy Analysis
BISD Built-in self-diagnosis
CFid Idempotent coupling fault
CFin Inversion coupling fault
NPSF Neighborhood Pattern Sensitive Fault PAG Programable Algorithm Generator
Trang 14SIA Semiconductor Industry Association
TIG Test Instruction Generator
VLSI Very large scale integration
Trang 15PHẦN MỞ ĐẦU
Sự phát triển nhanh chóng về số lượng và chủng loại bộ nhớ nhúng trong SoC khiến việc kiểm tra bộ nhớ nhúng trở thành một vấn đề quan trọng, không thể thiếu trong quá trình kiểm tra SoC Quy trình công nghệ càng hiện đại, mật
độ tích hợp càng cao, kích thước bộ nhớ nhúng trong SoC càng được thu nhỏ, tuy nhiên số lượng lỗi có thể tăng lên rất lớn Điều này gây ảnh hưởng rất lớn đến quá trình sản xuất SoC ở giai đoạn sản xuất ban đầu của một quy trình công nghệ mới, rất nhiều SoC có bộ nhớ có lỗi và cần phải loại bỏ nếu bị phát hiện trong quá trình kiểm tra Điều này khiến hiệu suất giảm, kéo theo đó là giá thành SoC cao Bên cạnh đó, nhiều mô hình lỗi mới của bộ nhớ nhúng trong SoC có thể không bị phát hiện, làm cho hoạt động của SoC sau quá trình kiểm tra truyền thống không ổn định, thậm chí không thể sử dụng được trong thực tế
Do đó, một vấn đề rất quan trọng và cần được đẩy mạnh là làm thế nào để kiểm tra, phân tích và dự đoán được lỗi trong các bộ nhớ nhúng của SoC Từ đó, các kĩ sư thiết kế có thể sớm xác định được cá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 không có lỗi sẽ hoạt độ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
Tới thời điểm hiện nay, nhiều phương pháp kiểm tra bộ nhớ đã được đưa
ra Tuy nhiên, khi cân nhắc đến vấn đề chi phí và khả năng kiểm tra, 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ớ Luận văn này nghiên cứu và đưa ra một thiết kế mạch logic tự kiểm tra và phân tích lỗi cho bộ nhớ nhúng (BISD) với một số cải tiến mới Thiết kế trong luận văn 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 Mạch BISD hỗ trợ hai cơ chế kiểm tra lỗi trong bộ nhớ, cơ chế thứ nhất lưu trữ bên trong mạch một thuật toán mặc định và
cơ chế thứ hai là truyển thuật toán vào từ bên ngoài qua chuẩn JTAG 1149.1 Thông tin về các thuật toán được thống kê và xử lý để có thể truyền vào mạch BISD một cách hiệu quả nhằm tiết kiệm diện tích mạch logic BISD nhưng vẫn có
Trang 16hiệu suất hoạt động và khả năng linh hoạt 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 BISD phù hợp với nhiều loại bộ nhớ nhúng Tuy nhiên trong khuôn khổ luận văn, thiết kế mạch BISD phù hợp để kiểm tra SRAM, bộ nhớ nhúng phổ biến nhất trong SoC được lựa chọn để triển khai thiết
kế
Trang 17Chươ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ớ
Ngay từ đầu những năm 1960, các nghiên cứu về kiểm tra bộ nhớ bán dẫn
đã xuất hiện, đi cùng với sự phát triển của nền công nghiệp vi mạch bán dẫn 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 của các nghiên cứu này Sự ra đời của SoC đặt ra những vấn đề mới cho các nhà nghiên cứu Số lượng và diện tích của các bộ nhớ nhúng trong SoC tăng lên rất nhanh chóng Do đó, sản lượng của các bộ nhớ trên chip 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 SoC Bên cạnh đó, 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 Việc chẩn đoán lỗi một cách hiệu quả và các phương pháp phân tích lỗi của
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
Chương này của luận văn 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, mạch tự kiểm tra bộ nhớ Memory Built-in self-test (BIST) cũng sẽ được trình bày một cách khái quát trong chương này 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 181.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 đã hướng sự quan tâm đến các giải pháp SoC Đó là xu hướng thiết kế các hệ thống điện tử bao gồm các vi xử lý, các mạch giao tiếp, mạch tương tự, DSP và bộ nhớ vào trong một chip đơn Các SoC tích hợp một số lượng rất lớn các khối chức năng đã từng đứng độc lập trước đó trong các bảng mạch có kích thước lớn hơn cả chục lần so với kích thước của SoC Việc kết hợp các chức năng này vào một chip đơn hiển nhiên làm giảm kích thước của chip Đây là một ưu điểm quan trọng của các thiết bị điện tử cần phải nhỏ và nhẹ trong các thiết bị di động Ngoài ra, các SoC còn có hiệu suất hoạt động cao hơn nhưng tiêu thụ điện năng ít hơn Khi tất cả các khối nhỏ được tích hợp vào trong chip đơn, số lượng giao tiếp giữa các chip cũng giảm đi rất nhiều Kiến trúc chung của SoC ngày nay được thiết kế dựa trên các khối chức năng nhúng được biểu diễn như hình sau [9]
Hình 1-1 Kiến trúc chung SoC dựa trên các khối nhúng
Các bộ nhớ là các thành phần có vai trò ngày càng quan trọng trong các sản phẩm truyền thông, không dây và trong máy tính Trước đây, các IC có các chức năng riêng biệt được hỗ trợ bộ nhớ nằm ngoài Hiện nay, các bộ nhớ nhúng
Trang 19được ứng dụng vào máy tính và các sản phẩm truyền thông (bao gồm cả các thiết
bị cho mạng di động, thiết bị cầm tay và các thiết bị cho phép kết nối mạng Internet) yêu cầu băng thông lớn hơn, kích thước nhỏ hơn, tiêu thụ ít năng lượng hơn, hiệu suất hoạt động cao hơn và có nhiều chức năng hơn Do đó, bộ nhớ nhúng càng trở nên quan trọng hơn
Thông thường bộ nhớ nhúng chiếm từ 30% đến 50% diện tích 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 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-1 [4]
Hình 1-2 Dự báo về diện tích bộ nhớ nhúng trên chip SoC
Do xu hướng nà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 Bênh cạnh đó, việ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ả đò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
Trang 20ngoạ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 [6] 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 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
Tuy nhiên, 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ự
Trang 21độ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ộ
Để kiểm tra hoạt động chức năng của mạch, ta thường mô tả các đặc điểm của mạch 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, 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 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 chức năng của bộ nhớ SRAM, thường thấy trong các tài liệu hướng dẫn của nhà sản xuất, bao gồm nhiều khối Mô hình chức năng được sử dụng phổ biến có thể thấy như Hình 1-2 [1] Mỗi khối trong mô hình này thực hiện một chức năng riêng và có thể có lỗi, lỗi trong một số khối khác nhau có thể gây ra cùng một hành vi lỗi
Trang 22Address Latch Column Decoder
Memory cell array Row
Data in
Read/write and chip enable
Hình 1-3 Mô hình chức năng bộ nhớ SRAM
Với mục đích mô hình lỗi, mô hình chức năng có thể được đơn giản hóa thành mô hình chức năng rút gọn như Hình 1-3 [1] Mô hình bao gồm Khối giải
mã địa chỉ Address Decoder (rút gọn từ các khối A, B, C ở Hình 1-2), Khối Mảng ô nhớ Memory cell array, và Khối logic đọc/ghi (rút gọn từ các khối E, F,
G ở Hình 1-2)
Address decoder
Memory cell array
Read/write logic Address
Data
Hình 1-4 Mô hình chức năng rút gọn của bộ nhớ SRAM
Trang 23Mô hình lỗi chức năng có thể được phân loại như hình 1-4 [2,6]
Mô hình lỗi chức năng bộ nhớ
Lỗi ô nhớ (Memory Cell)
Lỗi dynamic (Dynamic Faults)
Lỗi giải mã địa chỉ (Address Decoder Faults) Hình 1-5 Mô hình lỗi
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 [6]:
Bảng 1-1 Ký hiệu các lỗi trong mảng ô nhớ của bộ nhớ nhúng
↑ Sự chuyển đổi tăng của một ô nhớ (liên quan đến lệnh ghi)
↓ Sự chuyển đổi giảm của một ô nhớ
↕ Sự chuyển đổi tăng hoặc giảm của một ô nhớ
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
- 0 ≤ i ≤ m−1, Si ∈ {0, 1, ↑, ↓, ↕}
Trang 241.2.1 Các lỗi ô nhớ Memory Cell
Nhiều lỗi có thể xảy ra trong mảng ô nhớ Chúng có thể được phân loại thành các lỗi chỉ xảy ra ở một ô nhớ (SAF, SOF, TF, DRF, RDF) và các lỗi mà một ô nhớ hoặc một nhóm các ô nhớ ảnh hưởng tới hành vi của một ô nhớ khác (CF, BF, NPSF) Các lỗi ô nhớ Memory Cell được phân loại thành các nhóm lỗi chính như sau [1,2,6]:
1.2.1.1 Lỗi xảy ra ở một ô nhớ hoặc một hàng
a) Lỗi không thay đổi giá trị (SAF)
Giá trị của một ô nhớ hoặc một hàng luôn luôn là 0 (SA0) hoặc luôn luôn
là 1 (SA1) Ký hiệu <∀/1> minh họa lỗi SA1 và ký hiệu <∀/0> minh họa lỗi SA0
b) Lỗi không truy cập được (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ở
c) Lỗi không chuyển trạng thái (TF)
Một ô nhớ không chuyển được trạng thái 0 → 1 (lỗi <↑/0> TF) hoặc trạng thái 1 → 0 (lỗi <↓/1>)
d) Lỗi mất dữ liệu (DRF)
DRF là lỗi 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 DRF có thể bị gây ra bởi một phần tử mạch kéo lên bị hỏng (hoặc mở) trong một ô nhớ Có hai loại lỗi DRF khác nhau (chúng có thể xuất hiện đồng thời trong một ô nhớ đơn): <1T/0> và <0T/1>
e) Lỗi nhiễu trong quá trình đọc (RDF)
Giá trị một ô nhớ bị đảo khi được đọc (quá trình lặp lại)
1.2.1.2 Lỗi giữa các ô nhớ
a) Lỗi một ô nhớ hoặc một hàng ảnh hưởng tới một ô nhớ hoặc một hàng khác (CF)
Trang 25Lỗi đảo giá trị (CFin) – Sự chuyển trạng thái của một ô nhớ làm một ô nhớ
khác bị đảo giá trị Có hai loại lỗi CFin: <↑/↕> hoặc <↓/↕> Giữa một cặp hai
ô nhớ bất kỳ, cả hai loại lỗi có thể tồn tại đồng thời
Lỗi chuyển trạng thái (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 (0 hoặc 1) Có 4 loại lỗi CFid khác nhau: <↑; 1/0>, <↑; 0/1>, <↓; 1/0>, hoặc <↓; 0/1>
Lỗi trạng thái (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 Giữa hai ô nhớ hoặc hai hàng, có 4 loại lỗi CFst khác nhau: <0; 0/1>,
<1; 0/1>, <0; 1/0>, hoặc <1; 1/0>
b) Lỗi ngắn mạch (BF)
Ngắn mạch giữa hai ô nhớ (có thể là loại AND hoặc OR)
c) Lỗi ảnh hưởng của các ô nhớ lân cận nhau (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ớ
Active (Dynamic) NPSF – khi các ô bên cạnh thay đổi, ô lỗi bị thay đổi Passive NPSF – khi các ô bên cạnh thay đổi, ô lỗi không thay đổi được trạng
thái
Static NPSF – khi các ô bên cạnh thay đổi, ô lỗi có một giá trị xác định
1.2.2 Các lỗi giải mã địa chỉ (AFs)
Các lỗi này xuất hiện trong bộ giải mã địa chỉ Address Decoder với giả sử rằng AFs không thay đổi bộ giải mã trong mạch logic tuần tự và sẽ giữ nguyên trong các quá trình đọc và ghi
Trang 26Bảng 1-2 Bảng các lỗi giải mã địa chỉ
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, 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 27gâ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ác thuật toán được sử dụng để kiểm tra bộ nhớ 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,6]
1.3.1 Các thuật toán truyền thống
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 [6]
1.3.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ớ Do đó,
nó 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.3.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 đượ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át hiện được tất cả lỗi TF và CF
Trang 281.3.1.3 Thuật toán GALPAT và Walking 1/0
Thuật toán GALPAT (GALloping PATtern) và Walking 1/0 tương tự nhau Ngoại trừ một ô nhớ cơ sở duy nhất chứa dữ liệu bit 1 (hoặc 0), tất cả các ô nhớ còn lại trong bộ nhớ chứa dữ liệu bit 0 (hoặc 1) 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 TF được đánh dấu
Tất cả lỗi CFid được đánh dấu
1.3.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-5 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 [2]
Trang 29Hình 1-6 So sánh độ phức tạp tính toán và thời gian kiểm tra
Theo hình 1-5, nếu bộ nhớ có kích thước 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 đó, các 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à các 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 [6]
Một thuật toán March bao gồm một chuỗi các phần tử March Một phần tử March bao gồm một chuỗi các lệnh được thực hiện lần lươt trên từng ô nhớ của
bộ nhớ Một lệnh có thể bao gồm việc ghi 0 vào một ô nhớ (w0), ghi 1 vào một ô nhớ(w1), đọc một ô nhớ với giá trị mong đợi 0 (r0), và đọc một ô nhớ với giá trị mong đợi 1 (r1) Sau khi tất cả các lệnh của một phần tử March đã được thực hiện trên một ô nhớ xác định, chúng sẽ được thực hiện với ô nhớ tiếp theo Địa chỉ của ô nhớ tiếp theo được xác định bởi thứ tự địa chỉ, có thể có hai thứ tự địa chỉ: thứ tự địa chỉ tăng từ địa chỉ 0 tới n-1 được mô tả bởi ký hiệu ↑, và thứ tự địa
Trang 30chỉ giảm dần được mô tả bởi ký hiệu ↓ Khi thứ tự địa chỉ không cần xét đến, ký hiệu ↕ được sử dụng Ở đây, n mô tả tổng số địa chỉ
Độ 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
Các thuật toán March sử dụng các ký hiệu được liệt kê trong bảng dưới đây:
Bảng 1-3 Bảng các ký hiệu sử dụng trong các thuật toán March
↑ Đị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 lên ô nhớ w1 Lệnh ghi dữ liệu 1 lên ô nhớ
1.3.2.1 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,6,7,12]
Trang 31b) MATS+ - 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);↕(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 đọ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)}
d) March A - March B
March A là thuật toán ngắn nhất để phát hiện lỗi linked CFids bên cạnh 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 March A đã được chứng minh là hoàn thiện Độ phức tạp của nó là 15n
{↕(w0);↑(r0,w1,w0,w1);↑(r1,w0,w1);↓(r1,w0,w1,w0);↓(r0,w1,w0)}
Thuật toán March B là mở rộng của March A, nó phát hiện thêm được lỗi
TF liên kết với CFin hoặc CFid Để làm được điều này, phần tử M1 của March A được mở rộng thêm hai lệnh đọc vì lỗi TF không thể bị che bởi lỗi CF khi không
có lệnh ghi đến ô nhớ khác Độ phức tạp thuật toán là 17n
Trang 32{↕(w0);↑(r0,w1,r1,w0,r0,w1);↑(r1,w0,w1);↓(r1,w0,w1,w0);↓(r0,w1,w0)}
e) Khả năng phát hiện lỗi của các thuật toán March cơ bản
Danh sách 42 thuật toán March cơ bản được sử dụng trong việc thiết kế thuật toán kiểm tra được liệt kê trong Bảng 1-4 [1,6,7,14]
Bảng 1-4 Bảng danh sách 42 thuật toán March cơ bản
March Y SOA-March B March UD March G+
March B SOA-March C- March UD- March PS
Check board March FT
Bảng 1-5 Khả năng phát hiện lỗi của một số thuật toán March cơ bản kiểm tra bộ nhớ theo từng bit
để phát hiện các lỗi CF Ngoài ra, các thuật toán March cũng không được chủ
Trang 33định phát triển để phát hiện các lỗi SOF Mặc dù khả năng phát hiện lỗi SOF và các lỗi CF có thể tính bằng tay được nhưng rất khó khăn và tốn nhiều thời gian
Vì số lượng mô hình lỗi và giải thuật kiểm tra ngày càng tăng nên việc tính toán bằng tay không phải là một phương pháp tốt để dự đoán khả năng phát hiện lỗi
Hiệu suất việc kiểm tra bộ nhớ của các thuật toán March cơ bản so với các thuật toán truyền thống là rất lớn và có thể thấy ở hình 1-6 Kết quả này thu được dựa trên việc kiểm tra bộ nhớ SRAM 16-Kbit [1,9] Những kết quả này áp dụng chỉ với các bộ nhớ được kiểm tra Tuy nhiên, do sự tương đồng giữa các công nghệ SRAM khác nhau và các thiết kế mạch, các kết quả có thể được sử dụng cho bộ nhớ SRAM nói chung
Hình 1-7 Khả năng phát hiện lỗi của một số thuật toán
1.3.2.2 Thuật toán March Cocktail
a) Giới thiệu
Các mô hình lỗi chức năng được sử dụng cho bộ nhớ cần kiểm tra bao gồm SAF, TF, AF, CFin, CFid, CFst… Tuy nhiên, để có thể dự đoán lỗi, cần phải biết không chỉ các địa chỉ lỗi mà cả nguyên nhân gây ra lỗi Các mô hình lỗi càng chi tiết thì càng nhiều hành vi chi tiết được xác định
Trang 34Đối với việc kiểm tra bộ nhớ theo word, dữ liệu chuẩn không chỉ ảnh hưởng đến khả năng phát hiện lỗi mà cả thời gian kiểm tra, do đó, việc kết hợp
dữ liệu chuẩn cần được tính toán tỉ mỉ Ví dụ với bộ nhớ có độ rộng word bằng 4,
ta sử dụng các dữ liệu chuẩn 0000 (P1), 0101 (P2), 0011 (P3), 0110 (P4), 0001 (P5), 0010 (P6), 0100 (P7), và 1000 (P8) Việc mô phỏng với hai thuật toán MATS++ (6N) và March C- (10N) với tất cả kết hợp của các dữ liệu chuẩn này đưa ra kết quả ở các bảng dưới đây Trong các bảng này, kí hiệu Pi,j là kết hợp 2
dữ liệu chuẩn Pi hoặc Pj, kí hiệu Pi|Pj là mô phỏng với dữ liệu chuẩn Pi hoặc Pj Bảng 1-6 Kết quả mô phỏng thuật toán MATS++ theo word với nhiều dữ liệu chuẩn
Bảng 1-7 Kết quả mô phỏng thuật toán March C- theo word với nhiều dữ liệu chuẩn
Từ hai bảng 1-6 và 1-7, ta thấy việc sử dụng nhiều dữ liệu chuẩn có thể tăng đáng kể khả năng kiểm tra lỗi CF của thuật toán MATS++ nhưng cải thiện tương đối ít đối với thuật toán March C- Điều này có thể lí giải bởi bản thân thuật toán March C- với 1 dữ liệu chuẩn có thể phát hiện tất cả các lỗi CF giữa các word khác khau, việc sử dụng thêm dữ liệu chuẩn chỉ phát hiện thêm một phần rất nhỏ các lỗi khác, ví dụ như lỗi bên trong một word của bộ nhớ
Trang 35Có thể dễ dàng nhận ra rằng, việc sử dụng thêm các dữ liệu chuẩn có thể khiến khả năng phát hiện lỗi được cải thiện, tuy nhiên, nó kéo theo thời gian kiểm tra cũng tăng lên Số lượng dữ liệu chuẩn được sử dụng tương ứng với số lần tăng lên của thời gian kiểm tra Dựa trên kết quả mô phỏng của hai thuật toán MATS++ và March C-, ta thấy rằng sử dụng một thuật toán tốt với ít dữ liệu chuẩn vẫn tốt hơn sử dụng một thuật toán có khả năng phát hiện lỗi kém với nhiều dữ liệu chuẩn
Một phương pháp được sử dụng rộng rãi để kiểm tra bộ nhớ theo word là
sử dụng các giải thuật kiểm tra bộ nhớ theo bit với nhiều dữ liệu chuẩn khác nhau
và số lượng dữ liệu chuẩn cần thiết phải từ logw+1 trở lên, với w là độ rộng word của bộ nhớ Phương pháp này dẫn tới việc nghiên cứu sử dụng các thuật toán March nào và sự kết hợp những dữ liệu chuẩn nào để vừa phát hiện được đầy đủ các lỗi trong bộ nhớ trong khi làm giảm tối đa thời gian cần thiết để kiểm tra bộ nhớ Đây chính là lý do thuật toán March Cocktail ra đời
Thuật toán March C- với một dữ liệu chuẩn (P1) có thể phát hiện hầu hết các lỗi, do đó, nó được chọn làm cơ sở để phát triển thành thuật toán March Cocktail Nó bao gồm khả năng của một số thuật toán March truyền thống, và mỗi thuật toán chạy với một dữ liệu chuẩn riêng [3]
b) Mô tả thuật toán
Thuật toán March Cocktail được sử dụng để kiểm tra word trong bộ nhớ
Do đó, chiều dài chuỗi kiểm tra của nó phụ thuộc vào số lượng bit của dữ liệu chuẩn
Trang 36c) Đánh giá thuật toán March Cocktail
Kết quả thu được là tất cả các lỗi trên có thể kiểm tra hoàn toàn và hiệu quả sử dụng thuật toán March-CW [3] Việc sử dụng hai dữ liệu chuẩn P2 và P3 với các kết hợp khác nhau và được sử dụng để mô phỏng với các thuật toán đang tồn tại cho kết quả được so sánh với thuật toán March Cocktail như hình dưới đây
Hình 1-8 Đánh giá thời gian kiểm tra của thuật toán March Cocktail
Từ hình 1-6, ta thấy rằng sử dụng kết hợp các thuật toán March đang tồn tại với các dữ liệu chuẩn khác nhau, khả năng kiểm tra lỗi đầy đủ bởi một giải thuật kiểm tra ngắn hơn, với thời gian kiểm tra ngắn hơn Thuật toán March Cocktail có kế quả tốt nhất Với bộ nhớ có độ rộng word bằng 4, thuật toán March Cocktail giảm 39% thời gian kiểm tra so với thuật toán March C- mở rộng với nhiều dữ liệu chuẩn
1.3.2.3 Tổng kết
Trên đây 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ộ nhớ được phát hiện Thuật toán March mới được nghiên cứu (March Cocktail) cùng với 42 thuật toán March cơ bản đã được thống kê và sử dụng trong thực tế 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à thuật toán March Cocktail này được đề xuất Với số lượng thuật toán
có thể hỗ trợ lớn như vậy, kiến trúc kiểm tra bộ nhớ này có thể phát hiện được
Trang 37nhiều lỗi cho nhiều loại bộ nhớ khác nhau Kiến trúc này đồng thời cũng tạo ra sự linh hoạt trong việc lựa chọn thuật toán tốt nhất để kiểm tra cho một loại bộ nhớ nhất định
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à 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.4.1 Kiểm tra chức năng
Các bộ nhớ nhúng đượ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
1.4.1.1 Ưu điểm của kỹ thuật này bao gồm:
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ớ testing
at-speed-1.4.1.2 Nhược điểm của kỹ thuật này bao gồm:
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.4.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ớ
Trang 38và 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-9 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 bằng cách dịch tuần tự
1.4.2.1 Ư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ớ
1.4.2.2 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ớ
Trang 391.4.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-10 Multiplexor Isolation
Kỹ 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
1.4.3.1 Ưu điểm của kỹ thuật này bao gồm:
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ớ testing
at-speed-1.4.3.2 Nhược điểm của kỹ thuật này bao gồm:
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
Trang 401.4.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 [6,8,14]:
Hình 1-11 Kiến trúc mạch Build-in self-test
Vớ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
1.4.4.1 Ưu điểm của kỹ thuật này bao gồm:
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ớ testing
at-speed- 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