Bài viết tiếp theo của anh PD lead tại Học Vi Mạch Cùng ICTC.
—-
Ở bài viết trước, chúng ta đã tìm hiểu về congestion, nó giống như tình trạng kẹt xe khiến việc routing các tín hiệu phải đi vòng vèo, thì timing violation lại giống như việc các “xe dữ liệu” đến trễ hoặc quá sớm so với tín hiệu clock. Khi điều đó xảy ra, dữ liệu truyền giữa các thanh ghi (flip-flop) bị sai lệch, dẫn tới lỗi chức năng của mạch.
Hiểu một cách đơn giản, timing violation xảy ra khi dữ liệu không ổn định đúng lúc mà flip-flop cần sample data. Nếu dữ liệu đến quá muộn so với cạnh clock, ta có setup violation, còn nếu dữ liệu thay đổi quá sớm sau cạnh clock, đó là hold violation. Khi vấn đề này xảy ra, chúng ta sẽ thấy trong report các setup slack hay hold slack có giá trị âm.
Vì sao timing lại quan trọng đến vậy? Bởi timing quyết định trực tiếp xem chip của bạn có hoạt động đúng ở tần số được yêu cầu (MHz/GHz) hay không. Một thiết kế có congestion lớn, hoặc đường truyền quá dài, có thể khiến tín hiệu đi chậm và dẫn đến setup violation. Ngược lại, nếu clock skew không tốt hoặc đường clock không đồng đều, dữ liệu có thể đến quá sớm, gây hold violation. Kết quả là dù thiết kế vẫn chạy được trong mô phỏng, chip thật có thể lỗi ở tốc độ cao, và không đạt được yêu cầu về performance.
Nguyên nhân gây ra timing violation rất đa dạng:
- Độ trễ dây (wire delay) quá lớn do routing dài hoặc vùng bị congestion.
- Drive strength của cell yếu, không đủ tải net dài hoặc nhiều fanout.
- Clock latency hoặc skew cao, phân phối clock không cân bằng.
- Floorplan chưa hợp lý, khiến các cell liên quan nằm quá xa nhau.
- RTL logic có quá nhiều tầng (logic level) hoặc chưa tối ưu cho tần số định sẵn.
- Standard cell library hoặc constraint chưa phù hợp với target frequency.
Để kiểm tra timing, các kỹ sư dùng công cụ phân tích tĩnh (Static Timing Analysis – STA). Báo cáo STA thể hiện rõ từng path, độ trễ của logic, dây, và clock, các chỉ số quan trọng như WNS (Worst Negative Slack), TNS (Total Negative Slack) hay path slack cho biết mức độ nghiêm trọng của lỗi. Ngoài ra, việc phân tích multi-corner, multi-mode (MCMM) giúp đảm bảo thiết kế hoạt động ổn định trong nhiều điều kiện khác nhau về điện áp, nhiệt độ và chế độ hoạt động.
Khi phát hiện violation, ta có thể áp dụng nhiều biện pháp khắc phục:
- Upsize cell hoặc chèn buffer/repeater để giảm độ trễ.
- Re-route các đường dây bị dài hoặc có RC cao.
- Tối ưu placement để giảm khoảng cách giữa các cell quan trọng.
- Cải thiện clock tree nhằm giảm skew và độ trễ.
- Luôn kiểm tra ở điều kiện xấu nhất (worst corner) và giữ margin hợp lý để giảm rủi ro khi đưa vào fab.
Để so sánh cho dễ hiểu, nếu congestion gây ra kẹt xe, thì timing violation là khi xe đến không đúng giờ (quá sớm hoặc quá muộn). Hai vấn đề này liên quan chặt chẽ: congestion nặng thường kéo theo timing xấu, còn timing không đạt sẽ buộc tool phải thay đổi bố cục, khiến congestion có thể tệ hơn. Vì thế, hiểu và kiểm soát timing không chỉ là đảm bảo tốc độ, mà còn là yếu tố rất quan trọng để toàn bộ thiết kế đạt được target performance, độ tin cậy và khả năng tape-out thành công.
Dưới đây là các bài viết về Physical Design (PD): Chuỗi bài viết về Physical Design
