Một bài viết của anh PD lead tại Học Vi Mạch Cùng ICTC. Đăng giùm hoài riết ai cũng tưởng mình làm PD ![]()
—
Congestion là một khái niệm quan trọng trong ASIC Design nói chung và PD nói riêng. Trong mấy lớp PD mà mình dạy, mình hay ví von congestion giống như tình trạng kẹt xe trên đường phố vậy. Các tuyến đường (routing resource) vốn có hạn, trong khi số lượng xe lưu thông (các kết nối – net connection) lại quá nhiều. Khi đó, việc sắp xếp và phân luồng trở nên khó khăn, khiến toàn bộ hệ thống bị tắc nghẽn.
Giải quyết congestion là một nhiệm vụ đặc biệt quan trọng bởi nếu để tồn tại tình trạng này, nó sẽ ảnh hưởng lớn đến Place & Route. Để tránh vùng có congestion quá cao, EDA tool buộc phải làm dây dẫn dài hơn hoặc vòng vèo hơn, kéo theo độ trễ của tín hiệu tăng lên. Dây dẫn dài và gần nhau cũng làm gia tăng hiện tượng coupling noise, khiến tín hiệu bị nhiễu. Congestion còn buộc tool phải reroute nhiều lần, làm timing violation trở nên nghiêm trọng hơn. Hệ quả là thời gian chạy (run time) tăng lên đáng kể, đôi khi gấp nhiều lần so với một thiết kế có bố cục thoáng và cân bằng.
Nguyên nhân gây ra congestion xuất phát từ nhiều yếu tố. Phổ biến nhất là mật độ cell quá cao tại một số vùng, tạo thành “hot-spot” khiến số lượng kết nối vượt xa khả năng routing. Ngoài ra, sự hiện diện của các macro hoặc block lớn chiếm chỗ và chặn đường đi cũng khiến khó tìm lối đi hợp lý. Những cell có pin access kém (là khả năng mà router có thể reach và kết nối được với các pin của standard cell, macro, hoặc block), ví dụ như bị kẹt sát macro hoặc cạnh của cell phức tạp, cũng làm cho việc kết nối khó khăn hơn. Trong các thiết kế có nhiều I/O hoặc bus dày đặc, mật độ kết nối tăng vọt dẫn tới tắc nghẽn. Một nguyên nhân khác là số lớp kim loại (metal) hạn chế hoặc metal pitch chưa phù hợp, khiến dung lượng đường đi (routing capacity) không đáp ứng được nhu cầu.
Để kiểm tra tình trạng congestion, các kỹ sư thường sử dụng bản đồ heatmap thể hiện sự chênh lệch giữa nhu cầu routing và khả năng cung cấp. Những con số như router overflow count, congestion score, mức overflow tại vùng tệ nhất hay tỷ lệ routing utilization đều phản ánh mức độ chồng chéo. Ngoài ra, khi congestion gia tăng, chỉ số timing như WNS (worst negative slack) thường xấu đi rõ rệt, đây cũng là tín hiệu cho thấy thiết kế đang gặp vấn đề.
Khắc phục congestion đòi hỏi sự kết hợp của nhiều biện pháp. Cách cơ bản nhất là điều chỉnh lại việc placement, phân bố cell hợp lý và di chuyển macro để không gây cản trở. Trong một số trường hợp, có thể bổ sung thêm routing resources, chẳng hạn yêu cầu thêm lớp metal, hoặc tối ưu lại power grid để nhường chỗ cho đường đi, miễn sao vẫn đảm bảo cấp nguồn an toàn cho mạch. Các cell đặt ngay dưới lưới nguồn cũng cần được cân nhắc, vì pin của chúng sẽ khó kết nối hơn. Việc thiết kế floorplan từ đầu theo hướng floorplan-aware với các channel rộng và thông thoáng cũng giúp giảm tắc nghẽn. Ở mức netlist, các kỹ thuật như buffer insertion, clustering hoặc rebuffering có thể giảm bớt tải kết nối. Ngoài ra, routing hoặc placement blockage cũng là công cụ hữu ích để giới hạn số lượng cell hoặc net trong những vùng vốn đã chật chội.
Congestion nếu không được xử lý tốt sẽ là nút thắt lớn trong PD, kéo theo hàng loạt vấn đề về timing, nhiễu và runtime. Ngược lại, một thiết kế ít congestion sẽ giúp flow chạy mượt mà, đảm bảo tính khả thi và chất lượng cuối cùng của chip.
Dưới đây là các bài viết về Physical Design (PD): Chuỗi bài viết về Physical Design

					















