
Ở bài 1, chúng ta đã biết rằng Physical Design (PD) là công đoạn thiết kế trong khâu backend giúp biến thiết kế logic thành bản vẽ vật lý, sẵn sàng để mang đi chế tạo trên silicon. Vậy công đoạn này cụ thể gồm những bước nào? Làm sao để các khối logic, dây nối, và xung clock được sắp xếp và kết nối hợp lý?
Dưới đây là 5 bước chính trong quy trình thiết kế vật lý (Physical Design flow)
1. Floorplanning – Quy hoạch tổng thể
Bước này quyết định vị trí của các khối chức năng lớn (IP blocks, memories, logic regions…) trên chip.
Việc này giống như bạn đang quy hoạch một khu đô thị. Bạn cần xác định đâu là khu chung cư, trường học, công viên, đường lớn… Việc đặt mọi thứ ở vị trí hợp lý sẽ giúp giao thông thuận tiện, giảm tắc nghẽn. Tương tự trên chip, việc bố trí hợp lý sẽ giúp tiết kiệm diện tích, giảm độ dài dây dẫn làm cho tốc độ truyền nhanh hơn, giúp tăng hiệu năng…
2. Placement – Sắp xếp các phần tử logic
Sau khi có quy hoạch tổng thể, bước này sẽ “đặt” từng cổng logic (cells) vào đúng vị trí trên chip sao cho tối ưu diện tích và độ trễ.
Có thể ví dụ công việc này giống như khi bạn sắp xếp bàn ghế trong một phòng. Nếu bàn ghế để hợp lý, mọi người sẽ dễ di chuyển và làm việc hiệu quả hơn. Tương tự, cells được đặt hợp lý sẽ giúp tín hiệu đi ngắn hơn và nhanh hơn.
3. Clock Tree Synthesis (CTS) – Xây dựng mạng lưới xung clock
CTS là bước xây dựng mạng lưới phân phối clock đến tất cả các flip-flop trong thiết kế. Mục tiêu là đảm bảo tín hiệu clock đến đồng thời tại các vị trí khác nhau, nhằm giảm hiện tượng clock skew (sự chênh lệch thời gian giữa các cạnh clock đến các phần tử khác nhau).
Hãy tưởng tượng một nguồn phát âm thanh phát ra tiếng “bíp”, nhưng bạn đứng gần thì nghe ngay, người đứng xa hơn thì nghe trễ một chút do âm thanh phải truyền qua một quãng đường dài hơn. Trong thiết kế chip cũng vậy, nếu một flip-flop nhận clock sớm hơn flip-flop khác do vị trí gần nguồn clock hơn, dữ liệu có thể bị ghi sai hoặc không đúng thời điểm, gây ra lỗi logic và vi phạm timing.
CTS sẽ giúp cân chỉnh lại đường đi của clock, giống như việc đảm bảo mọi người dù đứng xa hay gần đều nghe tiếng “bíp” cùng lúc như ví dụ trên.
4. Routing – Kết nối dây dẫn
Sau khi các phần tử logic và các đường clock đã được đặt vào vị trí, bước routing sẽ thực hiện việc kết nối tất cả các chân tín hiệu theo đúng sơ đồ thiết kế. Đây là bước hoàn thiện mạch vật lý, tạo ra các đường dẫn thực sự cho tín hiệu di chuyển trên chip.
Mình còn nhớ lúc thiết kế mạch PCB khi còn là sinh viên bằng phần mềm layout, phải tỉ mỉ đi từng đường dây sao cho không đè nhau, bo góc đẹp, tối ưu khoảng cách và hạn chế nhiễu… Bước routing trong PD cũng có concept tương tự như vậy, nhưng với quy mô gấp hàng triệu lần với hàng triệu cổng logic và kết nối cần được nối đúng, nhanh và hiệu quả.
Tất nhiên, với số lượng kết nối khổng lồ như vậy, kỹ sư không thể đi dây thủ công, thay vào đó là sử dụng EDA tools để thực hiện tự động. Tuy nhiên, không phải cứ bấm nút là xong. Công cụ có thể đưa ra nhiều phương án đi dây, nhưng kỹ sư thiết kế vật lý sẽ cần can thiệp để cân chỉnh, tối ưu, hướng dẫn tool làm việc để đảm bảo thiết kế đạt được đúng mong muốn và yêu cầu kỹ thuật.
5. Sign-off checks – Kiểm tra cuối cùng trước sản xuất
Đây là bước kiểm tra tổng thể để đảm bảo thiết kế đã sẵn sàng đưa vào chế tạo. Tất cả các yếu tố quan trọng như hình dạng vật lý, thời gian truyền tín hiệu, độ ổn định nguồn điện… đều được kiểm tra kỹ lưỡng bằng nhiều phương pháp khác nhau và công cụ chuyên dụng.
Trên đây là các bước cơ bản trong quy trình thiết kế vật lý (Physical Design – PD). Tụi mình đã cố gắng giải thích vấn đề bằng cách đơn giản nhất có thể vì các khái niệm trong PD tương đối khó hiểu và phức tạp so với các khâu trong thiết kế Front-End như RTL Design hay Design Verification. Chúng ta sẽ tiếp tục tìm hiểu về các khía cạnh khác của công việc khá thử thách nhưng cũng không kém phần thú vị này trong các bài viết tiếp theo nhé.
Dưới đây là các bài viết về Physical Design (PD): Chuỗi bài viết về Physical Design