Nghiên Cứu Phương Pháp Giải Ràng Buộc SMT Để Phát Hiện Lỗi Tràn Số Trong Mô Hình Simulink

Chuyên khảo phân tích Luận văn nghiên cứu phương pháp giải ràng buộc smt và áp dụng để phát hiện lỗi tràn số cho mô hình, đánh giá các khía cạnh quan trọng, đề xuất hướng nghiên

Chuyên ngành

Hệ thống thông tin

Người đăng

Ẩn danh

Thể loại

luận văn thạc sĩ kỹ thuật

2021

69
2
0

Phí lưu trữ

30 Point

Mục lục chi tiết

LỜI CAM ĐOAN

1. CHƯƠNG I: TỔNG QUAN

1.1. Hệ thống nhúng và vấn đề lỗi tràn số

1.2. Hệ thống nhúng

1.3. Vấn đề lỗi tràn số

1.4. Mô hình hệ thống nhúng MATLAB/Simulink

1.5. Lỗi tràn số trên MATLAB/Simulink

1.6. Kiểm chứng mô hình hệ thống dựa trên bộ giải SMT

1.7. Giới thiệu về SAT Solver

1.8. Giới thiệu về SMT Solver

1.9. Chuẩn SMT-LIB

1.10. Bộ giải SMT Z3

1.11. Biến đổi các mô hình hệ thống nhúng thành ràng buộc số

1.12. Phát biểu bài toán

1.13. Kết luận chương

2. CHƯƠNG II: KIỂM CHỨNG LỖI TRÀN SỐ CỦA MÔ HÌNH HỆ THỐNG NHÚNG

2.1. Phân tích các điểm gây lỗi tràn số trong mô hình Matlab/Simulink

2.2. Ràng buộc SMT cho bài toán kiểm chứng lỗi tràn số của mô hình hệ thống nhúng

2.3. Kết luận chương

3. CHƯƠNG III: THỰC NGHIỆM VÀ ĐÁNH GIÁ

3.1. Xây dựng hệ thống phát hiện lỗi tràn số

3.2. Kết quả thực nghiệm

3.3. Các mô hình thực nghiệm

3.4. Kết quả thực nghiệm

3.5. Kết luận chương

TÀI LIỆU THAM KHẢO

Tóm tắt

I. Tổng Quan Về Nghiên Cứu Phát Hiện Lỗi Tràn Số Simulink

Nghiên cứu này tập trung vào việc phát hiện lỗi tràn số trong mô hình Simulink sử dụng phương pháp giải ràng buộc SMT. Hệ thống nhúng ngày càng trở nên quan trọng, và việc đảm bảo tính chính xác của chúng là vô cùng cần thiết. Lỗi tràn số có thể dẫn đến những sai lệch nghiêm trọng trong tính toán, đặc biệt trong các hệ thống nhúng sử dụng kiểu dữ liệu nhỏ. Các phương pháp truyền thống như kiểm thử phần mềm không thể đảm bảo hệ thống hoàn toàn không có lỗi. Do đó, việc áp dụng các phương pháp hình thức như SMT (Satisfiability Modulo Theories) để kiểm chứng tính đúng đắn của hệ thống là một hướng đi đầy tiềm năng. Luận văn này sẽ trình bày chi tiết về cách biến đổi mô hình Simulink thành các ràng buộc SMT và sử dụng công cụ Z3 của Microsoft để phát hiện lỗi tràn số.

1.1. Giới thiệu về hệ thống nhúng và tầm quan trọng

Hệ thống nhúng là các hệ thống tích hợp cả phần cứng và phần mềm, phục vụ các bài toán chuyên dụng trong nhiều lĩnh vực. Chúng có mặt ở khắp mọi nơi, từ thiết bị gia dụng đến các hệ thống điều khiển phức tạp. Do tính chất quan trọng của chúng, độ tin cậytính ổn định là yếu tố then chốt. Việc phát hiện và sửa chữa lỗi trong hệ thống nhúng là vô cùng quan trọng, vì chi phí sửa chữa có thể rất cao, thậm chí không thể sửa chữa được. Do đó, các công cụ hỗ trợ thiết kế và kiểm chứng mô hình hệ thống nhúng ngày càng được quan tâm.

