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

Kiểm chứng khối điều khiển bus amba AHB

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.42 MB, 75 trang )

LỜI CAM ĐOAN
Tôi xin cam đoan: Luận văn này là công trình nghiên cứu thực sự của cá nhân,
được thực hiện dưới sự hướng dẫn khoa học của Tiến sĩ Hoàng Phương Chi.
Các số liệu, những kết luận nghiên cứu được trình bày trong luận văn này
trung thực và chưa từng được công bố dưới bất cứ hình thức nào.
Tôi xin chịu trách nhiệm về nghiên cứu của mình.

Học viên:

Phạm Minh Đức

-1-


LỜI CẢM ƠN
Lời đầu tiên, tôi xin chân thành cảm ơn Tiến sĩ Hoàng Phương Chi, người đã
trực tiếp hướng dẫn tôi hoàn thành luận văn. Với những lời chỉ dẫn, những tài liệu,
sự tận tình hướng dẫn và những lời động viên của cô đã giúp tôi vượt qua nhiều khó
khăn trong quá trình thực hiện luận văn này.
Tôi cũng xin cảm ơn quý thầy, cô giảng dạy chương trình cao học thuộc
trường Đại học Bách Khoa Hà Nội đã truyền dạy cho tôi những kiến thức quý báu,
những kiến thức này rất hữu ích và đã giúp tôi rất nhiều khi thực hiện nghiên cứu.
Tôi cũng xin gửi lời cảm ơn đến bạn bè, cùng tập thể thầy cô và các bạn trong
phòng thí nghiệm EDA-BK đặc biệt là các bạn trong nhóm AMBA AHB đã luôn
ủng hộ, giúp đỡ và đưa ra nhưng góp ý quý báu giúp tôi hoàn thiện luận văn này.
Cuối cùng tôi xin gửi lời cảm ơn tới gia đình và bạn bè đã động viên, giúp đỡ
và tạo điều kiện cho tôi hoàn thành luận văn này.
Tôi xin chân thành cảm ơn!

Học viên:


Phạm Minh Đức

-2-


MỤC LỤC
LỜI CAM ĐOAN ............................................................................................. - 1 LỜI CẢM ƠN ................................................................................................... - 2 MỤC LỤC......................................................................................................... - 3 Danh mục các kỹ hiệu và chữ viết tắt .............................................................. - 5 Danh mục các bảng .......................................................................................... - 6 Danh mục hình vẽ ............................................................................................. - 6 MỞ ĐẦU ........................................................................................................... - 8 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.4) Vị trí kiểm chứng vi mạch trong quy trình thiết kế vi mạch..................... - 15 1.5) Nguyên tắc cơ bản của kiểm chứng vi mạch ........................................... - 18 Chương 2 - KIỂM CHỨNG HÌNH THỨC ................................................... - 20 2.1) Giới thiệu............................................................................................... - 20 2.2) Khái niệm cơ bản của kiểm chứng hình thức .......................................... - 20 2.3) Mô hình hóa........................................................................................... - 21 2.3.1)Biểu diễn hàm Boolean .................................................................... - 21 2.3.2) Biểu diễn mạch tổ hợp ..................................................................... - 26 2.3.3) Biểu diễn mạch tuần tự .................................................................... - 28 2.4)Ngôn ngữ mô tả đặc điểm kỹ thuật của mạch .......................................... - 30 2.4.1) Logic mệnh đề................................................................................. - 30 2.4.2) Cây tính toán CTL và logic thời gian ............................................... - 31 2.4.3) Ngôn ngữ SystemVerilog Assertion ................................................ - 34 2.5) Phương pháp chứng minh ...................................................................... - 38 2.5.1) Kiểm chứng mô hình và tính toán biểu tượng .................................. - 38 2.5.2) Kiểm chứng mô hình giới hạn (Bounded Model Checking) ............. - 41 2.5.3) Kiểm chứng thuộc tính khoảng (Interval Property Checking) .......... - 43 Chương 3 - CHUẨN GIAO TIẾP AMBA AHB ............................................ - 45 3.1) Giới thiệu về chuẩn giao tiếp AMBA ...................................................... - 45 3.1.1) Tổng quan về AMBA ...................................................................... - 45 -3-


