1. Trang chủ
  2. » Luận Văn - Báo Cáo

Kiểm chứng thuộc tính khoảng bằng các công cụ giải bài toán mức word

99 12 0

Đang tải... (xem toàn văn)

Tài liệu hạn chế xem trước, để xem đầy đủ mời bạn chọn Tải xuống

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

Định dạng
Số trang 99
Dung lượng 3,55 MB

Các công cụ chuyển đổi và chỉnh sửa cho tài liệu này

Nội dung

1.1 Vai trò của kiểm chứng trong thiết kế vi mạch Để có thể thiết kế được các mạch tích hợp có độ phức tạp lớn một yêu cầu tiên quyết là các nhà khoa học phải làm chủ được các công nghệ

Trang 1

BỘ GIÁO DỤC VÀ ĐÀO TẠO TRƯỜNG ĐẠI HỌC BÁCH KHOA HÀ NỘI

-

NGUYỄN SƠN LÂM

KIỂM CHỨNG THUỘC TÍNH KHOẢNG BẰNG CÁC CÔNG CỤ GIẢI BÀI TOÁN MỨC WORD

LUẬN VĂN THẠC SĨ KHOA HỌC CHUYÊN NGÀNH KỸ THUẬT ĐIỆN TỬ

NGƯỜI HƯỚNG DẪN KHOA HỌC:

TS NGUYỄN ĐỨC MINH

Hà Nội – 2015

Trang 2

LỜI CẢM ƠN

Tôi xin gửi lời cảm ơn chân thành và sâu sắc nhất tới thầy giáo TS Nguyễn Đức Minh, người đã trực tiếp hướng dẫn tôi tận tình trong thời gian nghiên cứu và hoàn thiện luận văn này

Tôi cũng xin được gửi lời cảm ơn tới tập thể các thầy, cô giáo của Viện Điện tử - Viễn thông, trường Đại học Bách Khoa Hà Nội đã tận tình giúp đỡ tôi trong suốt thời gian học tập và nghiên cứu tại trường

Một lần nữa tôi xin trân trọng cảm ơn tất cả các thầy cô giáo, gia đình, bạn bè, đồng nghiệp đã giúp đỡ và ủng hộ tôi trong thời gian qua Xin kính chúc các thầy cô giáo, các anh chị và các bạn mạnh khỏe, hạnh phúc và thành công

Hà Nội, ngày 22 tháng 12 năm 2015

Tác giả luận văn

Nguyễn Sơn Lâm

Trang 3

LỜI CAM ĐOAN

Tôi xin cam đoan: Bản luận văn tốt nghiệp này là công trình nghiên cứu thực sự của cá nhân, được thực hiện trên cơ sở nghiên cứu lý thuyết, thực tế dưới sự hướng dẫn của Tiến sỹ Nguyễn Đức Minh, Viện Điện tử - Viễn Thông, Trường Đại học Bách Khoa Hà Nội

Các số liệu, kết luận của luận án là trung thực, dựa trên sự nghiên cứu, của bản thân, chưa từng được công bố dưới bất ký hình thức nào trước khi trình, bảo vệ trước “Hội đồng đánh giá luận văn thạc sỹ khoa học” Các số liệu, kết quả, kết luận được tôi tham khảo đã được trích dẫn nguồn đầy đủ

Một lần nữa tôi xin khẳng định về sự trung thực của lời cam kết trên

Hà Nội, ngày 22 tháng 12 năm 2015

Tác giả luận văn

Nguyễn Sơn Lâm

Trang 4

MỤC LỤC

MỤC LỤC 1

DANH SÁCH TỪ VIẾT TẮT 4

DANH SÁCH HÌNH VẼ 5

MỞ ĐẦU 7

CHƯƠNG 1 GIỚI THIỆU KIỂM CHỨNG VI MẠCH 10

1.1 Vai trò của kiểm chứng trong thiết kế vi mạch 10

1.2 Phân loại lỗi và các loại kiểm chứng vi mạch 13

1.3 Quy trình thiết kế vi mạch 16

1.3.1 Phân tích tài liệu đặc tả kỹ thuật - specification 17

1.3.2 Kiến trúc - Architecture Design 18

1.3.3 Kế hoạch kiểm thử - Test plan 18

1.3.4 Mô tả hoạt động mạch - Design Description 19

1.3.5 Kiểm tra chức năng logic - Functional Verification 19

1.3.6 Tổng hợp - Synthesis 19

1.3.7 Kiểm tra tương đương - Equivalence Checking 19

1.3.8 Quy hoạch thiết kế - Floorplanning 20

1.3.9 Thiết kế vật lý - Place & Route 20

1.4 Vị trí kiểm chứng vi mạch trong quy trình thiết kế vi mạch 20

1.5 Nguyên tắc cơ bản của kiểm chứng vi mạch 22

1.6 Các phương pháp kiểm chứng hiện có 24

1.6.1 Quy trình kiểm chứng dùng mô phỏng 24

1.6.2 Assertion Based Verification 26

1.6.3 Kiểm tra tương đương (Equivalence checking) 27

1.6.4 Kiểm tra mô hình (Model checking) 28

CHƯƠNG 2 MÔ HÌNH HÓA MẠCH SỐ 29

2.1 Mạch tổ hợp 29

2.1.1 Đại số Boole 30

2.1.2 Bảng chân lý và bìa Knaugh 32

2.1.3 Mạch số logic ở mức cổng và mức RTL 34

2.1.4 Đồ thị quyết định nhị phân 36

2.1.5 Công thức CNF và bài toán SAT 40

Trang 5

2.2 Mạch số tuần tự 42

2.2.1 Mô hình Kripke 42

2.2.2 Máy trạng thái hữu hạn (FSM) 43

2.2.3 Khái niệm mạch trải (iterative circuit model) và dãy trạng thái biểu diễn hoạt động mạch 45

2.3 Ngôn ngữ mô tả đặc tả kỹ thuật của mạch 47

2.3.1 Logic mệnh đề 47

2.3.2 Cây tính toán CTL và logic thời gian 47

2.3.3 Ngôn ngữ System Verilog Assertion 51

CHƯƠNG 3 KIỂM CHỨNG MẠCH SỐ BẰNG PHƯƠNG PHÁP TOÁN HỌC 56 3.1 Kiểm chứng mô hình 56

3.1.1 Kiểm chứng mô hình biểu tượng 56

3.1.2 Kiểm chứng mô hình tới hạn 59

3.2 Kiểm chứng tương đương 63

3.2.1 Các thành phần cơ bản của công cụ kiểm chứng tương đương 64

3.2.2 Kiểm chứng tương đương mạch tuần tự và mạch tổ hợp 65

3.2.3 Thuật toán dùng cho kiểm chứng tương đương 66

CHƯƠNG 4 BỘ CÔNG CỤ KIỂM CHỨNG FCKBK 72

4.1 Kiểm tra thuộc tính khoảng – Interval Property Checking (IPC) 72

4.1.1 Giới thiệu 72

4.1.2 Ví dụ về xây dựng mạch trải và mô hình tính toán IPC 74

4.2 Satisfiability Modulo Theory 76

4.3 Bộ công cụ kiểm tra thuộc tính khoảng dựa trên SMT 77

4.3.1 Mô hình mô tả mạch tại mức cao - Circuit component net-list 78

4.3.2 Biểu diễn của các thuộc tính khoảng 80

4.3.3 Xây dựng mô hình tính toán IPC 82

4.3.4 Ánh xạ mô hình tính toán IPC vào bài toán SMT 83

4.4 Kiến trúc hệ thống của FCKBK 85

4.4.1 Tổng quan về hệ thống 85

4.4.2 Sơ đồ khối hệ thống 86

4.5 Kết quả thực nghiệm và đánh giá 88

4.5.1 Kiểm chứng các thiết kế số mã nguồn mở 88

Trang 6

4.5.2 Gỡ lỗi 91 CHƯƠNG 5 KẾT LUẬN 92 TÀI LIỆU THAM KHẢO 93

Trang 7

DANH SÁCH TỪ VIẾT TẮT BDD Binary Decision Diagram Biểu đồ quyết định nhị phân

BMC Bounded Model Checking Kiểm tra mô hình giới hạn

CNF Conjuntion Normal Form Dạng chuẩn hội

CTL Computation tree logic Logic cây tính toán

FSM Finite State Machine Máy trạng thái hữu hạn