1.2. Vấn đề lỗi tràn số trong mô hình Simulink

Lỗi tràn số xảy ra khi giá trị số vượt quá khả năng biểu diễn của kiểu dữ liệu được sử dụng. Trong Simulink, điều này có thể dẫn đến kết quả tính toán sai lệch nghiêm trọng. Việc phát hiện lỗi tràn số là một thách thức lớn, vì chúng thường xảy ra sau một chuỗi các phép tính phức tạp. Các phương pháp kiểm thử truyền thống khó có thể bao phủ hết tất cả các trường hợp có thể dẫn đến tràn số. Do đó, cần có các phương pháp phân tích tĩnhphân tích động hiệu quả hơn để giải quyết vấn đề này.

II. Phương Pháp Giải Ràng Buộc SMT Cho Phát Hiện Lỗi

Phương pháp giải ràng buộc SMT (Satisfiability Modulo Theories) là một kỹ thuật mạnh mẽ để kiểm chứng tính đúng đắn của hệ thống. SMT solvers như Z3 có thể giải quyết các bài toán phức tạp liên quan đến nhiều lý thuyết khác nhau, bao gồm số học, logic và mảng. Trong ngữ cảnh phát hiện lỗi tràn số trong mô hình Simulink, phương pháp này cho phép chúng ta biểu diễn mô hình và các ràng buộc liên quan đến lỗi tràn số dưới dạng các công thức logic. Sau đó, SMT solver sẽ tìm kiếm một giải pháp thỏa mãn các công thức này, hoặc chứng minh rằng không có giải pháp nào tồn tại, tức là mô hình không có lỗi tràn số.

2.1. Giới thiệu về SMT Satisfiability Modulo Theories

SMT là một mở rộng của bài toán SAT (satisfiability) cho phép sử dụng các lý thuyết khác nhau để mô hình hóa các ràng buộc phức tạp. SMT solvers có thể giải quyết các bài toán liên quan đến số học, logic, mảng và các lý thuyết khác. Điều này làm cho SMT trở thành một công cụ mạnh mẽ để kiểm chứng các hệ thống phần mềm và phần cứng. Công cụ SMT solvers như Z3, CVC4 và Yices được sử dụng rộng rãi trong nghiên cứu và công nghiệp.

2.2. Ứng dụng SMT trong kiểm chứng mô hình Simulink

Trong ngữ cảnh Simulink, SMT có thể được sử dụng để biểu diễn mô hình và các ràng buộc liên quan đến lỗi tràn số dưới dạng các công thức logic. Các khối trong mô hình Simulink có thể được chuyển đổi thành các biểu thức SMT, và các ràng buộc về kiểu dữ liệu và phạm vi giá trị có thể được thêm vào. Sau đó, SMT solver sẽ tìm kiếm một giải pháp thỏa mãn các công thức này, hoặc chứng minh rằng không có giải pháp nào tồn tại. Nếu SMT solver tìm thấy một giải pháp, điều đó có nghĩa là mô hình có lỗi tràn số.

2.3. Ưu nhược điểm của phương pháp SMT

Ưu điểm của phương pháp SMT là khả năng kiểm chứng tính đúng đắn của hệ thống một cách toàn diện. SMT có thể phát hiện lỗi tràn số trong các trường hợp phức tạp mà các phương pháp kiểm thử truyền thống khó có thể bao phủ. Tuy nhiên, nhược điểm của phương pháp SMTđộ phức tạp tính toán cao. Việc giải các công thức SMT có thể tốn nhiều thời gian và tài nguyên, đặc biệt đối với các mô hình lớn và phức tạp. Do đó, cần có các kỹ thuật tối ưu hóa ràng buộccải tiến thuật toán để nâng cao hiệu năng của phương pháp SMT.

