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

99 12 0
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

Đ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

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 TỐ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ơi tận tình thời gian nghiên cứu hồ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 giáo, gia đình, bạn bè, đồng nghiệp giúp đỡ ủng hộ tơi 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 tơi 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 tố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 tố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 tố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 tố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 tố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ụ tốn tử lặp 54 Hình 3.1 Thuật tốn phân tích ngƣợc khả đạt đƣợc trạng thái cho trƣớc 57 Hình 3.2 Thuật tốn phân tích xi 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 tố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 tốn cho tố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 tố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, q 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à cịn 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 tố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 cịn 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 tốn IPC 4.3.3 Xây dựng mơ hình tính tốn IPC Trong mục này, chúng tơi đề xuất thuật tố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 tốn IPC Thuật tố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 tố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 tố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 tốn Bảng 4.2 Triển khai mơ hình tính tố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 tố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 tốn IPC đƣợc tìm thấy cho đầu p có giá trị Do đó, tốn IPC phù hợp với việc ánh xạ vào tốn SAT Thêm vào đó, mơ hình tính tố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 tốn SMT Q trình chuyển đổi mơ hình tính tốn IPC vào tố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 tốn IPC, chúng tơi 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 tố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ế tn 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 Q 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 tố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 tố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 tố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 tốn IPC dựa mơ hình tố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 tố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 ln ln (thiết kế tn 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 tốn IPC dựa vào sử dụng cơng cụ giải tố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 tố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 tố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 q 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 tồ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 tốn học, ngơn ngữ mơ tả mơ hình, cơng cụ giải tố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 tố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 ... thiết kế thuộc tính đƣợc xác minh mức word Một vài công cụ hiệu giải tốn dựa SMT đƣợc tìm thấy [28, 09] Trong luận văn này, em phát triển gói phần mềm kiểm chứng tốn kiểm tra thuộc tính khoảng. .. cầu kỹ thuật 2.80% 2.60% 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 Hình 1.5 mơ tả loại kiểm chứng khác phân bổ công sức kiểm chứng Kiểm chứng hệ thống xác minh chức hệ thống... kiểm chứng thơng qua dự phịng thực tế 1.6 Các phƣơng pháp kiểm chứng có 1.6.1 Quy trình kiểm chứng dùng mơ Phƣơng pháp kiểm chứng đƣợc sử dụng phổ biến kiểm chứng dùng mơ Trong q trình kiểm chứng

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

Tài liệu cùng người dùng

Tài liệu liên quan