Xây dựng môi trường kiểm tra (testbench), mô phỏng chức năng hoạt động của một bộ định tuyến kết nối với IP phát và IP nhận như Hình 3.10. Với IP phát có các tín hiệu O_data, O_send0, O_send1, O_accept0, O_accept1 được nối tương ứng với các tín hiệu lối vào cổng IP của Router là I_data_ip, I_send0_ip, I_send1_ip, I_accept0_ip, I_accept1_ip; các đường tín hiệu lối ra phía Đông của Router là O_data_e, O_send0_e, O_send1_e, O_accept0_e, O_accept1_e được nối tương ứng với các tín hiệu lối vào của IP nhận là I_data, I_send0, I_send1, I_accept0, I_accept1. Mô hình này cho phép ta kiểm tra chức năng hoạt động của một bộ định tuyến riêng rẽ trước khi xây dựng mạng trên chip.
IP nhận (Receiver IP) Testbench IP E Router IP phát (Generator IP)
Hình 3.10: Môi trường kiểm tra, mô phỏng chức năng hoạt động của một bộ định tuyến.
Sau khi biên dịch mã nguồn thiết kế, để đảm bảo thiết kế không bị lỗi ta tiến hành mô phỏng trên công cụ mô phỏng ModelSim của hãng Mentor Graphics. Kết quả mô phỏng chức năng hoạt động của một bộ định tuyến được chỉ ra ở Hình 3.11.
Hình 3.11: Kết quả mô phỏng trên một bộ định tuyến.
Từ Hình 3.11 ta thấy, tại thời điểm 51 ns xung clock thay đổi trạng thái từ „0‟ lên „1‟, các tín hiệu O_accept0 bằng „1‟, O_send0 bằng „1‟, còn O_send1 bằng „0‟ có nghĩa dữ liệu được truyền trên kênh ảo 0. Cũng ở thời điểm này, tại lối ra (O_data) IP
phát bắt đầu có dữ liệu “1000000000000000000000000000000001”, với bit đầu tiên gạch chân (BOP: Begin Of Packet) mang giá trị „1‟, chứng tỏ đây là flit tiêu đề (header flit) của gói tin. Flit này được truyền tới bộ định tuyến (Router) qua cổng IP, tại đây bộ định tuyến căn cứ vào hai bit cuối của trường thông tin định tuyến (path-to-target) xác định hướng đi tiếp theo của gói. Vì hai bit cuối cùng của trường này là “01” nên bộ định tuyến quyết định đưa flit này ra cổng phía Đông đồng thời dịch hai bit này sang phải và thêm hai bit “00” vào đầu trường thông tin định tuyến. Khi đó tại lối ra O_data_e flit tiêu đề có giá trị “1000000000000000000000000000000000” (ở thời điểm 53 ns). Cũng tại thời điểm này, xung clock thay đổi trạng thái từ „0‟ lên „1‟, các tín hiệu I_send0, I_accept0 đều ở mức „1‟ và I_data nhận được flit đầu tiên. Khi flit tiêu đề được truyền đến nơi nhận cũng là lúc kênh truyền từ IP phát qua Router tới IP nhận được thiết lập. Vì sử dụng cơ chế truyền thông Wormhole nên khi kênh truyền được thiết lập thì các flit tiếp theo sẽ lần lượt được truyền trên kênh vừa thiết lập. Thật vậy, tại thời điểm 57 ns khi các tín hiệu O_send0, O_accept0 đều ở mức „1‟ và tại sườn dương của xung clock, IP phát truyền flit thứ hai (flit dữ liệu) trên tín hiệu O_data, qua bộ định tuyến ra lối ra O_data_e (tại thời điểm 59 ns) và truyền tới IP nhận. Quá trình truyền các flit tương tự như trên cho đến flit cuối cùng. Tại thời điểm 93 ns, IP phát truyền flit cuối cùng của gói (trên kênh ảo 0) và tại 95 ns thì IP nhận nhận được flit cuối cùng. Tương tự như vậy đối với truyền dữ liệu trên kênh ảo 1, chỉ khác khi làm việc với kênh ảo 1 thì các tín hiệu bắt tay là O_send1 và O_accept1. Qua đây ta thấy, việc truyền và nhận các flit trong gói tin luôn tuân theo giao thức bắt tay (send-accept). Dữ liêu chỉ được truyền và nhận khi cả tín hiệu send và accept đều ở mức „1‟ và để đảm bảo đồng bộ kết hợp với sườn dương xung clock. Theo giao thức này tại một thời điểm chỉ có một kênh ảo được làm việc.