3.1.2) Các thuật ngữ .................................................................................. - 47 3.2) Giới thiệu về AMBA AHB ...................................................................... - 47 3.3) Các chỉ tiêu kỹ thuật của AMBA AHB .................................................... - 49 3.3.1) Nguyên tắc hoạt động ...................................................................... - 49 3.3.2) Các loại chuyển giao ....................................................................... - 51 3.3.3) Burst operation ................................................................................ - 52 3.3.4) Quá trình chuyển giao khi gặp các phản hồi từ AHB slave .............. - 54 Chương 4 - XÂY DỰNG FST CHO WRAP4 VÀ KIỂM CHỨNG TRÊN
PHẦN MỀM ONESPIN ................................................................................. - 56 4.1) Tổng quan về bộ quan sát và FST .......................................................... - 56 4.2) Giới thiệu về BUS – FST ........................................................................ - 57 4.3) Xây dựng đặc tính WRAP4 ..................................................................... - 58 4.3.1 Recorder- FST .................................................................................. - 58 4.3.2 Sơ đồ FST cho đặc tính WRAP4....................................................... - 63 4.4) Công cụ Onespin ................................................................................... - 64 4.5) Triển khai sơ đồ FST của WRAP4 bằng ngôn ngữ SVA .......................... - 68 4.6) Kết quả kiểm chứng các assertion trên phần mềm ONESPIN ................. - 70 KẾT LUẬN ..................................................................................................... - 73 TÀI LIỆU THAM KHẢO:............................................................................. - 74 -

-4-


Danh mục các kỹ hiệu và chữ viết tắt
AMBA High-performance Bus

Nâng cao hiệu quả Bus AMBA

AMBA Advanced Microcontroller Bus
Architecture
Advanced Peripheral Bus
APB

Kiến trúc Bus vi điều khiển tiên
tiến
Nâng cao Bus giao điện

AHB


ASB

Advanced System Bus

Nâng cao Bus hệ thống

AVB

Assertion Based Verification

Kiểm chứng dựa trên khẳng định

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

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

VIP

Verification Intellectual Property

Sở hữu trí tuệ kiểm chứng


-5-


Danh mục các bảng
Bảng 1.1 Phân bổ lỗi trong chip Pentium 4 ....................................................... - 14 Bảng 2.1 Các cổng logic cơ bản và biểu thức Boolean, CNF tương ứng ........... - 25 Bảng 2.2 Bảng chân lý của các toán tử logic ..................................................... - 30 Bảng 2.3 Cấu trúc của Immediate Assertions.................................................... - 34 Bảng 2.4 Ví dụ về một assertion tức thời .......................................................... - 34 Bảng 2.5 Cấu trúc của Concurrent Assertions ................................................... - 35 Bảng 2.6 Ví dụ về một assertion đồng thời ....................................................... - 35 Bảng 2.7 Ví dụ về biến cục bộ .......................................................................... - 38 Bảng 2.8 Thuật toán tìm trạng thái có thể đạt đến bằng tính toán biểu tượng .... - 41 Bảng 2.9 Phân tích việc có thể đạt đến trạng thái lỗi ......................................... - 41 Bảng 3.1 Các thuật ngữ .................................................................................... - 47 Bảng 3.2 Các thành phần điển hình của AMBA AHB ...................................... - 48 Bảng 3.3 Mã hóa tín hiệu burst ......................................................................... - 52 Bảng 4.1 Ví dụ về các trạng thái máy ghi cho giao thức AHB .......................... - 58 Bảng 4.2 Ví dụ về bảng chuyển trạng thái cho giao thức AHB ......................... - 59 Bảng 4.3 Các trạng thái của FST ...................................................................... - 68 Bảng 4.4 Giao diện tín hiệu .............................................................................. - 68 Bảng 4.5 FST ................................................................................................... - 69 Bảng 4.6 Các ràng buộc cho đầu vào của AHB-Master..................................... - 70 Bảng 4.7 Các thuộc tính khoảng cho AHB-Master ........................................... - 70 Bảng 4. 8 Kết quả kiểm chứng các assertion trên phần mềm ONESPIN ........... - 71 -

