Testbench được thiết kế theo kế hoạch kiểm chứng đã trình bày trong phần 3.2. Về cơ bản thì testbench này là một testbench có nhiều lớp, được xây dựng dựa trên lý thuyết đã trình bày ở phần 1.5, nhưng được tùy biến một số lớp để phù hợp. Hình 3.12 là sơ đồ khối của testbench.
Chức năng của từng khối được trình bày trong Bảng 3.9. SystemVerilog có hỗ trợ kiểu dữ liệu phù hợp cho từng khối, đó là điểm mạnh của ngôn ngữ này.
Bảng 3.11 Chức năng các khối trong testbench
Khối Loại Kiểu dữ liệu
Chức năng
top top module là module cao nhất trong project, bao gồm DUT, interface và test.
img_inv_tst test program Chứa enviroment và cấu hình agent nào trong enviroment sẽ đưa transaction vào DUT thông qua interface.
img_env enviromen t
class Bao gồm 10 agent từ img_agent_0 đến img_agent_9.
từ img_agent_0 đến img_agent_9
agent class Bao gồm generator, driver và scoreboard. Mỗi agent chỉ chứa một loại chữ số. Các mẫu trong img_agent_0 có label là số 0, các mẫu trong img_agent_1 có label là số 1, … Các mẫu trong img_agent_9 có label là số 9. img_generator generator class Tạo ra các transaction
img_drv driver class Biến đổi transaction thành các tín hiệu logic để gán vào các chân input của DUT. img_transaction transaction class Chứa giá trị của các điểm ảnh của ảnh cần
nhận dạng.
img_scoreboard scoreboard class Lấy đầu ra từ DUT để so sánh với giá trị mong muốn.
intf interface interfac e
Nhóm các chân tín hiệu của DUT lại thành một đối tượng để DUT dễ giao tiếp với test.
Về cơ bản thì có thể coi luồng dữ liệu của img_transaction trong testbench đi từ img_generator, qua img_driver đến DUT, rồi cuối cùng đến img_scoreboard. Với mỗi img_transaction sẽ có một label tương ứng. Tại img_scoreboard sẽ so sánh label với đầu ra của DUT, nếu bằng nhau thì tức là nhận dạng đúng, nếu khác nhau thì tức là nhận dạng sai. Tại img_scoreboard cũng tiến hành kiểm tra Đặc tính 5 trong kế hoạch kiểm chứng, đó là: Khi we = 0, tiến hành hoạt động nhận dạng, từ khi nhận dạng xong (done = 1) đến lúc start trở về 0 thì giá trị của digit không được thay đổi.
Trong testbench này không có khối assertion vì yêu cầu kỹ thuật không đề cập đến mối quan hệ về thời gian giữa các tín hiệu trong DUT. Khối functional coverage tuy không có trong testbench nhưng được theo dõi thủ công theo thời gian để biết tiến độ của kiểm chứng.