III. Chuyển Đổi Mô Hình Simulink Thành Ràng Buộc SMT Để Kiểm Tra

Để áp dụng phương pháp giải ràng buộc SMT cho việc phát hiện lỗi tràn số trong mô hình Simulink, cần phải chuyển đổi mô hình thành các ràng buộc SMT. Quá trình này bao gồm việc biểu diễn các khối trong Simulink dưới dạng các biểu thức logic và các ràng buộc về kiểu dữ liệu và phạm vi giá trị. Việc chuyển đổi này cần được thực hiện một cách chính xác và hiệu quả để đảm bảo tính đúng đắn và hiệu năng của quá trình kiểm chứng.

3.1. Biểu diễn các khối Simulink bằng biểu thức logic

Mỗi khối trong Simulink thực hiện một chức năng cụ thể, chẳng hạn như cộng, trừ, nhân, chia, hoặc so sánh. Các chức năng này có thể được biểu diễn bằng các biểu thức logic tương ứng. Ví dụ, khối cộng có thể được biểu diễn bằng biểu thức output = input1 + input2. Các khối phức tạp hơn có thể được biểu diễn bằng các biểu thức logic phức tạp hơn, sử dụng các toán tử logic như AND, OR, NOT, và XOR.

3.2. Thêm ràng buộc về kiểu dữ liệu và phạm vi giá trị

Mỗi biến trong mô hình Simulink có một kiểu dữ liệu cụ thể, chẳng hạn như int8, int16, int32, hoặc float. Kiểu dữ liệu này xác định phạm vi giá trị mà biến có thể nhận. Các ràng buộc về kiểu dữ liệu và phạm vi giá trị cần được thêm vào các biểu thức logic để đảm bảo rằng các giá trị của các biến nằm trong phạm vi hợp lệ. Ví dụ, nếu một biến có kiểu dữ liệu int8, thì ràng buộc -128 <= variable <= 127 cần được thêm vào.

3.3. Tối ưu hóa quá trình chuyển đổi

Quá trình chuyển đổi mô hình Simulink thành các ràng buộc SMT có thể tốn nhiều thời gian và tài nguyên, đặc biệt đối với các mô hình lớn và phức tạp. Do đó, cần có các kỹ thuật tối ưu hóa để giảm thiểu thời gian và tài nguyên cần thiết. Các kỹ thuật tối ưu hóa có thể bao gồm việc đơn giản hóa các biểu thức logic, loại bỏ các ràng buộc dư thừa, và sử dụng các cấu trúc dữ liệu hiệu quả.

IV. Thực Nghiệm và Đánh Giá Phương Pháp Phát Hiện Lỗi Tràn Số

Để đánh giá hiệu quả của phương pháp giải ràng buộc SMT trong việc phát hiện lỗi tràn số trong mô hình Simulink, cần thực hiện các thực nghiệm trên các mô hình thực tế. Các thực nghiệm này sẽ đánh giá khả năng của phương pháp trong việc phát hiện lỗi tràn số, cũng như thời gian và tài nguyên cần thiết để thực hiện quá trình kiểm chứng. Kết quả của các thực nghiệm sẽ cung cấp thông tin quan trọng để đánh giá tính khả thi và hiệu quả của phương pháp.

4.1. Xây dựng hệ thống phát hiện lỗi tràn số tự động

Để thực hiện các thực nghiệm một cách hiệu quả, cần xây dựng một hệ thống phát hiện lỗi tràn số tự động. Hệ thống này sẽ tự động chuyển đổi mô hình Simulink thành các ràng buộc SMT, gọi SMT solver để giải các ràng buộc, và báo cáo kết quả. Hệ thống này sẽ giúp giảm thiểu thời gian và công sức cần thiết để thực hiện các thực nghiệm.