Danh mục hình vẽ
Hình 1.1 Khoảng cách giữa năng suất sản 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 chip .................................................. - 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 Bậc thang độ trừu tượng của thiết kế .................................................. - 16 Hình 1.7 Quan hệ giữa quá trình thiết kế và quá trình kiểm chứng.................... - 17 Hình 1.8 Nguyên tắc cơ bản của kiểm chứng .................................................... - 19 Hình 2.1 Các yếu tố của kiểm chứng hình thức................................................. - 21 Hình 2.2 Ví dụ về BDD .................................................................................... - 22 Hình 2.3 Hai BDD (A,B) của cùng một hàm khác nhau về thứ tự các biến ....... - 23 Hình 2.4 Hai BDD (A,B) của cùng một hàm .................................................... - 23 -

-6-


Hình 2.5 Ví dụ về mạch tổ hợp ......................................................................... - 26 Hình 2.6 Ví dụ về gate-net-list .......................................................................... - 27 Hình 2.7 Mở rộng gate-net-list thành component-net-list .................................. - 27 Hình 2.8 Component–net-list ............................................................................ - 27 Hình 2.9 Cấu trúc của mạch tuần tự đồng bộ .................................................... - 29 Hình 2.10 Mô hình mạch trải ............................................................................ - 29 Hình 2.11 Ý nghĩa các toán tử LTL .................................................................. - 32 Hình 2.12 Các khối của assertion...................................................................... - 36 Hình 2.13 Ví dụ về sequence ............................................................................ - 36 Hình 2.14 Ví dụ về toán tử lặp .......................................................................... - 37 Hình 2.15 Mô hình mạch trải ............................................................................ - 42 Hình 2.16 Mô hình mạch dùng trong IPC ......................................................... - 44 Hình 3.1 Sơ đồ tổng quát cấu trúc của chuẩn giao tiếp AMBA ......................... - 46 Hình 3.2 Cấu trúc của một AMBA-AHB đơn giản với 3 Master và 4 Slave...... - 49 Hình 3.3 Các giao diện của AHB bus master .................................................... - 49 Hình 3.4 Quá trình chuyển giao cơ bản ............................................................. - 50 Hình 3.5 Ví dụ về các kiểu chuyển giao ............................................................ - 52 Hình 3.6 Four-beat wrapping burst ................................................................... - 53 Hình 3.7 Four-beat incrementing burst ............................................................. - 53 Hình 3.8 Eight-beat wrapping burst .................................................................. - 54 Hình 3.9 Error response .................................................................................... - 55 Hình 3.10 Transfer with retry response ............................................................. - 55 Hình 4.1 Một phần của máy ghi cho giao thức AHB......................................... - 60 Hình 4.2 FST của Wrap4 burst operation .......................................................... - 63 Hình 4.3 Giao diện chính của chương trình....................................................... - 64 Hình 4.4 Hộp thoại Read VHDL ...................................................................... - 64 Hình 4.5 Hộp thoại Elaborate ........................................................................... - 65 Hình 4.6 Chế độ MV ........................................................................................ - 65 Hình 4.7 Hộp thoại Manage Assertions ............................................................ - 66 Hình 4.8 Thiết kế không thoả mãn thuộc tính ................................................... - 66 Hình 4.9 Màn hình debug giúp tìm lỗi .............................................................. - 67 Hình 4.10 Thiết kế thoả mãn thuộc tính ............................................................ - 67 Hình 4.11 Lỗi khi gặp đáp ứng ERROR từ AHB slave ..................................... - 71 -

-7-


