Bạn đã hoàn thành xong testbench nhưng làm sao bạn có thể chắc chắn rằng testbench đã cover được tất cả chức năng mà bạn mong muốn?
※Functional Coverage và Constrained-random verification luôn đi đôi với nhau. Vì vậy, cần xác định các functional coverage gaps và tạo ra testbench để constraint các input nhắm vào các gaps đó.
1. Sự khác nhau giữa Code Coverage và Functional Coverage
1.1 Code Coverage
Được tạo ra tự động từ code RTL; không do designer chỉ định. Nó xác định cấu trúc trong code RTL chưa được chạy tới trong quá trình simulation.
Đánh giá xem cấu trúc design đã được cover hay chưa (ví dụ như: line, toggle, assign, branch, expression, state và state transition)
1.2 Functional Coverage
Chúng ta đã cover mọi thứ mà design specification yêu cầu hay chưa? Giả sử bạn đã cover 100% code coverage nhưng functional coverage chỉ đạt 50%.
Code Coverage chỉ đảm bảo rằng cấu trúc của RTL đã được cover nhưng chúng ta cần đảm bảo testbench của chúng ta sẽ cover về mặt chức năng của design. Vì vậy, một designer cần nghiên cứu thật tỉ mỉ design spec, và tạo ra các functional coverage matrices sử dụng covergroup, coverpoint, bins,..
Tóm lại, functional coverage:
- Do designer chỉ định. Xác định các feature của design specs yêu cầu để xác định functional coverage
Nhận xét
Đăng nhận xét
Cám ơn bạn đã góp ý về bài viết nhaaa