4.2. Các mô hình thực nghiệm được sử dụng

Các mô hình thực nghiệm cần được lựa chọn một cách cẩn thận để đảm bảo tính đại diện và đa dạng. Các mô hình nên bao gồm các mô hình đơn giản và phức tạp, các mô hình sử dụng các kiểu dữ liệu khác nhau, và các mô hình có các loại lỗi tràn số khác nhau. Việc sử dụng các mô hình đa dạng sẽ giúp đánh giá hiệu quả của phương pháp một cách toàn diện.

4.3. Đánh giá hiệu năng và độ chính xác của phương pháp

Hiệu năng của phương pháp có thể được đánh giá bằng cách đo thời gian và tài nguyên cần thiết để thực hiện quá trình kiểm chứng. Độ chính xác của phương pháp có thể được đánh giá bằng cách so sánh kết quả của phương pháp với kết quả của các phương pháp khác, hoặc với kết quả mong đợi. Việc đánh giá hiệu năng và độ chính xác sẽ giúp xác định tính khả thi và hiệu quả của phương pháp.

V. Kết Luận và Hướng Nghiên Cứu Tiếp Theo Về SMT

Nghiên cứu này đã trình bày một phương pháp sử dụng giải ràng buộc SMT để phát hiện lỗi tràn số trong mô hình Simulink. Phương pháp này có tiềm năng lớn trong việc kiểm chứng tính đúng đắn của các hệ thống nhúng. Tuy nhiên, vẫn còn nhiều hướng nghiên cứu tiếp theo để cải thiện hiệu năng và độ chính xác của phương pháp, cũng như mở rộng phạm vi ứng dụng của phương pháp.

5.1. Tóm tắt kết quả nghiên cứu

Nghiên cứu đã trình bày một phương pháp chuyển đổi mô hình Simulink thành các ràng buộc SMT, và sử dụng SMT solver để phát hiện lỗi tràn số. Các thực nghiệm đã chứng minh tính khả thi và hiệu quả của phương pháp. Tuy nhiên, vẫn còn nhiều thách thức cần được giải quyết để cải thiện hiệu năng và độ chính xác của phương pháp.

5.2. Các thách thức và hướng nghiên cứu tiếp theo

Các thách thức bao gồm độ phức tạp tính toán cao của việc giải các ràng buộc SMT, và việc xử lý các mô hình lớn và phức tạp. Các hướng nghiên cứu tiếp theo có thể bao gồm việc phát triển các kỹ thuật tối ưu hóa ràng buộc, cải tiến thuật toán, và sử dụng các kỹ thuật học máy để dự đoán và ngăn chặn lỗi tràn số.

5.3. Ứng dụng tiềm năng của SMT trong các lĩnh vực khác

SMT có thể được ứng dụng trong nhiều lĩnh vực khác, chẳng hạn như kiểm thử phần mềm, xác minh phần cứng, và an ninh mạng. Việc phát triển các công cụ và kỹ thuật SMT hiệu quả sẽ có tác động lớn đến nhiều lĩnh vực khác nhau.

05/06/2025

Trích đoạn nội dung tài liệu

CHƯƠNG I: TỔNG QUAN 1. Hệ thống nhúng và vấn đề lỗi tràn số 1. Hệ thống nhúng Hệ thống nhúng là một hệ thống được tích hợp cả phần cứng và phần mềm phục vụ cho các bài toán chuyên dụng trong nhiều lĩnh vực công nghiệp, tự động hóa điều khiển, quan trắc và truyền thông. Hệ thống nhúng hiện diện khắp nơi trong thế giới hiện đại, ví dụ như: - Các hệ thống dẫn đường trong không lưu, hệ thống định vị toàn cầu, vệ tinh.