MỞ ĐẦU
Hiện nay, kiểm chứng thiết kế phần cứng IC (IC hardware design verification)
là trở ngại chính và chiếm nhiều công sức nhất trong quá trình thiết kế và chế tạo
IC. Kiểm chứng chiếm tới 70% giá thành và công sức thiết kế phần cứng IC và
chiếm tới 40% giá thành thiết kế hệ thống điện tử gồm phần cứng IC và phần mềm
[nguồn: Internation Technology Roadmap for Semicoductors 2009]. Vì vậy, các
giải pháp công nghệ nhằm nâng cao chất lượng, tăng năng suất và giảm giá thành
kiểm chứng IC đang là trọng tâm nghiên cứu, phát triển của các trường đại học,
trung tâm nghiên cứu và các công ty thiết kế sản xuất IC trên thế giới [nguồn: IBM,
Intel websites].
Thị trường kiểm chứng thiết kế IC còn là một thị trường khá mới mẻ, chưa
phát triển như thị trường thiết kế IC. Trên thế giới, hiện chỉ có một vài công ty lớn

cung cấp các nhân IP kiểm chứng (Verification IP) tiêu chuẩn. Ở Việt Nam, thị
trường này hoàn toàn để ngỏ, các nhóm thiết kế, phát triển IC thường tự kiểm chứng
thiết kế của mình bằng phương pháp thủ công, năng suất thấp. Tuy nhiên, để phát
triển được ngành công nghiệp thiết kế IC của Việt Nam, việc phát triển các nhân IP
kiểm chứng cũng quan trọng như việc thiết kế ra các nhân IP chức năng.
Hiểu được tầm quan trọng của kiểm chứng trong quá trình thiết kế vi mạch, em
quyết định làm luận văn liên quan đến lĩnh vực này và cụ thể là là phát triển một lõi
IP kiểm chứng bộ điều khiển AHB Master. Lõi VIP này được phát triển bằng ngôn
ngữ System Verilog Assertions nên nó có thể sử dụng trong cả môi trường mô
phỏng. Kỹ thuật kiểm tra thuộc tính khoảng được sử dụng để kiểm chứng các hoạt
động của một bộ điểu khiển AHB Master mã nguồn mở tuân theo các đặc điểm kỹ
thuật tiêu chuẩn.
Luận văn này gồm 4 chương với cấu trúc như sau:
Chương 1: Giới thiệu tổng quan về kiểm chứng vi mạch. Chương này cho ta
biết về quá trình thiết kế mạch số, vai trò và vị trí của kiểm tra chức năng trong quá

-8-


trình đó. Các khái niêm và nguyên lý cơ bản về kiểm tra chức năng và phương pháp
dùng trong kiểm tra chức năng vi mạch số.
Chương 2: Giới thiệu về kiểm chứng hình thức. Chương này sẽ đề cập đến
các khái niệm cơ bản của kiểm chứng hình thức, cách mô hình hoá một mạch số
thành các mô hình toán học, các ngôn ngữ được sử dụng để mô tả thuộc tính và các
phương pháp để chứng minh.
Chương 3: Giới thiệu về chuẩn giao tiếp Bus AMBA và AHB. Chương này
giới thiệu các chỉ tiêu kỹ thuật của AMBA AHB và khối AHB Master
Chương 4: Xây dựng FST cho WRAP4 và kiểm chứng trên phần mềm
Onespin. Chương này sẽ xây dựng một trong các đặc tính cơ bản của AHB là
WRAP4 dựa trên Recoder-FST (Finite State Structure). Đưa ra các bước để triển

khai nhân kiểm chứng, công cụ được sử dụng để kiểm chứng và các kết quả đạt
được.

-9-


Chương 1 - GIỚI THIỆU KIỂM CHỨNG VI MẠCH
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. Gần đây là lỗi anten của điện thoại Iphone 4; lỗi này đã
gây khó chịu cho người tiêu dùng, làm hãng sản xuất Apple phải tốn khá nhiều tiền
để đổi vỏ máy cho rất nhiều người. 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.
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
- 10 -


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 và năng suất thiết kế vi mạch [13]
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
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ế,

- 11 -


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 nhanh. 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 chip [14]

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