FV Formal Verification Kiểm chứng hình thức

HDL Hardware Description Language Ngôn ngữ mô tả phần cứng

IPC Interval Property Checking Kiểm tra thuộc tính khoảng

LTL Linear temporal logic Logic thời gian tuyến tính

RTL Register Transfer Level Mức dịch chuyển thanh ghi

SMT Satisfiability Modulo Theory Thuật toán SMT

VLSI Very-large-scale Integration Vi mạch tích hợp rất lớn

STG State Transition Graph Đồ thị chuyển trạng thái

SMC Symbolic Model Checking Kiểm tra mô hình biểu tƣợng

SVA System Verilog Assertion Ngôn ngữ SVA

Trang 8

DANH SÁCH HÌNH VẼ

Hình 1.1 Khoảng cách giữa năng suất sản xuất và năng suất thiết kế vi mạch 11

Hình 1.2 Giá thành thiết kế hệ thống trên chip2 12

Hình 1.3 Phân bổ các loại lỗi trong vi mạch 13

Hình 1.4 Phân bổ lỗi trong chip Pentium 4 14

Hình 1.5 Các loại kiểm chứng khác nhau và phân bổ công sức khi kiểm chứng 15

Hình 1.6 Quy trình thiết kế vi mạch 16

Hình 1.7 Bậc thang độ trừu tượng của thiết kế 21

Hình 1.8 Nguyên tắc cơ bản của kiểm chứng 23

Hình 1.9 Quy trình kiểm chứng dùng mô phỏng 26

Hình 2.1 Sơ đồ tổng quan của mạch số 29

Hình 2.2 Triển khai của hàm Boole YABCABCABC theo dạng tổng các tích 30

Hình 2.3 a) Bảng chân lý cho hàm Boole 3 biến b)+c) Bìa Knaugh tương ứng 32

Hình 2.4 Ví dụ về tối ưu hóa hàm Boole bằng bìa Knaugh 34

Hình 2.5 Ví dụ về Gate-net-list 35

Hình 2.6 Mở rộng gate-net-list thành component-net-list 35

Hình 2.7 Đồ thị quyết định nhị phân cho hàm y 38

Hình 2.8 Hai đồ thị tương đương 39

Hình 2.9 Ví dụ về một ROBDD 40

Hình 2.10 Ví dụ về mạch tổ hợp 41

Hình 2.11 Triển khai mạch tuần tự theo FSM kiểu Mearly 44

Hình 2.12 Cấu trúc của mạch tuần tự đồng bộ 45

Hình 2.13 Mô hình mạch trải 46

Hình 2.14 Ý nghĩa các toán tử LTL 49

Hình 2.15 Các khối của assertion 52

Hình 2.16 Ví dụ về sequence 53

Hình 2.17 Ví dụ về toán tử lặp 54

Hình 3.1 Thuật toán phân tích ngược khả năng đạt được một trạng thái cho trước 57 Hình 3.2 Thuật toán phân tích xuôi dùng để kiểm tra AG φ 58

Trang 9

Hình 3.3 Mô hình mạch lặp 61

Hình 3.4 Các thành phần chính của một công cụ kiểm chứng tương đương 64

Hình 3.5 Mô hình chung cho hai thiết kế sau khi được nhập vào công cụ kiểm chứng tương đương 65

Hình 3.6 Mô hình đơn giản hóa bài toán kiểm chứng tương đương chung đến tương đương logic tổ hợp 66

Hình 3.7 Sự triển khai khác nhau của hàm f tại mức cổng nhưng đều có chung một bảng chân lý 67

Hình 3.8 Ví dụ về đồ thi quyết định nhị phân - BDD 69

Hình 3.9 Các dạng BDD rút gọn 70

Hình 3.10 ROBDD cho hàm XOR nhiều đầu vào 70

Hình 4.1 Mô hình tính toán cho bài toán kiểm tra thuộc tính khoảng 74

Hình 4.2 Biểu diễn thiết kế ở mức RTL 74

Hình 4.3 Mạch thuộc tính cho bộ đếm 75

Hình 4.4 Mô hình tính toán IPC cho bộ đếm và thuộc tính tương ứng 76

Hình 4.5 Một ví dụ về component net-list 79

Hình 4.6 Cấu trúc dữ liệu biểu diễn cho component net-list [20] 80

Hình 4.7 Một ví dụ cho mạch thuộc tính 81

Hình 4.8 Sơ đồ tổng quan của FCKBK 86

Hình 4.9 Sơ đồ luồng dữ liệu cho bộ công cụ FCKBK 87

Hình 4.10 Đồ thị dạng sóng cho lỗi xảy ra với thuộc tính MIPS_lw_data 91

Trang 10

MỞ ĐẦU

Theo định luật Moore, độ phức tạp của các thiết kế phần cứng tăng gấp đôi sau mỗi hai năm Do vậy, quá trình kiểm chứng các thiết kế phần cứng cũng trở thành một vấn đề lớn trong quy trình thiết kế Khi độ phức tạp tăng, phương pháp kiểm chứng cần phân tích không gian trạng thái tăng theo hàm mũ với số lượng của các biến trạng thái Để có thể đương đầu với vấn đề của sự phức tạp ngày càng tăng này, các thuật toán kiểm chứng ngày nay hướng tới việc phân tích và xác minh các thiết

kế tại mức cao hơn mức bít Trên thực tế, thiết kế phần cứng số thường được phát

triển tại mức RTL (Register Transfer Level) sử dụng ngôn ngữ mô tả phần cứng HDL (Hardware Description Language) Trong trường hợp này, phần cứng được

mô tả bằng cách sử dụng tổ hợp của hoạt động trong cả mức word và mức bít Sự

mô tả phần cứng như vậy có thể được biến đổi thành một mạch số tại mức word bằng cách sử dụng các gói phần mềm HDL front-end [29, 23, 20] có khả năng giữ lại các thông tin ở mức cao như đường dữ liệu, máy trạng thái, các bộ đếm, vv Các mạch ở mức cao chứa đựng không chỉ các cổng logic mà còn các thành phần mức cao như bộ cộng, bộ nhân, bộ chọn kênh của các tín hiệu nhiều bít Sau đó, mạch này có thể được xác minh bởi những thuật toán back-end mà có khả năng khai thác các thông tin mức word

Lịch sử nghiên cứu

Thông tin mức word có thể được sử dụng trong các phương pháp CEGAR (Counter Example Guide Abstraction/Refinement) [2, 11-15, 20] Trong phương pháp CEGAR, không gian trạng thái được rút gọn và làm mịn lặp đi lặp lại Không gian trạng thái được rút gọn bằng cách bớt các bit của một tín hiệu [15] hoặc thay thế các hoạt động mức word trong thiết kế bằng các hàm Bool mức bit [11, 12] Sau

đó, thuộc tính của mạch được kiểm tra trên mạch đã rút gọn Nếu thuộc tính được thỏa mãn trên mạch rút gọn, thì nó cũng được thỏa mãn trên mạch nguyên bản Nếu thuộc tính không được thỏa mãn và có tồn tại một tổ hợp đầu vào và chuỗi chuyển

Trang 11

trạng thái của mạch rút gọn làm cho thuộc tính sai, mạch rút gọn cần được làm mịn dựa trên tổ hợp đầu vào sai

Bài toán kiểm chứng phần cứng số có thể được ánh xạ vào bài toán SAT

(Satisfiability) sử dụng phương pháp kiểm chứng mô hình giới hạn - BMC (Bounded Model Checking) [3] hoặc kiểm tra thuộc tính khoảng - IPC (Interval Property Checking) [19] Các phương pháp này có khả năng phát hiện các lỗi trong

thiết kế nhờ việc giải bài toán SAT để tìm ra các tổ hợp giá trị tín hiệu khiến thiết kế không thỏa mãn một thuộc tính Bài toán SAT có thể cũng được đơn giản hóa bằng việc sử dụng các thông tin mức word như đã đề xuất trong [15, 17, 22] Trong [15], kích thước của các hoạt động mức word được tối giản bằng cách giảm độ rộng bit của các tín hiệu Trong [17], các hoạt động mức word được chuẩn hóa thành các dạng chính tắc tối giản nơi mà các số hạng chung được loại ra Bài toán sau khi đã đơn giản hóa được ánh xạ vào bài toán SAT để được giải nhờ công cụ giải toán SAT-solver