- Các thiết bị gia dụng: tủ lạnh, lò vi sóng, lò nướng,… - Các thiết bị kết nối mạng: router, hub, gateway,… - Các thiết bị văn phòng: máy photocopy, máy fax, máy in, máy scan,… - Các thiết bị y tế: máy thẩm thấu, máy điều hòa nhịp tim,… - Các máy trả lời tự động. - Dây chuyền sản xuất tự động trong công nghiệp, robots. Hình 1: Một số ví dụ điển hình về hệ thống nhúng Hệ thống này đòi hỏi độ ổn định và tự động hóa cao. Do sử dụng cho các nhiệm vụ chuyên biệt và được sản xuất với số lượng lớn nên chúng được thiết kế một cách tối ưu nhằm giảm thiểu kích thước cũng như giá thành sản xuất.

Độ phức tạp là khác nhau theo yêu cầu của công việc mà chúng đảm nhận, hệ thống nhúng có thể rất đơn giản với một vi điều khiển hoặc rất phức tạp với nhiều đơn vị, các thiết bị ngoại vi và mạng lưới được nằm gọn trong một lớp vỏ máy lớn. Các hệ thống nhúng bị giới hạn nhiều hơn về phần cứng và chức năng phần mềm so với máy tính cá nhân. Giới hạn phần cứng có thể bao gồm giới hạn về khả năng xử lý, tiêu thụ điện năng, bộ nhớ, chức năng phần cứng,… Còn giới hạn phần mềm thường liên quan đến việc hỗ trợ ít ứng dụng, ứng dụng bị thu gọn tính năng, không có hệ điều hành hoặc hệ điều hành có nhiều hạn chế. Tuy nhiên, ngày nay, những giới hạn này đã được khắc phục đáng kể bằng các hệ thống nhúng được thiết kế 4 phức tạp và đầy đủ tính năng hơn.

Phần mềm của hệ thống nhúng được lưu trữ trên các bộ nhớ ROM, Flash và được gọi là Firmware. Hệ thống nhúng được thiết kế để thực hiện một chức năng chuyên biệt nào đó. Đây là điểm khác biệt so với các hệ thống máy tính khác như máy tính cá nhân hoặc các siêu máy tính có thể thực hiện nhiều chức năng khác nhau với những phép tính phức tạp, chuyên dụng giúp nâng cao tính dễ sử dụng và tiết kiệm tài nguyên. Nhiều loại thiết bị nhúng có những yêu cầu rất cao về chất lượng, tính ổn định và độ tin cậy.

Lỗi của hệ thống nhúng có thể gây ra tai nạn khủng khiếp: Hệ thống điều khiển máy bay, tên lửa, hệ thống điều khiển động cơ ô tô…Lỗi trên hệ thống nhúng có thể không sửa được (vd: vệ tinh nhân tạo), nếu sửa được thì chi phí cũng rất cao (thu hồi sản phẩm hoặc thiết kế lại toàn bộ…) Vì vậy việc phát triển hệ thống nhúng yêu cầu quy trình kiểm tra - kiểm thử rất cẩn thận. Vấn đề lỗi tràn số Khi sử dụng dữ liệu trên hệ thống nhúng, dữ liệu sẽ được mã hoá về dạng nhị phân (bit). Trong Matlab [7], một biến dạng số khi được khai báo sẽ phải khai báo cùng kiểu dữ liệu, máy tính sẽ cấp cho biến đó một số lượng bit nhất định để lưu trữ, ví dụ : int8 – 8 bit, int16 – 16 bit, … nên giá trị của số mà những biến này biểu diễn được sẽ có giới hạn : [-128, 127] với 8 bit, [-32768, 32767] với 16 bit, … Sử dụng kiểu dữ liệu hợp lý sẽ giúp mô hình tiết kiệm bộ nhớ và tối ưu tốc độ, tuy nhiên việc lựa chọn kiểu dữ liệu đòi hỏi người lập trình có kinh nghiệm, lường được hết trước các khả năng có thể xảy ra, nếu không, khi cố gắng tạo một giá trị số nằm ngoài của phạm vi có thể được biểu diễn bằng một số chữ số nhất định - cao hơn giá trị tối đa hoặc thấp hơn giá trị nhỏ nhất có thể biểu diễn, hiện tượng tràn số sẽ xảy ra. Hậu quả phổ biến nhất của tràn là các chữ số có nghĩa nhỏ nhất có thể biểu diễn của kết quả được lưu trữ; kết quả được cho là bao quanh mức tối đa (tức là modulo một lũy thừa của cơ số , thường là hai trong các máy tính hiện đại, nhưng đôi khi là mười hoặc một cơ số khác).

