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

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

99 381 0

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

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

THÔNG TIN TÀI LIỆU

Thông tin cơ bản

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

Nội dung

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 sâu sắc tới thầy giáo TS Nguyễn Đức Minh, ngƣời trực tiếp hƣớng dẫn tận tình thời gian nghiên cứu hoàn thiện luận văn Tôi xin đƣợc gửi lời cảm ơn tới tập thể thầy, cô giáo 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 đỡ suốt thời gian học tập nghiên cứu trƣờng Một lần xin trân trọng cảm ơn tất thầy cô giáo, gia đình, bạn bè, đồng nghiệp giúp đỡ ủng hộ thời gian qua Xin kính chúc thầy cô giáo, anh chị bạn mạnh khỏe, hạnh phúc 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 công trình nghiên cứu thực cá nhân, đƣợc thực sở nghiên cứu lý thuyết, thực tế dƣới hƣớng dẫn 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 luận án trung thực, dựa nghiên cứu, thân, chƣa đƣợc công bố dƣới bất ký hình thức trƣớc 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 tham khảo đƣợc trích dẫn nguồn đầy đủ Một lần xin khẳng định trung thực lời cam kết 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 DANH SÁCH TỪ VIẾT TẮT DANH SÁCH HÌNH VẼ MỞ ĐẦU .7 CHƢƠNG GIỚI THIỆU KIỂM CHỨNG VI MẠCH .10 1.1 Vai trò kiểm chứng thiết kế vi mạch 10 1.2 Phân loại lỗi 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 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 quy trình thiết kế vi mạch 20 1.5 Nguyên tắc kiểm chứng vi mạch 22 1.6 Các phƣơng pháp kiểm chứng có 24 1.6.1 Quy trình kiểm chứng dùng mô 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 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ý bìa Knaugh 32 2.1.3 Mạch số logic mức cổng mức RTL .34 2.1.4 Đồ thị định nhị phân 36 2.1.5 Công thức CNF toán SAT 40 2.2 Mạch số 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) 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 mạch .47 2.3.1 Logic mệnh đề .47 2.3.2 Cây tính toán CTL logic thời gian 47 2.3.3 Ngôn ngữ System Verilog Assertion .51 CHƢƠNG 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ông cụ kiểm chứng tƣơng đƣơng .64 3.2.2 Kiểm chứng tƣơng đƣơng mạch 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 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ụ xây dựng mạch trải 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 SMT 77 4.3.1 Mô hình mô tả mạch mức cao - Circuit component net-list .78 4.3.2 Biểu diễn 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 toán SMT 83 4.4 Kiến trúc hệ thống FCKBK .85 4.4.1 Tổng quan hệ thống 85 4.4.2 Sơ đồ khối hệ thống .86 4.5 Kết thực nghiệm đánh giá 88 4.5.1 Kiểm chứng thiết kế số mã nguồn mở 88 4.5.2 Gỡ lỗi .91 CHƢƠNG KẾT LUẬN 92 TÀI LIỆU THAM KHẢO 93 DANH SÁCH TỪ VIẾT TẮT BDD Binary Decision Diagram Biểu đồ đị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 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 ghi SAT Satisfiability Thuật toán SAT SMT Satisfiability Modulo Theory Thuật toán SMT SoC System on Chip Hệ thống chip VLSI Very-large-scale Integration Vi mạch tích hợp 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 DANH SÁCH HÌNH VẼ Hình 1.1 Khoảng cách suất sản xuất suất thiết kế vi mạch 11 Hình 1.2 Giá thành thiết kế hệ thống chip2 12 Hình 1.3 Phân bổ loại lỗi vi mạch .13 Hình 1.4 Phân bổ lỗi chip Pentium .14 Hình 1.5 Các loại kiểm chứng khác phân bổ công sức 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 thiết kế 21 Hình 1.8 Nguyên tắc kiểm chứng 23 Hình 1.9 Quy trình kiểm chứng dùng mô 26 Hình 2.1 Sơ đồ tổng quan mạch số .29 Hình 2.2 Triển khai hàm Boole Y  ABC  ABC  ABC theo dạng tổng tích 30 Hình 2.3 a) Bảng chân lý cho hàm Boole biến b)+c) Bìa Knaugh tƣơng ứng 32 Hình 2.4 Ví dụ tối ƣu hóa hàm Boole bìa Knaugh 34 Hình 2.5 Ví dụ 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ị đị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ụ ROBDD 40 Hình 2.10 Ví dụ mạch tổ hợp .41 Hình 2.11 Triển khai mạch theo FSM kiểu Mearly 44 Hình 2.12 Cấu trúc mạch đồng 45 Hình 2.13 Mô hình mạch trải 46 Hình 2.14 Ý nghĩa toán tử LTL 49 Hình 2.15 Các khối assertion 52 Hình 2.16 Ví dụ sequence 53 Hình 2.17 Ví dụ toán tử lặp 54 Hình 3.1 Thuật toán phân tích ngƣợc khả đạt đƣợc 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 Hình 3.3 Mô hình mạch lặp .61 Hình 3.4 Các thành phần 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 đƣợ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 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 hàm f mức cổng nhƣng có chung bảng chân lý 67 Hình 3.8 Ví dụ đồ thi đị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 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 đếm 75 Hình 4.4 Mô hình tính toán IPC cho đếm thuộc tính tƣơng ứng 76 Hình 4.5 Một ví dụ component net-list 79 Hình 4.6 Cấu trúc 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 FCKBK 86 Hình 4.9 Sơ đồ luồng liệu cho công cụ FCKBK 87 Hình 4.10 Đồ thị dạng sóng cho lỗi xảy với thuộc tính MIPS_lw_data .91 MỞ ĐẦU Theo định luật Moore, độ phức tạp thiết kế phần cứng tăng gấp đôi sau hai năm Do vậy, trình kiểm chứng thiết kế phần cứng trở thành vấn đề lớn 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 biến trạng thái Để đƣơng đầu với vấn đề phức tạp ngày tăng này, thuật toán kiểm chứng ngày hƣớng tới việc phân tích xác minh thiết kế mức cao mức bít Trên thực tế, thiết kế phần cứng số thƣờng đƣợc phát triển 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ả cách sử dụng tổ hợp hoạt động mức word mức bít Sự mô tả phần cứng nhƣ đƣợc biến đổi thành mạch số mức word cách sử dụng gói phần mềm HDL front-end [29, 23, 20] có khả giữ lại thông tin mức cao nhƣ đƣờng liệu, máy trạng thái, đếm, vv Các mạch mức cao chứa đựng không cổng logic mà thành phần mức cao nhƣ cộng, nhân, chọn kênh tín hiệu nhiều bít Sau đó, mạch đƣợc xác minh thuật toán back-end mà có khả khai thác thông tin mức word Lịch sử nghiên cứu Thông tin mức word đƣợc sử dụng 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 làm mịn lặp lặp lại Không gian trạng thái đƣợc rút gọn cách bớt bit tín hiệu [15] thay hoạt động mức word thiết kế hàm Bool mức bit [11, 12] Sau đó, thuộc tính mạch đƣợc kiểm tra mạch rút gọn Nếu thuộc tính đƣợc thỏa mãn mạch rút gọn, đƣợc thỏa mãn mạch nguyên Nếu thuộc tính không đƣợc thỏa mãn có tồn tổ hợp đầu vào chuỗi chuyển việc phân tích tổng hợp tập cú pháp SVA nhƣ đƣợc [18] Trong trình biên dịch này, bên cạnh đối tƣợng Module mà biểu diễn mệnh đề thuộc tính đầu chứa đựng cấu trúc dự liệu std::map nhƣ đƣợc trình bày Định Nghĩa 4.2 nhằm mục đích hỗ trợ cho việc xây dựng mô hình tính toán IPC 4.3.3 Xây dựng mô hình tính toán IPC Trong mục này, đề xuất thuật toán đệ quy dựa thuộc toán duyệt theo chiều sâu Depth First Search (DFS) để xây dựng mô hình tính toán IPC Thuật toán nhận đầu vào component net-list C thiết kế mạch thuộc tính P nó; sau tạo component net-list mà biểu diễn cho mô hình tính toán IPC Thuật toán đƣợc đề xuất thêm component nằm đầu vào component thuộc thiết kế mà tƣơng ứng với đầu vào thuộc tính Điều có nghĩa có component thiết kế có tác động đến thuộc tính đƣợc xét đến Quy tắc giúp làm kích thƣớc mô hình tính toán IPC so với việc chép toàn mạch thiết kế ghép nối với để tạo thành mạch lặp nhƣ Phƣơng Trình 4.1 Mã giả đƣợc Bảng 4.2 mô tả chi tiết thuật toán Bảng 4.2 Triển khai mô hình tính toán IPC function contruct_ipc // Function to construct IPC computational model // by connecting p with $cir$ input: cir(G,E,F,BW) input: p(Gp,Ep,Fp,BWp), TFp, IMp output: ipc (Gipc,Eipc,Fipc,BWipc), TFipc begin foreach g Gp if (Fp(gp)==INPUT || Fp(gp)==PS_INPUT)) 10 // connecting inputs of p with 11 // corresponding components in cir 12 gc = IMp(gp) 13 t = TFp(gp) 14 add_with_time(cir, ipc, gc, t) else 15 16 // other components is added to ipc 17 Gipc=Gipc  gp; BWipc(gp)= BWp(gp); Fipc(gp)= Fp(gp); end if 18 82 end foreach 19 end 20 21 function add_with_time 22 // DFS function to add components from circuit to ipc input: cir(G,E,F,BW), gc G 23 input: ipc(Gipc,Eipc,Fipc,BWipc), TFipc 24 input: t  N 25 output: ipc(Gipc,Eipc,Fipc,BWipc), TFipc 26 begin 27 if (Fc(gc)==INPUT) 28 29 //reach root of iterative net-list, add component 30 Gipc=Gipc  gc; BWipc(gc)=BWp(gc); 31 Fipc(gp)=Fp(gc); TFipc(gc)=t; else if (Fc(gc)==PS_INPUT) 32 if (t>0) 33 34 //connect psi with 35 //previous corresponding pso 36 gpso = pso(gc) 37 add_with_time(cir,ipc,gpso,t-1) else 38 39 //reach root of iterative net-list, add component 40 Gipc=Gipc  gc; BWipc(gc)=BWp(gc); 41 Fipc(gp)=Fp(gc); TFipc(gc)=t; end if 42 else 43 44 // normal component is added 45 Gipc=Gipc  gc; BWipc(gc)=BWp(gc); 46 Fipc(gp)=Fp(gc); TFipc(gc)=t; end if 47 48 end 4.3.4 Ánh xạ mô hình tính toán IPC vào toán SMT Nhƣ thảo luận mục trƣớc, thuộc tính sai lệch so với mô tả thiết kế có tổ hợp giá trị biến mô hình tính toán IPC đƣợc tìm thấy cho đầu p có giá trị Do đó, toán IPC phù hợp với việc ánh xạ vào toán SAT Thêm vào đó, mô hình tính toán chứa đựng không thành phần logic (and, or, not…) mà khối đại số (bộ công, nhân, chọn kênh, so sánh…) ; mô hình biểu diễn biểu thức first-order logic Biểu thức nhƣ phù hợp để ánh xạ vào toán SMT Quá trình chuyển đổi mô hình tính toán IPC vào toán SMT đƣợc thực cách hiệu nhờ vào tận dụng lợi SMT-solver nhƣ đƣợc mục trƣớc Trong phạm vị đồ án này, em sử dụng Boolector [6] nhƣ SMT-solver Đầu vào Boolector 83 cấu trúc liệu đƣợc gọi Boolector module dùng để biểu diễn biểu thức thức mệnh đề Boolector module có thành phần tƣơng tự nhƣ mạch component Bảng 4.3 làm r điều Bảng 4.3 Sự tƣơng đồng cấu trúc Component net-list mạch đầu vào Boolector # Desciption Boolector node 10 11 FCK component INPUT C_INPUT NOT U_AND SLICE CONCAT XOR EQ ADD MULT LT Variable Constant Not gate And reduce Slice Concatenation Xor gate Equation Adder Multiplier Unsigned Less then boolector_var boolector_const boolector_not boolector_redand boolector_slice boolector_concat boolector_xor boolector_eq boolector_add boolector_mul boolector_ult 12 13 ROR ITE Right rotation Condition – if then else boolector_ror boolector_cond 14 15 MINUS SIGN_EXT END SHL … Negation Sign extension boolector_neg boolector_sext Left shift … boolector_sll … 16 … Để sử dụng SMT-solver cho toán IPC, phát triển hàm chuyển đổi tƣơng đƣơng mạch component mà biểu diễn cho mô hình tính toán IPC vào cấu trúc liệu đầu vào Boolector Sau đó, hàm xử lý Boolector đƣợc gọi nhằm thu đƣợc trạng thái kiểm chứng thuộc tính Nếu kết kiểm chứng không thảo mãn thiết kế tuân theo thuộc tính, ngƣợc lại ta có thiết kế vi phạm thuộc tính SMT-solver cung cấp mô hình rời mà chứa đựng phép gán giá trị cho đầu vào làm cho mạch thiết kế bị sai lệch so với thuộc tính Quá trình tạo nốt mạng Boolector tƣơng tự nhƣ tạo thành phần component net-list Điều có nghĩa phải đảm bảo đầu vào mốt đƣợc sinh trƣớc Do đó, thuật toán duyệt theo chiều sâu First 84 Search (BFS) cần thiết để áp dụng trƣờng hợp để thực chuyển đổi tƣơng đƣơng thành phần hai cấu trúc Mã giả Bảng 4.4 trình bày chi tiết bƣớc thực thuật toán Bảng 4.4 Thuật toán ánh xạ mô hình tính toán IPC vào toán SMT 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 function convert_ipc_smt //Mapping IPC computational model into SMT problem input: ipc(Gipc,Eipc,Fipc,BWipc) output: btor(Gbtor,Ebtor,Fbtor,BWbtor) begin queue bfs_queue; map ipc_btor; foreach gipc Gipc { if (Fipc(gipc)==INPUT || Fipc(gipc)==C_INPUT) //create and add a boolector node //corresponding to component in IPC model Gbtor=Gbtor  gipc; BWbtor(gipc)=BWipc(gipc); Fbtor(gipc)=Fipc(gipc); Cir_btor.insert(pair(gipc,gbtor); Bfs_queue.push_back(gipc); end if end foreach while (!bfs_queue.empty()) gipc= bfs_queue.front(); foreach g  fan-out of gipc g”  fan-in of g; if (cir_btor[(every)g"]!=NULL) Gbtor=Gbtor  g; BWbtor(g)=BWipc(g); Fbtor(g)=Fipc(g); Cir_btor.insert(pair(g,gbtor)); Bfs_queue.push_back(g); end if end foreach bfs_queue.pop(); end while end 4.4 Kiến trúc hệ thống FCKBK 4.4.1 Tổng quan hệ thống Đầu vào phần mềm bao gồm thiết kế số đƣợc mô tả ngôn ngữ Verilog tập hợp thuộc tính đƣợc ngôn ngữ mô tả thuộc tính 85 SVA Phần mềm có chức kiểm chứng hình thức để xác minh liệu thiết kế tuân theo thuộc tính tài liệu đặc tả kỹ thuật hay không Nếu không, phần mềm tạo mô hình rời rạc phép gán giá trị cụ thể cho đầu vào mốc thời gian khác thiết kế Mô hình nhƣ chuyển đổi thành đồ thị dạng sóng nhằm giúp ngƣời dùng gỡ lỗi cho thiết kế Sơ đồ tổng quan FCKBK đƣợc minh họa Hình 4.8 Kết (Hold/Fail) Thiết kế (.v) FCKBK Dạng sóng lỗi Thuộc tính (.sv) Hình 4.8 Sơ đồ tổng quan FCKBK 4.4.2 Sơ đồ khối hệ thống Dựa phân tích phần trƣớc, em đề xuất biểu đồ luồng liệu cho hệ thống nhƣ thấy Hình 4.9 86 Hình 4.9 Sơ đồ luồng liệu cho công cụ FCKBK Hệ thống chứa đựng hai khối đƣợc đặt tên front-end back-end Khối front-end chứa đứng ba khối nhỏ là: khối biên dịch ngôn ngữ Verilog (Verilog front-end), khối biên dịch ngôn ngữ SVA (SVA compiler), khối trải mạch (unrolling) Đầu tiên, Verilog front-end biên dịch mã Verilog thành mô hình toán học mô tả mạch số (component net-list) Sau đó, SVA compiler có nhiệm vụ biên dịch mã SVA biểu diễn cho thuộc tính thành mô hình toán học khác gọi property net-list Trong bƣớc tiếp theo, khối trải mạch xây dựng mô hình tính toán IPC dựa mô hình toán học thiết kế thuộc tính vừa thu đƣợc trình biên dịch Khối back-end nhận mô hình tính toán IPC làm đầu vào chuyển đổi mô hình thành toán SMT mà đƣợc giải Boolector – SMT-solver Tiếp theo, hàm xử lý Boolector đƣợc gọi nhằm chứng minh đầu mô hình IPC luôn (thiết kế tuân theo thuộc tính) tìm tổ hợp 87 phép gán giá trị cụ thể cho đầu vào khiến đầu mô hình IPC có giá trị (thiết kế vi phạm thuộc tính) 4.5 Kết thực nghiệm đánh giá 4.5.1 Kiểm chứng thiết kế số mã nguồn mở Em sử dụng thiết kế số mã nguồn mở bao gồm khối điều khiển I2C Master [25], xử lý 32 bit MIPS [3], khối điều khiển nhớ SDRAM để kiểm tra tính đắn công cụ kiểm chứng hình thức FCKBK mà giải toán IPC dựa vào sử dụng công cụ giải toán mức cao SMT-solver Các thông tin thiết kế số đƣợc Bảng 4.5 Kết kiếm chứng cho thiết kế kể đƣợc mô tả Bảng 4.6 Cột thứ biểu diễn tên thuộc tính đồng thời hành vi thiết kế đƣợc kiểm chứng Trong cột thứ số lƣợng component mà mô hình tính toán IPC chứa đựng Độ dài (số chu k ) thuộc tính đƣợc gửi đến cột thứ Cột lần lƣợt cho thấy thời gian CPU nhớ sử dụng để kiểm chứng thuộc tính Cuối cùng, cột thứ gửi đến kết kiểm chứng, liệu thiết kế tuân theo thuộc tính (hold) vi phạm thuộc tính (fail) Bảng 4.5 Mô tả số thiết kế số mã nguồn mở Thiết kế Số file Sdram I2C 32-bit MIP 18 Số dòng code 211 1273 5057 Số component sau tổng hợp 339 936 7074 Mô tả Sdram controller I2c protocol 32-bit MIP processor Bảng 4.6 Kết kiểm chứng số thiết kế số mã nguồn mở Thuộc tính SDRAM_read SDRAM_reset Số comps 1412 257 Số chu k 88 Boolector Kết kiểm Thời gian Bộ nhớ sử chạy dụng (KB) chứng (mm:ss) 0.06 5196 Fail 0.04 4676 Hold SDRAM_write I2C_read_bit I2C_read_byte I2C_reset I2C_start I2C_write_bit I2C_write_byte MIP_add MIP_addi MIP_and MIP_beq MIP_bgez MIP_bgezal MIP_bne MIP_clo MIP_jum MIP_lb MIP_lbu MIP_lh MIP_lw_address MIP_lw_data MIP_lwl MIP_mfhi MIP_movn MIP_mul MIP_sb MIP_sll MIP_sllv MIP_slt MIP_sra MIP_srlv MIP_sub MIP_sw 1330 2224 21300 166 2200 2255 21300 14733 14625 14734 26060 26050 26017 26077 14691 19217 18368 18369 18368 14533 18359 18369 18400 14734 14739 18267 14723 14761 14764 14768 14761 14735 18262 42 5 42 5 7 7 5 5 5 5 5 5 5 5 0.05 0.3 1.4 0.2 0.3 0.3 1.4 29.5 26.6 26.6 34.4 34.3 35.3 43.9 25.7 23.7 27.8 27.7 27.9 25.8 27.3 27.7 27.7 25.9 26:46.3 28.3 25.9 25.9 28.7 24.1 25.9 30.5 27.7 5200 7280 15180 6480 7272 7280 15180 33116 33120 33108 37740 37876 37616 37868 33116 34544 34456 34516 34456 32884 34328 34516 34396 33120 33124 34312 33136 33132 33136 35329 33116 32976 34428 Hold Fail Hold Hold Fail Hold Hold Hold Hold Hold Hold Hold Fail Hold Hold Hold Hold Hold Hold Hold Fail Hold Hold Fail Hold Hold Hold Hold Hold Hold Hold Hold Hold Bởi mô hình tính toán IPC tƣơng ứng với thiết kế I2C Master xử lý 32-bit MIPS lớn so với khả SAT-solver, kiểm chứng thiết kế phƣơng pháp SAT-base IPC em nhận đƣợc thông báo tràn nhớ “memory out” vƣợt thời gian cho phép “time out” Một số thuộc tính vi xử lý MIPS đƣợc kiểm chứng nhờ sử dụng công cụ kiểm chứng hình thức ONESPIN nhƣ đƣợc biểu diễn Bảng 4.7 89 Bảng 4.7 Kết kiểm chứng vi xử lý MIPS công cụ ONESPIN Thuộc tính Số chu k Số component Time (hh:mm:ss) INSTR ADD ADDI AND ANDI BEQ BNE J JAL JR LB LH LUI LW_AD NOR OR ORI SB SH SLT SLTI SRA SRAV SRL_SLL SUB SW XOR XORI RESET 2 6 6 7 7 6 6 6 5 6 6 6 5 6 4501 12316 12280 12283 12236 27212 27196 19497 23361 19870 12649 12468 12153 12284 12283 12283 12236 9046 27784 12316 12275 12248 12302 12259 12309 9279 12291 12242 17140 00:00:00 00:02:44 00:00:30 00:01:52 00:00:06 00:04:00 00:52:02 00:00:03 00:00:04 00:05:34 00:00:24 00:00:30 00:00:01 00:00:27 00:01:31 00:01:21 00:00:11 00:00:32 00:11:54 00:06:22 00:00:29 00:00:53 00:00:54 00:04:32 00:02:32 00:00:35 00:02:06 00:00:13 00:00:00 Memory Usage (MB) 68 544 543 546 539 869 913 657 738 697 875 542 519 560 547 570 564 527 939 604 558 543 567 622 556 539 547 543 62 Kết HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS GIVEN_UP HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS HOLDS Chúng ta thấy kết kiểm chứng thời gian thực hai phần mềm tƣơng tự 90 4.5.2 Gỡ lỗi Dựa vào Bảng 4.6 thấy số lỗi thiết kế vi xử lý 32 bit MIPS Ở đây, phân tích thuộc tính sai để phát lỗi nhƣ ví dụ cho trình gỡ lỗi đƣợc hỗ trợ phần mềm FCKBK Tổ hợp phép gán giá trị biến mà làm cho thuộc tính sai đƣợc tạo SMT-solver nhƣ thấy thuộc tính MIPS_lw_data (hoạt động tải liệu từ nhớ vào ghi) Hình 4.10 Đồ thị dạng sóng cho lỗi xảy với thuộc tính MIPS_lw_data Trong Hình 4.10, tín hiệu điều khiển cho lệnh tải liệu vào nhớ nhƣ EX_RegWrite, M_Regwrite, EX_ALUOp, M_MemRead, … xuyên suốt toàn giai đoạn thuộc tính (dựa theo sơ đồ giải mã lệnh MIPS) Tuy nhiên, chu k thứ tƣ WB_Regwrite mức thấp theo sơ đồ giải mã lệnh MIPS phải mức cao Do đó, liệu từ WB_ReadData không đƣợc lƣu vào ghi dẫn đến thuộc tính bị sai so với thiết kế 91 CHƢƠNG KẾT LUẬN Luận văn trình bày cách tổng quát thành phần toán kiểm chứng nhƣ mô hình toán học, ngôn ngữ mô tả mô hình, công cụ giải toán thỏa mãn mệnh đề Đồng thời luận văn tìm hiểu phƣơng pháp kiểm chứng thiết kế số đƣợc áp dụng năm gần đây, đặc biệt phƣơng pháp kiểm chứng mô hình kiểm chứng tƣơng đƣơng Từ kiến thức đó, phần mềm kiểm chứng hình thức cho thiết kế số đƣợc xây dựng, phát triển cho thấy kết khả quan việc áp dụng phần mềm vào kiểm chứng số thiết kế phần cứng có độ phức tạp đáng kể Về mặt đóng góp kỹ thuật tác giả xây dựng đƣợc trình biên dịch ngôn ngữ mô tả phần cứng Verilog ngôn ngữ mô tả thuộc tính SVA, phần mềm kiểm chứng vi mạch có tính mở để đƣợc phát triển thành công cụ khác hỗ trợ cho việc nghiên cứu nhƣ trình thiết kế vi mạch Hƣớng phát triển luận văn xây dựng phát triển khối chức năng, đặc biệt khối biên dịch đầu vào để xử lý thiết kế lớn đƣợc mô tả ngôn ngữ bậc cao nhƣ System Verilog Bên cạnh việc sử dụng phần mềm kiểm chứng xây dựng đƣợc vào dự án thiết kế vi mạch thực tế cần thiết nhằm hoàn chỉnh công cụ phát triển thành phần mềm có khả tham gia vào định hƣớng thiết kế công nghiệp 92 TÀI LIỆU THAM KHẢO Tiếng Việt Nguyễn Đức Minh (2012), Thuyết minh nhiệm vụ HTQTSP “Nghiên cứu [1] nâng cao chất lƣợng thiết kế mạch tích hợp phƣơng pháp toán học (Mathematical Methods for IC Design Quality Improvement)” Tiếng Anh [2] Armin Biere and Kunz W (2002), SAT and ATPG: Boolean engines for formal hardware verification, In Proc International Conference on Computer-Aided Design (ICCAD), San Jose [3] Biere A., Cimatti A., Clarke E., Strichman O., and Zhu Y (2003), Bounded Model Checking, Advances In Computers Volume 58, Academic Press [4] Biere A., Cimatti A., Clarke E., and Zhu Y (1999), Symbolic model checking without BDDs, In Proc Intl Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS) [5] Bruce Wile, John C Goss, and Wolfgang Roesner (2005), Comprehensive functional verification the complete industry cycle, Morgan Kaufmann [6] Brummayer R and Biere A (2009), Boolector: An efficient SMT solver for bit-vectors and arrays, In Proc Intl Conference on Tools and Algorithms for the Construction and Analysis of Systems (TACAS) [7] Daniel Kroening and Natasha Sharygina (2007), Interactive presentation: Image computation and predicate refinement for RTL verilog using word level proofs In Proc, International Conference on Design, Automation and Test in Europe (DATE), pp.1325–1330 [8] Don Mills and Stuart Sutherland (2006), Systemverilog assertions are for design engineers too! SNUG San Jose [9] Edmund M Clarke, Orna Grumberg, and Doron Peled (1999), Model checking, MIT press [10] Grant Ayers (2012), Xum project mips32 core, Online 93 [11] Himanshu Jain, Daniel Kroening, Natasha Sharygina, and Edmund Clarke (2005), Word level predicate abstraction and refinement for verifying RTL Verilog In Proc International Design Automation Conference (DAC), pp.445–450, New York, NY, USA, ACM Press [12] Himanshu Jain, Daniel Kroening, Natasha Sharygina, and Edmund M Clarke (2008), Word-level predicate-abstraction and refinement techniques for verifying RTL Verilog IEEE Transactions on Computer-Aided Design, 27(2), pp.366–379 [13] Hoereth S and Drechsler R (1999), Formal verification of word-level specifications, In Proc International Conference on Design, Automation and Test in Europe (DATE), pp.52–58 [14] Huang C.-Y and Cheng K T (2001), Using word-level ATPG and modular arithmetic constraint-solving techniques for assertion property checking, IEEE Transactions on Computer-Aided Design, 20(3), pp.381–390 [15] Johannsen P (2001), BOOSTER: Speeding up RTL property checking of digital designs by word-level abstraction, In Proc International Conference Computer Aided Verification (CAV), pp 373–377 [16] Kenneth L McMillan (1993), Symbolic model checking Springer [17] Markus Wedler, Dominik Stoffel, Raik Brinkmann, and Wolfgang Kunz (2007) A normalization method for arithmetic data-path verification, IEEE Trans, on CAD of Integrated Circuits and Systems, 26(11), pp.1909–1922 [18] Minh Nguyen Duc and Lam Nguyen Son (2015), Fckbk - a formal verification tool, online, https://bitbucket.org/formal_method/eda_32bits [19] Minh D Nguyen, Max Thalmaier, Markus Wedler, Jörg Bormann, Dominik Stoffel, and Wolfgang Kunz (2008), Unbounded protocol compliance verification using interval property checking with invariants, IEEE Transactions on Computer-Aided Design, 27(11), pp.2068–2082 [20] Minh N.D., Quan D.V., and Lam N.S (2014), An open source verilog frontend for digital design analysis at word level, In Communications and 94 Electronics (ICCE), 2014 IEEE Fifth International Conference on, pp.346– 350 [21] Moshe Emmer, Zurab Khasidashvili, Konstantin Korovin, Christoph Sticksel, and Andrei Voronkov (2012), Epr-based bounded model checking at word level, In Bernhard Gramlich, Dale Miller, and Uli Sattler, editors, Automated Reasoning, volume 7364 of Lecture Notes in Computer Science, pp.210–224 Springer Berlin Heidelberg [22] Pavlenko E., Wedler M., Stoffel D., and Kunz W (2007), Arithmetic Constrains in SAT-based Property Checking, In 10, GI/ITG/GMM Workshop Methoden und Beschreibungssprachen zur Modellierung und Verifikation von Schaltungen und Systemen (MBMV) [23] Peter Jamieson, Kenneth B Kent, Farnaz Gharibian, and Lesley Shannon (2010) Odin ii-an open-source verilog hdl synthesis tool for cad research, In Field-Programmable Custom Computing Machines (FCCM), 2010 18th IEEE Annual International Symposium on, pp.149–156, IEEE [24] Randal E Bryant (1986), Graph-based algorithms for boolean function manipulation, IEEE Transactions on Computers, 35(8), pp.677–691 [25] Richard Herveille (2001) Wishbone revb.2 compliant i2c master controller top-level [26] Robert Brummayer, Armin Biere, and Florian Lonsing (2008), Btor: bitprecise modelling of wordlevel problems for model checking, In In SMT ’08/BPR ’08: Proceedings of the Joint Workshops of the 6th International Workshop on Satisfiability Modulo Theories and 1st International Workshop on Bit-Precise Reasoning, ACM [27] Scholl C., Becker B., and Weis T.M (1998), Word-level decision diagrams, WLCDs and division, In Proc International Conference on Computer-Aided Design (ICCAD), pp 672–677 95 [28] Susmit Jha, Rhishikesh Limaye, and Sanjit Seshia (2009), Beaver: Engineering an efficient SMT solver for bit-vector arithmetic In Computer Aided Verification, pp 668–674 [29] Yeh Hu-Hsi, Wu Cheng-Yin, and Huang Chung-Yang Ric (2012), Qutertl: towards an open source framework for rtl design synthesis and verification, In Tools and Algorithms for the Construction and Analysis of Systems, pp.377–391, Springer 96 [...]... 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ố... 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... 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... 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. .. 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... Assertion Based Verification(AVB) là một cách tiếp cận mới để kiểm chứng trong thiết kế VLSI Phƣơng pháp AVB tạo ra các assertion dùng để mô tả các chi tiết kỹ thuật của thiết kế Assertion có thể mô tả các hành vi không mong muốn hoặc các hành vi cần phải có để hoàn thiện kế hoạch kiểm chứng Các 26 assertion có thể đƣợc kiểm tra bằng cả công cụ mô phỏng động và công cụ kiểm chứng hình thức Assertion là một... 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... 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... 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ả... 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

Ngày đăng: 25/11/2016, 00:05

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

TÀI LIỆU LIÊN QUAN

w