Mục đích nghiên cứu của luận văn, đối tượng, phạm vi nghiên cứu

Gần đây, SAT-modulo-theory được đề xuất để giải quyết vấn đề kiểm chứng phần cứng [26, 21] Trong phương pháp dựa trên SMT, bài toán SAT thuần túy

được mở rộng với tập hợp các tiên đề toán học logic còn được gọi là first order

theories như các hoạt động bit-vector có động rộng bit cố định, mảng biểu diễn thiết

kế và thuộc tính được xác minh tại mức word Một vài công cụ hiệu quả trong giải toán dựa trên SMT có thể được tìm thấy trong [28, 09]

Trong luận văn này, em phát triển một gói phần mềm kiểm chứng trong đó bài toán kiểm tra thuộc tính khoảng (Interval Property Checking) được ánh xạ vào bài toán SMT Gói phần mềm này chứa đựng một trình biên dịch ngôn ngữ Verilog và một back-end lập luận dựa trên SMT Các thiết kế phần cứng tại mức RTL được mô

tả bằng ngôn ngữ Verilog và các thuộc tính thiết kế mô tả bằng ngôn ngữ System Verilog Assertion (SVA) sẽ được chuyển đổi thành bài toán SMT nhờ sử dụng phương pháp kiểm tra thuộc tính khoảng IPC Tiếp theo đó, SMT-solver [6] có

Trang 12

nhiệm vụ giải bài toán này và tìm ra tổ hợp giá trị biến làm cho thiết kế không thỏa mãn thuộc tính

Luận văn bao gồm những phần chính như sau:

CHƯƠNG 1: GIỚI THIỆU VỀ KIỂM CHỨNG VI MẠCH

Trình bày quy trình thiết kế mạch điện tử số, vị trí và vai trò của kiểm chứng trong quy trình thiết kế này

CHƯƠNG 2: MÔ HÌNH HÓA MẠCH SỐ

Trình bày cở sở lý thuyết của mạch số, các phương pháp mô hình hóa và biểu diễn mạch số cũng như các thuộc tính của nó

CHƯƠNG 3: KIỂM CHỨNG MẠCH SỐ BẰNG PHƯƠNG PHÁP TOÁN HỌC

Chương này tìm hiểu bài toán kiểm chứng chức năng mạch số bằng phương pháp toán học bao gồm kiếm chứng mô hình và kiểm chứng tương đương

CHƯƠNG 4: BỘ CÔNG CỤ KIỂM CHỨNG FCK-BK

Dựa trên cơ sở lý thuyết, triển khai bộ công cụ kiểm chứng hình thức cho các thiết kế số và áp dụng bộ công cụ này vào việc kiểm chứng một số thiết kế số mã nguồn mở

CHƯƠNG 5: KẾT LUẬN

Tổng hợp các kết quả đã đạt được, đồng thời đưa ra hướng phát triển tiếp theo

Trang 13

CHƯƠNG 1 GIỚI THIỆU KIỂM CHỨNG VI MẠCH

Chương này sẽ trình bày về quy trình thiết kế mạch điện tử số, vị trí và vai trò của kiểm chứng trong quy trình thiết kế này Các kiến thức trong chương này dựa trên những kiến thức tổng hợp được từ bản thuyết minh đề tài “Nghiên cứu nâng cao chất lượng thiết kế các mạch tích hợp bằng phương pháp toán học” [1]

1.1 Vai trò của kiểm chứng trong thiết kế vi mạch

Để có thể thiết kế được các mạch tích hợp có độ phức tạp lớn một yêu cầu tiên quyết là các nhà khoa học phải làm chủ được các công nghệ nền tảng về tổng hợp, tối ưu và kiểm tra tự động phần cứng số Ngày nay, khi các mạch tích hợp có hàng triệu cổng logic, chỉ các phần mềm tự động mới có khả năng tối ưu và kiểm tra chúng Sử dụng các phần mềm thiết kế, kiểm tra tự động như vậy cho phép giải quyết hai vấn đề cơ bản trong thiết kế chế tạo mạch tích hợp đó là năng suất thiết kế

và chất lượng vi mạch

Các mạch tích hợp đòi hỏi phải có chất lượng rất cao Bất cứ lỗi nhỏ nào trong phần cứng của thiết bị cũng dẫn tới các tổn thất to lớn về giá thành cũng như thời gian ra thị trường của sản phẩm Do đó, các công ty sản xuất lớn thường phát triển các thiết bị điện tử dựa vào các nền tảng có sẵn của các công ty sản xuất chip lớn như Quancomm, Texas Instruments…Ở các nền tảng có sẵn, chất lượng các mạch tích hợp đã được kiểm tra rất gắt gao bởi các công ty lớn sử dụng các phần mềm kiểm tra chuyên dụng Tuy nhiên các thiết bị này vẫn có thể có lỗi Một ví dụ điển hình là lỗi trong bộ chia dấu phẩy động FDIV trong bộ xử lý Pentium đã làm Intel tổn thất gần 500 triệu USD Vì vậy, việc kiểm tra thiết kế phần cứng của vi mạch luôn là một vấn đề nóng trong lĩnh vực chế tạo thiết bị điện tử

Để thiết kế và kiểm tra chất lượng các vi mạch, các hãng chế tạo lớn sử dụng các

bộ công cụ thiết kế, kiểm tra rất phức tạp có giá thành rất cao Ví dụ như phần mềm thiết kế và kiểm tra của hãng Cadence hay Synopsys có giá lên đến hàng trăm nghìn USD cho một năm sử dụng

Trang 14

Trong lĩnh vực thiết kế vi mạch, nghiên cứu phát triển các giải pháp, các thuật toán cho phép tự động tổng hợp và kiểm tra thiết kế vi mạch luôn là một chủ đề nghiên cứu nóng đòi hỏi có các ý tưởng và phát minh mới vì ngành công nghiệp vi mạch đang và sẽ tiếp tục phải đối mặt với một thách thức lớn về khoảng cách giữa khả năng (về năng suất) sản xuất và khả năng thiết kế, kiểm tra như minh họa trong Hình 1.1

Công nghệ sản xuất vi mạch phát triển nhanh chóng cho phép sản xuất các vi mạch có độ tích hợp rất lớn lên đến hàng trăm triệu phần tử logic trên một phiến silicon Tuy nhiên, giải pháp thiết kế và kiểm tra hiện nay chưa phát triển đầy đủ để cho phép thiết kế, kiểm tra nhanh chóng, năng suất các hệ thống phức tạp như vậy

Do đó, các thuật toán tự động tổng hợp, tối ưu và kiểm tra vi mạch là vấn đề nhận được sự quan tâm đặc biệt của cộng đồng nghiên cứu thiết kế vi mạch Tự động tổng hợp tối ưu cho phép người thiết kế mô tả (thiết kế) hệ thống ở lớp trừu tượng cao hơn, sau đó thuật toán sẽ tự động chuyển đổi mô hình ở lớp cao thành các

mô hình ở lớp thấp chi tiết hơn Điều đó giúp người thiết kế có thể xây dựng những

Trang 15

hệ thống phức tạp hơn trong thời gian ngắn hơn và chính xác hơn Kiểm tra nhằm đảm bảo tính đúng đắn của các yêu cầu chức năng trong vi mạch tương tự như gỡ lỗi phần mềm nhưng đòi hỏi nhiều công sức hơn Khoảng cách năng suất thiết kế, kiểm tra và năng lực sản xuất vi mạch ngày càng giãn rộng làm cho giá thành kiểm tra phần cứng là phần lớn nhất, chiếm tới 70% giá thành vi mạch và đang tăng trưởng rất nhanh2 Hơn nữa các hệ thống điện tử hiện nay không chỉ bao gồm các chip phần cứng mà còn bao gồm phần mềm Khi đó hệ thống điện tử được coi là một giải pháp hệ thống trên chíp (Solution System on Chip) Điều đó càng làm độ phức tạp của bài toán kiểm tra hệ thống điện tử tăng cao vượt quá khả năng đáp ứng của các giải pháp thiết kế, kiểm tra hiện nay Do vậy, trong toàn bộ giá thành thiết

kế hệ thống trên chip, giá thành phát triển phần mềm và giá thành kiểm tra trở thành

Trang 16

1.2 Phân loại lỗi và các loại kiểm chứng vi mạch