Vấn đề này ảnh hưởng đến độ tin cậy và bảo mật của mô hình. Vì vậy việc kiểm soát để hệ thống không bị tràn số là quan trọng, đặc biệt trong các hệ thống nhúng thường cần dùng các kiểu dữ liệu với khả năng biểu diễn giá trị nhỏ (8 bit, 16 bit). Tuy nhiên, lỗi tràn số thường khó có thể phát hiện. Lý do là lỗi tràn số thường xảy ra sau một chuỗi các tính toán số học trong quá trình hệ thống thực hiện, chứ không phải chỉ xảy ra ngay từ input đầu vào.

Việc kiểm tra để phát hiện lỗi tràn số cũng gặp thách thức lớn vì phải nghĩ ra tất cả các trường hợp có thể dẫn tới tràn số. Mô hình hệ thống nhúng MATLAB/Simulink Matlab (Matrix Laboratory) là một phần mềm khoa học được thiết kế để cung cấp việc tính toán số và hiển thị đồ họa bằng ngôn ngữ lập trình cấp cao. Matlab cung cấp các tính năng tương tác tuyệt vời cho phép người sử dụng thao tác dữ liệu linh 5 hoạt dưới dạng mảng ma trận để tính toán và quan sát. Các dữ liệu vào của Matlab có thể được nhập từ "Command line" hoặc từ "mfiles", trong đó tập lệnh được cho trước bởi Matlab.

Matlab cung cấp cho người dùng các toolbox tiêu chuẩn tùy chọn. Người dùng cũng có thể tạo ra các hộp công cụ riêng của mình gồm các "mfiles" được viết cho các ứng dụng cụ thể. Người dùng có thể sử dụng các tập tin trợ giúp của Matlab cho các chức năng và các lệnh liên quan với các toolbox có sẵn (dùng lệnh help). Ví dụ: Command Window: >> help plot Màn hình tiêu chuẩn sau khi khởi động Matlab: Hình 2: Màn hình tiêu chuẩn sau khi khởi động MATLAB Simulink [11] là một công cụ trong Matlab dùng để mô hình, mô phỏng và phân tích các hệ thống động với môi trường giao diện sử dụng bằng đồ họa.

Việc xây dựng mô hình được đơn giản hóa bằng các hoạt động nhấp chuột và kéo thả. Simulink bao gồm một bộ thư viện khối với các hộp công cụ toàn diện cho cả việc phân tích tuyến tính và phi tuyến. Simulink là một phần quan trọng của Matlab và có thể dễ dàng chuyển đổi qua lại trong quá trình phân tích, và vì vậy người dùng có thể tận dụng được ưu thế của cả hai môi trường. Để khởi động Simulink, click vào biểu tượng Simulink trên thanh công cụ hoặc sử dụng lệnh simulink trong Command Window: 6 Hình 3: Khởi động Simulink Giao diện khởi động của Simulink: Hình 4: Giao diện khởi động của Simulink Mô hình Simulink [2] bao gồm hai yếu tố chính: khối (block) và đường (line).

