Như đã tìm hiểu, SCTL yêu cầu mọi thứ phải hoàn thành trong một chu kỳ. Tuy nhiên, hầu hết các IP hiệu suất cao (ví dụ: các hàm trong palette High Throughput Math, các khối FFT) đều là các hệ thống đa chu kỳ (multi-cycle). Điều này tạo ra một mâu thuẫn cơ bản:
Mâu thuẫn Cần giải quyết
- Một IP đa chu kỳ không thể tạo ra kết quả hợp lệ ở mỗi chu kỳ lặp của SCTL.
- Một khối xử lý downstream không biết khi nào dữ liệu nhận được từ khối upstream là hợp lệ để xử lý.
- Một khối upstream không biết khi nào khối downstream sẵn sàng nhận dữ liệu mới, tránh việc ghi đè dữ liệu chưa được xử lý.
Nếu chỉ đơn giản nối dây dữ liệu giữa các IP này, hệ thống sẽ bị mất dữ liệu, xử lý dữ liệu rác, và cho ra kết quả sai hoàn toàn. Handshaking là giao thức được thiết kế để giải quyết chính xác vấn đề này.