Phân bổ các loại lỗi trong vi mạch được thể hiện trong biểu đồ Hình 1.3

Hình 1.3 Phân bổ các loại lỗi trong vi mạch

Biểu đồ chỉ r rằng, các lỗi logic và lỗi chức năng chiếm đa số lên tới 45% Các lỗi logic là những lỗi rất khó phát hiện bởi lẽ chỉ có những kỹ sư thật sự hiểu r về

hệ thống của mình mới nhận ra được Trong nhiều trường hợp, việc phát hiện lỗi là không thể, việc kiểm tra các thiết kế bằng những phương pháp hiện tại chưa đáp ứng được với những thiết kế ngày một phức tạp Vì vậy cần phải có những phương pháp kiểm chứng mới phát hiện những lỗi này

Biểu đồ Hình 1.4 chỉ ra các lỗi trong quá trình thiết kế chip Pentium 4 của Intel

Sự phân bố không đều nguyên nhân lỗi được chỉ ra với cao nhất là các lỗi ngớ ngẩn 12,7% do người dùng đánh máy, viết code thiếu cẩn thận trong khí chỉ có 2,6% là các lỗi hiểu sai thiết kế Đây là hai lỗi có thể hoàn toàn được cải thiện nhờ sự cẩn thận của kỹ sư thiết kế Lỗi do các kỹ sư thiết kế không hiểu nhau cũng có t lệ khá cao tới 11.4%, thấp hơn một chút, hai lỗi do định nghĩa kiến trúc và thay đổi code

để sửa lỗi timing đứng ở vị trí thứ ba với 9.3% Những lỗi này thường khó phát hiện

và cần đầu tư công sức lớn trong quá trình thiết kế Ngoài ra, như là kết quả của việc có những trường hợp đặc biệt trong quá trình thiết kế, các kỹ sư thường bỏ qua

và không triển khai nó Đây là lỗi chiếm t lệ khá cao với 8% Theo sau là các lỗi

Trang 17

do tài liệu không hoàn chỉnh, vi kiến trúc quá phức tạp, hoặc như là việc kiểm tra sai sót Bất k lỗi nào dù nhỏ cũng sẽ là thách thức đối với các kỹ sư thiết kế

Hình 1.4 Phân bổ lỗi trong chip Pentium 4

Bảng 1.1 Phân bổ lỗi trong chip Pentium 4

Goof Lỗi ngớ ngẩn: đánh máy, cắt-dán, viết code thiếu cẩn thận 12.70% Miscommunication Những kỹ sư thiết kế, kỹ sư kiến trúc không hiểu nhau 11.40% Microarchitecture Thiếu, lỗi trong định nghĩa vi kiến trúc 9.30% Logic/Microcode Lỗi khi thay đổi code để sửa lỗi, sửa vấn đề timing 9.30% Corner cases Các trường hợp đặc biệt không được triển khai đúng 8% Power down issues Các đặc điểm tiết kiệm điện bằng cách tắt xung đồng hồ 5.70%

Trang 18

Incorrect RTL

assertions Các điểm kiểm tra khẳng định sai, bị làm sai khi sửa lỗi 2.80%

Design mistake Người thiết kế hiểu sai phần cần triển khai do không đọc

hoặc đọc không đầy đủ bản yêu cầu kỹ thuật 2.60%

Hình 1.5 Các loại kiểm chứng khác nhau và phân bổ công sức khi kiểm chứng

Hình 1.5 mô tả các loại kiểm chứng khác nhau và phân bổ công sức khi kiểm chứng Kiểm chứng hệ thống là sự xác minh các chức năng của hệ thống có hoạt động đúng theo các yêu cầu trong tài liệu hay không Từ biểu đồ ta thấy đó là loại kiểm chứng khó khăn và tốn kém nhất khi chiếm đến 40% công sức

Trang 19

1.3 Quy trình thiết kế vi mạch

Hình 1.6 Quy trình thiết kế vi mạch

Quy trình thiết kế IC số, hệ thống số sử dụng ngôn ngữ mô tả phần cứng bao gồm các bước: phân tích xây dựng tài liệu kỹ thuật, mô tả hoạt động mạch bằng HDL, kiểm tra chức năng logic, tổng hợp, phân tích kiểm tra tốc độ; tối ưu mạch ở mức RTL; thiết kế vật lý - Layout - Place&Route; tách tham số thời gian; phân tích thời gian sau layout

Ý tưởng sản phẩm xuất phát từ yêu cầu thực tế của các đơn vị, tổ chức:

 Giám đốc

 Khách hàng

Trang 20

1.3.1 Phân tích tài liệu đặc tả kỹ thuật - specification

Với sự giúp đỡ của đội ngũ kỹ thuật cao cấp, các ý tưởng được cụ thể hóa thành các văn bản tài liệu chỉ tiêu kỹ thuật trong đó mô tả cụ thể hơn các chỉ tiêu kỹ thuật

cơ bản của mạch:

 Chức năng (hoạt động của mạch)

o Mô tả đặc điểm của đầu ra, đầu vào và hàm quan hệ giữa đầu ra và đầu vào

o Mối quan hệ được mô tả dưới dạng hành vi (nếu … thì, dùng hàm toán học trừu tượng, lưu đồ thuật toán đơn giản)

o Các chuẩn vào ra mạch cần tuân thủ (Chuẩn H264, Chuẩn Bluetooth 4.0, WLAN 802.11n)

 Diện tích của hệ thống (vi mạch) được tính toán từ một số thông số:

o Giá thành mục tiêu

o Công nghệ chế tạo (90nm, 180nm, 65nm,…): kích thước của tấm warfer

o Yield: tỉ lệ vi mạch chê tạo có thể hoạt động hoạt động

o Non Recurrence Cost: Design cost, Mask cost, IP cost, Standard Cell Library Cost, …

o Giá thành chế tạo

 Hiệu năng (Tốc độ hoạt động-tần số đồng hồ MHz; thông lượng dữ liệu - Mbit/s): Được tính toán dựa trên tốc độ lấy mẫu và số bit lấy mẫu đầu vào hoặc dựa vào tốc độ của môi trường hoạt động của vi mạch, dựa vào chuẩn

mà vi mạch cần tuân theo)

Trang 21

 Năng lượng tiêu thụ (W, mW, A, mA): Được tính toán dựa vào kích thước hệ thống để suy ra dung lượng pin)

1.3.2 Kiến trúc - Architecture Design

Ở bước thiết kế kiến trúc, đội ngũ thiết kế sẽ tạo ra tài liệu mô tả kiến trúc của

hệ thống Trong đó:

 lựa chọn thuật toán có thể đáp ứng được các yêu cầu của specification,

 ánh xạ các thao tác trong thuật toán vào các khối phần cứng,

 lựa chọn mô hình thông tin để kết nối các khối phần cứng với nhau (kiến trúc pipeline, kiến trúc bus)

Tài liệu mô tả kiến trúc sẽ bao gồm:

 Mô tả thuật toán

 Hình vẽ kiến trúc mạch (gồm các khối nối với nhau)

 Mô hình kết nối giữa các khối: giao thức trao đổi dữ liệu giữa các khối, sự đồng bộ giữa các khối, tốc độ truyền dữ liệu giữa các khối

 Mô tả hoạt động của từng khối (Đầu vào/Đầu ra/Hàm truyền đạt của khối)

1.3.3 Kế hoạch kiểm thử - Test plan

Đồng thời với việc thiết kế kiến trúc, cần lên kế hoạch để kiểm chứng (verification) và kiểm tra vi mạch Kết quả của bước này là một văn bản Test Plan bao gồm:

 Phương pháp và công cụ kiểm tra: (dùng mô phỏng - simulation, dùng công

cụ hình thức toán học - formal verification, dùng phỏng tạo trên phần cứng - hardware emulation,…)

 Ngôn ngữ và công cụ sử dụng: SystemVerilog, C, Hardware-In-Loop

 Đối tượng cần kiểm tra: Những chức năng của chip nào cần kiểm tra, những trường hợp hoạt động nào cần kiểm tra,…

Trang 22

1.3.4 Mô tả hoạt động mạch - Design Description

Các kỹ sư thiết kế dựa vào thiết kế kiến trúc để mô tả hoạt động của từng khối trong vi mạch bằng ngôn ngữ mô tả phần cứng VHDL hoặc Verilog Kết quả là các

mã HDL mô tả hoạt động của vi mạch