50% là các lỗi logic và chức năng  cần các phương pháp kiểm chứng để
phát hiện lỗi logic, lỗi chức năng.

Hình 1.3 Phân bổ các loại lỗi trong vi mạch [15]
Biểu đồ trong Hình 1.3 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 cũng chiếm tỷ lệ khá cao với 8%.
Theo sau là các lỗi do tài liệu không hoàn chỉnh, vi kiến trúc quá phức tạp, hoặc như

- 13 -


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ế.

Goof
2.80%
2.80%
3.40%

2.60%

12.70%

3.90%

4.40%

11.40%

5.70%

9.30%

8%
9.30%

Miscommunica
tion
Microarchitect
ure
Logic/Microcod
e
Corner cases
Power down
issues
Documentation

Hình 1.4 Phân bổ lỗi trong chip Pentium 4 [16]
Bảng 1.1 Phân bổ lỗi trong chip Pentium 4 [16]
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%

Documentation

Tài liệu không đúng, không hoàn chỉnh

4.40%

Complexity

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%

Random
initialization
Late definition

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

System Verification

2%
2%

2%

4%

Gate level verification
10%
40%

10%
10%
15%

5%

Functional hardware
description language
verification
Establish simulation
environment
Architecture
verification
Analog

Source: 1999
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 [13] 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.
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 độ

- 15 -


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.6).

Hình 1.6 Bậc thang độ trừu tượng của thiết kế [9]
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 luận văn này, chúng ta 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.7 cho thấy mối quan hệ giữa

quá trình thiết kế và quá trình kiểm chứng.

- 16 -


Hình 1.7 Quan hệ giữa quá trình thiết kế và quá trình kiểm chứng [9]
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.

- 17 -


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

- 18 -


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

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ì độ
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ế.
- 19 -


Chương 2 - KIỂM CHỨNG HÌNH THỨC
2.1) Giới thiệu
Trong các hệ thống phần cứng và phần mềm, kiểm chứng hình thức là hành
động chứng minh hoặc bác bỏ đúng đắn của các thuật toán cơ bản dựa trên các đặc
điểm kỹ thuật, bằng cách sử dụng phương pháp toán học.

Kiểm chứng hình thức có thể rất hữu ích trong việc chứng minh tính đúng đắn
của hệ thống như: giao thức mật mã, mạch tổ hợp, mạch kỹ thuật số với bộ nhớ
trong, và phần mềm thể hiện dưới dạng mã nguồn.
Trong kiểm chứng hình thức, mô tả kỹ thuật và thiết kế sẽ được chuyển thành
các mô hình toán học sau đó sẽ chứng minh sự đúng đắn thiết kế bằng các phương
pháp toán học. Vì vậy, các kỹ thuật kiểm chứng hình thức có thể xác minh thiết kế
tổng thể một cách thấu đáo. Kỹ thuật kiểm chứng hình thức đã được sử dụng rộng
rãi cho việc xác minh của thiết kế phần mềm. Những kỹ thuật này sau đó mở rộng
cho việc kiểm chứng thiết kế phần cứng. Đặc biệt với sự phát triển của biểu đồ
quyết định nhị phân (BDD) khả năng của các kỹ thuật kiểm chứng hình thức đã
được cải thiện đáng kể bởi vì BDD có thể biểu diễn các hàm logic lớn và phức tạp
một cách hiệu quả. Kết quả là, hiện nay rất nhiều công cụ kiểm chứng hình thức đã
được phát triển.
2.2) Khái niệm cơ bản của kiểm chứng hình thức
Kiểm chứng hình thức hệ thống số yêu cầu ba yếu tố
 Một mô hình toán học của hệ thống cho phép mô tả chính xác hoạt
động của hệ thống
 Một ngôn ngữ phù hợp với mô hình trên dùng để trình bày các thuộc
tính cần được chứng minh
 Một phương pháp để kiểm tra hệ thống có thỏa mãn được thuộc tính
(hệ thống là một mô hình của thuộc tính) hay không?

