CHƯƠNG 1 GIỚI THIỆU
1.6. Giới thiệu về kiểm chứng thiết kế
Mục đích của kiểm chứng thiết kế (verification) là đảm bảo thiết bị hồn thiện thành cơng tất cả các nhiệm vụ, tức là thiết kế phải thể hiện đúng yêu cầu kỹ thuật (specification). Một kỹ sư kiểm chứng cần phải đọc yêu cầu kỹ thuật, tạo kế hoạch kiểm chứng (verification plan), và bám vào nó để xây dựng testbench xem code RTL có triển khai đúng các đặc điểm của yêu cầu kỹ thuật khơng. Kế hoạch kiểm chứng có quan hệ chặt chẽ với yêu cầu kỹ thuật và bao gồm mô tả về các đặc điểm nào cần phải kiểm tra và kiểm tra bằng phương thức nào. Testbench có mục đích là xem xét sự đúng đắn của thiết kế trong khi kiểm tra, gọi là DUT (design under test) [7]. Testbench được tạo thành bởi các bước:
- Tạo ra stimulus - Đưa stimus vào DUT - Thu nhận phản hồi từ DUT - Kiểm tra sự đúng đắn
- Đo đạc tiến độ so với các mục tiêu đã đề ra
Trong các bước trên, có một vài bước có thể được testbench tự động tạo ra, một số bước có thể người viết testbench phải tự tùy chỉnh và xem xét.
Testbench có thể được xây dựng theo kiến trúc phân lớp như Hình 1.8.
Trên Hình 1.8 là mơ hình testbench với đủ các lớp. Thực tế một testbench có thể khơng cần phải có đủ các lớp như trên, hoặc có thể có thêm một số lớp khác, điều đó phụ thuộc vào DUT cụ thể như thế nào, chức năng của mỗi lớp trong hình trên được mơ tả ngắn gọn như sau, với chiều mũi tên ám chỉ chiều của luồng dữ liệu [7]:
- Lớp Functional Coverage (bao phủ chức năng) có nhiệm vụ đo đạc tiến độ, tức là đã kiểm chứng được bao nhiêu đặc điểm được liệt kê trong kế hoạch kiểm chứng. Nhưng ngay cả khi độ bao phủ chức năng đạt 100% thì thiết kế vẫn có thể tiềm ẩn lỗi bởi kế hoạch kiểm chứng có thể khơng bao qt được hết các trường hợp phát sinh lỗi, vì vậy cần liên tục cập nhật kế hoạch kiểm chứng mới. Một kế hoạch kiểm chứng chỉ kết thúc khi functional converage đạt 100%. - Lớp Generator tạo ra các stimulus ở cấp độ trừu tượng.
- Lớp Agent biến đổi các stimulus thành các lệnh ít trừu tượng hơn.
- Lớp Driver nhận lệnh từ Agent và biến đổi lệnh thành các tín hiệu logic để gán vào các input của DUT.
- Lớp Monitor thu nhận output của DUT.
- Lớp Checker biến đổi giá trị của output mà monitor thu được thành các giá trị ở mức trừu tượng hơn.
- Lớp Assertion kiểm tra tính hợp lệ về thời gian đối với các giao thức của DUT, xem các tín hiệu trong DUT thay đổi có thỏa mãn quan hệ về thời gian hay không.
- Lớp Scoreboard so sánh đầu ra với giá trị kỳ vọng.
- Lớp Environment là lớp bao gồm Generator, Agent, Driver, Monitor, Assertion, Checker và Scoreboard.
- Lớp Test điều khiển hoạt động của Environment. - Khối DUT là thiết kế đang cần kiểm chứng.