1.3.5 Kiểm tra chức năng logic - Functional Verification

Ở bước này, các kỹ sư thiết kế và các kỹ sư kiểm chứng sử dụng tài liệu trong Test Plan để kiểm tra chức năng vi mạch nhằm đảm bảo vi mạch (khối) thực hiện đúng hoạt động đề ra ở tài liệu đặc tả kỹ thuật và kiến trúc (Specification và Architecture)

Kết quả của bước này bao gồm:

 Mã HDL không còn lỗi (không còn tìm thấy lỗi sau thời gian kiểm tra)

 Các báo cáo về lỗi, sự sửa chữa lỗi, báo cáo về chất lượng kiểm tra

 Giới hạn về chỉ tiêu thiết kế (Kích thước, Tốc độ)

 Thư viện công nghệ chế tạo (Standard Cell Library - ASIC, chip FPGA) Đầu ra của phần mềm tổng hợp

 Mô tả thiết kế ở mức cổng logic (gate netlist)

 Báo cáo về việc đáp ứng (hoặc không đáp ứng) các yêu cầu thiết kế như tốc

độ, diện tích

1.3.7 Kiểm tra tương đương - Equivalence Checking

Bước này đảm bảo bản thiết kế mạch ở mức cổng và bản thiết ở mức HDL là tương đương Nói cách khác, thiết kế ở hai mức này nếu có cùng đầu vào thì phải có đầu ra giống hệt nhau Để thực hiện kiểm chứng tương đương có thể dùng phương pháp kiểm chứng dựa trên mô phỏng hoặc kiểm chứng hình thức

Trang 23

1.3.8 Quy hoạch thiết kế - Floorplanning

Bước này thực hiện việc hoạch định (quy hoạch) diện tích vi mạch Các công việc cần giải quyết trong bước này bao gồm: xác định kích thước chip, vị trí đặt các khối chức năng trong chip và xác định các vùng đặt đầu vào, đầu ra, vùng cấp nguồn VDD, GND (power ring) Floorplaning được thực hiện bằng tay dựa vào kết quả tổng hợp là các kích thước của từng khối trên chip

1.3.9 Thiết kế vật lý - Place & Route

Bước này sử dụng phần mềm để tự động đặt các Standard Cell tương ứng với các cổng logic và các phần tử khác của mạch lên các diện tích đã được quy hoạch trên chip

Đầu vào của phần mềm là:

 Mô hình gate netlist của mạch

 Thư viện standard cell

 Mô tả floor planning

Đầu ra của phần mềm là bản mô tả thiết kế layout của vi mạch

Trong công đoạn thiết kế vật lý, một số vấn đề liên quan đền kiểm thử và phân tích phải được được hiện nhằm đảm bảo các ràng buộc về chức năng và thời gian của thiết kế phải thỏa mãn với các yêu cầu đặt ra

 Equivalence Checking: Đảm bảo sự tương đương của layout design và gate netlist

 Design Rule Check: Đảm bảo các luật thiết kế không bị vi phạm

 Post-layout Timing analysis: Phân tích lại tốc độ mạch sau layout

1.4 Vị trí kiểm chứng vi mạch trong quy trình thiết kế vi mạch

Quá trình thiết kế có thể hiểu là quá trình triển khai các mô tả kỹ thuật Ở mức

mô tả kỹ thuật, các đặc điểm kỹ thuật nêu rõ các chức năng thiết kế phải thực hiện nhưng không cho biết nó được thực hiện như thế nào Sự triển khai sẽ giải thích rõ ràng các chi tiết của chức năng này được cung cấp như thế nào Cả mô tả kỹ thuật

và sự triển khai đều là một hình thức mô tả về chức năng, nhưng chúng có mức độ

Trang 24

cụ thể hay trừu tượng khác nhau Mô tả ở mức độ trừu tượng cao hơn sẽ có ít chi tiết hơn, do đó, mô tả kỹ thuật có một mức độ trừu tượng cao hơn so với sự triển khai Theo mức thang trừu tượng của thiết kế, chúng ta thấy độ trừu tượng giảm dần theo thứ tự: đặc điểm kĩ thuật của chức năng, mô tả các thuật toán, register-transfer level (RTL), gate netlist, transistor netlist, và layout (Hình 1.7)

Hình 1.7 Bậc thang độ trừu tượng của thiết kế

Kiểm chứng thiết kế là quá trình ngược lại của thiết kế Kiểm chứng thiết kế bắt đầu với việc thực hiện và khẳng định rằng việc thực hiện đáp ứng các thông số kỹ thuật của nó Như vậy, tại mỗi bước thiết kế, có một bước xác minh tương ứng Ví

dụ, một bước thiết kế chuyển mô tả chức năng thành việc thực hiện thuật toán đòi hỏi phải có một bước kiểm chứng để đảm bảo rằng các thuật toán sẽ thực hiện đúng các chức năng đã được mô tả Tương tự như vậy, một thiết kế vật lý tạo ra layout từ một gate netlist cần phải được kiểm chứng để đảm bảo rằng layout sẽ tương đương với gate netlist Nhìn chung, việc kiểm chứng thiết kế sẽ bao gồm rất nhiều lĩnh vực như kiểm chứng chức năng, kiểm chứng thời gian, kiểm chứng layout, kiểm chứng

về nguồn điện Trong đồ án này, em sẽ chỉ đề cập đến kiểm chứng về chức năng và coi nó như là việc kiểm chứng thiết kế Hình 1.6 cho thấy mối quan hệ giữa quá trình thiết kế và quá trình kiểm chứng

Trang 25

Kiểm chứng thiết kế có thể được tiếp tục chia thành hai loại Loại thứ nhất kiểm tra rằng hai phiên bản thiết kế có chức năng tương đương với nhau hay không được gọi là kiểm tra tương đương Ứng dụng phổ biến của việc kiểm tra tương đương là

so sánh hai phiên bản của mạch ở cùng một mức độ trừu tượng

Tuy nhiên, hai phiên bản của thiết kế thường khác nhau về mức độ trừu tượng

Ví dụ, một phiên bản của thiết kế là ở mức đặc điểm kỹ thuật và các phiên bản khác

là mức gate netlist Khi hai phiên bản khác nhau đáng kể về mức độ trừu tượng, chúng có thể không tương đương về chức năng, bởi vì việc thực hiện cấp thấp hơn

có thể có các thành phần được phép, nhưng không được nói rõ ở mức độ cao hơn

Ví dụ, một sự triển khai có thể có các ràng buộc về thời gian mà không có trong mô

tả kỹ thuật Trong tình huống này, thay vì kiểm tra sự tương đương về chức năng của hai phiên bản, chúng ta sẽ kiểm tra rằng sự triển khai có thoả mãn mô tả kỹ thuật hay không Lưu ý rằng kiểm tra tương đương là sự kiểm chứng hai chiều, nhưng đây là sự kiểm chứng một chiều vì mô tả kỹ thuật không thể thoả mãn những tính năng chưa được chỉ ra của sự triển khai Loại kiểm chứng này được gọi implementation verification, property checking, hoặc model checking

1.5 Nguyên tắc cơ bản của kiểm chứng vi mạch

Có hai loại lỗi trong thiết kế Loại đầu tiên của lỗi không tồn tại trong các chi tiết kỹ thuật nhưng có trong triển khai thực hiện, nó được tạo ra trong quá trình thực hiện Một ví dụ là lỗi của con người trong việc giải thích các chức năng thiết kế Để ngăn chặn loại lỗi này, chúng ta có thể sử dụng một chương trình phần mềm tổng hợp thực hiện trực tiếp từ các chi tiết kỹ thuật Mặc dù phương pháp này loại bỏ hầu hết các lỗi của con người, nhưng lỗi vẫn còn có thể tồn tại do lỗi trong chương trình phần mềm, hoặc lỗi khi sử dụng các chương trình phần mềm Hơn nữa, cách tiếp cận tổng hợp vẫn còn khá hạn chế trong thực tế vì hai lý do Thứ nhất là do các chi tiết kỹ thuật được mô tả trong hình thức của ngôn ngữ đàm thoại bình thường, chẳng hạn như tiếng Anh, trái ngược với một hình thức của ngôn ngữ toán học chính xác, chẳng hạn như Verilog hoặc C++ Chúng ta biết rằng tự động tổng hợp

từ một ngôn ngữ không chặt chẽ là không khả thi Trong thực tế, không có một