- 20 -


Hình 2.1 Các yếu tố của kiểm chứng hình thức [8]
Sau đây ta sẽ xem xét cụ thể các yếu tố cấu thành nên phương pháp kiểm chứng
hình thức.
2.3) Mô hình hóa
2.3.1) Biểu diễn hàm Boolean

Đồ thị quyết định nhị phân BDD
BDD là một đồ thị không tuần hoàn có hướng dùng để đại diện cho một hàm
Boolean. Một nốt trong BDD được liên kết với một biến Boolean và có hai cạnh đi
ra.Một cạnh đại diện cho giá trị (1) TRUE của biến, và cạnh còn lại cho giá trị (0)
FALSE. Hai cạnh trỏ đến các nốt BDD khác. Các nốt được trỏ bởi cạnh 0 (0-edge)
được gọi là nốt 0 (0-node) và các nốt được trỏ bởi cạnh 1 (1-edge) được gọi là nốt 1
(1-node). Sử dụng quy ước này, cạnh bên trái đại diện cho giá trị 1 của biến và cạnh
phải đại diện cho giá trị 0. Nốt mà không có một cạnh đi vào (không được chỉ tới)
được gọi là nốt gốc của BDD. Một nốt lá hoặc nốt cuối, ký hiệu bởi một hình
vuông, không liên kết với một biến là một nốt hằng số có giá trị là 0 hoặc 1. Kích
thước của BDD, ký hiệu là |BDD|, là số nốt trong BDD. Để đánh giá một hàm đại
diện bởi BDD theo giá trị đầu vào của nó, chúng ta bắt đầu từ nốt gốc và dựa vào
các cạnh để xác định giá trị của biến. Ví dụ, tại nốt x, cạnh phải sẽ được chọn nếu x
có giá trị 0, ngược lại, cạnh trái sẽ được chọn. Nếu đường đi dẫn đến nốt lá 0, hàm
- 21 -


sẽ có giá trị là 0. Nếu đường đi dẫn nốt lá 1, hàm sẽ có giá trị.Hình 2.2 là một ví dụ
về BDD. Hàm biểu diễn của BDD này là

f  abd  abc  abc  ab

Hình 2.2 Ví dụ về BDD [9]
Hai BDD trong Hình 2.3 được biểu diễn hai hàm cùng một chức năng mặc dù
hai đồ thị không giống nhau. Sử dụng kỹ thuật tìm đường ta có thể chứng minh hai
hàm mà BDD cùng biểu diễn có chức năng giống nhau. Xem xét BDD Hình 2.3 B,
BDD này biểu diễn hàm
f  dc  d cba  d cba  d cba  d cb  dcba
 cd  abcd  abcd  a bc d  bc d
 ( ab  ab  ab  ab )cd  abcd  abcd  abc d  abcd  ( a  a )bc d

 ( abcd  abcd )  ( abcd  abcd )  ( abcd  abc d )  abcd  ( abcd  abcd )  abcd
 abd  abd  abcd  abc  abcd
 ab  abd  abc  abc

Hàm này giống hệt với hàm được biểu diễn bởi BDD trong Hình 2.3 A

- 22 -


Hình 2.3 Hai BDD (A,B) của cùng một hàm khác nhau về thứ tự các biến [9]
Ta thấy rằng giữa hai BDD, thứ tự các biến là khác nhau. Tại BDD đầu tiên,
theo đường bất kỳ, thứ tự các biến là a, b, c, d. Trong khi đó tại BDD thứ hai thứ tự
các biến là d, c, b, a. Mục tiêu của chúng ta là tìm được một đồ thị đại diện duy
nhất. Trong trường hợp này, hai hàm có cùng chức năng sẽ có BDD giống hệt nhau.
Vì vậy, để đạt được sự duy nhất đó, thứ tự các biến cần phải được sắp xếp theo một
trình tự nhất định. Một BDD được xếp theo thứ tự (OBDD) là một BDD có các biến
được sắp xếp. Sử dụng thứ tự các biến <. Một OBDD sẽ bắt buộc mọi đường đi có
chứa biến x và y thì nốt x phải ở trước nốt y nếu xVới việc sắp xếp các biến theo thứ tự, chúng ta đã xác định được rất nhiều BDD
có cùng chức năng. Tuy nhiên các OBDD vẫn chưa phải là duy nhất. Ví dụ, hai
OBDD trong Hình 2.4 có thứ tự biến tương tự và biểu diễn các hàm giống nhau,
nhưng chúng không giống hệt nhau.

