Chào các bạn, ở bài viết trước chúng ta đã cùng tìm hiểu về Functional Coverage và vì sao 100% Code Coverage vẫn chưa đủ để đảm bảo thiết kế đã được verify đầy đủ. Trong bài viết tuần này, cùng mình và Học Vi Mạch Cùng ICTC sẽ tiếp tục với ví dụ ALU ở bài trước và xem coverage report thực tế để thấy rõ hơn Functional Coverage giúp phát hiện những scenario chưa được test như thế nào.
Sau khi chạy simulation, coverage report thu được như trong hình dưới.
Ở phía Code Coverage của DUT, tất cả các metric đều đạt 100%: statement, branch và toggle. Điều này có nghĩa là các dòng RTL của ALU đã được thực thi trong simulation.
Tuy nhiên khi nhìn sang Functional Coverage, chúng ta thấy vẫn còn một số scenario chưa xảy ra.
Ví dụ với phép SUB (a – b):
Trường hợp a > b đã được test
Nhưng a = b và a < b vẫn chưa xảy ra trong simulation
Tương tự với phép DIV (a / b):
Trường hợp b ≠ 0 đã được test
Nhưng b = 0 chưa từng xuất hiện
Như vậy, dù Code Coverage đã đạt 100%, vẫn còn những trường hợp quan trọng của thiết kế chưa được kiểm tra. Đây chính là lý do DV engineer sử dụng Functional Coverage để theo dõi các scenario quan trọng và phát hiện những trường hợp testbench chưa bao phủ.
Các bạn có thể tham khảo database này trên server của ICTC.
Đường dẫn: /ictc/seminar_data/share_from_huy/coverage
Nhớ đọc file README.txt trong thư mục trên để biết cách mở code coverage và functional coverage.

