Trang 26

ngôn ngữ ở mức cao nào được dùng để mô tả những yêu cầu về cả chức năng và thời gian Thứ hai, ngay cả khi các chi tiết kỹ thuật được viết bằng một ngôn ngữ toán học chính xác, không nhiều phần mềm có thể tổng hợp được triển khai đáp ứng tất cả yêu cầu Thông thường, chương trình phần mềm có thể tổng hợp được từ một tập hợp các chức năng chi tiết kỹ thuật nhưng không đáp ứng được yêu cầu về thời gian

Một phương pháp được sử dụng rộng rãi để phát hiện ra lỗi của loại này là sử dụng nhiều cách tiếp cận khác nhau đối với cùng một mô tả kỹ thuật Kết quả của các cách tiếp cận sẽ được so sánh với nhau Về mặt lý thuyết, các chi tiết kỹ thuật được thực hiện nhiều lần bằng các cánh khác nhau sẽ cho kết quả chính xác hơn Nhưng trên thực tế thường chỉ sử dụng hai cách tiếp cận, vì chi phí và thời gian sẽ tốn rất nhiều nếu sử dụng nhiều hơn

Quá trình thiết kế có thể coi như là một quá trình biến đổi các mô tả kỹ thuật thành sự triển khai Nguyên tắc cơ bản của việc kiểm chứng bao gồm hai bước Trong bước thứ nhất, các mô tả kỹ thuật sẽ được biến đổi thành sự triển khai Trong bước thứ hai, kết quả kiểm chứng được so sánh với kết quả từ thiết kế để phát hiện lỗi Điều này được minh họa trong Hình 1.8

Hình 1.8 Nguyên tắc cơ bản của kiểm chứng

Rõ ràng, nếu các kỹ sư kiểm chứng cũng thông qua các bước giống như kỹ sư thiết kế, có thể cả hai sẽ kết luận tương tự nhau, phạm phải những lỗi giống nhau

Do đó, nếu thiết kế và kiểm chứng đi theo những con đường càng khác nhau thì độ

Trang 27

tin cậy của việc kiểm chứng càng tăng lên Một cách để đạt được độ tin cậy cao cho các kỹ sư kiểm chứng là chuyển đổi các chi tiết kỹ thuật thành một mô hình thực hiện bằng một ngôn ngữ khác với ngôn ngữ sử dụng khi thiết kế Ngôn ngữ này được gọi là ngôn ngữ kiểm chứng (verification language) Ví dụ về các ngôn ngữ xác minh bao gồm Vera, C/C++ Một chiến lược kiểm chứng có thể là sử dụng C /

C + + cho các mô hình kiểm chứng và dùng Verilog /VHDL cho mô hình thiết kế

Ở đây chúng ta thấy rằng mô hình kiểm chứng dùng mô phỏng phù hợp với các nguyên tắc kiểm chứng Một mô hình kiểm chứng dùng mô phỏng bao gồm bốn thành phần: mạch, các mẫu kiểm tra, đầu ra tham chiếu và một cơ chế so sánh Mạch sẽ được mô phỏng trên các mẫu kiểm tra và kết quả được so sánh với đầu ra tham chiếu

Như đã đề cập trước đó, loại đầu tiên của lỗi được sinh ra trong quá trình thực hiện Loại lỗi thứ hai tồn tại trong các chi tiết kỹ thuật Nó có thể là các chức năng không được xác định, các yêu cầu mâu thuẫn nhau, và các tính năng không thực hiện được Cách duy nhất để phát hiện các loại hình báo lỗi là thông qua dự phòng, bởi vì đặc điểm kỹ thuật là đã ở trên cùng của hệ thống phân cấp trừu tượng và do

đó không có mô hình tham chiếu dựa vào đó để kiểm tra Tổ chức một cuộc họp xem xét thiết kế và có một đội ngũ kỹ sư thiết kế kiến trúc là một hình thức kiểm chứng thông qua dự phòng trong thực tế

1.6 Các phương pháp kiểm chứng hiện có

1.6.1 Quy trình kiểm chứng dùng mô phỏng

Phương pháp kiểm chứng được sử dụng phổ biến nhất là kiểm chứng dùng mô phỏng Trong quá trình kiểm chứng dùng mô phỏng, thiết kế được đặt trong một module kiểm tra test bench, kích thích đầu vào sẽ được áp dụng với test bench, và đầu ra của thiết kế sẽ được so sánh với đầu ra tham chiếu Một test bench sẽ bao gồm các mã hỗ trợ các hoạt động của thiết kế, như là tạo ra các kích thích đầu vào

và so sánh đầu ra với đầu ra tham chiếu Kích thích đầu vào được tạo ra để mô phỏng có thể được đọc vào từ một cơ sở dữ liệu trong quá trình mô phỏng, hoặc nó

Trang 28

có thể được tạo ra trong quá trình chạy mô phỏng Tương tự như vậy, đầu ra tham chiếu có thể được tạo ra trước hoặc khi đang chạy mô phỏng

Trước khi thiết kế được mô phỏng, nó được đưa qua một chương trình linter để kiểm tra lỗi tĩnh hoặc các lỗi tiềm ẩn và các lỗi cú pháp Chương trình này không yêu cầu các vector đầu vào, do đó, nó sẽ kiểm tra các lỗi độc lập với kích thích đầu vào Lỗi tĩnh có thể là khối module có số lượng cổng không phù hợp, hoặc một đầu vào treo của một cổng Tiếp theo, các vector đầu vào trong kế hoạch thử nghiệm sẽ được tạo ra Vector đầu vào nhắm vào mục tiêu là các chức năng cụ thể được gọi là kiểm tra trực tiếp Bởi vì kiểm tra trực tiếp chỉ kiểm tra không gian đầu vào mà người thiết kế biết, trong khi lỗi thường xảy ra ở những nơi mà người thiết kế không biết, do đó kiểm tra giả ngẫu nhiên được sử dụng cùng với kiểm tra trực tiếp Kiểm tra giả ngẫu nhiên thường tạo ra các vector gần với kiểm tra trực tiếp Vì vậy, nếu kiểm tra trực tiếp là không gian các điểm thì kiểm tra giả ngẫu nhiên sẽ mở rộng xung quanh các điểm này Sau khi các thử nghiệm được tạo ra, chương trình mô phỏng sẽ được chọn để thực hiện mô phỏng Chương trình mô phỏng có thể là một phần mềm điều khiển các sự kiện và xung đồng hồ hoặc có thể là phần cứng Chất lượng của việc kiểm chứng bằng mô phỏng được xác định qua độ bao phủ của nó

Độ bao phủ được xác định bằng bao nhiêu phần trăm thiết kế đã được kích thích và kiểm chứng Độ bao phủ về mã là số phần trăm mã đã được thực hiện Nó cho biết bao nhiêu dòng code trong thiết kế đã được kiểm tra, bao nhiêu câu lệnh rẽ nhánh trong thiết kế đã được thực thi, bao nhiêu trạng thái trong máy trạng thái đã được chạy qua Độ bao phủ về chức năng là tỉ lệ phần trăm các chức năng đã được thực hiện Sử dụng thước đo về độ bao phủ, người thiết kế có thể thấy được những phần thiết kế đã không được thực hiện và tiến hành kiểm chứng những phần đó Quy trình kiểm chứng dùng mô phỏng được tóm tắt trong Hình 1.9

Trang 29

Hình 1.9 Quy trình kiểm chứng dùng mô phỏng

Mô phỏng logic là một kỹ thuật được sử dụng rộng rãi cho việc kiểm chứng của thiết kế Mô phỏng sẽ tính toán giá trị đầu ra đối với các giá trị được đưa vào đầu vào Tuy nhiên, vì chất lượng của việc kiểm chứng sẽ phụ thuộc nhiều vào việc lựa chọn các giá trị đầu vào nên rất có thể vẫn tồn tại những lỗi thiết kế mà không thể tìm ra bằng phương pháp mô phỏng logic Bởi vì số lượng các giá trị đầu vào yêu cầu sẽ tăng theo cấp số nhân khi kích thước của thiết kế tăng lên nên việc kiểm chứng thiết kế một cách tổng thể bằng phương pháp mô phỏng là không khả thi Để giải quyết vấn đề này, việc phát triển các kỹ thuật kiểm chứng hình thức (formal verification) là rất cần thiết

