Kiểm chứng thiết thik bế ắt đầu với một phép thực thi và xác định phép thực thi đó có đáp ứng các thuộc tính kỹ thu t đ ra ậ ề hay không.. Trong trường h p tợ ạo đầu vào, đầu ra ngay tro
Trang 1- *** -
ĐẶ NG QU C ĐƯ NG Ố Ờ
KIỂM CHỨNG VI MẠCH BẰNG PHƯƠNG PHÁP MÔ PHỎNG
LUẬN VĂN TH C SĨ K Ạ Ỹ THU T Ậ
K Ỹ THUẬT TRUYỀN THÔNG
TS HOÀNG PHƯƠNG CHI
Hà Nội – Năm 2013
Trang 2L Ờ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ướ ự hưới s 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 ứu được trình c 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: ọ
Đặng Quốc Đường
Trang 3L Ờ 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 ứ ấ ữ đã ấ ề ự ệ ứ
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: ọ
Đặng Quốc Đường
Trang 4M Ụ 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 5DANH M C B NG BI U 6Ụ Ả ỂDANH M C HÌNH V 6Ụ Ẽ
A PHẦN M Ở ĐẦU 8
B PHẦN N I DUNG 10Ộ
CHƯƠNG I: GIỚI THIỆU V KI M CH NG THIỀ Ể Ứ ẾT KẾ VI MẠCH 101.1 Khái niệm về ểm chứ ki ng thi t k 10ế ế1.2 Nguyên lý ki m chể ứng cơ ả b n 121.3 Phương pháp ki m ch ng 13ể ứ1.3.1 Ki m ch ng mô phể ứ ỏng 131.3.2 Ki m ch ng hình th c 16ể ứ ứ1.4 So sánh ki m ch ng mô ph ng và ki m ch ng hình th c 19ể ứ ỏ ể ứ ứ
CHƯƠNG II: KIẾN THỨC C B N 22Ơ Ả2.1 Các phép bi u di n hàm Boolean 22ể ễ2.1.1 Nh ng thu c tính c n có c a phép bi u di n 22ữ ộ ầ ủ ể ễ2.1.2 Các phép bi u diể ễn hàm boolean truyền thống 232.1.3 Đồ ị th quyết định nhị phân BDD 292.1.4 Bi u th c CNF và bài toán SAT 33ể ứ2.2 Các mô hình m ch logic c b n 36ạ ơ ả2.2.1 Mô hình c u trúc Gate net-list 36ấ2.2.2 Mô hình c u trúc AND/INV graph 37ấ
CHƯƠNG III: KI N TRÚC VÀ HOẾ ẠT ĐỘNG C A CHỦ ƯƠNG TRÌNH MÔ PHỎNG 41
Trang 53.1 Trình biên d 42ịch
3.2 Các trình mô phỏng 44
3.2.1 Trình mô ph ng theo s ki n 44ỏ ự ệ 3.2.2 Trình mô ph ng theo chu k 49ỏ ỳ 3.2.3 B mô ph ng và trình mô phộ ỏ ỏng phầ ứn c ng 58
3.3 Phân lo i và so sánh các trình mô ph ng 62ạ ỏ 3.3.1 Trình mô ph ng 2 tr ng thái và 4 tr ng thái 62ỏ ạ ạ 3.3.2 Trình mô ph ng tr không và tr n v 63ỏ ễ ễ đơ ị 3.3.3 Trình mô ph ng theo s ki n và theo chu k 64ỏ ự ệ ỳ 3.4 Hoạt động và ứng dụng của trình mô phỏng 65
3.4.1 C u trúc t p tin mô ph ng c b n 65ấ ậ ỏ ơ ả 3.4.2 Hi u su t và g l i 66ệ ấ ỡ ỗ 3.4.3 Ki m ch ng th i gian 68ể ứ ờ 3.5 Phép biên d ch t ng b c 69ị ừ ướ CHƯƠNG IV: PHÁT TRI N PH N M M MÔ PH NG 72Ể Ầ Ề Ỏ 4.1 T ng quát v ổ ềcác phương pháp mô phỏng đã có 72
4.1.1 Đặc điểm c a mô ph ng logic 72ủ ỏ 4.1.2 M t s trình mô ph ng logic 75ộ ố ỏ 4.2 Phát triển module kiểm chứng dùng mô phỏng 77
4.2.1 T ng quan v khung ch ng trình ki m chổ ề ươ ể ứng FCK-BK 77
4.2.2 C u trúc d li u bi u di n m ch s ấ ữ ệ ể ễ ạ ốtrong FCK-BK 79
4.2.3 Phát tri n thu t toán mô ph ng m ch s d a trên FCK-ể ậ ỏ ạ ố ự BK 86
4.2.4 T ng k t 100ổ ế CHƯƠNG V: KẾT LUẬN VÀ HƯỚNG PHÁT TRIỂN ĐỀ TÀI 101
TÀI LIỆU THAM KHẢO 103
Trang 6DANH M C CÁC KÝ HI Ụ Ệ U VÀ CHỮ Ế VI T TẮT
AIG AND-INV Graph
BDD Binary Decision Diagram
CNF Conjunctive Normal Form
DAC Directed Acyclic Graph
DFS Depth First Search
FF Flip Flop FRAIG Functionally Reduced AND-INV Graphs
FSM Finite State Machine
FPGA Field Programmable Gate Array
IP Intellectual Property NDI No Directly Impact
HDL Hardware Description Language
PI Primary Input PLI Programming Language Interface
PO Primary Output RO-BDD Reduced Ordered Binary Decision Diagram
RTL Register Transfer Level
SAT Satifiability
SCC Strongly Connected Components
SDF Standard Delay File
SOP Sum Of Products
TS Topological Sort VCD Value Change Dump
Trang 7DANH MỤC BẢNG BIỂU
B ng 3.1: nh h ng cả Ả ưở ủa các tùy chọn trình mô ph ng 67ỏ
B ng 4.1 : Các bi n Private cả ế ủa lớp Circuit 79
B ng 4.2 : Các hàm cả ủa lớp Circuit 80
B ng 4.3: Các bi n Private cả ế ủa lớp Module 81
B ng 4.4: Các bi n Protected cả ế ủa lớp Component 82
B ng 4.5: Các hàm Proteced cả ủa lớp Component 83
B ng 4.6: Các bi n Proteced cả ế ủa lớp Function 83
B ng 4.7: Các hàm cả ủa lớp Function 84
B ng 4.8: Các hàm chung giả ữa các lớp con của lớp Function 85
Trang 8DANH MỤC HÌNH VẼ
Hình 1.1: Thang trừu tượng thi t k 10ế ếHình 1.2: M i quan h gi a thi t k ố ệ ữ ế ếvà kiểm ch ng 11ứHình 1.3: Nguyên lý c b n c a ki m ch ng thi t k 13ơ ả ủ ể ứ ế ếHình 1.4: Quá trình ki m ch ng d a trên mô ph ng 16ể ứ ự ỏHình 1.5: Quy trình ki m th hình th c 19ể ử ứHình 1.6: Cách đánh giá không gian đầu ra 20Hình 2.1: M ng Boolean 26ạHình 2.2: Đồ hình quyết định nh phân BDD 31ịHình 2.3: Đồ ị th quyết định nh phân v i 2 node g c 31ị ớ ốHình 2.4: BDD phân c p 32ấHình 2.5: ROBDD 32Hình 2.6: Nguyên tắc rút g n BDD (a) Lo i b (b) K t h p 33ọ ạ ỏ ế ợHình 2.7: Bi u thể ức CNF cho các mạch cổng cơ ả b n 35Hình 2.8: Ví d m ch Gate net-list 37ụ ạHình 2.9: Hai AIGs khác nhau cho cùng một hàm 38Hình 3.1: Các thành ph n chính cầ ủa một trình mô ph ng 41ỏHình 3.2: C u trúc h ng mô ph ng biên d 44ấ ệthố ỏ ịchHình 3.3: Vòng quay th i gian 45ờHình 3.4: Phân cấp hợp lý cho phép đánh giá cổng 51Hình 3.5: S dử ụng topological sort để thu được th t ứ ự đánh giá phù hợp 52Hình 3.6: Xác định các SCC 54Hình 3.7: Chia phạm vi đồng h cồ ủa mạch chứa nhiều đồng h 56ồHình 3.8: C u hình d ng l i 2 chi u (A) và vành xuy n 2 chi u (B) 59ấ ạ ướ ề ế ềHình 3.9: Ki n trúc cế ủa một ph n c ng trình mô ph ng thông d ng 60ầ ứ ỏ ụHình 3.10: Chuy n tr ng thái m r ng là k t qu cể ạ ở ộ ế ả ủa một mô hình tr : 64ễHình 3.11: C u trúc th m c mô ph ng 65ấ ư ụ ỏHình 3.12: Ti n trình biên d ch t ng b c 70ế ị ừ ướHình 4.1: Các th m c chính c a FCK 77ư ụ ủHình 4.2: Các th viư ện của FCK 78Hình 4.3: S mơ đồ ạch cần mô ph ng 89ỏHình 4.4: Lưu đồ thu t toán x ậ ử lý đối với các Component 95
Trang 9A PHẦ N M Ở ĐẦ U
Để 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 tảng về ổng hợp, tối n t
ư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 thiạ Để ết kế và ki m tra chể ất lượng các vi mạch, các hãng chế ạ ớ ử ụng các t o l n s d
b ộcông cụ ết kế, kiểm tra rất phức tạp có giá thành rất cao, việc này ảnh hưởng lớn thi
đến chất lượng và giá thành s n phả ẩm đầu ra
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 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 Điều đó càng làm độ ứ ph c tạ ủp c a bài toán ki m tra hể ệ ống điệ th 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 đó, 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 ứ ế ế ạ Phương pháp
kiểm chứng được sử ụng phổ biến nhấ d t hiện nay 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 giá thột ử (test bench), kích thích đầu vào sẽ được áp dụng vớ giá thử, và đầu ra của thiết kế ẽ được i s
so sánh với đầu ra tham chiếu Một giá thử ẽ s bao gồm các mã hỗ ợ ạ ộ tr 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
Trang 10Đây là phương pháp kiểm chứng có tính linh động cao, đáp ứng được v i c nh ng ớ ả ữthi t k ph c t p, có tính trế ế ứ ạ ực quan cao nên giúp tăng khả năng gỡ ỗ l i của người dùng
T nhừ ững điểm nêu trên, tài luđề ận văn “ ểKi m ch ng vi m ch bứ ạ ằng phương pháp
mô phỏng” nhắm đến việc nghiên c u sâu vứ ề phương pháp kiểm ch ng mô ph ng, cứ ỏ ấu trúc và nguyên tắc hoạ ột đ ng của chương trình mô phỏng Từ đó đề xuất xây dựng một thuật toán mô phỏng mạch số ựa trên khung chương trình mô phỏng FCK BK, đây là d -
một bộ các thư viện mã nguồn mở C++ được viết trên môi trường GNU của LINUX
N i dung c a luộ ủ ận văn sẽ bao gồm các chương chính như sau:
Chương I: Giới thiệu về ể ki m chứng thiết kế vi mạch Chương này sẽcho ta một cái nhìn t ng quát vổ ề kiểm ch ng thi t k vi mứ ế ế ạch, các phương pháp kiểm chứng cơ
b n và nhìn nhả ận các ưu, nhược điểm của từng phương pháp
Chương II: Kiến th c cơ bứ ản Đây là chương tổng h p t t c nh ng ki n th c cơ ợ ấ ả ữ ế ứ
bản về ạch số ần nắm vững trước khi đi sâu tìm hiểu về phương pháp kiểm chứ m c ng
mô ph ng ỏ
Chương III: Kiến trúc và hoạt động c a ủ chương trình mô phỏ Chương này sẽngphân tích chi tiết về ế ki n trúc và nguyên lý hoạt động của chương trình mô phỏng, phân
loại và so sánh các loại chương trình mô phỏng khác nhau, để ừ đó đưa ra quyết đị t nh
lựa chọn loại chương trình mô phỏng phù h p cho tợ ừng trường hợp mô ph ng ỏ
Chương IV: Phát triển ph n m m mô phầ ề ỏng Chương này đi sâu giới thi u khung ệchương trình mô phỏng FCK-BK , từ đó đề xu t mấ ột phương pháp mô phỏng m ch s ạ ố
d a trên b ự ộ các thư viện mã ngu n m ồ ởC++ của FCK BK-
Chương V: T ng kổ ết luận văn, đúc rút những điểm đã đạt được và nh ng t n t i ữ ồ ạ
c n nghiên cầ ứu thêm cũng như hướng phát tri n cể ủa đề tài
Trang 11B PHẦ N N I DUNG Ộ
C HƯƠNG I: GIỚI THIỆU VỀ KIỂM CHỨNG THIẾT KẾ VI
M CH Ạ
1.1 Khái ni ệ m về kiểm chứng thiế ế t k
Thiết kế ạ là sự m ch chuyển đổi một nhóm các đặc tính kỹ thuật thành một phép
thực thi các đặc tính đó ác đặc tính kỹC thuật mô tả chức năng ủc a thiết kế, nhưng không thể ện phương pháp thự hi c hiện Phép th c thi chi tiự s ẽ ết hóa cách mà tính năng
của mạch được thực hiện Cả đặc tính ỹ k thuật và phép ực thi ạo thành dạng mô tảth t
của chức năng, nhưng chúng có các ứ ụ thể hay trừu tượng khác nhau Mô tả ủa m c c c
m c trứ ừu tượng cao hơn sẽ chứa ít chi tiết hơn, vì vậy đặc tính ỹ k thuật có ứm c tr u ừtượng cao hơn so với phép tri n khai, xem hình 1.1 Vi c x lý chuyể ệ ử ển đổi m t mô t ộ ả
trừu tượng thành một mô tả ụ ể hơn được gọi là làm mị Vì thế, xử lý thiết kế c th n là làm mịn một nhóm các thu c tính kộ ỹ thuật và thủ ụ t c ở các c mứ độkhác nhau của các phép tri n khai c ể ụthể
Hình 1.1: Thang trừu tượng thi t k ế ế
Thông s ố chức năng
Mô t thu t toán ả ậRTL Gate netlist
Ph i l tli t
Độ ừu tượ tr ng
gi m d n ả ầ
Độ chi ti t ếtăng dần
Lưu đồ thi t k ế ế
Trang 12Kiểm chứng thiết kế là vi c x lý ệ ử ngược của quá trình ết kế Kiểm chứng thiết thi
k bế ắt đầu với một phép thực thi và xác định phép thực thi đó có đáp ứng các thuộc tính kỹ thu t đ ra ậ ề hay không Vì v y, t i mậ ạ ỗi bước thi t k , có mế ế ột bước ki m chể ứng tương ứng Thông thường, ki m ch ng thi t k bao g m nhi u lo iể ứ ế ế ồ ề ạ , ví như kiểm ch ng ứchức năng, kiểm ch ng th i gian, ki m ch ng layout và ki m ch ng mi n n Hình ứ ờ ể ứ ể ứ ề điệ1.2 th hiể ện mối quan h giệ ữa xử lý thi t k ế ếvà xử lý ki m ch ng ể ứ
Hình 1.2: M i quan h gi a thi t k ố ệ ữ ế ế và kiểm chứng
Kiểm chứng thiết kế có thể được chia thành 2 loại Loại 1 kiểm chứng hai phiên
bản của thiết kế xem có tương đương về chức năng hay không được gọi là kiểm chứ, ng tương đương ịK ch b n ph bi n c a ki m chả ổ ế ủ ể ứng tương đương là so sánh hai phiên b n ả
m ch cùng cạ ở ấp độ ừu tượ tr ng
Tuy nhiên, hai phiên b n thi t k có th khác nhau tùy theo cả ế ế ể ấp độ ừu tượ tr ng, chẳng hạn như ộm t phiên b n m ch cả ạ ở ấp độ thu c tính k thu t và m t phi n b n ộ ỹ ậ ộ ế ả ở
cấp độ gate netlist Khi đó, chúng có thể là không tương đương chức năng, do phép
thực thi cấp thấp có thể chứa nhiều chi tiết không được xác định thuộc tính ở ấp cao chơn Trong trường h p này, thay vì ki m chợ ể ứng tương đương chức năng của hai phiên
Đặc điểm k thu t ỹ ậ
Vi ki n trúc ếRTL Gate Netlist Layout
Ki m tra ểthu c tính ộ
Ki m tra ểtương đương
Ki m ể chứng Thi t k ế ế
Trang 13bản thiết kế, ta sẽ kiểm chứng xem phép thực thi có thỏa mãn thuộc tính kỹ thuật hay không Đây là phương pháp kiểm chứng ột chiề m u, và được gọi là kiểm c ứng thực thi h(implementation verification), ki m ch ng thu c tính ể ứ ộ (property checking ) hay kiểm chứng mô hình (model checking)
mô hình thi t k ế ế
Bước th 2 c a quá trình ki m ch ng là so sánh 2 phép th c thi b ng cách bi u ứ ủ ể ứ ự ằ ể
diễn chúng theo cùng một dạng trung gian để có thể ểm tra tính tương đương Chẳ ki ng
hạn như để xác định tính tương đương giữa một mạch cấp transistor và một phép triển khai RTL, dạng trung gian chung trong trường hợp này là đồ hình quyết định nh phân ịBDD
Trang 14Hình 1.3: Nguyên lý cơ bản c a ki m ch ng thi t k ủ ể ứ ế ế
(A) Ki m chể ứng tương đương (B) Kiểm ch ng thu c tính (C) Mô ph ng ứ ộ ỏ
1.3.1 Ki ể m chứ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 a trên mô ổ ế ấ ể ứ ự
ph ng ỏ Trong quá trình mô phỏng kiểm chứng, thiết kế đượ ặc đ t vào một bàn thử, các tác nhân đầu vào được c p cho bàn thấ ử, và đầu ra t thi t k ừ ế ế được so sánh với đầu ra tham chiếu Một bàn thử bao gồm bộ mã hỗ ợ các hoạt động của thiết kế, đôi khi nó tr cũng tạo ra các tác nhân đầu vào và so sánh đầu ra với đầu ra tham chi u Các tác nhân ế
đầu vào có th ể đượ ạo ra trước t c khi mô phỏng, được đọc vào trong thi t k t m t cơ ế ế ừ ộ
s d liở ữ ệu trong quá trình mô phỏng, hoặc cũng có thể được tạo ra ngay trong quá trình
Thi t k thay th ế ế ế
Thi t k ế ếThu c tính ộ Tương đương ?
“Thi t k thay th ” ế ế ế
(B)
Input
Thi t k ế ếThu c tính ộ
(C)
Output tham chi u ế
Output Tương đương ?
“Thi t k thay th ” ế ế ế
Trang 15mô phỏng Tương tự, đầu ra tham chi u có thế ể được tạo ra trước ho c trong quá trình ặ
mô phỏng Trong trường h p tợ ạo đầu vào, đầu ra ngay trong quá trình mô ph ng thì ỏ
một mô hình tham chiếu được mô phỏng đồng thời với thiết kế, các kết quả ừ 2 mô t hình sau đó được so sánh v i nhau ớ
Trước khi m t thi t k ộ ế ế được mô ph ng, nó ch y qua mỏ ạ ột chương trình lọc, để
kiểm tra các lỗi cố đị nh, lỗi tiề năng và các lỗi vi phạm nguyên tắc mã hóa Mộm t chương trình lọc không yêu cầu các vector đầu vào, vì th nó ch ki m tra nh ng l i mà ế ỉ ể ữ ỗ
có th phát hiể ện độc lậ ớp v i các tác nhân đầu vào Bộ ọ l c chỉ có thể ả c nh báo các lỗi
tiềm tàng, ví d ụ như tín hiệ đầu u vào dao động (không ổn định) của một cổ mà nhà ng thiết kế không mong ố Một dự án có nguyên tắc mã hóa riêng của nó nhằm giảm mu nthiểu lỗi thiết kế, cải thiện hiệu suất mô phỏng hoặc cho các mục đích khác, và bộ ọc l
s ki m tra các sai ph m c a nh ng nguyên t c này ẽ ể ạ ủ ữ ắ
Tiếp đến, các vector đầu vào của các mục trong kịch bản kiểm tra được tạo ra Các vector đầu vào nhắm đến các đặc tính và chức năng cụ th ể được g i là ki m tra ọ ểtrực tiếp Do kiểm tra trực tiếp có thiên hướng nhắm đến những vùng trong không gian
đầu vào mà nhà thi t k n m rõ, còn các sế ế ắ ai sót thường x y ra trong nh ng vùng mà ả ữnhà thi t k không n m rõ, vì vế ế ắ ậy để khảo sát các vùng khác thì các phép ki m tra giể ả
ngẫu nhiên được sử ụng chung với phép kiểm tra trực tiếp Để ạo phép kiểm tra giả d t
ngẫu nhiên, một chương trình phần mềm sẽ chọ và tạo ra các phép kiểm tra cũng như n các đầu ra mong mu n Các phép ki m tra ng u nhiên này có th là các vector lân c n ố ể ẫ ể ậcủa phép kiểm tra trực tiếp Vì thế, nếu phép kiểm tra trực tiếp là các điểm trong không gian đầu vào thì phép ki m tra ng u nhiên s m rể ẫ ẽ ở ộng xung quanh các điểm này
Sau khi các phép kiểm tra đã được tạo, trình mô phỏng được chọn để ự th c hiện
mô ph ng Trình mô ph ng có th là phỏ ỏ ể ần cứng ho c ph n m m, theo sặ ầ ề ự kiện hoặc theo chu kỳ Một trình mô ph ng theo sỏ ự ệ ki n sẽ đánh giá một cổng hoặc một khối các
Trang 16tr ng thái m i khi mạ ỗ ột đầu vào của cổng hoặc các biế ủn c a khối được phát hi n là có s ệ ựthay đổi giá tr S ị ự thay đổi giá tr ị được g i là s ki n M t trình mô ph ng theo chu k ọ ự ệ ộ ỏ ỳchia nhỏ ạ m ch d a theo miự ền đồng hồ và đánh giá phân mạch trong m i miỗ ền đồng h ồ
một lần tại mỗi sườn lên của xung đồng hồ ậ ố lượng sự ện sẽ ảnh hưởng đến tốc V y s ki
độ ch y mô ph ng, m ch có ít s ki n s chạ ỏ ạ ự ệ ẽ ạy nhanh hơn khi mô phỏng theo s ki n, ự ệtrong khi đó mạch v i nhi u s ki n s chớ ề ự ệ ẽ ạy nhanh hơn khi mô phỏng theo chu kỳ Trên thực tế, ph n lầ ớn mạch có s ng s ki n l n ố lượ ự ệ đủ ớ đểtrình mô ph ng theo chu kỏ ỳ
đạt hi u qu ệ ả cao hơn so với trình mô ph ng theo s ki n Tuy nhiên, mô ph ng theo ỏ ự ệ ỏchu kỳ cũng có những nhược điểm riêng V i trình mô ph ng theo chu kớ ỏ ỳ, các miền
đồng h trong m ch phồ ạ ải được định nghĩa chính xác Ví dụ như một mạch không đồng
b s ộ ẽ không có định nghĩa rõ ràng về miền đồng hồ nên không thể mô phỏng được
b ng trình mô ph ng theo chu k ằ ỏ ỳ
Một trình mô phỏng phần cứng sẽ mô hình hóa mạch với các thành p ần phần h
cứng giống như mảng các vi xử lý hay mảng các cổng có thể ập trình được (FPGA) lTrước tiên, các thành ph n trong trình mô ph ng ph n cầ ỏ ầ ứng được cấu hình để mô hình hóa thi t kế ế Với trình mô phỏng ph n cầ ứng d ng m ng các vi xạ ả ử lý, thiết kế được biên
dịch thành dạng các chỉ ẫn cho các vi xử lý, sao cho việc chạy các vi xử lý là đồng d
thời với việc mô phỏng thiết kế Trong mộ trình mô phỏt ng phần cứng dựa trên FPGA, các FPGA đượ ập trình để ả ậc l gi l p các c ng trong thi t k V i cách này, k t qu thu ổ ế ế ớ ế ảđượ ừ ệc t vi c ch y ph n c ng chính là k t qu mô ph ng thi t k M t trình mô ph ng ạ ầ ứ ế ả ỏ ế ế ộ ỏ
ph n cầ ứng vừa có thể điều khiển theo sự ện, vừa có thể theo chu kỳ, giống như trình ki
mô ph ng phỏ ần mềm Vì th , m i ki u trình mô phế ỗ ể ỏng phần cứng có nguyên t c mã ắhóa riêng, và nh ng nguyên tữ ắc này chặt chẽ hơn so với các trình mô phỏng phần mềm
Một thiết kế chỉ có thể chạy trên một trình mô phỏ ng phần cứ khi nó đáp ứng được ng
tất cả các yêu cầu mã hóa của trình mô phỏng Phép biểu diễn có trễ ẽ không được hỗ s
Trang 17tr bợ ởi trình mô phỏng phần cứng Việc kiểm tra các nguyên tắc mã hóa được ực th
hi n thông qua b l ệ ộ ọc
Quá trình ki m chể ứng bằng mô phỏng được thể ện như hi trong hình 1.4
Hình 1.4: Quá trình ki m ch ng d a trên mô ph ng ể ứ ự ỏ
1.3.2 Ki ể m chứng hình thức
Phương thức ki m ch ng hình th c ch ể ứ ứ ỉ khác hơn so với ki m ch ng mô ph ng ể ứ ỏ ởchỗ nó không yêu c u ph i t o ra các vector ki m th , còn lầ ả ạ ể ử ại thì tương đương Kiểm chứng hình th c có thể đượứ c phân l p thành 2 d ng: ki m chớ ạ ể ứng tương đương và kiểm chứng thu c tính ộ
Kiểm chứng tương đương xác định xem 2 phép triển khai có tương đương vềchức năng hay không Kiểm tra tương đương không thể ự th c hiện được bằng ki m ểchứng mô ph ng do th c tếỏ ự có vô s ố vector trong không gian đầu vào Trong quá trình kiểm chứng hình thức, quyết định của trình kiểm tra tương đương là rất rõ ràng Tuy
Design Test bench design Linting Test plan
Stimulus generation Coverage metrics
Simulation Debug Regression Revision control
Bug tracking
Trang 18nhiên, trình kiểm tra tương đương công nghiệp chưa đạt đến tr ng thái hoàn thi n và ạ ệthường c n đ n s ầ ế ự tác động c a con ủ người để xác định các node tương đương giữa 2
mạch để ớ gi i hạn không gian tìm kiếm đầu vào Các node tương đương được xác định
bởi người dùng thường được gọi là các điểm cắ Ở ừ thời điểm, một trình kiểt t ng m tra
có th luể ận ra các node tương đương dựa trên tên c a chúng ủ
Có 2 phương pháp kiểm chứng tương đương cơ bản Th nh t là tìm ki m vector ứ ấ ế
đầu vào ho c các vector có th phân bi t hai mặ ể ệ ạch trong không gian đầu vào theo m t ộcách có hệ ố th ng Phương pháp này được gọi là SAT (satisfiability), gi ng v i thu t ố ớ ậtoán t o m u ki m thạ ẫ ể ử ự động Phương pháp còn lạ t i sẽ chuyển đổi 2 m ch thành phép ạ
bi u di n chính t c, và so sánh chúng Phép bi u di n chính tể ễ ắ ể ễ ắc có đặc điểm tiêu bi u là ể
2 hàm logic chỉ tương đương khi biểu diễn tương ứng của chúng là đồng dạng, hay nói cách khác là 2 d ng bi u diạ ể ễn của chúng giống h t ệ nhau ngo i trạ ừ cách đặt tên Mộ ồt đhình quyế ịt đ nh nhị phân sắp xếp rút g n (RO-BDD) ọ là m t phép bi u di n chính tộ ể ễ ắc BDD của 2 hàm tương đương là đồng dạng Kiểm chứng tương đương được sử ụ d ng
rộng rãi trong các trường h p sau: ợ
- So sánh các mạch trước và sau khi chèn m ch quét m b o r ng các chu i ạ để đả ả ằ ỗ
m ch quét thêm vào không nh ạ ả hưởng đến chức năng cốt lõi của mạch
- Để đả m b o tính t ng th c a m t layout so v i phiên b n RTL c a nó Vi c này ả ổ ể ủ ộ ớ ả ủ ệđược th c hi n b ng cách trích t layout ra m t ự ệ ằ ừ ộ transistor netlist và so sánh nó
v i phiên b n RTL ớ ả
- Chứng minh rằng các thay đổi trong mộ đề xuất thay đổ ứ ự máy mô phỏt i th t ng
nằm trong ới hạn dự ến Việc này được thực hiện bằ gi ki ng cách xác định vùng thay đổi trong m ch ạ
Một dạng khác của kiểm chứng hình thức đó là kiểm chứng thuộc tính Kiểm chứng thu c tính th c hi n trong m t thi t k và m t thu c tính là m t thu c tính k ộ ự ệ ộ ế ế ộ ộ ộ ộ ỹ
Trang 19thuật thành phần của thiết kế, sẽ chứng minh hoặc phản chứng thiết kế có các thuộc tính đó Một thu c tính v cơ b n là m t b n sao mô t thi t k , và nó hoộ ề ả ộ ả ả ế ế ạt động để xác
th c thiự ết kế thông qua cơ chế ự phòng Chương trình kiểm tra thuộc tính cũng được d
g i là trình ki m tra mô hình, xem thi t k ọ ể ế ếlà một mô hình tính toán của mạch th c ựNguyên lý đằng sau ki m ch ng thu c tính là tìm ki m toàn b không gian tr ng ể ứ ộ ế ộ ạthái để xác đ nh các đi m mà x y ra l i thu c tính N u mị ể ả ỗ ộ ế ột điểm l i đư c tìm th y, thì ỗ ợ ấđiểm lỗi đó và lỗi thuộc tính được g i là m t ọ ộ counterexample Tiếp theo, d ng sóng c a ạ ủcounterexampleđược tạo ra để người dùng có thể ỡ ỗi Ngược lại nếu như không tìm g l
thấy điểm lỗi tức là thuộc tính thỏa mãn Kiểm chứng thuộc tính hữu dụng trong công nghiệp là nhờ các thuật toán truyền ký hiệu để ệt kê danh sách toàn bộ không gian li
trạng thái Tại mỗi t ời điểm, nó không chỉ khảo sát một điểm mà là một nhóm điểm hnên s ẽ đạt được hi u qu ệ ảcao
Mặc dù việc tính toán các ký hiệu giúp ảm thiểu độgi phức tạp của thiết kế, nhưng chỉ m t ph n c a thi t k ộ ầ ủ ế ế có liên quan đến thu c tính là có th áp d ng ki m ộ ể ụ ểchứng thu c tính, do ph n l n các công c ki m ch ng không có kh ộ ầ ớ ụ ể ứ ả năng tự độ ng phân tách ra phần liên quan trong thiết kế ậy nên sẽ ấp phải những vấ ề v v n đ v b ề ộ nhớ
và th i gian th c hiờ ự ện nếu như xử lý toàn b thi t k ộ ế ế
Hơn nữa, điểm m nh c a ki m ch ng thu c tính l i ph thu c nhi u vào chính ạ ủ ể ứ ộ ạ ụ ộ ềthuộc tính được kiểm chứng Một số thuộc tính có thể được xác định nhanh chóng, nhưng số khác l i không th xác đạ ể ịnh được ho c thặ ậm chí là không được ch p nh n b i ấ ậ ởcông c ki m ch ng ụ ể ứ
Do thu c tính là cách bi u di n thay tộ ể ễ h cế ủa thi t k , nên nó sế ế ẽ ch u các lỗi tương ịđương như của thi t k L i ki m ch ng có th xu t hi n t m t l i thi t kế ế ỗ ể ứ ể ấ ệ ừ ộ ỗ ế ế, ví như lỗi trong thu c tính hoộ ặc lỗi đầu vào không mong mu n, hay l i c u hình tr ng thái ố ỗ ấ ạ
Trang 20Lưu đồ đặc trưng của ki m ch ng hình th c ể ứ ứ như hình 1.5, các thành ph n trong ầlưu đồ này chính là ph n thay th cho các thành ph n trong phầ ế ầ ần đóng khung nét đứt
của hình 1.4 Tuy ểm chứng hình thức không yêu cầu các vector kiểm tra, nhưng lạki i yêu c u m bàn th c u hình m ch theo ch hoầ ột ử để ấ ạ ế độ ạt động phù h ợp
Hình 1.5: Quy trình ki m th ể ử hình thức
1.4 So sánh kiểm chứng mô phỏ ng và ki ể m chứng hình thứ c
S ự khác biệt nổi trội giữa kiểm chứng mô phỏng và kiểm chứng hình thức đó là kiểm chứng mô phỏng yêu cầu các vector đầu vào còn kiểm chứng hình thức không cần đến Thiết lập chính trong kiểm chứng mô phỏng là đầu tiên phải tạo ra các vector đầu vào và sau đó là xác định đầu ra tham chi u Nguyên lý x ế ử lý ngượ ạc l i đ i v i ố ớ
kiểm chứng hình thức Người dùng khở ạ đáp ứng đầu ra mong muốn và sau đó đểi t o cho trình ki m ch ng hình thể ứ ức chứng minh hoặc ph n chả ứng nó Người dùng không
Design Define property
User guidance Extract subcircuit
Debug Constraining
Equivalence checking
Property checking Property
Trang 21cần quan tâm đến kích thích đầu vào của chúng Phương thức kiểm chứng mô phỏng được điều khi n theể o đầu vào còn phương thức ki m ch ng hình thể ứ ức được điều khi n ểtheo đầu ra Thông thường điều khiển theo đầu vào s d hiẽ ễ ểu hơn.
Một điểm nổ ậi b t khác c a ki m ch ng hình th c là tính hoàn thiủ ể ứ ứ ện, theo nghĩa nó không b sót bỏ ất kỳ điểm nào trong không gian đầu vào Tuy nhiên, điểm mạnh này
của kiểm chứng hình thức đôi khi lại dẫn đến sự ểu sai rằng khi một thiết kế được hi
ki m ch ng hình th c thì nó là hoàn toàn không l i ể ứ ứ ỗ
Hình 1.6: Cách đánh giá không gian đầu ra
Mô ph ng m t vector có thỏ ộ ể được xem là ki m ch ng mể ứ ột điểm trong không gian đầu vào Theo hướng này, ki m ch ng mô ph ng có th ể ứ ỏ ể được xem là ki m ch ng ể ứthông qua lấy mẫu không gian đầu vào Tr khi t t cừ ấ ả các điểm đều được lấy mẫu, thì
s tẽ ồn tại khả năng sót lỗi Ngược với kiểm chứng mô phỏ g làm việc theo ứ điển m c m,
kiểm chứng hình thức hoạt độ ở ức thuộc tính Cho một thuộc tính, kiểm chứng m ng hình th c tìm kiứ ếm tường t n tậ ấ ảt c các đầu vào khả ụng và các điề d u ki n gây lệ ỗi Nếu xét từ quan điểm đầu ra, kiểm chứng mô ph ng ki m tra tỏ ể ừng điểm đầu ra m t, còn ộkiểm chứng hình thức kiểm tra một nhóm các điểm đầu ra (một nhóm đầu ra tạo nên
một thuộc tính), cụ thể xem ở hình 1.6 ớ quan điểm này, phương thức kiểm chứng V i
Ki m ch ng mô phể ứ ỏng Ki m ch ng hình th c ể ứ ứ
Trang 22hình th c khác so vứ ới kiểm ch ng mô phứ ỏng ở ệ vi c ki m chể ứng nhóm các điểm trong không gian thi t k thay vì tế ế ừng điểm một Vì thế, để ể ki m ch ng hoàn ch nh m t thiứ ỉ ộ ết
k ế đáp ứng đầy đủ các thuộc tính kỹ thuật của nó với phương pháp hình thức, thì ầc n
phải chứng minh thêm rằng nhóm thuộc tính được kiểm chứng hình thức sẽ ấu thành cthuộc tính kỹ thu t cậ ủa thiết kế Thực tế ằng kiểm chứng hình thức kiểm tra một nhóm rcác điểm t i m i thạ ỗ ời điểm khi n cho ph n m m ki m ch ng hình th c ít có tính tr c ế ầ ề ể ứ ứ ựquan và khó s dử ụng hơn
Trang 23CHƯƠNG II: KIẾ N TH C CƠ B N Ứ Ả
2.1 Các phép biểu diễn hàm Boolean
Cơ ả b n v logic Boolean ề
Hàm Bool là ánh xạ : trong đó = {0,1} là miền Bool (miền nhị phận),
f là m t hàm cộ ủa tập bi n Bool n ế = {,, … ,} có ki u ể B
Một tổ ợp giá trị biến là ánh xạ h : , s T ẽ gán cho mỗi biế ột giá n m
tr 0 ho c 1 M t hàm Bool là h p l n u nó luôn có giá tr ị ặ ộ ợ ệ ế ị1 vớ ất cả các tổ ợi t h p giá tr ị
T Hàm Bool là thỏa mãn nếu nó có giá tr 1 v i ít nhị ớ ất 1 ổ ợt h p giá tr bi n ị ế
2.1.1 Nh ng thu c tính c có c ữ ộ ầ n ủ a phép biểu diễ n
Phép bi u di n hàm boolean nên có các thu c tính cể ễ ộ ụ th ể để áp d ng cho viụ ệc
Trang 24 Ch ính ắ : n u là song ánh, khi phép bi u di n c a nó t c ế ể ễ ủ là đầy đủ và duy nh t ấ
Tính đơn nhất là m t thu c tính r t quan tr ng trong ki m chộ ộ ấ ọ ể ứng tương đương khi
một phép biểu diễ (Rn n,m, ) là đơn nhất thì với mỗ i , , ,hàm bi u diể ễn ( )và
( ) là tương đương chỉ khi phép biểu diễ ủa s và t là tương đương.n c
Các phần tử Rn,m luôn được xem xét là một cấu trúc dữ ệu trong tính toán Lấy li
csize(r)là kích thước của cấu trúc dữ ệu thành phần li r Rn,m, có thể là s ố lượng bít cần thiết để ể bi u diễ r trong một phép tính Độ phức tạp của một hàm Boolean có xét đến n (Rn,m, ) được định nghĩa như sau:
,
() (); , à () =
Ta định nghĩa ,
() = + với những hàm f không có biểu diễn trong Rn,m
Cần phải xem xét đến các đặc điểm như: độphức tạp, tính chính tắc và khả năng xử lý
t ự động của phép biểu diễn để có thể áp dụng phù hợp cho từng phép kiểm chứng cụ
th ể
2.1.2 Các phép biểu diễ n hàm boolean truy ề n thống
a) B ả ng chân lý
Bảng chân lý của một hàm boolean f là một danh sách đầy đủ các giá trị hàm bắt
đầu v i giá tr hàm ớ ị f(0, ,0)đến giá tr hàm f(1, , 1)ị Thông thường, b ng chân lý c a ả ủ
m t hàm boolean ộ , được mã hóa thành vector boolean chi u m ề [0: 2] v i: ớ
(, … ,) {0,1} () = 2
Trang 25Để minh h a, ta xét m t hàm boolean ọ ộ , Giả thi ằng đầu ra đầết r u tiên y1
của f có giá trị 1, nếu cả hai đầu vào x là 1 và x2 đều bằ 1, và đầu ra yng 2 của f ằ 1 b ng
n u ế y1 = 1 hoặ ầc đ u vào x3 = 1 Hàm boolean này có thể được bi u di n b ng b ng ể ễ ằ ảchân lý F như sau:
Bảng chân lý là phép biểu diễn chính tắc của hàm boolean Trên thực tế, kiểm
chứng tương đương có thể được th c hi n theo th i gian th n u giự ệ ờ ực ế ới hạn kích thước
của phép biểu diễn hàm ảng chân lý là một cách biểu diễn lý tưởng cho hàm boolean Bkhi số lượng đầu vào không quá ln ớn, vì độ ph c tạ ề không gian tăng theo hàm mũ ứ p v
của n Thực tế thì bảng chân lý là phép biểu diễn lý tưởng cho hàm boolean với
; {8,9,10 11} ,
b) Mạ luậ ng n lý
V ề cơ bản, mạng luận lý (boolean network) được đánh nhãn theo các đồ thị không tuần hoàn có hướng Ngược lại v i bớ ảng chân lý biểu diễn đáp ứng hàm đơn thu n cầ ủa mạch, m ng luân lý bi u di n c u trúc cạ ể ễ ấ ủa mạch, nên nó phù hợp hơn với các
mạch kết hợ Sau đây, ta lấ p y là một phân nhóm hữu hạn của các hàm boolean 1 đầu ra, v i IPAD bi u di n tớ ể ễ ập đầu vào, OPAD bi u di n tể ễ ập đầu ra
Trang 26Định nghĩa 2.1: [9]
V i ớ = {, } M t m ng lu n lý N trênộ ạ ậ v i ớ n đầu vào và m đầu
ra là m t b ộ ộ (, , , ) v i: ớ
- G=(V, E) là một đồ ị th không tuần hoàn hướng node, t c là v i t t c ứ ớ ấ ả các node
, có m t thộ ứ ự t cho các c nh tới Chính xác hơn, V là nhóm các node (thể ạhiện các thành phần hoạt động của mạch) và E là nhóm các cạnh (các tín hiệu của
mạch) Nguồn và đích của một cạnh được cho bởi các hàm, với nguồ n: và đích C p b c c a node ấ ậ ủ được cho b i b c ánh xở ậ ạ: V → N0, được định nghĩa bởi indeg(v)= |{e E; target(e)= v}| Tương tự, fanout của được cho v
b i ở fanout: V → N0 v i ớ fanout(v)= |{e E; source(e)= v}| Hướng node c a ủ Gđược cho b i ánh x ở ạ I I(v, i) thể hi n c nh t i th cệ ạ ớ ứ i ủa node v V v i i ớ
Nindeg(v)
- Viết V → T tức là một ánh xạ, theo đó gán mộ cell ủa T cho mỗi node Có t cchính xác là n node kiểu IPAD và m node kiểu OPAD Nế type(v) là mộ cell u t
c t p ủa ậ cell Ω, thì type(v) Bindeg(v) Nếu type(v)= IPAD thì v không có cạnh
đến, indeg(v)=0 Nếu type(v)= OPAD thì indeg(v)=1 fanout(v)=0và
- Ánh xạ pe: Nn →{ v V ; type(v)= IPAD} và pa : Nm →{v V ; type(v)= OPAD}là các hàm một – một gán thứ ậc cho các node b IPAD và OPAD pe(i) vàpa(j)được gọi là đầu vào g c th ố ứivà đầu ra g c th ố ứj của N
Phép di n dễ ịch () của mạ N ớ n đầu vào và m đầu ra có thể đượ ịng v i c đnh nghĩa rõ ràng Ta liên k t m i c nh cế ọ ạ e ủa m ng Boolean v i m t hàm Boolean fạ ớ ộ e dùng
để tính toán cho cạnh đó Giả thi t r ng c nh eế ằ ạ được điều khi n b i node v, e =(v, w), ể ở
với một node w nào đó Nế v là đầu vào gốc thứ iu thì fe chính là hàm Boolean xi Nếu
v là một node nộ type(v)= g v i i, ớ cell g Ωnào đó, ta xem các cạnh tới e1, ,eindeg(v)
Trang 27của v Giả thiết rằ eng k = I(v, k) cho k =1, ,indeg(v) Thì hàm Boolean fe tính theo
c nh ạ e được cho như sau:
= ° × … × ( )
Với ◦ và × tương ứng là tổng và tích của hàm Xét các đầu ra gốc của N, lấ yy i là
cạnh tới củ ầa đ u ra gốc thứ j, mạng Boolean N ực hiện hàm Boolean đa nguyên (m thnguyên) v i u vào: ớ n đầ
Trang 28- Một chuỗi là mộ ểt bi u thức Boolean trên Xn chỉ khi nó có thể thu được từ ệc áp vi
d ng các quy tụ ắc ở trên trong một số ần nhất đị l nh
Để đơn giản, ta gi thi t r ng phép h i ( ) có quyả ế ằ ộ ◦ ền ưu tiên cao hơn phép tuy n ể(+), sử ụng cách biểu diễ x d n i’ thay cho (xi)’ Phép biểu diễ : (n ) của
bi u th c Boolean là m t ể ứ ộ phép đồng cấu, được định nghĩa:
Trang 29Tuy nhiên, bi u thể ức Boolean không phải là phép biểu di n duy nhễ ất, thực tế có
th tể ồn tạ vô số các biểi u thức Boolean khác nhau biểu diễn cùng một hàm Boolean, ví như ( ) = () đúng với m i u th c Boolean ọ biể ứ w BF(Xn)
- Tổng các tích của một hàm Boolean f Bn chứa các minterm của f được gọi là
d ng mintermạ của Ta gọf i nhóm các minterm c a m t hàm Boolean thỏa mãn ủ ộ fnhóm f
Xét bi u thể ức Boolean sau:
(x1 · x2 · x3)+(x1 · x2 · x3 )+(x1 · x2 · x3)+(x1 · x2 · x3)+(x1 · x2 · x3)
Trang 30Đây là mộ ạt d ng minterm c a hàm Boolean Nó là duy nh t k c khi hoán v các ủ ấ ể ả ịminterm Bi u ể thức Boolean (x1 · x2)+ x3 cũng là một tổng các tích của cùng một hàm Boolean nhưng nó không phải là d ng minterm ạ
Do nhóm các minterm của một hàm Boolean là duy nh t, nên d ng minterm là f ấ ạphép bi u di n chính tể ễ ắc của hàm Boolean Các phép kiểm tra tương đương, lặp và thoản mãn có thể được thực hiện trong đa thức thờ gian có xét đến kích thước của các i
dạng minterm Hơn nữ đáp ứa, ng tính của một dạng minterm cũng có thể được tính toán theo th i gian tuy n tính Cho m t d ng minterm c a 2 hàm Boolean ờ ế ộ ạ ủ f, g Bn,
dạng minterm của f · g, f + g và fxi=g cũng có thể được tính toán theo đa thức thời gian
Việc tính toán một dạng minterm có thể ất mấ r t thời gian, vậy nên cần xây dựng nó
m t cách rõ ràng ộ
Tuy nhiên, do kích thước các d ng minterm c a ph n l n các hàm Boolean trong ạ ủ ầ ớcác ứng d ng t l ụ ỉ ệ lũy thừa theo s ng bi n, nên dố lượ ế ạng minterm không được sử ụ d ng trong thực tế Trong nhiề ứu ng d ng, tụ ổng các tích được dùng để biểu di n hàm ễBoolean do kích thước của chúng thường nh ỏ hơn nhiều so v i d ng minterm Tuy ớ ạnhiên, nhiều hàm Boolean, ví như phép cộng nh ịphân n-bít, v i n bi n u vào thì t ng ớ ế đầ ổcác tích sẽ không kh ả thi, do kích thước của chúng t l ỉ ệ lũy thừa vớ ố ếi s bi n n
Trang 31của v Các node low(v) high(v) được gọi là node kế ấ node kế 0 và node kế cao và th p ( ) (node kế 1 ủa v Một node kết cuố v được gán nhãn với một giá trị value(v) ) c i {0, 1}
và không có c nh ra Kạ ích thước |G| ủa một BDD G được định nghĩa là số lượ c ng node
n i t i cộ ạ ủa G
BDD trên Xncó thể được dùng để so sánh các hàm Boolean của Bn theo cách sau
Mỗi đầu vào α =(α1, ,αn) {0, 1}n định nghĩa một đường tính toán thông qua BDD b t ắ
đầ ừ ộu t m t node riêng biệt nào đó, là gốc của hàm Boolean tương ứng N u ế đường tính toán đạt đến m t node n i t i ộ ộ ạ wđược đánh nhãn là xi, nó sẽ đi theo đường low(w) ch ỉkhi αi=0 và theo đường high(w) chỉ khi αi =1 Tất cả các đường tính toán chỉ đi đến node k t cu i khi BDD là h u hế ố ữ ạn, có hướng và không l p Nhãn c a node k t cu i xác ặ ủ ế ố
định giá tr tr v cị ả ề ủa BDD trên đầu vào α
Định nghĩa 2.5: [9]
V i ớ G =(V, E, index, value)là một BDD trên n ế x bi n 1, ,xn và v V là một node
c a BDD G Hàm Boolean ủ () được tính toán một cách đệ quy như sau:
- N u là m t node kế v ộ ết cuối và value(v)=1 thì () = 1
- N u là m t node kế v ộ ết cuối và value(v)=0 thì () = 0
- N u là m t node kế v ộ ết cuối và index(v)= xi thì
( ) = () + ()
Bi n ế xi được gọi là biến quyết định của v Hình 2.2 th hiể ện một BDD trên X4 Các node n i tộ ại được biểu di n bễ ằng các hình tròn đánh nhãn x2, x3, và x4 C nh thạ ấp được bi u di n bể ễ ằng các đường nét đứt Cạnh cao được bi u di n bể ễ ằng đường nét li n ề
Tất cả các cạnh đều có hướng từ trên xuống dưới Hình vuông th hiể ện node kết cuối Các node k t cuế ối được đánh nhãn là 0 ho c 1 ặ và bi u di n hàm Booelean ể ễ 0 hoặc 1
Trang 32tương ứng M i node v c a m t BDD bi u di n m t hàm Boolean () ọ ủ ộ ể ễ ộ Chú ý
rằng các hàm Boolean ểu diễn bởi BDD đều độc lập với biến xbi 1, không có node nội tại nào được đánh nhãn là x1
() =
Các con trỏ tương ứng được bi u di n bể ễ ởi mũi tên không có node nguồn Nó biểu
diễn một hàm Boolean , được cho bởi công thứ c + ( ) và (
) + ( ), hình 2.3
Định nghĩa 2.6 : [9]
Trang 33V i ớ π Per(Nn) là một hoán vị ất kỳ ủa nhóm b c Nn Hoán vị π bao gồm m t bộ ậc tuyến tính < trên Xn đượ ịnh nghĩa: c đ xπ(i) <xπ(j) khi chỉ i < j Ta nói bậc tuyến tính < là
b c bi n ậ ế
Định nghĩa 2.7: [9]
Một BDD G =(V, E, index, label) được phân bậc nếu tồn tại bậc tuyến tính < của các biến thuộc G, ví như index(u) <index(v) đúng với m i c nh (u, v) E v i ỗ ạ ớ v là m t ộnode nội Nếu BDD G được phân bậc, thì πG và <Gtương ứng biểu diễn hoán vị và bậc
bi nế Một BDD phân bậc được rút gọn nếu không tồn tại 2 node khác nhau v1 và v2 mà
() = () Một BDD được phân b c và rút gậ ọn được gọi là RO-BDD, đồ hình quy t ế định nhị phân gi n b ả ậc
Hình 2.4: BDD phân c p ấ Hình 2.5: ROBDD
BDD được định nghĩa với 4 bi n xế 1, x2, x3, x4 và được phân bậc x2 <x1 <x3 <x4, biểu diễn hàm Boolean f B4: (x1 · x3 · x4)+ x2, tương đương với hàm (x1 · x2’ · x3 · x4)+
x2 Theo hình , các node nội của BDD rút gọ G =(V, E, index, value)2.4 n trên tậ Xp n có
th ể được phân tách thành n+1 ấp Vớ j c i Nn, cấp jbao gồm các node được gán nhãn
là xπG(j) Node kết cu i có c p ố ấ n+1 Theo đó, ta thu được ánh x levelạ G: V → Nn+1 ánh
x duy nhạ ất mỗi node vV ới cấp tương ứng c a nó, ủ () th hi n các node c p ể ệ ở ấ j
của G
Trang 34Đồ hình BDD trong hình 2.4 chưa được rút g n Ba node xọ 4 và m t node ộ x3 bên trái cùng bi u diể ễn một hàm Boolean h ng 0 Vì vằ ậy 4 node này đều có thể được xác
nh n v i node kậ ớ ết cuối 0, t ừ đó ta thu được BDD rút gọn như hình 2.5
Việc rút gọn OBDD dựa trên 2 nguyên tắc cơ bản và cùng nh m đ n mắ ế ục đích là
lo i b nhạ ỏ ững phần dư thừa, được th hiể ện như trong hình 2.6
Hình 2.6: Nguyên t c rút g n BDD (a) Lo i b (b) K t h p ắ ọ ạ ỏ ế ợ
Hình 2.6 a, áp dụng với node v có cả 2 cạnh ra đều dẫn đến node w, rõ ràng ta có
th nể ối các cạnh đến của node v vào trực tiếp node w, và loại bỏ node vmà không làm ảnh hưởng đến OBDD Hình 2.6b được áp d ng khi node vụ 1 vvà 2 có cùng nhãn, cùng node k th p và node k ế ấ ếcao
2.1.4 Bi ể u thức CNF và bài toán SAT
Bài toán đáp ứng đúng sai (SAT) là bài toán xác định m t phân b bi n V th a ộ ố ế ỏmãn cho m t hàm boolean ộ f hoặc chứng minh rằng Vkhông t n tồ ại Thuật gi i SAT có ả
th ể được dùng để ạ t o mẫu kiểm thử ự động Chúng ta cũng có thể ử ụng giả t s d i thu t ậSAT để ạ t o chuỗi đầu vào sao cho mạch đạt được m t tr ng thái mong mu n ộ ạ ố
SATisfy-one: tìm một đường t node lá 1 t i node g c, t ừ ớ ố ừ đó xác định t h p giá ổ ợ
tr biị ến để hàm b ng 1 (tìm mô hình c a hàm) ằ ủ
Trang 35 SATisfy-all: tìm t t c ấ ả các đường khác nhau t node lá 1 t i node g ừ ớ ốc.
SATisfy-count: đế ấ ảm t t c các đư ng t node lá 1 ờ ừ
Hay nói cách khác, CNF là m t d ng biộ ạ ểu thức bi u di n hàm Boolể ễ ean dùng như
đầu vào c a bài toán SAT CNF là tích củ ủa các mệnh đề, m t mộ ệnh đề là t ng c a các ổ ủchữ ộ, m t ch là m t bi n ho c nghữ ộ ế ặ ịch đảo c a bi n M t thu n l i khi s dủ ế ộ ậ ợ ử ụng CNF đểxác định fđó là đượf c th a mãn khi và ch khi t t c các mỏ ỉ ấ ả ệnh đề ủa nó đượ c c thỏa mãn
Xác đị nh CNF t Net-list c a m ch ừ ủ ạ
Gate net list là m t t- ộ ập hợp các phầ ửn t liên kết v i nhau M i thành phớ ỗ ần cơ sởđược liên k t v i mế ớ ột hàm định nghĩa trong fan-ins Trong m ch, các thành ph n cơ sở ạ ầthường là c ng AND, OR, NAND, NOR và Inverter (m ch ngh ch đ o) Trong gate ổ ạ ị ả
Trang 36net-list, chúng ta có các hàm chức năng của những cổng này, định nghĩa mối quan hệ
giữa fan-out và fan-ins của cổng, c n ph i chuyầ ả ển đổi nh ng hàm này sang CNF ữ
Hình 2.7: Bi u th c CNF cho các m ch cể ứ ạ ổng cơ bản
Để minh h a cách chuyọ ển đổ ừi t hàm chức năng cổng sang CNF, ta xét m ch ạ
cổng AND, có hàm chức năng như sau: Z=X.Y ới Z là biến đầu ra, X, Y là 2 biế V n
đầu vào S dử ụng đồng nh t th c ( ấ ứ = ) ( )( ta chuyển hàm chức )năng cổng thành:
( )(( ) ) Bên cạnh đó ta có đồng nh t th c + ấ ứ chuy n ể ( ) thành ( + )( + ) và ( + ) thành (+ + ) Vậy bi u th c cuốể ứ i cùng của
m ch c ng AND là: ạ ổ
( + )(
+)( + + )
Bi u thể ức cho ra giá trị chỉ 1 khi các giá trị ến thỏa mãn bảng chân lý của mạ bi ch
c ng AND Bi u c CNF cho các m ch cổ ể thứ ạ ổng cơ bản được cho như hình 2.7
Trang 37Sau khi đã có các ểbi u th c CNF cho các m ch cứ ạ ổng cơ bản, ta c n xây d ng bi u ầ ự ể
thức CNF cho một node bất kỳ trong mạch Ta dùng phép tìm kiế deep breath đểm duyệt qua tất cả các node có ảnh hưởng đến giá trị ủa node đang xét, cho đến khi gặp cđầu vào cơ sở ủ c a m ch ạ
K ế t quả ủa bài toán SAT c
Là một tổ ợp giá trị ến đầu vào của biểu thức Boolean sao cho biểu thức có giá h bi
tr b ng 1 ị ằ
- T hổ ợp giá trị ến làm biểu thức bằng 1 được gọi là phép gán thỏa mãn (biểu bi
th c) ho c là mô hình c a bi u th ứ ặ ủ ể ức
- Bi u th c Bool ể ứ ean được gọi là h p l nợ ệ ếu tấ ả các tổ ợt c h p giá tr ị đều thỏa mãn
- Biểu thức Boolean được gọi là có thể ỏa th mãn nếu có ít nhất mộ ổ ợp giá trịt t hlàm nó b ng 1 ằ
- Biểu thức Boolean được gọi là không thể ỏ th a mãn nếu không tồn tại tổ ợp giá h
2.2 Các mô hình m ạ ch logic cơ bả n
2.2.1 Mô hình cấu trúc Gate net -list
Net-list là một mạch điều khiển, với các node tương ứng với các thành phần mạch
cơ sở, các cạnh tương ứng v i các dây d n k t n i các thành ph n v i nhau M i node ớ ẫ ế ố ầ ớ ỗđược đánh dấu b ng m t bi n boolean riêng bi t wằ ộ ế ệ i Ba thành ph n mầ ạch cơ sở là: đầu vào cơ sở X, các ch t R, và các c ng Node ố ổ đầu vào cơ sở không có fanin Ch t có m t ố ộ
Trang 38đầu vào đơn và có giá trị đầu xác định Tương ứng v i m i node là m t hàm boolean ớ ỗ ộ
dựa trên các biến fanin ủa nó Một phân nhóm các node đượ c c xác định như là nhóm các đầu ra cơ sở Y Đầu ra c a các ch t có th ủ ố ể được xem là đầu vào gi ả và đầu vào c a ủcác chốt có th ể được xem là đầu ra gi cả ủa phần k t h p trong m ch ế ợ ạ
Hình 2.8: Ví d m ch Gate net-list ụ ạ
Hình 2.8 th hiể ện một ví d v m ch c ng netlist, vụ ề ạ ổ ới 4 đầu vào cơ sở là 1, 2, 3, 4,
có 3 ch t và mố ột đầu ra cơ sở 33 Các ch t trong m ch có các đ u vào là 24, 27, 31 ố ạ ầđược xem là đầu ra gi , còn các đ u ra 5, 6, 7 c a các ch t ả ầ ủ ố được xem là các đầu vào
gi ả
2.2.2 Mô hình cấ u trúc AND/INV graph
AND-INV graphs (AIGs) là các mạng Boolean bao gồm các cổng AND 2 đầu vào và các mạch đảo Chúng được dùng để ể bi u diễn và điều khi n các hàm Boolean ể
Trang 39lớn trong một vài ứng dụng như kiểm chứng tương đương và ánh xạ công nghệ Trong nhiều mạch thực tế, AIGs có kích thước nhỏ và dễ xây dựng hơn so ới BDDs v Là phép bi u di n chể ễ ức năng nên AIGs có các thuộc tính quan trọng sau:
- Thời gian xây dựng và số lượng node AIG tỉ ệ l thuận với kích thước của mạch
gốc (trong khi kích thước của BDD tăng nhanh theo hàm mũ với một số ạ m ch
thực tế, ví như mạch nhân)
- AIGs chỉ bao g m các cồ ổng AND 2 đầu vào và các mạch đảo, được bi u di n ể ễ
d ng các con tr nạ ỏ ổi bọ ức là các b ật (t ít l t) trên các c nh biên ạ
- Cấu trúc đồng nhất của AIGs có thể được khai thác trong ảgi i thuật SAT hướng
m ch, ạ hoặc có thể chuyển thành dạng biểu diễn CNF để ử lý trong ả x gi i thu t ậSAT
Hình 2.9: Hai AIGs khác nhau cho cùng một hàm
Trang 40Tuy nhiên, AIGs không ph i là d ng chính t c, vì thả ạ ắ ế ớ v i cùng m t hàm Boolean ộ
có th có nhi u phép bi u di n AIG khác nhauể ề ể ễ như hình 2.9 Kích thước của một AIG
là số lượng node AND c a nó Sủ ố lượng c p logic là sấ ố lượng các c ng AND trên ổđường dài nh t ch y t mấ ạ ừ ột đầu vào g c đ n mố ế ột đầu ra g c Các mố ạch đảo được b ỏqua khi tính s ng node và c p logic ố lượ ấ
ra của các quan hệ tích s và m t n i bố ộ ố ậc của các mạch OR 2 đầu vào M i cỗ ổng
OR 2 đầu vào được chuyển đổi thành m t cộ ổng AND 2 đầu vào với nguyên t c ắDeMorgan
BDD: Cho mộ ểt bi u di n BDD (nhi u đ u ra) c a m t hàm Boolean, AIG (nhi u ễ ề ầ ủ ộ ềđầu ra) được xây d ng b ng cách chuyự ằ ển đổi BDD vào m t m ch g m các b ộ ạ ồ ộMUX và áp dụng phương pháp chuyển đổi từ phép bi u di n mể ễ ạch
Circuit: Cho mộ ểt bi u di n m ch c a m t hàm Boolean, thì AIG (nhiễ ạ ủ ộ ều đầu ra) được xây d ng theo ki u t th p lên cao, b ng cách g i m t gi i thu t xây d ng ự ể ừ ấ ằ ọ ộ ả ậ ự
đệ quy cho mỗi PO (đầu ra g c) c a m ch Gi i thu t này s ki m tra xem nó có ố ủ ạ ả ậ ẽ ểđược g i cho mọ ột node PI (đầu vào g c) hay không N u có thì nó tr l i bi n ố ế ả ạ ếAIG cơ sở tương ứng Còn không thì đầu tiên nó g i l i chính nó cho các fanin ọ ạ
của node và sau đó xây dựng AIG cho node dùng khung h s hoệ ố ặc biểu diễn BDD c a hàm logic c a nodeủ ủ Trong cả hai trường h p, các thành ph n AND, OR ợ ầ
và MUX đều được chuyển đổi thành d ng cạ ổng AND 2 đầu vào ho c mặ ạch đảo