Luận văn lựa chọn 3 mô hình để thực nghiệm phát hiện lỗi tràn số. Các mô hình được encode thành định dạng SMT sau dó dùng hệ thống đã xây dựng để phát hiện lỗi tràn số của mô hình. Các mô hình được lựa chọn bao gồm:
Mô hình Counter_harness
Hình 15: Mô hình Counter_harness
Mô hình có thể xảy ra overflow do block Sum1, nhận input là 2 số và cho ra output là tổng của chúng. Mô hình được mã hoá thành định dạng SMT như phụ lục A.
Mô hình ControlSpeed_harness
Hình 16: Mô hình ControlSpeed_harness
Mô hình có thể xảy ra overflow do các block:
Sum1 và Sum3: nhận input là 2 số và cho ra output là hiệu của chúng.
Sum2: nhận input là 2 số và cho ra output là tổng của chúng.
Gain1, Gain2 và Gain3: nhận input là 1 số và cho ra output là tích của
input và tham số trong block.
29
Mô hình SpeedCals_harness
Hình 17: Mô hình SpeedCals_harness
Mô hình có thể xảy ra overflow do các block:
Subtract1: nhận input là 2 số và cho ra output là hiệu của chúng.
Subtract2: nhận input là 2 số và cho ra output là tổng của chúng.
Divide: nhận input là 2 số và cho ra thương của chúng.
Gain1, Gain2 và Gain3: nhận input là 1 số và cho ra output là tích của
input và tham số trong block.
Mô hình được mã hoá thành định dạng SMT như phụ lục C.
3.2.2. Kết quả thực nghiệm
Bảng 6: Kết quả thực nghiệm
Tên mô hình Kiểu dữ
liệu
Kết quả
[-10, 10] [-100, 100] [-256, 255]
Counter_harness Int8 Không tràn số Không tràn số Có tràn số
ControlSpeed_harness Int16 Có tràn số Có tràn số Có tràn số
SpeedCals_harness Int8 Có tràn số Có tràn số Có tràn số
Bảng 6 là kết quả thực nghiệm của hệ thống phát hiện lỗi tràn số cho 3 mô hình Counter_harness, ControlSpeed_harness, SpeedCals_harness với kiểu dữ liệu int8 (có giá trị từ -256 đến 255) và int16 (có giá trị từ 32768 đến – 32767) tương ứng với giá trị của các block trong Matlab. Thực nghiệm thực hiện với 3 khoảng giả trị đầu vào [-10, 10], [-100, 100] và [-256, 255]. Kết quả thực nghiệm cho thấy hệ thống có thể phát hiện thành công lỗi tràn số cho các mô hình do sử dụng các block tính toán. Ví dụ về test case gây tràn số trong khoảng giá trị đầu vào [-256, 255] của mô hình Counter_harness được trình bày trong Bảng 7, trong đó v_sum1_9 =256 nằm ngoài khoảng giá trị [-256,255], tương ứng với block sum1 bị tràn số.
30
Bảng 7: Ví dụ test case gây tràn số
Block Name Value Block Name Value Block Name Value Block Name Value
v_delay_0 247 v_int1_0 False v_mulps_0 248 v_sum1_0 248
v_delay_1 248 v_int1_1 False v_mulps_1 249 v_sum1_1 249
v_delay_2 249 v_int1_2 False v_mulps_2 250 v_sum1_2 250
v_delay_3 250 v_int1_3 False v_mulps_3 251 v_sum1_3 251
v_delay_4 251 v_int1_4 False v_mulps_4 252 v_sum1_4 252
v_delay_5 252 v_int1_5 False v_mulps_5 253 v_sum1_5 253
v_delay_6 253 v_int1_6 False v_mulps_6 254 v_sum1_6 254
v_delay_7 254 v_int1_7 False v_mulps_7 255 v_sum1_7 255
v_delay_8 255 v_int1_8 True v_mulps_8 0 v_sum1_8 256
v_delay_9 0 v_int1_9 False v_mulps_9 1 v_sum1_9 1
3.3. Kết luận chương
Trong Chương III, luận văn đã trình bày một hệ thống phát hiện lỗi tràn số đơn giản cho các mô hình hệ thống nhúng Simulink. Bên cạnh đó, kết quả thực nghiệm trên 3 mô hình hệ thống nhúng đã chứng tỏ hệ thống được xây dựng có thể phát hiện lỗi tràn số cho các mô hình hệ thống nhúng.
31
KẾT LUẬN Luận văn đã đạt được một số kết quả sau:
Giới thiệu về hệ thống nhúng và bài toán phát hiện lỗi tràn số.
Trình bày tầm quan trọng của bài toán phát hiện lỗi tràn số.
Giới thiệu về SMT và SMT Solver đồng thời ứng dụng trong bài toán
phát hiện lỗi tràn số.
Trình bày về hệ thống nhúng Matlab/Simulink. Đi sâu vào nghiên cứu
ứng dụng công cụ giải ràng buộc SMT Z3 Theorem Prover của Microsoft để giải bài toán phát hiện lỗi tràn số trên các mô hình Matlab/Simulink.
Trình bày quá trình thực nghiệm với các mô hình Matlab/Simulink từ
đơn giản đến phức tạp, đưa ra các kết quả và đánh giá.
Xây dựng thành công hệ thống phát hiện lỗi tràn số cho các mô hình
Matlab/Simulink.
Hướng phát triển trong tương lai:
Xây dựng mô hình tự động mã hoá mô hình Matlab/Simulink sang định
dạng SMT.
32
TÀI LIỆU THAM KHẢO
[1] Bessa, I.; Abreu, R.; Filho, J. E.; and Cordeiro, L., SMT-based bounded model checking of fixed-point digital controllers. IECON 2014 - 40th Annual Conference of
the IEEE Industrial Electronics Society, 2014, pp. 295-301, doi:
10.1109/IECON.2014.7048514.
[2] Bornebusch, F.; Lüth, C.; Wille, R. and Drechsler, R. (2020). Integer Overflow
Detection in Hardware Designs at the Specification Level. In Proceedings of the 8th International Conference on Model-Driven Engineering and Software
Development - MODELSWARD, ISBN 978-989-758-400-8 ISSN 2184-4348, pages
41-48. DOI: 10.5220/0008960200410048.
[3] Bruno Dutertre and Leonardo de Moura, The YICES SMT Solver.: Computer Science Laboratory, SRI International. 2006.
[4] Clark Barrett, Pascal Fontaine, and Cesare Tinelli, The SMT-LIB Standard: Version 2.6, 2017.
[5] Eldib, H. & Wang, C., An SMT Based Method for Optimizing Arithmetic Computations in Embedded Software Code, IEEE Transactions on Computer-Aided
Design of Integrated Circuits and Systems, 2020, pp. 129-136, doi:
10.1109/FMCAD.2013.6679401.
[6] Holling, D., Pretschner, A. and Gemmar, M., September. 8cage: lightweight fault- based test generation for simulink. In Proceedings of the 29th ACM/IEEE international conference on Automated software engineering, 2014, pp. 859-862, ACM.
[7] Lennon, C.; Iury, B.; Lucas, C.; Daniel, K. and Eddie, L. Verifying digital systems with MATLAB. In Proceedings of the 26th ACM SIGSOFT International Symposium on Software Testing and Analysis (ISSTA 2017). Association for Computing
Machinery, New York, NY, USA, 2017, pp 388–391.
DOI:https://doi.org/10.1145/3092703.3098228.
[8] Matinnejad, R.; Nejati, S.; Briand, L. C. and Bruckmann, T., Test Generation and Test Prioritization for Simulink Models with Dynamic Behavior, in IEEE Transactions on Software Engineering, vol. 45, no. 9, pp. 919-944, 1 Sept. 2019, doi: 10.1109/TSE.2018.2811489.
[9] Matinnejad, R.; Nejati, S.; Briand, L. C. & Bruckmann, T. (2016, May). SimCoTest: A test data generation tool for Simulink/Stateflow controllers. In Proceedings of the 38th International Conference on Software Engineering Companion (pp. 585-588). ACM.
[10] Ren, H.; Bhatt, D. & Hvozdovic, J. Improving an Industrial Test Generation Tool Using SMT Solver. In Procedings of NASA Formal Methods Symposium. 2016, 100- 106. 10.1007/978-3-319-40648-0_8.
[11] MathWorks. Simulink. https://www.mathworks.com/products/simulink.html .
33
PHỤ LỤC