1.6.2 Assertion Based Verification

Phương pháp Assertion Based Verification(AVB) là một cách tiếp cận mới để kiểm chứng trong thiết kế VLSI Phương pháp AVB tạo ra các assertion dùng để

mô tả các chi tiết kỹ thuật của thiết kế Assertion có thể mô tả các hành vi không mong muốn hoặc các hành vi cần phải có để hoàn thiện kế hoạch kiểm chứng Các

Trang 30

assertion có thể được kiểm tra bằng cả công cụ mô phỏng động và công cụ kiểm chứng hình thức Assertion là một mô tả chính xác của một hành vi được kì vọng khi cho một đầu vào của thiết kế Để kiểm chứng các tính năng của thiết kế, trước tiên các chức năng của nó phải được hiểu r , sau đó hành vi của nó phải được mô tả một cách rõ ràng, và cuối cùng các điều kiện mà tại đó hành vi được áp dụng phải được tạo ra Các mô tả này được nắm bắt bằng một assertion Ở dạng đơn giản nhất, một assertion bao gồm các hàm được theo dõi Các assertion này có thể dễ dàng triển khai bằng VHDL hoặc Verilog Ý tưởng chính của phương pháp này là các assertion có thể được đọc bởi nhiều công cụ có chung một dạng để mô tả các chức năng Môi trường kiểm chứng trở nên hiệu quả hơn trong việc hiểu cái gì cần kiểm tra và tìm được nhiều lỗi hơn Điều này cũng thúc đẩy việc sử dụng các phương pháp kiểm chứng hình thức mới để tìm ra các lỗi khó phát hiện bằng phương pháp

mô phỏng

1.6.3 Kiểm tra tương đương (Equivalence checking)

Kiểm tra tương đương là việc xác minh sự tương đương về chức năng giữa hai

mô hình có thiết kế tương tự nhau Các mô hình có chức năng tương đương với nhau nếu các đầu ra của chúng đều giống nhau với cùng một mẫu đầu vào Một trong hai mô hình được coi như mô hình ban đầu, và được giả thiết là mô hình đúng

Mô hình còn lại là kết quả sau khi tiến hành các bước thay đổi và tối ưu Các bước thay đổi và tối ưu này có thể được thực hiện một cách thủ công bởi kỹ sư thiết kế hoặc thực hiện một cách tự động bởi các công cụ tổng hợp Điều này có thể tạo ra lỗi trong thiết kế do sai sót của con người hoặc do các lỗi của công cụ tự động Do

đó, chúng ta cần phải kiểm tra rằng các mô hình được tạo ra sau mỗi bước thiết kế đều không thay đổi chức năng Nhiệm vụ kiểm tra tương đương là để đảm bảo tính chính xác của tất cả các bước chuyển đổi tự động hoặc bằng tay được áp dụng để thiết kế

Kỹ thuật kiểm tra tương đương đã được nghiên cứu và phát triển trong nhiều thập k gần đây Một trong những kỹ thuật thành công đầu tiên được đề xuất bởi của Kunz cho thiết kế tổ hợp và được mở rộng bởi Stoffel cho thiết kế theo trình tự

Trang 31

Kỹ thuật này được dựa trên thực tế là có nhiều điểm tương đồng giữa cấu trúc của

mô hình ban đầu và mô hình thay đổi Các điểm tương đồng được khai thác để phân tích và chứng minh sự tương đương giữa hai mô hình Những kỹ thuật kiểm tra tương đương đã được áp dụng thành công để kiểm chứng thiết kế lớn bao gồm hàng triệu cổng logic Hiện tại, chúng đã trở thành những thành phần tiêu chuẩn trong hầu hết các quy trình thiết kế công nghiệp

1.6.4 Kiểm tra mô hình (Model checking)

Kiểm tra thuộc tính được sử dụng để xác minh các hành vi dự định của thiết kế Khi bắt đầu quá trình thiết kế, một mô hình ban đầu của thiết kế được tạo ra từ các đặc điểm kỹ thuật không chính thức Từ đặc điểm kỹ thuật này, người thiết kế cũng

có thể xây dựng những thuộc tính mà mình muốn thiết kế thực hiện Các thuộc tính được kiểm chứng được là hợp lệ cho các mô hình ban đầu của thiết kế

Kiểm tra thuộc tính không chỉ tìm thấy lỗi trong giai đoạn đầu của quá trình thiết

kế, nó cũng có thể giúp tránh những hiểu lầm của đặc tả kỹ thuật của nhà thiết kế

Vì vậy, lỗi có thể được phát hiện ở giai đoạn sớm hơn của quá trình thiết kế với chi phí ít hơn Các thuộc tính có thể được so sánh với các mô hình thiết kế bằng phương pháp chứng minh định lý (theorem proving) hoặc kiểm tra mô hình (model checking) So với phương pháp chứng minh định lý mà cần phải tương tác của con người, kiểm tra mô hình là một phương pháp kiểm chứng hình thức hoàn toàn tự động Do đó, nó có thể giảm công sức của con người trong quá trình kiểm chứng

Trang 32

CHƯƠNG 2 MÔ HÌNH HÓA MẠCH SỐ

Trong điện tử số, một mạch là một mạng xử lý các biến có giá trị rời rạc Một mạch

có thể được xem là một hộp đen như được chỉ ra trong Hình 2.1, có

 Một hoặc nhiều đầu vào

 Một hoặc nhiều đầu ra

 Một đặc tả kỹ thuật chức năng mô tả mối quan hệ giữa đầu vào và đầu ra tương ứng

 Một đặc tả kỹ thuật về thời gian (trễ) giữa thay đổi ra trị đầu vào và đầu ra tương ứng

Hình 2.1 Sơ đồ tổng quan của mạch số

Mạch số được phân làm hai loại: mạch tổ hợp và mạch dãy Đầu ra của mạch tổ hợp chỉ phụ thuộc vào giá trị hiện tại của đầu vào Trong khi đó, mạch dãy có giá trị đầu ra phụ thuộc vào cả giá trị hiện tại và giá trị trước đó của đầu vào Nói cách khác, mạch tổ hợp không có tính nhớ, nhưng mạch dãy có các phần tử nhớ (memory)

Chương này trình bày về các phương pháp biểu diễn mạch số và ngôn ngữ mô tả thuộc tính dùng cho mạch số

2.1 Mạch tổ hợp

Có rất nhiều cách biểu diễn mạch tổ hợp như sử dụng hàm Boole, bảng chân lý, bìa Karnaugh, mạch các cổng logic, mạch ở mức RTL, đồ thị quyết định nhị phân, hoặc công thức CNF Phần nãy sẽ giới thiệu tổng quan các phương pháp trên

Trang 33

hỗ trợ cho quá trình tối giản hóa các phương trình Boole

Đại số Boole dựa trên tập hợp các tiên đề được giả sử là đúng Từ các tiên đề này, tất cả các định lý của đại số Boole được chứng minh Trên thực tế, các định lý này đã cho thấy hiệu quả thực tiễn đáng kể, bởi vì chúng cung cấp các phương pháp tối ưu mạch logic để tạo ra các mạch nhỏ hơn và chi phí thực hiện thấp hơn Bảng 2.1 sẽ gửi đến các tiên đề Boole cơ bản

Bảng 2.1 Các tiên đề Boole cơ bản

Ký hiệu Tiên đề Ký hiệu Tiền đề đối ngẫu Tên

Trang 34

Các tiên đề và định lý của đại số Boole tuân theo nguyên tác đối ngẫu Nếu ký tự

0 và 1, phép AND và OR được tráo đổi cho nhau thì phương trình vẫn đúng Từ các tiên đề cơ bản này, các định lý cho một biến hoặc cho nhiều biến được xây dựng như được chỉ ra trong Bảng 2.2 và Bảng 2.3

Các tiên đề và định lý này cũng cấp một lý thuyết cơ bản hỗ trợ cho việc xây dựng và đơn giản hóa mạch logic tổ hợp

Trang 35

2.1.2 Bảng chân lý và bìa Knaugh

2.1.2.1 Giới thiệu chung

Bìa Karnaugh (K-maps) là một phương pháp đồ họa cho việc tối giản hóa phương trình Boole Phương pháp này được phát minh năm 1953 bởi một kỹ sư viễn thông tên là Maurice Karnaugh

