Hôm nay, hãy cùng ICTC – IC Training Center Vietnam tìm hiểu về một chủ đề thú vị trong lĩnh vực Thiết kế số: Tại sao trong synthesis, công cụ lại ưu tiên dùng MUX thay vì dùng tổ hợp các cổng logic đơn lẻ?
Trong Verilog, các cấu trúc điều kiện như if-else
, case
, hay toán tử ? :
đều được các công cụ synthesis như Vivado hay Design Compiler ánh xạ thành multiplexer (MUX). Không phải ngẫu nhiên mà điều này xảy ra, vì MUX mang lại nhiều lợi ích rõ rệt:
Logic sinh ra sạch hơn và nhất quán
Đường truyền tín hiệu ngắn hơn, giúp cải thiện timing
Giảm diện tích và công suất tiêu thụ
Dễ dàng cho các bước tối ưu hóa sau này
Trong khi đó, nếu viết logic bằng cách kết hợp các cổng AND/OR/NOT thủ công, kết quả synthesis có thể khó kiểm soát và kém hiệu quả hơn.
Tức là, nếu bạn viết MUX 2:1 theo ba cách khác nhau như 3 hình dưới đây:
- Cách mô tả hành vi với
case
- Dạng dataflow dùng toán tử
? :
- Dạng gate-level với các cổng logic
Sau khi tổng hợp (synthesize), tất cả đều cho ra cùng một cấu trúc MUX, cho thấy tool đã chọn phần cứng tối ưu cho thiết kế.
Vì vậy, khi viết RTL, đặc biệt là trong các khối điều khiển hay lựa chọn dữ liệu, hãy ưu tiên mô tả theo kiểu MUX hóa thay vì tạo logic rải rác. Điều này sẽ giúp thiết kế dễ hiểu hơn, tối ưu tốt hơn và dễ kiểm soát hơn về timing.