Hình 2.4 Hai BDD (A,B) của cùng một hàm [9]
- 23 -


Nếu các OBDD thoả mãn các điều kiện sau đây, nó sẽ là duy nhất
 Không có những nốt A và B mà chúng có cùng nốt 0 và nốt 1.
 Không có nốt nào mà hai cạnh của nó cùng trỏ tới một nốt.

Một OBDD thoả mãn hai điều kiện trên được gọi là OBDD rút gọn (ROBDD).
Tính chất của ROBDD được nêu ra trong định lý 2.1
Định lý 2.1:
ROBDD là duy nhất.
Hai hàm Boolean tương đương với nhau khi và chỉ khi ROBDD của chúng giống
hệt nhau đối với bất kỳ thứ tự biến nào.
Công thức CNF và bài toán SAT
Dạng chuẩn hội (Conjunctive Normal Forms-CNF) là một dạng biểu diễn của
các hàm Boolean dưới dạng hội của các mệnh đề trong đó mệnh đề là tuyển của các
literal, và mỗi literal là một biến Boolean hoặc nghịch đảo của nó.
CNF của hàm Boolean biểu diễn một mạch tổ hợp là tích của tất cả các CNF
biểu diễn các nốt của mạch. Cột cuối cùng của Bảng 2.1cho thấy CNF của các cổng
tương ứng. CNF biểu diễn một mạch tổ hợp bằng có thể được xây dựng bằng cách
kết hợp tất cả các CNF của tất cả các cổng của mạch đó. Ví dụ với Hình 2.5, CNF
tương ứng là:
CNF(x1, x2, x3, g0, g1, g2, g3, o) = (x1 ∨ g0) ∧ (¬x1 ∨¬ g0) ∧
(¬g1 ∨ g0) ∧ (¬g1 ∨ x2) ∧ (g1 ∨ ¬g0 ∨ ¬x2) ∧
(¬g2 ∨ x1) ∧ (¬g2 ∨ x3) ∧ (g2 ∨¬ x1 ∨¬ x3) ∧
(g3 ∨ g¬1) ∧ (g3 ∨¬ g2) ∧ (¬g3 ∨ g1 ∨ g2) ∧
(o∨ ¬g3) ∧ (¬o ∨ g3)

- 24 -


Bảng 2.1 Các cổng logic cơ bản và biểu thức Boolean, CNF tương ứng [10]
Cổng logic

Tên

Biểu thức

Boolean

CNF

(¬h ∨ f ) ∧ (¬h ∨ g)∧ (h ∨¬f

AND

h=f ∧ g

OR

h=f ∨ g

INVERTER

h= ¬f

XOR

h= f ⊕ g

NAND

h = ¬ (f ∧ g)

(h ∨f ) ∧(h ∨g)∧(¬h ∨¬f ∨¬g)

NOR


h = ¬ (f ∨ g)

(¬h ∨¬f )∧(¬h ∨¬g) ∧(h ∨f ∨g)

XNOR

h =¬ ( f ⊕ g )

- 25 -

∨¬g)

(h ∨¬f ) ∧(h ∨¬g)∧
(¬h ∨f ∨g)

(h ∨f ) ∧(¬h ∨¬f )

(¬h ∨¬f ∨¬g) ∧(¬h ∨f ∨g)∧
(h ∨¬f ∨g) ∧(h ∨f ∨¬g)

(h ∨¬f ∨¬g) ∧(h ∨f ∨g)∧
(¬h ∨¬f ∨g) ∧(¬h ∨f ∨¬g)


×