Khối là các đơn vị chức năng, được sử dụng để tạo, điều khiển và xuất tín hiệu. Các khối được kết nối bằng các đường cung cấp cơ chế truyền tín hiệu qua kết nối. Một khối có thể là một khối cha chứa các khối con khác, mỗi khối mô hình hóa một hệ 7 thống phụ hoặc chức năng phụ. Các khối được lấy từ các thư viện khối có sẵn (bao gồm các hàm chung như các toán tử cộng hoặc logic, nhưng cũng là các miền như logic mờ hoặc truyền thông mạng) và nhận một số tín hiệu đầu vào cụ thể mà từ đó tín hiệu đầu ra được tính toán.

Các mô hình Simulink bao gồm một tập các khối được kết nối bằng các tín hiệu xác định luồng dữ liệu. Nhìn chung, một mô hình Simulink nhận được một số luồng (các giá trị đầu vào vô hạn) bằng cách sử dụng các khối Inport và tạo ra một số luồng đầu ra được đại diện bởi các khối Outport. Simulink đóng một vai trò ngày càng quan trọng trong kỹ thuật hệ thống, và việc xác minh và xác nhận các mô hình Simulink đang trở nên quan trọng đối với người dùng. Phân loại blocks: Block đơn: là các block đơn không có trạng thái con bên trong, thường thay đổi giá trị output khi input thay đổi.

Ví dụ: relational (phép quan hệ), logic (phép logic), arithmetics (phép số học)… Delay block: là các block làm chậm giá trị input 1 khoảng thời gian. Có nhiều block thuộc loại này, ví dụ: UnitDelay, RateTransition,… SFunction: là các block được định nghĩa bởi người dùng thực hiện 1 tính năng/nhiệm vụ nhất định. Sfunction là một subsystem gồm nhiều block con hợp thành, và gồm các inputs và outputs tương ứng. Cách kết hợp blocks: có 2 cách kết hợp các block chính: tuần tự và lặp.

Với cách kết hợp tuần tự, dữ liệu đi từ block này sang block kia nhưng không tạo thành vòng lặp. Với cách kết hợp lặp, tồn tại 1 vòng lặp trong quá trình dữ liệu truyền trong mô hình. Lỗi tràn số trên MATLAB/Simulink Xét một ví dụ đơn giản, mô hình Simulink tính tổng của 2 số: Hình 5: Mô hình Simulink tính tổng hai số 8 Giá trị của Variable 1, Variable 2 và Add đều để kiểu uint8, có giới hạn từ 0- 255, vì vậy khi không xảy ra lỗi tràn số (tổng của hai biến không vượt quá 255) thì kết quả sẽ ra đúng. Tuy nhiên, khi tổng của hai biến vượt quá 255, kết quả không còn chính xác nữa.

Hình 6: Kết quả khi xảy ra tràn số Kết quả chính xác là 310 nhưng mô hình lại đưa ra là 54. Nguyên nhân chính là do tràn số. Khi thực hiện tính toán, Simulink đổi các giá trị input ra nhị phân sau đó tính tổng: 21010 = 101111112, 10010 = 11001002 => 101111112 + 11001002 = 1001101102. 1001101102 = 31010 có tới 9 bit, vượt quá giới hạn lưu trữ của kiểu int8, nên kết quả sẽ bỏ đi bit đầu tiên 00110110 = 54.

Lỗi tràn số trong Matlab/Simulink rất dễ xảy ra nên việc phát hiện vô cùng quan trọng để đảm bảo mô hình hoạt động chính xác. Tuy nhiên Matlab/Simulink lại chưa hỗ trợ tính năng này. Vì vậy luận văn đã sử dụng ràng buộc SMT để giải quyết vấn đề này. Mô hình Matlab/Simulink sẽ được encode thành định dạng SMT sau dó dùng một SMT Solver để kiểm tra SAT/unSAT hay chính là lỗi tràn số của mô hình.

Nội dung được bảo vệ bản quyền — Tải xuống đầy đủ