Bìa Karnaugh của hàm logic n biến là một bảng gồm n 2 ô tương ứng với n 2 trạng thái của các biến, hai ô liền kề nhau chỉ khác nhau giá trị của một biến Nói cách khác, các hàng và cột được sắp xếp theo nguyên lý mã Gray Các ô của hàng trên cùng và hàng dưới cùng; cột đầu tiên và cột cuối cùng cũng được gọi là liền kề Hình 2.3 sẽ gửi đến một bảng chân lý và bìa Karnaugh cho hàm 3 biến

Hình 2.3 a) Bảng chân lý cho hàm Boole 3 biến b)+c) Bìa Knaugh tương ứng

2.1.2.2 Tối ưu hàm logic sử dụng bìa Knaugh

Vấn đề tối thiểu hóa hàm logic có ý nghĩa rất lớn trong việc thiết kế mạch số liên qua đếnn đơn giản hóa mạch và tiết kiệm kinh tế Một trong các phương pháp tối thiểu hóa đó là “phép phủ” thực hiện trên bìa Karnaugh

Phép phủ trên bìa Karnaugh được dựa trên cơ sở thực hiện phép tuyển:

A.X  A.X  AX  X  A trong đó A có thể một biến hoặc một biểu thức

Vậy nếu ta thực hiện phủ 2 ô, được một biểu thức mới giảm đi một biến so với ban đầu Phép phủ bìa Karnaugh chỉ thực hiện với 2k ô (k=1,2,3,…) được bảo chọn trong một hình chữ nhật Nếu thực hiện phủ 2k ô, được kết quả là một biểu thức mới

giảm đi k biến so với ban đầu

Trang 36

Một số khái niệm liên qua đến bìa Karnagh:

Đỉnh: mỗi giá trị của hàm Y = f X1, X2, X3,…) tương ứng với một trạng thái của các đầu vào được gọi là một đỉnh Mỗi đỉnh có thể mang giá trị “0”, “1” hoặc “X” (không xác định)

Implicant: mỗi implicant phủ 2k đỉnh và là hội của (n-k) biến

Đỉnh đánh dấu: là đỉnh chỉ thuộc vào một implicant

Implicant nguyên tố: là implicant chứa ít nhất một đỉnh đánh dấu

Quy tắc “phủ”: phủ 2k ô (hay 2k đỉnh) mang giá trị “1" hoặc giá trị “X” liền kề nhau được một implicant

 Mỗi lần “phủ” đảm bảo số đỉnh được nhóm là nhiều nhất

Bước 3: Xác định các đỉnh đánh dấu cũng như các implicant nguyên tố

Bước 4: Xác định phủ tối thiểu cái mà chứa toàn bộ các implicant nguyên tố cùng với một số lượng tối thiểu các implicant khác đủ để bảo phủ hết các đỉnh 1 (hoặc 0)

Bước 5: Xây dựng công thức đã tối giản của hàm Boole

Trang 37

Hình 2.4 sẽ trình bày các bước tối tư hàm fx yzwzxyzwy bằng bìa Knaugh như một ví dụ minh họa

Hình 2.4 Ví dụ về tối ưu hóa hàm Boole bằng bìa Knaugh

2.1.3 Mạch số logic ở mức cổng và mức RTL

2.1.3.1 Định nghĩa gate-net-list

Net-list là một đồ thị có hướng, mà các node tương ứng với các phần tử nguyên thủy của mạch, và các cạnh tương ứng với các dây kết nối phần tử Mỗi node được gắn một nhãn với một biến Boole wi Ba phần tử nguyên thủy của mạch gồm các phần tử vào ra X,Y, chốt (flip-flop) R, và gates Đầu vào không có fanin Latch có một đầu vào duy nhất, và có một giá trị khởi tạo ban đầu Liên kết với mỗi nút là một hàm chức năng Boole với các biến là fanin của nó Tập hợp con của các node là đầu ra Y Các kết quả đầu ra của chốt có thể được coi là đầu vào giả, và các phần tử

Trang 38

đầu vào của các chốt có thể được xem xét như là kết quả đầu ra giả của một mạch tổ hợp

Hình 2.5 Ví dụ về Gate-net-list

2.1.3.2 Mở rộng gate-net-list thành component-net-list

Định ngh a component-net-list)

Là một đồ thị có hướng gồm các node và các cạnh Các node là các cổng logic

cơ bản, đầu vào, đầu ra, các phép toán cộng, trừ, nhân, dịch

Trang 39

Trong Hình 2.6, mạch điện có thêm các phép toán cơ bản, như cộng, trừ, nhân, phép slice, bộ mux và một số phép toán khác

2.1.4 Đồ thị quyết định nhị phân

BDD [Error! Reference source not found.] là một đồ thị không tuần hoàn có

hướng dùng để biểu diễn cho một hàm Boole và cos đóng góp quan trọng trong giải quyết các vấn đề phức tạp của kiểm chứng hình thức phần cứng cũng như phần mềm Cấu trúc của một BDD có các đặc điểm sau:

 có hướng không nối vòng và có một vài nốt gốc

 mỗi đồ thị con được bắt nguồn bởi một số nốt biễu diễn cho hàm Boole hoặc giả hàm Boole

 mỗi nút (điểm phân nhánh) tương ứng với một phân rã của các hàm liên quan

 các nốt lá của đồ thị tương ứng với các trường hợp cuối của sự phân rã (ví dụ như các giá trị đầu ra của hàm)

Các mục tiếp theo sẽ trình bày chi tiết về đồ thị quyết định nhị phân biểu diễn cho mạch logic dựa trên các khái niệm cơ bản và các ký hiệu ban đầu

2.1.4.1 Các ký hiệu và khái niệm cơ bản

Ta giả sử rằng tất cả các hàm được biểu diễn qua cùng n đối số, được viết là x1,

x2,…,xn Trong việc biểu diễn một hệ thống như một mạng logic tổ hợp hoặc một biểu thức Boole như một hàm Boole, chúng ta phải chọn một thứ tự của các đầu vào hoặc các biến, và thứ tự này phải giống nhau cho tất cả các hàm được biểu diễn Kết quả hàm số khi một biến xi được thay thế bởi một hằng số b được gọi là

“cofactor” của f và được viết là f| xi=b và khi đó:

f| xi=b(x1,…,xn) = f(x1,…,xi-1,b,xi+1,…,xn)

và f = x i f| xi=1 + x i ’ f| xi=0 (x i ’ = not (x i ) )

Tương tự, kết quả hàm số khi thay xi bởi một hàm số g được gọi là một hàm hợp của f và g, kí hiệu là f| xi=g Khi đó:

f| xi=g(x1,…,xn) = f(x1,…,xi-1,g(x1,…,xn),xi+1,…,xn)

Trang 40

Một số hàm có thể không phụ thuộc vào tất cả các biến Tập phụ thuộc của một

hàm f, kí hiệu là I f chứa đựng những đối số mà hàm phụ thuộc

I f = {i|f|xi=0 # i|f|xi=1}

V là tập hợp các nốt của đồ thị Mỗi nốt của đồ thị:

+ nếu không phải nốt lá có một thuộc tính index = {1,2,3…}, mỗi index thể hiện cho một biến của hàm Boole trong tập {x1, x2, x3,…}

+ nếu là nốt lá có thuộc tính value(v)  {0,1}

+ nếu không phải nốt lá sẽ có hai nốt kế nhiệm low(v) và high(v)

E là tập hợp các cung có hướng giữa các nốt của đồ thị

Các đặc điểm của OBDD:

Đối với mỗi cặp nốt không phải nốt lá (v, low(v)) hoặc (v, high(v)) ta có: index(v) < index(low(v)) hoặc index(v) < index(high(v))

Một OBDD với một nốt gốc v chỉ ra một hàm Boole f v đệ quy như sau:

+ nếu v là nốt lá với value(v) = 1 thì f v=1

+ nếu v là nốt lá với value(v) = 0 thì f v=0

+ nếu v không phải nốt là và index(v) = i thì

f v =x i f low(v) + x i f high(v)

Hình 2.7 sẽ gửi đến một ví dụ về đồ thị quyết định nhị phân cho hàm

c b a c b c b

a

abc

Ngày đăng: 28/02/2021, 07:35

TÀI LIỆU CÙNG NGƯỜI DÙNG

TÀI LIỆU LIÊN QUAN

🧩 Sản phẩm bạn có thể quan tâm

w