Tải bản đầy đủ (.pdf) (99 trang)

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

Bạn đang xem bản rút gọn của tài liệu. Xem và tải ngay bản đầy đủ của tài liệu tại đây (3.38 MB, 99 trang )

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


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




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


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

1


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

2


4.5.2 Gỡ lỗi .....................................................................................................91
CHƢƠNG 5.

KẾT LUẬN ....................................................................................92

TÀI LIỆU THAM KHẢO .........................................................................................93

3


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

IC

Integrated Circuit

Vi mạch tích hợp

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

SAT


Satisfiability

Thuật toán SAT

SMT

Satisfiability Modulo Theory

Thuật toán SMT

SoC

System on Chip

Hệ thống trên chip

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

4


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

Y  ABC  ABC  ABC

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
5


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

6


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

7


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ó

8


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.

9


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.

10


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.

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ạch1.

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
1

Nguồn: International Technology Roadmap for Semiconductors 2007, 2009

11


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
2 phần lớn nhất và tăng trƣởng nhanh nhất (Hình 1.2).

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

2

Nguồn: International Technology Roadmap for Semiconductors 2007, 2009


12


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
13


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

Miscommunication Những kỹ sƣ thiết kế, kỹ sƣ kiến trúc không hiểu nhau

12.70%
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

Power down issues Các đặc điểm tiết kiệm điện bằng cách tắt xung đồng hồ
Documentation Tài liệu không đúng, không hoàn chỉnh
Complexity
Random
initialization

Late definition

8%
5.70%
4.40%

Vi kiến trúc quá phức tạp

3.90%

Các trạng thái không đƣợc xóa hoặc khởi tạo đúng

3.40%

Các đặc điểm không có ở vi kiến trúc ban đầu mà đƣớc
thêm vào sau

14

2.80%


Incorrect RTL
assertions
Design mistake

Các điểm kiểm tra khẳng định sai, bị làm sai khi sửa lỗi
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.80%

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.

15


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

16




Phòng phân tích thị trƣờng

Ý tƣởng này đƣợc mô tả bằng ngôn ngữ tự nhiên trong các văn bản nhƣ slides,
bản đồ tƣ duy, bảng tính, trong đó mô tả các thông tin về:


Chức năng cần thiết của vi mạch, các chuẩn công nghiệp cần tuân thủ



Ƣớc lƣợng giá thành của vi mạch



Khách hàng



Kịch bản sử dụng (application scenarios)

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)
17





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,…

18


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.

1.3.6 Tổng hợp - Synthesis
Sử dụng phần mềm tổng hợp logic để chuyển đổi từ thiết kế HDL thành mạng
cổng logic (logic gate netlist).
Đầu vào của phần mềm tổng hợp:


Thiết kế HDL



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.

19


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 độ

20


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.

21


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
22


×