Sức mạnh của SCTL đi kèm với trách nhiệm lớn hơn cho người lập trình. Bạn phải đối mặt với các thách thức ở mức độ gần với phần cứng hơn.
a. Lỗi Vi phạm Thời gian (Timing Violation)
Đây là thách thức phổ biến và khó khăn nhất. Nếu logic bên trong SCTL của bạn quá phức tạp (ví dụ, một chuỗi nhiều phép tính nối tiếp nhau), tổng độ trễ lan truyền tín hiệu có thể vượt quá một chu kỳ xung nhịp. Khi đó, trình biên dịch sẽ báo lỗi “timing violation”. Việc giải quyết lỗi này đòi hỏi phải tái cấu trúc lại mã, thường là bằng kỹ thuật Pipelining (sẽ được học kỹ trong Phần 2).
b. Giới hạn về các Hàm và Cấu trúc được Hỗ trợ
Như đã đề cập, không phải mọi hàm LabVIEW đều có thể chạy trong một chu kỳ. Các cấu trúc lặp (For/While Loop), các hàm chờ, và các phép toán đa chu kỳ (chia, căn bậc hai) đều bị cấm. Điều này buộc bạn phải thay đổi tư duy lập trình: thay vì dùng vòng lặp để xử lý một mảng, bạn phải xử lý từng phần tử của mảng qua mỗi lần lặp của SCTL, hoặc song song hóa việc xử lý.
c. Thách thức khi Truyền dữ liệu giữa các Miền Xung nhịp (Clock Domain Crossing)
Một thiết kế có thể có nhiều SCTL chạy ở các tần số khác nhau. Việc truyền dữ liệu an toàn giữa hai SCTL có xung nhịp không đồng bộ là một vấn đề phức tạp. Nếu chỉ dùng một biến (variable) thông thường, bạn có thể bị mất dữ liệu hoặc đọc trùng dữ liệu. Điều này đòi hỏi phải sử dụng các cơ chế truyền dữ liệu an toàn như FIFO, vốn có các logic đồng bộ hóa tích hợp sẵn.