Tương tự như trên ta xây dựng môi trường kiểm tra, mô phỏng chức năng hoạt động của hai bộ định tuyến kết nối với nhau và kết nối với hai lõi IP phát và IP nhận (testbench) như Hình 3.12. Testbench cũng bao gồm 3 khối chính: Khối thứ nhất và khối thứ 3 (là một lõi IP có thể thực hiện chức năng phát và nhận) là các lõi xử lý đơn giản được xây dựng với mục đích tạo ra các gói dữ liệu để truyền trên mạng và tiêu thụ các gói dữ liệu nếu nhận được. Khối thứ hai là hệ thống cần kiểm tra gồm hai bộ định tuyến (Router00 và Router01), các bộ định tuyến này đã được thực thi tại phòng thí nghiệm SIS với 5 cặp cổng vào/ra. Mô hình này thực hiện truyền liên tiếp hai gói tin (mỗi gói 8 flit, trong đó một flit tiêu đề, một flit kết thúc và sáu flit dữ liệu), một gói trên kênh ảo 0 còn một gói trên kênh ảo 1.
Testbench IP nhận E Mạch kiểm tra IP E
Lõi IP00 Lõi IP01
IP phát E Router00 IP nhận Router01 IP phát
Hình 3.12: Môi trường kiểm tra, mô phỏng chức năng hoạt động của hai router. Hình 3.12 mô tả hai trường hợp truyền dữ liệu từ IP phát tới IP nhận thông qua hai bộ định tuyến. Trường hợp thứ nhất, dữ liệu được truyền từ lõi IP00 qua Router00 và Router01 tới lõi IP01, khi đó lõi IP00 thực hiện chức năng của IP phát, còn lõi IP01 thực hiện chức năng của IP nhận. Trường hợp thứ hai, dữ liệu được truyền từ lõi IP01 qua router01 và router00 tới lõi IP00, khi đó lõi IP00 thực hiện chức năng của IP nhận, còn lõi IP01 thực hiện chức năng của IP phát.
Sau khi biên dịch mã nguồn thiết kế, đảm bảo thiết kế không có lỗi ta tiến hành mô phỏng chương trình. Bằng việc sử dụng chương trình ModelSim ta thu được kết quả của quá trình truyền dữ liệu trong hai trường hợp như chỉ ra trong Hình 3.13 và Hình 3.14.
Hình 3.13 là kết quả mô phỏng trường hợp thứ nhất (đường truyền dữ liệu được thiết lập từ IP00→Router00→Router01→IP01). Với các tín hiệu O_data, O_send0, O_send1, O_accept0, O_accept1 là các tín hiệu ra của IP phát; O_data_e_00, O_send0_e_00, O_send1_e_00, O_accept0_e_00, O_accept1_e_00 là các tín hiệu ra phía Đông của Router00; O_data_ip01, O_send0_ip01, O_send1_ip01, O_accept0_ ip01, O_accept1_ip01 là các tín hiệu cổng lối ra Router01; I_data, I_send0, I_send1, I_accept0, I_accept1 là các tín hiệu cổng vào IP nhận.
Hình 3.13: Kết quả mô phỏng quá trình truyền dữ liệu từ IP00 đến IP01.
Tương tự như truyền dữ liệu trên một bộ định tuyến, tại đây việc truyền nhận dữ liệu thông qua hai bộ định tuyến vẫn tuân theo giao thức truyền thông bắt tay. Và để thuận tiện trong quan sát các số liệu mô phỏng, ta đưa các dữ liệu dạng nhị phân về dạng mã hexa, thay vì hiển thị một flit 34 bit thì giờ đây hiển thị bằng 9 bit. Thực vậy, ở thời điểm 51 ns khi cả hai tín hiệu O_send0 và O_accept0 đều ở mức „1‟ và tại sườn dương xung clock thì IP phát bắt đầu truyền dữ liệu ra kênh (kênh ảo 0), khi đó trên tín hiệu O_data có giá trị “20000000D” (tương đương với 34 bit nhị phân “100000000000000000000000000000001101”), với giá trị quan sát được ta thấy đây là flit tiêu đề của gói (vì bit đầu tiên của nó mang giá trị là „1‟), flit này được truyền đến bộ định tuyến Router00, vì hai bit cuối của trường thông tin định tuyến là “01” nên bộ định tuyến chuyển flit này ra cổng phía Đông, tại đây (thời điểm 53 ns) hai bit đó được dịch sang phải và thêm vào đầu trường định tuyến là hai bit “00” nên trên tín hiệu O_data_e_00 lúc này có giá trị “200000003”. Flit này lại tiếp tục được truyền trên kênh tới Router01, khi nhận được flit này Router01 thực hiện kiểm tra hai bit cuối của trường thông tin định tuyến và dịch phải sau đó lại thêm hai bit “00” vào đầu trường rồi xác định đích đến của gói. Tại thời điểm 55 ns, IP nhận nhận được flit đầu tiên có giá trị “200000000” và hoàn tất thủ tục thiết lập kênh truyền. Đồng thời quá trình thiết
lập kênh là thực hiện truyền lần lượt các flit dữ liệu, các flit dữ liệu được truyền khi kênh truyền thỏa mãn các điều kiện O_accept0, O_send0 bằng „1‟ và tại sườn dương của xung clock. Quá trình truyền và nhận các flit được diễn ra tương tự cho đến thời điểm 93 ns, IP phát truyền flit dữ liệu có giá trị “1FFFFFFFF” (tương ứng với “0111111111111111111111111111111111”) tới Router00 báo hiệu đây là flit cuối cùng của gói (vì bit thứ 2 (End-of-Packet) từ trái sang có giá trị bằng „1‟). Ở thời điểm 95 ns flit này được đưa tới O_data_e_00 và truyền tới Router01, sau khi qua Router01 nó được truyền đến nơi nhận (IP nhận). Và tại thời điểm 103 ns, O_send0 bằng „0‟, O_send1 và O_accept1 bằng „1‟ nên dữ liệu được truyền trên kênh ảo 1. Quá trình truyền dữ liệu trên kênh ảo 1 hoàn toàn tương tự như trên kênh ảo 0.
Hình 3.14: Kết quả mô phỏng quá trình truyền dữ liệu từ IP01 đến IP00.
Kết quả mô phỏng trường hợp thứ hai được chỉ ra trên Hình 3.14. Ở trường hợp này dữ liệu được truyền từ IP01→Router01→Router00→IP00. Khi đó ta chỉ cần thay đường dẫn (đường định tuyến) theo hướng đi đã được lựa chọn, trường định tuyến của trường hợp này là “0000000000000111”. Quá trình truyền dữ liệu cũng hoàn toàn giống so với trường hợp thứ nhất.
Với các tín hiệu O_data, O_send0, O_send1, O_accept0, O_accept1 là các tín hiệu ra của IP phát; O_data_w_01, O_send0_w_01, O_send1_w_01, O_accept0_w_01, O_accept1_w_01 là các tín hiệu ra phía Tây của Router01; O_data_ip00, O_send0_ip00, O_send1_ip00, O_accept0_ip00, O_accept1_ip00 là các tín hiệu ra IP của Router00; I_data, I_send0, I_send1, I_accept0, I_accept1 là các tín hiệu vào của IP nhận.
Trong cả hai trường hợp trên, việc truyền và nhận dữ liệu đều tuân theo giao thức truyền thông bắt tay với giao thức này tại một thời điểm chỉ có một kênh làm việc. Và với giả thiết trên kênh truyền không có tắc nghẽn nên dữ liệu được truyền trên hai đường là hoàn toàn như nhau đều mất một khoảng thời gian là 46 ns.