Nếu thiết kế của bạn chứa một vòng lặp như thế này:
số nguyên i;
cho( i = ... ; ... ; ... ) bắt đầu
a = biểu thức của i ;
nếu( ...... câu lệnh có điều kiện về a ) bắt đầu
Tuyên bố;
......
Cuối
Cuối
Phần mềm Intel® Quartus® Prime Pro Edition có thể tổng hợp một số lượng rất lớn các cấp độ logic trong vòng lặp này.
Nếu một for-loop chứa các điều kiện này thì nó không thể được tối ưu hóa cho độ sâu logic
- Biểu thức gán phụ thuộc vào biến điều khiển vòng lặp
- Một câu lệnh if lồng trong vòng lặp sử dụng kết quả gán làm điều kiện chọn
Câu lệnh gán phụ thuộc vào biến điều khiển vòng lặp nên được di chuyển ra khỏi khối for-loop để cho phép tối ưu hóa hơn nữa. Khi ở bên ngoài vòng lặp, câu lệnh gán có thể được chuyển đổi thành các phép gán song song cho từng bit của vector. Sau đó, kết quả gán của mỗi chu kỳ có thể được lập chỉ mục bởi biến điều khiển vòng lặp trong vectơ mới được tạo này.
Mã có thể được sửa đổi thành:
vector[ N ] = ... ;
......
vector[ 2 ] = ... ;
vector[ 1 ] = ... ;
số nguyên i ;
cho( i = ... ; ... ; ... ) bắt đầu
nếu( ...... Câu lệnh có điều kiện về vector[i]) bắt đầu
Tuyên bố;
......
Cuối
Cuối
Việc tối ưu hóa phù hợp cho các trường hợp số chu kỳ được cố định và không lớn lắm. Việc tối ưu hóa có thể làm tăng việc sử dụng ALUT trong khi giảm số lượng mức logic.
Phiên bản tương lai của Phần mềm phiên bản Intel® Quartus® Prime Pro được lên lịch để tự động tối ưu hóa mã gốc.