Physical Design từ Zero
Big Picture: từ logic đến layout sản xuất
flowchart LR A["RTL / Verilog"] --> B["Synthesis"] B --> C["Gate-level netlist"] C --> D["Physical Design"] D --> E["Signoff"] E --> F["GDS / OAS"] F --> G["Tapeout"] G --> H["Fabrication"]
Chương Mở Đầu: Kiến Thức Nền Tảng Điện Tử
Luồng cấp bậc: từ vật liệu đến chip
flowchart LR A["Silicon\n(Vật liệu bán dẫn)"] --> B["Transistor\n(Công tắc điện tử)"] B --> C["Logic Gates\n(Cổng logic)"] C --> D["Functional Blocks\n(ALU, Register, Memory)"] D --> E["Netlist\n(Hàng tỷ cổng logic)"] E --> F["Physical Design\n(Layout vật lý)"] F --> G["Chip\n(IC hoàn chỉnh)"] style A fill:#fef3c7,stroke:#d97706 style B fill:#fce7f3,stroke:#db2777 style C fill:#e0e7ff,stroke:#4f46e5 style F fill:#e7f4f1,stroke:#0f766e,stroke-width:2px style G fill:#d1fae5,stroke:#059669
1. Bán dẫn (Semiconductor) — Nền tảng vật liệu
Mọi con chip đều được chế tạo trên nền chất bán dẫn (Semiconductor) — loại vật liệu có tính chất dẫn điện nằm giữa chất dẫn điện (Conductor) và chất cách điện (Insulator).
Đặc tính cốt lõi của chất bán dẫn: khả năng dẫn điện có thể điều khiển được. Bằng cách thay đổi điện trường hoặc pha tạp chất, ta bật/tắt dòng điện theo ý muốn — đây chính là nguyên lý hoạt động của transistor.
Tại sao Silicon?
Silicon (Si) là vật liệu bán dẫn thống trị ngành công nghiệp chip vì ba lý do kỹ thuật then chốt:
| Đặc tính | Ý nghĩa kỹ thuật |
|---|---|
| Bandgap phù hợp (1.12 eV) | Đủ lớn để hoạt động ổn định ở nhiệt độ phòng, đủ nhỏ để dễ điều khiển dẫn điện. |
| Oxide tự nhiên (SiO₂) | Silicon tạo lớp oxide cách điện chất lượng cao — yếu tố quyết định cho cấu trúc MOSFET. Không vật liệu nào khác có oxide tốt tương đương. |
| Trữ lượng dồi dào | Silicon chiết xuất từ cát — nguồn nguyên liệu rẻ, gần như vô tận. |
Pha tạp (Doping) — Điều khiển tính dẫn điện
Silicon nguyên chất dẫn điện rất kém. Để tạo transistor, ta thêm tạp chất có chủ đích — quá trình gọi là pha tạp (Doping):
- Loại N (N-type): thêm nguyên tố nhóm V (Phosphorus, Arsenic) → dư electron tự do → dẫn điện bằng electron (hạt mang điện âm).
- Loại P (P-type): thêm nguyên tố nhóm III (Boron) → tạo lỗ trống (Hole) → dẫn điện bằng lỗ trống (hạt mang điện dương).
Tiếp giáp giữa vùng N và vùng P — gọi là tiếp giáp P-N (PN Junction) — là cấu trúc nền tảng của mọi transistor trong chip.
2. Transistor CMOS — Công tắc điện tử điều khiển bằng điện thế
Transistor là linh kiện cơ bản nhất — hạt nhân cấu thành mọi con chip. Một bộ xử lý hiện đại chứa hàng chục tỷ transistor. Về bản chất, mỗi transistor hoạt động như một công tắc điện tử siêu nhỏ, đóng/mở bằng điện thế (Voltage-controlled switch).
Cấu tạo MOSFET
MOSFET (Metal-Oxide-Semiconductor Field-Effect Transistor) có ba chân chính:
- Gate (G) — Cổng điều khiển: điện thế tại đây quyết định transistor ON hay OFF.
- Source (S) — Nguồn: điểm bắt đầu dòng điện.
- Drain (D) — Máng: điểm kết thúc dòng điện.
Lớp oxide (SiO₂) giữa Gate và kênh dẫn đóng vai trò cách điện, cho phép điều khiển dòng điện hoàn toàn bằng điện trường — không có dòng rò qua Gate.
Hai loại MOSFET: NMOS và PMOS
NMOS — ON khi Gate = HIGH
flowchart TB
G["Gate = 1 (HIGH)"] --> T["NMOS: ON"]
T --> R["Source ↔ Drain: dẫn điện"]
R --> OUT["Kéo output → 0 (VSS)"]
style OUT fill:#fee2e2,stroke:#dc2626
PMOS — ON khi Gate = LOW
flowchart TB
G["Gate = 0 (LOW)"] --> T["PMOS: ON"]
T --> R["Source ↔ Drain: dẫn điện"]
R --> OUT["Kéo output → 1 (VDD)"]
style OUT fill:#d1fae5,stroke:#059669
| NMOS | PMOS | |
|---|---|---|
| ON khi | Gate = HIGH (1) | Gate = LOW (0) |
| Vai trò | Pull-Down Network — kéo output xuống VSS (0V, đất) | Pull-Up Network — kéo output lên VDD (nguồn dương) |
| Truyền tốt | Logic 0 (strong zero) | Logic 1 (strong one) |
CMOS — Tại sao kết hợp cả hai?
CMOS (Complementary Metal-Oxide-Semiconductor) ghép NMOS và PMOS thành cặp bổ sung:
- Khi PMOS ON → NMOS OFF: output được kéo lên VDD (logic 1).
- Khi NMOS ON → PMOS OFF: output được kéo xuống VSS (logic 0).
- Không bao giờ có đường dẫn trực tiếp từ VDD xuống VSS (trừ khoảnh khắc chuyển mạch).
Kết quả: công suất tĩnh (Static Power) gần bằng không. Chip chỉ tiêu thụ năng lượng đáng kể khi chuyển mạch. Đây là lý do CMOS thống trị hoàn toàn công nghệ vi mạch suốt 4 thập kỷ qua.
Ví dụ: CMOS Inverter — mạch CMOS đơn giản nhất
VDD
|
[PMOS] ← Gate = Input
|
Input ──●── Output
|
[NMOS] ← Gate = Input
|
VSS
Input = 0 → PMOS ON, NMOS OFF → Output = 1 (đảo)
Input = 1 → PMOS OFF, NMOS ON → Output = 0 (đảo)
Đây là cổng NOT (Inverter) — cổng logic đơn giản nhất, nền tảng để xây mọi cổng logic phức tạp hơn.
3. Hệ nhị phân & Đại số Boole (Binary & Boolean Algebra)
Trước khi tìm hiểu cổng logic, cần nắm ngôn ngữ mà mọi mạch số sử dụng: hệ nhị phân (Binary) và đại số Boole (Boolean Algebra).
Hệ nhị phân (Binary System)
Máy tính và chip không hiểu chữ hay số thập phân. Chúng chỉ phân biệt được hai trạng thái điện áp: cao (HIGH = 1) và thấp (LOW = 0). Toàn bộ thông tin được biểu diễn bằng tổ hợp các bit (binary digit).
| Khái niệm | Định nghĩa | Ví dụ |
|---|---|---|
| Bit | Đơn vị nhỏ nhất — chỉ có giá trị 0 hoặc 1 | 1 bit = 1 dây tín hiệu |
| Byte | 8 bits | 0110_1010 = 106 thập phân |
| Nibble | 4 bits | 1010 = 10 thập phân = A hex |
| Word | Đơn vị xử lý của CPU (thường 32 hoặc 64 bits) | 32-bit word = 4 bytes |
Hệ thập lục phân (Hexadecimal)
Hexadecimal (Hex, cơ số 16) dùng 16 ký tự: 0-9 và A-F. Mỗi chữ số hex tương ứng chính xác 4 bit, nên hex là cách viết tắt gọn gàng cho binary:
| Hex | Binary | Decimal | Hex | Binary | Decimal | |
|---|---|---|---|---|---|---|
0 | 0000 | 0 | 8 | 1000 | 8 | |
1 | 0001 | 1 | 9 | 1001 | 9 | |
2 | 0010 | 2 | A | 1010 | 10 | |
3 | 0011 | 3 | B | 1011 | 11 | |
4 | 0100 | 4 | C | 1100 | 12 | |
5 | 0101 | 5 | D | 1101 | 13 | |
6 | 0110 | 6 | E | 1110 | 14 | |
7 | 0111 | 7 | F | 1111 | 15 |
Ví dụ chuyển đổi: Địa chỉ bộ nhớ 0x3F = 0011_1111 binary = 63 decimal. Trong PD, địa chỉ, mask data, và giá trị register thường được biểu diễn bằng hex.
Đại số Boole (Boolean Algebra)
Đại số Boole là nền tảng toán học của mạch số. Nó định nghĩa các phép toán logic trên giá trị 0/1:
| Phép toán | Ký hiệu | Ý nghĩa | Truth Table |
|---|---|---|---|
| AND | A · B | Kết quả = 1 chỉ khi cả hai = 1 | 0·0=0 0·1=0 1·0=0 1·1=1 |
| OR | A + B | Kết quả = 1 khi ít nhất một = 1 | 0+0=0 0+1=1 1+0=1 1+1=1 |
| NOT | A′ hoặc Ā | Đảo: 0→1, 1→0 | 0′=1 1′=0 |
De Morgan's Theorem — Quy tắc biến đổi quan trọng nhất
Định lý De Morgan cho phép biến đổi qua lại giữa AND và OR khi kết hợp với NOT:
Định lý 1: (A · B)′ = A′ + B′ "NOT của AND = OR các NOT"
Định lý 2: (A + B)′ = A′ · B′ "NOT của OR = AND các NOT"
(A·B)′ và cổng NOR thực hiện (A+B)′. Nhờ De Morgan, ta có thể biểu diễn mọi hàm logic chỉ bằng NAND (hoặc chỉ bằng NOR). Đây là lý do NAND và NOR được gọi là cổng vạn năng (Universal Gates).
Các luật cơ bản khác
| Luật | AND form | OR form |
|---|---|---|
| Identity | A · 1 = A | A + 0 = A |
| Null | A · 0 = 0 | A + 1 = 1 |
| Complement | A · A′ = 0 | A + A′ = 1 |
| Idempotent | A · A = A | A + A = A |
| Distributive | A·(B+C) = A·B+A·C | A+(B·C) = (A+B)·(A+C) |
Công cụ synthesis trong ASIC flow sử dụng các luật này để tối ưu hóa logic — giảm số cổng, giảm diện tích và power consumption.
4. Cổng Logic (Logic Gates) — Từ công tắc đến xử lý logic số
Bằng cách tổ hợp nhiều transistor CMOS, ta xây dựng được các cổng logic (Logic Gates) — những mạch thực hiện các hàm Boolean (Boolean Functions) cơ bản. Đây là lớp trừu tượng đầu tiên trong thiết kế số: người thiết kế không còn nghĩ về transistor, mà nghĩ về logic 0/1.
Các cổng logic cơ bản
| Cổng | Hàm Boolean | Mô tả | Ghi chú CMOS |
|---|---|---|---|
| NOT | Y = A′ | Đảo tín hiệu: 0→1, 1→0 | 1 PMOS + 1 NMOS (đơn giản nhất) |
| NAND | Y = (A·B)′ | AND rồi đảo | Cổng "native" hiệu quả nhất trong CMOS |
| NOR | Y = (A+B)′ | OR rồi đảo | Cổng native hiệu quả thứ hai |
| AND | Y = A·B | Output = 1 chỉ khi cả hai input = 1 | = NAND + Inverter (tốn thêm transistor) |
| OR | Y = A+B | Output = 1 khi ít nhất một input = 1 | = NOR + Inverter |
| XOR | Y = A⊕B | Output = 1 khi hai input khác nhau | Dùng nhiều trong bộ cộng, CRC |
Từ cổng logic đến hệ thống
Từ các cổng logic cơ bản, ta xây dựng lên các khối chức năng phức tạp hơn theo cấp bậc:
- Multiplexer (MUX): chọn 1 trong N tín hiệu input dựa trên tín hiệu điều khiển.
- Bộ cộng (Adder): cộng hai số nhị phân — nền tảng của phép tính số học.
- Bộ giải mã (Decoder): chuyển N-bit input thành 2ᴺ output lines.
- ALU (Arithmetic Logic Unit): đơn vị xử lý số học và logic — trái tim của CPU.
- Thanh ghi (Register): lưu trữ dữ liệu N-bit — nền tảng của bộ nhớ.
Một bộ vi xử lý hoàn chỉnh là sự tổ hợp có hệ thống của hàng tỷ cổng logic được kết nối theo kiến trúc xác định.
5. Cầu nối đến Physical Design — Bài toán cốt lõi
Quá trình thiết kế số tạo ra một Netlist — bản mô tả chi tiết liệt kê toàn bộ cổng logic và cách chúng kết nối với nhau. Một chip hiện đại có thể chứa hàng chục tỷ cổng logic trong Netlist.
Và đây là bài toán cốt lõi:
Từ Logic đến Silicon: bài toán Physical Design
flowchart LR
subgraph LOGIC["Thế giới Logic (Frontend)"]
A["RTL code\n(Verilog)"] --> B["Synthesis"]
B --> C["Gate-level Netlist\n(Hàng tỷ cổng logic)"]
end
subgraph PHYSICAL["Thế giới Vật lý (Backend = PD)"]
D["Floorplan\n+ Placement"] --> E["Clock Tree\n+ Routing"]
E --> F["Timing Closure\n+ Verification"]
end
C --> D
F --> G["GDS/OAS\n→ Tapeout\n→ Fabrication"]
style PHYSICAL fill:#e7f4f1,stroke:#0f766e,stroke-width:2px
Physical Design (PD) là giai đoạn giải bài toán trên. Nhiệm vụ cụ thể:
- Sắp xếp (Placement): đặt hàng tỷ cell vào vị trí tối ưu trên diện tích silicon.
- Đi dây (Routing): tạo hàng triệu đường dây kim loại kết nối các cell đúng theo Netlist.
- Cấp nguồn (Power Planning): thiết kế mạng lưới VDD/VSS đảm bảo mọi cell nhận đủ điện áp.
- Phân phối clock (Clock Tree Synthesis): đảm bảo tín hiệu clock đến mọi phần tử đồng bộ đúng thời điểm.
- Đóng timing (Timing Closure): xác nhận tín hiệu truyền đủ nhanh để chip hoạt động đúng tần số thiết kế.
- Xác minh sản xuất (Physical Verification): kiểm tra layout tuân thủ mọi quy tắc sản xuất (DRC) và khớp logic gốc (LVS).
Output cuối cùng là file GDS/OAS — bản vẽ layout chi tiết gửi đến nhà máy bán dẫn (Foundry) để in mạch lên wafer silicon.
6. Tài liệu học tập & Công cụ
Dưới đây là lộ trình tài liệu được sắp xếp từ nền tảng đến chuyên sâu. Người mới nên đi theo đúng thứ tự này:
| # | Tài liệu | Vai trò | Khi nào đọc |
|---|---|---|---|
| 1 | "Digital Fundamentals" Thomas L. Floyd |
Nắm vững nền tảng điện tử số: hệ nhị phân, cổng logic, đại số Boole (Boolean Algebra), flip-flop, bộ đếm, và các mạch tổ hợp/tuần tự cơ bản. Đây là cuốn sách "vỡ lòng" được dùng rộng rãi nhất. | Đọc đầu tiên — trước khi học bất kỳ thứ gì khác. |
| 2 | "Digital Design and Computer Architecture" David Harris & Sarah Harris |
Cầu nối giữa lý thuyết và thực hành: hiểu cách ráp nối các cổng logic thành bộ xử lý (Processor), kiến trúc máy tính (Computer Architecture), pipeline, memory hierarchy. Giúp hình dung chip thật hoạt động như thế nào. | Sau khi nắm Digital Fundamentals. |
| 3 | ASIC Worldasic-world.com |
Nguồn tra cứu online miễn phí, kinh điển nhất về thiết kế ASIC: Verilog, SystemVerilog, synthesis, testbench. Dùng như tài liệu tham khảo song song khi bắt đầu viết RTL hoặc tìm hiểu flow thiết kế số. | Dùng song song khi bắt đầu thực hành. |
| 4 | "VLSI Physical Design: From Graph Partitioning to Timing Closure" Andrew B. Kahng et al. |
Sách gối đầu giường chuyên sâu về Physical Design: thuật toán partitioning, floorplanning, placement, routing, timing closure. Trình bày bài toán PD dưới góc nhìn toán học và thuật toán. | Đọc sau khi đã nắm vững kiến thức nền — cuốn này là bước chuyển tiếp chính thức vào thế giới PD chuyên nghiệp. |
Môi trường làm việc & Công cụ
PD engineer làm việc chủ yếu trên Linux (Red Hat/CentOS) qua terminal. Các công cụ EDA (Electronic Design Automation) chạy trên Linux và điều khiển bằng Tcl script:
| Vendor | Tool PD chính | Tool Timing | Tool Signoff |
|---|---|---|---|
| Synopsys | IC Compiler II (ICC2) | PrimeTime (PT) | StarRC (parasitic extraction) |
| Cadence | Innovus | Tempus | Quantus (parasitic extraction) |
| Siemens EDA | — | — | Calibre (DRC/LVS) |
1. Sequential Logic — Flip-Flop & Latch
Combinational logic không đủ để xây computer — cần khả năng lưu trữ trạng thái (bộ nhớ). Đó là vai trò của sequential logic.
Latch vs Flip-Flop
Latch — Level-sensitive
flowchart TB
E["Enable = 1"] --> T["Transparent: D đi qua Q"]
E2["Enable = 0"] --> H["Hold: Q giữ giá trị cũ"]
Flip-Flop — Edge-triggered
flowchart TB
CLK["Clock ↑ rising edge"] --> C["Capture: lấy giá trị D → Q"]
CLK2["Giữa 2 edges"] --> S["Stable: Q không đổi"]
- Latch: transparent khi enable = 1 (data đi thẳng qua). Giữ giá trị khi enable = 0.
- Flip-Flop (FF): chỉ capture data tại cạnh clock (rising edge hoặc falling edge). Giữa 2 cạnh, output không đổi dù input thay đổi.
- Trong PD, D Flip-Flop (DFF) là phổ biến nhất: output Q = input D tại rising edge clock.
Clock Signal
Clock là tín hiệu tuần hoàn tạo nhịp cho toàn bộ chip. Mọi FF trong design hoạt động theo nhịp clock này.
- Period (T): thời gian 1 chu kỳ. Ví dụ: clock 1 GHz → T = 1 ns.
- Frequency (f): f = 1/T. Tần số cao = chip nhanh hơn nhưng khó đạt timing hơn.
- Rising edge: cạnh lên (0→1) — thời điểm FF capture data.
Setup Time & Hold Time
FF không thể capture data "tức thì". Nó cần data ổn định trong một khoảng thời gian xung quanh clock edge:
Setup & Hold — timing window
flowchart LR
subgraph WINDOW["Timing window quanh clock edge"]
S["Setup time\n(data phải ổn định\nTRƯỚC clock edge)"]
EDGE["Clock\nEdge ↑"]
H["Hold time\n(data phải giữ\nSAU clock edge)"]
end
S --> EDGE --> H
- Setup time (Tsetup): data phải ổn định ít nhất Tsetup trước clock edge. Nếu data đến muộn → setup violation → FF lấy sai giá trị.
- Hold time (Thold): data phải giữ ổn định ít nhất Thold sau clock edge. Nếu data đổi quá sớm → hold violation → FF lấy sai giá trị.
Register
Register = nhóm nhiều FF gộp lại, lưu trữ N-bit data cùng lúc. Ví dụ: 32-bit register = 32 D Flip-Flop chia sẻ cùng clock.
2. Từ ý tưởng đến logic — RTL & Synthesis
HDL — Ngôn ngữ mô tả phần cứng
Không ai thiết kế chip bằng cách vẽ từng transistor. Thay vào đó, dùng Hardware Description Language:
- Verilog / SystemVerilog: phổ biến nhất trong industry.
- VHDL: phổ biến ở châu Âu, quốc phòng.
HDL mô tả phần cứng hoạt động thế nào, không phải chương trình chạy tuần tự như software.
RTL — Register Transfer Level
RTL mô tả data chảy giữa các register qua combinational logic:
RTL concept: data flow giữa registers
flowchart LR R1["Register A"] --> COMB["Combinational\nLogic\n(add, shift, mux...)"] COMB --> R2["Register B"] CLK["Clock"] --> R1 CLK --> R2
Ví dụ Verilog đơn giản — 8-bit counter:
module counter (
input wire clk,
input wire rst_n,
output reg [7:0] count
);
always @(posedge clk or negedge rst_n) begin
if (!rst_n)
count <= 8'd0;
else
count <= count + 8'd1;
end
endmodule
Synthesis — Chuyển RTL thành gate-level netlist
Synthesis flow
flowchart LR A["RTL code\n(Verilog)"] --> S["Synthesis Tool\n(Design Compiler / Genus)"] B["Constraints\n(SDC: clock, delay)"] --> S C["Technology Library\n(.lib)"] --> S S --> D["Gate-level Netlist"]
- Input: RTL code + timing constraints (SDC) + technology library (.lib).
- Output: gate-level netlist — danh sách cell (NAND, NOR, FF, MUX...) và cách chúng nối với nhau.
- Tool synthesis tối ưu cho PPA: Performance (tốc độ), Power (công suất), Area (diện tích).
Netlist — "Bản vẽ thi công logic"
Netlist là file text mô tả:
- Tất cả cell instances (tên, loại cell).
- Tất cả connections (net) giữa các cell.
- Chưa có thông tin vật lý (vị trí, dây) — đó là việc của PD.
Frontend vs Backend
| Frontend | Backend (PD) | |
|---|---|---|
| Focus | Logic, chức năng, verification | Layout vật lý, sản xuất |
| Input | Spec, architecture | Gate-level netlist |
| Output | Netlist đã synthesize | GDS/OAS (layout file) |
| Công việc | RTL coding, simulation, synthesis, DFT | Floorplan, placement, CTS, routing, signoff |
3. Standard Cell & Technology Library
Standard cell là đơn vị logic nhỏ nhất đã được thiết kế và verify sẵn cho một technology node.
Standard cell là gì?
- Mỗi cell thực hiện một chức năng logic: inverter, NAND2, NOR3, D flip-flop, MUX, buffer...
- Cell có chiều cao cố định (cell height) để xếp thành hàng (row).
- Chiều rộng thay đổi tùy loại cell.
- Foundry hoặc IP vendor cung cấp library chứa hàng ngàn cell variants.
Standard cell concept
flowchart TB
subgraph LIB["Technology Library"]
INV["INV_X1\nInverter"]
ND2["NAND2_X2\n2-input NAND"]
NR3["NOR3_X1\n3-input NOR"]
DFF["DFFR_X1\nD Flip-Flop\nwith reset"]
BUF["BUF_X4\nBuffer"]
MX2["MUX2_X1\n2:1 MUX"]
end
LIB --> PLACE["Placement\n(xếp vào row trên chip)"]
Drive Strength
Cùng một chức năng logic nhưng có nhiều "sức mạnh" khác nhau:
- X1: nhỏ nhất, yếu nhất, tốn ít area.
- X2, X4, X8...: lớn hơn, drive mạnh hơn, nhanh hơn, nhưng tốn area và power.
PD engineer chọn drive strength phù hợp để đạt timing mà không lãng phí area/power.
Threshold Voltage (Vt) Types
| Loại | Tốc độ | Leakage Power | Khi nào dùng |
|---|---|---|---|
| LVT (Low Vt) | Nhanh nhất | Cao nhất | Timing critical paths |
| SVT (Standard Vt) | Trung bình | Trung bình | Mặc định |
| HVT (High Vt) | Chậm nhất | Thấp nhất | Non-critical paths, tiết kiệm power |
Technology Node
Technology node (28nm, 14nm, 7nm, 5nm, 3nm...) chỉ thế hệ công nghệ sản xuất:
- Node nhỏ hơn → transistor nhỏ hơn → nhiều transistor hơn trên cùng diện tích.
- Node nhỏ hơn → nhanh hơn, tiết kiệm power hơn, nhưng khó thiết kế hơn và đắt hơn.
- Mỗi node có standard cell library riêng (không dùng chung).
Các file quan trọng trong library
| File | Chứa gì | Ai dùng |
|---|---|---|
.lib | Timing arcs, power data, capacitance | Synthesis, STA, PD |
.lef | Kích thước cell, vị trí pin, obstruction | PD tool (placement, routing) |
.gds | Layout chi tiết của cell (polygon level) | Signoff (DRC/LVS merge) |
4. Các khái niệm vật lý cần biết trước khi học PD
PD xử lý layout vật lý, nên cần hiểu một số khái niệm điện-vật lý cơ bản.
Capacitance (C) — Điện dung
- Khả năng tích trữ điện tích. Đơn vị: farad (trong chip dùng fF = 10⁻¹⁵ F).
- Mọi dây kim loại, mọi pin input đều có capacitance.
- Capacitance cao → cần nhiều năng lượng hơn để thay đổi trạng thái → chậm hơn.
Resistance (R) — Điện trở
- Cản trở dòng điện chảy qua. Đơn vị: ohm (Ω).
- Dây kim loại mỏng/dài → resistance cao → tín hiệu yếu hơn.
RC Delay — Tại sao dây dài = chậm
delay ≈ R × C
Dây dài hơn → R tăng, C tăng → delay tăng theo bình phương chiều dài.
Đây là lý do PD cần đặt cell gần nhau và route ngắn nhất có thể.
Transition (Slew)
- Thời gian tín hiệu chuyển từ 0→1 (rise) hoặc 1→0 (fall).
- Transition nhanh = tín hiệu sắc nét, tốt cho timing.
- Transition chậm = tín hiệu "nhão", dễ gây timing violation.
- Dây dài, load lớn → transition chậm → cần insert buffer để cải thiện.
Fanout
- Số lượng input mà 1 output phải drive.
- Fanout cao = tổng capacitance lớn = transition chậm = delay tăng.
- Giải pháp: buffer tree (chia nhỏ fanout).
Parasitic R & C
- Dây kim loại thật không phải "dây lý tưởng". Nó có R và C "ký sinh" (parasitic).
- Trước routing, tool ước lượng parasitic (dùng wireload model hoặc virtual route).
- Sau routing, tool tính chính xác parasitic từ geometry thật → timing chính xác hơn.
Metal Layer — Tầng kim loại
Cấu trúc layer trên chip (cắt ngang)
flowchart TB M10["Metal 10+ (top) — thick, low R\nDùng cho power, clock global"] M10 --> VIA9["Via"] VIA9 --> M5["Metal 5-9 (middle)\nDùng cho signal routing dài"] M5 --> VIA4["Via"] VIA4 --> M1["Metal 1-4 (bottom) — thin, fine pitch\nDùng cho local connections"] M1 --> VIA0["Contact"] VIA0 --> CELL["Transistors / Standard cells"]
- Chip có nhiều tầng kim loại chồng lên nhau (7-15+ layers tùy technology).
- Layer thấp (M1, M2): pitch nhỏ, dense → local routing.
- Layer cao (M8, M9...): dày hơn, R thấp hơn → power/clock/long signal.
Via
- Via = lỗ xuyên kết nối giữa 2 metal layer liền kề.
- Via có resistance → dùng nhiều via sẽ tốn routing resource.
- Via array (nhiều via song song) giảm resistance tại connection.
Quy trình sản xuất chip (Fabrication Overview)
Hiểu quy trình sản xuất giúp hình dung tại sao chip có cấu trúc nhiều lớp, và PD engineer cần tuân thủ những ràng buộc gì.
Từ cát đến chip — quy trình tổng quát
Semiconductor Fabrication — các bước chính
flowchart LR A["Cát (SiO₂)"] --> B["Silicon\ntinh khiết"] B --> C["Ingot\n(thỏi đơn tinh thể)"] C --> D["Wafer\n(đĩa mỏng 300mm)"] D --> E["Fabrication\n(FEOL + BEOL)"] E --> F["Wafer test"] F --> G["Dicing\n(cắt thành die)"] G --> H["Packaging"] H --> I["IC\nhoàn chỉnh"]
FEOL vs BEOL — hai giai đoạn chính
Quá trình fabrication chia thành hai giai đoạn, tương ứng với hai phần chính của chip theo chiều dọc:
FEOL — Front-End-of-Line
flowchart TB
A["Tạo well\n(N-well, P-well)"] --> B["Tạo gate oxide\n(SiO₂ mỏng)"]
B --> C["Tạo gate\n(Polysilicon)"]
C --> D["Ion Implantation\n(doping Source/Drain)"]
D --> E["Transistor\nhoàn chỉnh"]
BEOL — Back-End-of-Line
flowchart TB
A["Contact\n(nối transistor → M1)"] --> B["Metal 1\n(local routing)"]
B --> C["Via 1 → Metal 2"]
C --> D["Metal 2-N\n(signal, clock, power)"]
D --> E["Passivation\n+ Bonding pad"]
| FEOL | BEOL | |
|---|---|---|
| Tạo gì | Transistor (NMOS/PMOS) trên silicon | Dây kim loại kết nối transistor (interconnect) |
| Vị trí | Trên bề mặt silicon substrate | Các lớp kim loại chồng lên trên transistor |
| Quy trình chính | Lithography, etching, doping, oxidation | Deposition, lithography, etching (cho metal) |
| PD liên quan | PD không trực tiếp kiểm soát FEOL — đó là việc của library/foundry | PD trực tiếp quyết định BEOL: placement = đặt cell, routing = vẽ dây metal |
Chip cross-section — nhìn cắt ngang
Cấu trúc chip theo chiều dọc (đơn giản hóa)
flowchart BT SUB["Silicon Substrate\n(nền silicon)"] --> TR["Transistors (FEOL)\nNMOS + PMOS trong well"] TR --> CT["Contacts\n(kết nối transistor → M1)"] CT --> M1["Metal 1 — local routing\n(kết nối trong cell)"] M1 --> V1["Via 1"] V1 --> MID["Metal 2-5 — intermediate\n(signal routing chính)"] MID --> V2["Via"] V2 --> TOP["Metal 6-10+ — thick metal\n(power rails, clock trunk)"] TOP --> PAD["Passivation + Bonding Pads\n(kết nối ra ngoài package)"] style SUB fill:#fef3c7,stroke:#d97706 style TR fill:#fce7f3,stroke:#db2777 style M1 fill:#e0e7ff,stroke:#4f46e5 style MID fill:#e0e7ff,stroke:#4f46e5 style TOP fill:#dbeafe,stroke:#2563eb
PVT & Corner — Tại sao một chip phải chạy đúng trong mọi điều kiện
Trong thực tế, transistor và dây kim loại không hoạt động giống nhau ở mọi điều kiện. Ba yếu tố gây biến thiên:
| Yếu tố | Ký hiệu | Ý nghĩa | Ảnh hưởng |
|---|---|---|---|
| Process | P | Sai lệch trong quá trình sản xuất — mỗi wafer, mỗi die hơi khác nhau | Transistor nhanh hơn hoặc chậm hơn thiết kế |
| Voltage | V | Điện áp cung cấp dao động (VDD ± 10%) | V cao → nhanh hơn, V thấp → chậm hơn |
| Temperature | T | Nhiệt độ hoạt động (−40°C đến 125°C) | Nóng → chậm hơn (ở node thường), lạnh → nhanh hơn |
Ba yếu tố này kết hợp tạo ra các Corner (điều kiện cực đoan) — đại diện cho trường hợp xấu nhất mà chip phải hoạt động đúng:
ss_0p72v_125c). Nếu không hiểu PVT, bạn sẽ không hiểu tại sao cần chạy timing ở nhiều corner, và tại sao setup/hold violation xuất hiện ở corner khác nhau. Chi tiết kỹ thuật sâu hơn sẽ được giải thích ở chương OCV/CRPR.
5. Physical Design là gì?
Physical Design, thường gọi tắt là PD, là giai đoạn biến một thiết kế logic thành layout vật lý để có thể sản xuất chip.
Ở các bước trước PD, design chủ yếu tồn tại dưới dạng logic:
- Có các cổng logic, flip-flop, macro, RAM, IP.
- Có netlist mô tả cell nào nối với cell nào.
- Có constraint timing mô tả clock, input/output delay, timing exception...
Nhiệm vụ của PD là:
- Đặt các cell vào vị trí thật trên chip.
- Tạo hệ thống cấp nguồn.
- Tạo clock tree.
- Đi dây kết nối giữa các cell.
- Đảm bảo timing đạt yêu cầu.
- Đảm bảo layout không vi phạm rule sản xuất.
- Xuất GDS/OAS để đưa sang signoff và tapeout.
Nói đơn giản:
Logic design -> Physical layout -> Manufacturing-ready chip
6. Vị trí của PD trong flow thiết kế chip
Một flow tổng quát:
RTL design
-> Synthesis
-> DFT / Scan insertion
-> Physical Design
-> Signoff
-> GDS/OAS
-> Tapeout
-> Fabrication
Trong đó:
- RTL: mô tả chức năng bằng Verilog/SystemVerilog.
- Synthesis: chuyển RTL thành gate-level netlist.
- DFT: thêm logic phục vụ test chip.
- PD: tạo layout vật lý.
- Signoff: kiểm tra cuối cùng về timing, power, DRC, LVS, EM/IR...
- Tapeout: gửi dữ liệu layout cho foundry sản xuất.
7. Input quan trọng của PD
Input của PD và vai trò từng file
flowchart TB
subgraph I["Input files"]
N["Netlist
logic + connectivity"]
L[".lib
timing + power"]
F["LEF / NDM
physical cell data"]
T["Tech file
layer + design rules"]
S["SDC
timing constraints"]
U["UPF
low power intent"]
R["TLU+
RC parasitic"]
D["Scan DEF
scan chain"]
end
I --> P["PD Tool
ICC2 / Fusion Compiler"]
P --> O["Placed + routed design"]
Để bắt đầu PD, ta cần nhiều loại file.
Netlist
Netlist chứa danh sách cell và kết nối logic giữa chúng.
Ví dụ netlist cho biết:
- FF nào nối với FF nào.
- Logic gate nào nằm giữa.
- Macro nào được instance trong design.
- Net nào là signal, clock, reset...
Trong ICC2 thường đọc bằng:
read_verilog
link_block
Library .lib
File .lib chứa thông tin timing và power của cell.
Nó trả lời các câu hỏi như:
- Cell này delay bao nhiêu?
- Input capacitance bao nhiêu?
- Output transition thế nào?
- Power tiêu thụ bao nhiêu?
- Cell dùng được ở voltage/temperature/process nào?
LEF / NDM
LEF chứa thông tin vật lý của cell:
- Kích thước cell.
- Vị trí pin.
- Layer dùng cho pin.
- Obstruction.
- Site/row information.
Trong ICC2, .lib và .lef thường được đóng gói trong NDM.
Tech file
Tech file mô tả công nghệ sản xuất:
- Các metal layer.
- Via.
- Routing pitch.
- Spacing rule.
- Width rule.
- Manufacturing constraint.
SDC
SDC là file constraint timing.
Nó chứa:
- Clock.
- Generated clock.
- Input delay.
- Output delay.
- False path.
- Multicycle path.
- Timing scenario.
UPF
UPF mô tả low power intent:
- Power domain.
- Power net/ground net.
- Power switch.
- Isolation cell.
- Retention cell.
- Level shifter.
TLU+
TLU+ chứa thông tin RC parasitic để tính net delay.
Vì dây kim loại thật có điện trở và điện dung, nên timing không chỉ phụ thuộc vào cell delay mà còn phụ thuộc vào net delay.
Scan DEF
Scan DEF chứa thông tin scan chain phục vụ DFT. PD dùng thông tin này để placement/routing scan chain tốt hơn.
8. Flow PD căn bản
Flow PD tổng quát
flowchart LR A["Init"] --> B["Floorplan"] B --> C["Powerplan"] C --> D["Placement"] D --> E["CTS"] E --> F["Post CTS"] F --> G["Route"] G --> H["Route Opt"] H --> I["Chip Finish"] I --> J["Signoff"]
Flow chính:
Init
-> Floorplan
-> Powerplan
-> Placement
-> CTS
-> Post CTS
-> Route
-> Route Opt
-> Chip Finish
-> Signoff
Mỗi bước giải quyết một nhóm vấn đề khác nhau.
9. Init / Import Design
Đây là bước đọc toàn bộ input vào tool để khởi tạo design.
Mục tiêu:
- Tạo library làm việc.
- Đọc netlist.
- Link design với library.
- Đọc UPF.
- Đọc constraint.
- Đọc RC tech file.
- Chuẩn bị design cho floorplan.
Ví dụ đọc UPF:
reset_upf
load_upf file_name.upf
commit_upf
connect_pg_net -automatic
Sau Init, design đã có logic và connectivity, nhưng về mặt physical thì cell thường vẫn chồng lên nhau ở gốc tọa độ. Vì vậy cần floorplan.
10. Floorplan
Floorplan tạo nền vật lý
flowchart TB
D["Die"] --> C["Core"]
C --> R["Rows / Tracks"]
C --> P["Ports"]
C --> M["Macros"]
C --> V["Voltage Areas"]
C --> B["Blockages"]
Macro placement checklist
flowchart TB
A["Macro"] --> B["Đúng power domain"]
A --> C["Gần module liên quan"]
A --> D["Pin hướng vào std cell"]
A --> E["Chừa routing/buffer channel"]
A --> F["Tránh port congestion"]
Floorplan là bước tạo hình dáng vật lý ban đầu của block.
Mục tiêu:
- Tạo die/core.
- Đặt port.
- Tạo voltage area.
- Đặt macro.
- Tạo blockage.
- Tạo physical-only cell ban đầu.
Die và core
- Die: toàn bộ vùng chip/block.
- Core: vùng bên trong để đặt standard cell.
Nếu chưa biết core size, có thể ước lượng bằng utilization:
utilization = total_cell_area / core_area
Utilization quá cao sẽ dễ congestion và timing khó. Utilization quá thấp thì tốn area.
Port placement
Port là điểm giao tiếp của block với bên ngoài.
Khi đặt port cần chú ý:
- Port nên gần logic/macro mà nó kết nối nhiều.
- Tránh dồn quá nhiều port vào một vùng gây congestion.
- Chọn layer/width/length phù hợp.
- Có thể dùng blockage để chặn cạnh không muốn đặt port.
Voltage area
Voltage area là vùng vật lý tương ứng với power domain.
- Nếu design chỉ có một power domain, thường chỉ cần
DEFAULT_VA. - Nếu có nhiều power domain, cần tạo thêm VA cho từng domain.
Cell của power domain nào phải được đặt trong VA tương ứng.
Macro placement
Macro là các block lớn như SRAM, ROM, IP...
Nguyên tắc đặt macro:
- Đặt đúng voltage area.
- Macro cùng module hoặc kết nối nhiều nên đặt gần nhau.
- Ưu tiên đặt gần boundary để giảm chia cắt core.
- Pin macro nên hướng vào vùng standard cell.
- Tránh đặt macro quá gần port nếu gây congestion.
- Chừa channel giữa macro để route và insert buffer.
Placement blockage
Placement blockage dùng để giới hạn nơi standard cell được đặt.
Các loại thường gặp:
- Hard blockage: cấm cell đi vào.
- Soft blockage: hạn chế placement trong coarse placement.
- Partial blockage: chỉ cho phép cell density ở một mức nhất định, ví dụ 50%.
Vị trí thường tạo blockage:
- Dọc boundary core.
- Xung quanh macro.
- Trong buffer channel.
- Vùng port congestion.
- Vùng cell density cao.
Routing blockage
Routing blockage dùng để chặn route ở một vùng/layer.
Mục tiêu:
- Tránh route ra vùng không mong muốn.
- Giảm congestion.
- Tránh noise.
- Tránh DRC.
Quality check floorplan
Cần kiểm tra:
- Die/core đã tạo đúng.
- Site row/routing track đã có.
- Port đã được place.
- Macro đã đặt và fixed.
- Voltage area đầy đủ.
- Placement/routing blockage hợp lý.
- Physical cell đã tạo.
11. Powerplan
Power network cơ bản
flowchart TB A["Power source
Bump / IO"] --> B["Power ring"] B --> C["Power stripes"] C --> D["Standard-cell rails"] D --> E["Cells"] C --> F["Macro rings / pins"] F --> G["Macros"] E --> H["IR drop / EM checks"] G --> H
Powerplan là bước tạo mạng cấp nguồn VDD/VSS cho design.
Mục tiêu:
- Tạo power ring/stripe/rail.
- Kết nối macro và standard cell với nguồn.
- Đảm bảo mỗi power domain được cấp nguồn đúng.
- Giảm IR drop.
- Tránh EM.
Các khái niệm chính:
- Power ring: vòng nguồn quanh block hoặc macro.
- Power stripe: dây nguồn chạy dọc/ngang qua core.
- Rail: dây nguồn trong standard cell row.
- Via: kết nối giữa các metal layer.
Powerplan tốt giúp:
- Cell nhận đủ voltage.
- Dòng phân bố đều.
- Giảm rủi ro IR drop.
- Giảm rủi ro EM.
12. Placement / Place Opt
Placement optimization loop
flowchart LR A["Load scenarios"] --> B["Coarse placement"] B --> C["Legalization"] C --> D["DRV fix
transition / cap / fanout"] D --> E["Timing / power / area opt"] E --> F{"Clean enough?"} F -- "No" --> B F -- "Yes" --> G["Ready for CTS"]
Placement là bước đặt standard cell vào core.
Sau floorplan và powerplan, macro đã được đặt, nhưng standard cell vẫn chưa được sắp xếp hợp lý. Placement sẽ đưa cell vào row dựa trên timing, congestion và density.
Timing scenario
Scenario là sự kết hợp giữa:
scenario = mode + corner
Mode:
- Functional mode.
- Test mode.
Corner:
- Process.
- Voltage.
- Temperature.
- RC extraction corner.
Ví dụ:
sspg_0p9v_CWorst125C
Coarse placement
Tool đặt thô cell vào core.
Ở bước này:
- Cell có thể overlap.
- Chưa legal hoàn toàn.
- Tool tập trung giảm wirelength, timing pressure và congestion.
Legalization và optimization
Sau coarse placement, tool sẽ:
- Legalize cell vào site row.
- Fix transition/capacitance/fanout violation.
- Optimize timing.
- Optimize power.
- Kiểm soát area.
Quality check placement
Cần kiểm tra:
- Congestion không quá cao.
- Cell density không quá dày.
- Setup timing với ideal clock không quá tệ.
- Utilization không tăng bất thường.
- Transition violation trong ngưỡng.
- LVT ratio không vượt spec.
13. CTS - Clock Tree Synthesis
Trước CTS: ideal clock
flowchart TB
C["Clock source"] -. "ideal" .-> F1["FF1"]
C -. "ideal" .-> F2["FF2"]
C -. "ideal" .-> F3["FF3"]
Sau CTS: clock tree thật
flowchart TB
C["Clock source"] --> B1["Clock buffer"]
B1 --> B2["Clock buffer"]
B1 --> B3["Clock buffer"]
B2 --> F1["FF1"]
B2 --> F2["FF2"]
B3 --> F3["FF3"]
B3 --> F4["FF4"]
CTS là bước xây dựng clock tree thật.
Trước CTS, clock thường là ideal:
- Clock đến mọi sink gần như cùng lúc trong timing analysis.
- Chưa có buffer/inverter thật trên clock path.
Nhưng trong thực tế, clock source không thể nối trực tiếp đến hàng ngàn FF. Vì vậy cần CTS.
Mục tiêu CTS:
- Thêm clock buffer/inverter.
- Giảm clock latency.
- Cân bằng skew.
- Route clock net với rule tốt hơn.
- Đảm bảo clock đến sink pin ổn định.
Khái niệm
- Clock latency: thời gian clock đi từ source đến sink.
- Clock skew: chênh lệch thời gian clock đến launch FF và capture FF.
- Sink pin: clock pin của FF/latch.
- NDR: non-default routing rule, thường dùng cho clock để tăng width/spacing.
Flow CTS
- Set clock rule.
- Set balance pin/ignore pin.
- Build clock tree.
- Balance skew group.
- Balance clock group.
- Route và optimize clock net.
Quality check CTS
- Max latency hợp lý.
- Skew hợp lý.
- Clock net không short/open.
- NDR được apply đúng.
Một kinh nghiệm estimate:
Nếu clock path khoảng 1000 um thì latency khoảng 1 ns có thể là mức tham khảo.
14. Post CTS
Sau CTS, clock đã propagated, nghĩa là clock có latency và skew thật.
Vì timing thay đổi so với ideal clock, cần Post CTS để fix timing.
Mục tiêu:
- Fix setup.
- Fix hold.
- Optimize power/area.
- Giữ clock tree ổn định.
Các việc thường làm:
- Chuyển clock sang propagated clock.
- Mark clock tree để hạn chế tool phá clock tree.
- Chạy clock optimization sau CTS.
Quality check:
- Setup/hold không quá tệ.
- Utilization không vượt ngưỡng.
- LVT ratio không vượt spec.
15. Route
Routing stages
flowchart LR A["Route settings"] --> B["2nd PG route"] B --> C["Global route
topology + layer"] C --> D["Track assignment
map to tracks"] D --> E["Detail route
real wires + vias"] E --> F["DRC / LVS / antenna fix"]
Route là bước tạo dây kim loại thật cho signal net.
Lưu ý:
- PG net đã xử lý ở powerplan.
- Clock net đã xử lý ở CTS.
- Route chủ yếu xử lý signal net còn lại.
Mục tiêu:
- Nối đúng connectivity.
- Tối ưu wirelength.
- Giảm số via.
- Tránh DRC.
- Tránh short/open.
- Tránh antenna.
Flow route
- Route 2nd PG nếu design có cell cần nguồn phụ.
- Global route:
- Tool xác định hướng đi, layer, topology.
- Chưa tạo shape chi tiết.
- Track assignment:
- Gán wire vào track cụ thể.
- Detail route:
- Tạo route chi tiết.
- Fix DRC/LVS/antenna.
16. Route Opt
Sau route, RC thật của wire được tính chính xác hơn. Timing có thể xấu đi vì:
- Wire dài hơn dự kiến.
- Net bị route vòng.
- Capacitance tăng.
- Resistance tăng.
- Crosstalk xuất hiện.
Route Opt dùng để:
- Fix setup/hold sau route.
- Fix DRC.
- Fix LVS.
- Fix antenna.
- Clean các violation còn lại.
17. Chip Finish
Chip finish là bước hoàn thiện layout trước signoff.
Các việc thường làm:
- Insert filler.
- Insert decap nếu cần.
- Check lại physical-only cell.
- Check timing.
- Check DRC/LVS.
- Check antenna.
- Chuẩn bị output GDS/OAS.
18. Timing căn bản
Timing path cơ bản
flowchart LR
L["Launch FF"] --> C1["Comb logic"]
C1 --> C2["Net delay"]
C2 --> E["Capture FF"]
CLK["Clock"] --> L
CLK --> E
Setup vs Hold intuition
flowchart TB
A["Data at D pin"] --> B{"Arrives too late?"}
B -- "Yes" --> S["Setup violation"]
B -- "No" --> C{"Changes too early?"}
C -- "Yes" --> H["Hold violation"]
C -- "No" --> P["Timing pass"]
Timing là một trong những phần quan trọng nhất của PD.
Một timing path cơ bản:
launch FF -> combinational logic -> capture FF
Clock kích hoạt launch FF để data bắt đầu đi. Sau đó data đi qua logic và phải đến capture FF đúng thời điểm.
Setup time
Setup time là thời gian tối thiểu data phải ổn định tại chân D trước cạnh clock capture.
Nếu data đến quá muộn, sẽ bị setup violation.
Setup slack = required time - arrival time
- Slack dương: pass.
- Slack âm: fail.
Fix setup thường là làm data đến nhanh hơn hoặc cho capture clock đến muộn hơn.
Hold time
Hold time là thời gian tối thiểu data phải giữ ổn định sau cạnh clock capture.
Nếu data đến quá sớm, sẽ bị hold violation.
Hold slack = arrival time - required time
- Slack dương: pass.
- Slack âm: fail.
Fix hold thường là làm data path chậm hơn hoặc điều chỉnh clock skew.
Cell delay
Cell delay phụ thuộc vào:
- Input transition.
- Output load.
- Drive strength.
- Vt type: LVT/SVT/HVT.
- PVT corner.
Net delay
Net delay phụ thuộc vào:
- Resistance của wire.
- Capacitance của wire.
- Input capacitance của cell tải.
- Chiều dài dây.
- Layer route.
Công thức đơn giản:
net_delay = f(Rnet, Cnet + Cpin)
19. Cách fix timing ở mức căn bản
Timing closure decision map
flowchart TB
A{"Timing violation?"}
A -- "Setup" --> S["Data đến muộn"]
S --> S1["Giảm data delay
HVT->LVT / upsize / buffer"]
S --> S2["Điều chỉnh skew
capture muộn hơn / launch sớm hơn"]
A -- "Hold" --> H["Data đến sớm"]
H --> H1["Tăng data delay
insert buffer / LVT->HVT / downsize"]
H --> H2["Điều chỉnh skew
capture sớm hơn / launch muộn hơn"]
S1 --> C["Re-check related paths"]
S2 --> C
H1 --> C
H2 --> C
Fix setup
Setup fail nghĩa là data đến capture FF quá muộn.
Cách fix:
- Giảm data path delay:
- Swap HVT -> LVT.
- Upsize cell.
- Insert buffer để cải thiện transition trên net dài.
- Remove buffer/inverter không cần thiết.
- Restructure logic nếu cần.
- Điều chỉnh clock:
- Làm launch clock đến sớm hơn.
- Làm capture clock đến muộn hơn.
- Dùng useful skew nếu còn margin ở path liên quan.
Cần cẩn thận vì fix setup có thể làm hold xấu đi.
Fix hold
Hold fail nghĩa là data đến capture FF quá sớm.
Cách fix:
- Tăng data path delay:
- Insert buffer/inverter.
- Swap LVT -> HVT.
- Downsize cell.
- Điều chỉnh clock skew:
- Làm launch clock đến muộn hơn.
- Làm capture clock đến sớm hơn.
Cần cẩn thận vì fix hold có thể làm setup xấu đi.
20. Useful Skew
Useful skew là cố tình tạo skew có lợi cho timing.
Bình thường CTS cố cân bằng clock. Nhưng trong timing closure, đôi khi ta muốn clock lệch một chút để giúp một số path pass.
Dùng cho setup
Muốn fix setup:
- Cho capture clock đến muộn hơn, hoặc
- Cho launch clock đến sớm hơn.
Nhưng cần check:
- Hold margin của path hiện tại.
- Setup/hold margin của path trước và path sau.
Dùng cho hold
Muốn fix hold:
- Cho capture clock đến sớm hơn, hoặc
- Cho launch clock đến muộn hơn.
Nhưng cần check:
- Setup margin của path hiện tại.
- Hold margin của path trước và path sau.
Useful skew thường xử lý ở CTS bằng balance point.
21. Physical-only cells
Physical-only cells là các cell không trực tiếp tạo logic function chính, nhưng cần cho layout và reliability.
End cap
Đặt ở đầu/cuối row, cạnh block.
Mục đích:
- Bảo vệ standard cell ở biên.
- Đóng row đúng rule.
Well tap
Kết nối substrate/n-well tới VSS/VDD.
Mục đích:
- Ngăn latch-up.
Latch-up là hiện tượng tạo đường dẫn trở kháng thấp giữa VDD và VSS, gây dòng lớn và có thể làm hỏng chip.
Tie cell
Tie high/tie low tạo logic 1/0 ổn định.
Không nên nối trực tiếp gate transistor vào VDD/VSS ở node nhỏ vì dễ có vấn đề reliability.
Filler
Lấp khoảng trống giữa standard cell.
Mục đích:
- Giữ liên tục n-well.
- Đáp ứng rule spacing.
- Hoàn thiện row.
Spare cell
Cell dự phòng cho ECO.
Nếu cần sửa design ở giai đoạn muộn, có thể tận dụng spare cell thay vì thay đổi layout quá nhiều.
Decap
Decap giống tụ nhỏ giữa VDD và VSS.
Mục đích:
- Cung cấp dòng tức thời.
- Giảm dynamic IR drop.
22. Low Power Design căn bản
Low-power domain interaction
flowchart LR subgraph PD1["Power Domain A
0.8V / switchable"] A1["Logic"] R1["Retention"] end subgraph PD2["Power Domain B
1.0V / always-on"] B1["Logic"] end A1 --> ISO["Isolation"] ISO --> LS["Level shifter"] LS --> B1 AON["Always-On supply"] --> R1 SW["Power switch"] --> PD1
Low power design dùng để giảm power consumption của chip.
Clock gating
Clock gating tắt clock cho vùng không hoạt động.
Vì clock chuyển mạch liên tục, tiết kiệm clock power thường rất hiệu quả.
Cell thường gặp:
- ICG cell.
- AND/OR gate dùng cho clock gating tùy phase.
Power switch
Power switch đóng/ngắt nguồn của một power domain.
Khi domain không hoạt động, có thể tắt nguồn để giảm leakage.
Isolation cell
Khi một domain bị tắt nguồn, output của nó có thể thành X/Hi-Z. Isolation cell chốt output về giá trị an toàn để không ảnh hưởng domain còn hoạt động.
Level shifter
Level shifter chuyển mức điện áp giữa hai voltage domain.
Ví dụ:
0.8 V domain -> 1.0 V domain
Retention cell
Retention cell giữ lại state quan trọng khi domain bị power down, để khi bật lại không mất dữ liệu.
23. Congestion
Nguồn gây congestion và hướng xử lý
flowchart TB A["Congestion"] --> B["Macro quá sát"] A --> C["Port quá dày"] A --> D["Cell density cao"] A --> E["Channel hẹp"] B --> F["Move macro / add channel"] C --> G["Spread ports / partial blockage"] D --> H["Spread cells / reduce utilization"] E --> I["Soft blockage / keepout"]
Congestion là tình trạng thiếu tài nguyên routing hoặc placement trong một vùng.
Dấu hiệu:
- Nhiều net chen nhau qua một channel.
- Port quá dày.
- Macro đặt quá sát.
- Cell density cao.
- Timing path bị route vòng xa.
Cách giảm:
- Chỉnh macro placement.
- Tăng channel giữa macro.
- Thêm soft/partial blockage.
- Giảm utilization.
- Spread cell.
- Điều chỉnh port placement.
- Thêm keepout quanh macro/cell có pin density cao.
24. Crosstalk
Signal integrity map
flowchart LR A["Aggressor net"] -- "coupling capacitance" --> V["Victim net"] V --> G["Glitch"] V --> D["Delay change"] V --> T["Transition worse"] F["Fix"] --> S["Shield"] F --> SP["Increase spacing"] F --> PL["Reduce parallel length"] F --> DR["Stronger victim driver"]
Crosstalk là nhiễu giữa các wire chạy song song.
Net gây nhiễu gọi là aggressor. Net bị ảnh hưởng gọi là victim.
Ảnh hưởng:
- Glitch.
- Delay tăng hoặc giảm.
- Transition xấu hơn.
Cách giảm:
- Tăng spacing.
- Giảm parallel length.
- Shield net quan trọng.
- Route sang layer khác.
- Tăng drive strength cho victim driver.
25. Antenna
Antenna là lỗi xảy ra trong quá trình sản xuất khi dây kim loại dài tích điện và làm hỏng gate transistor.
Cách fix:
- Jump layer.
- Chèn diode.
- Chèn buffer để chia nhỏ wire.
- Route lại để giảm chiều dài metal nối gate.
26. IR Drop
IR Drop intuition
flowchart LR V["VDD source"] --> RP["Power wire resistance Rp"] RP --> C["Cell"] C --> RG["Ground wire resistance Rg"] RG --> G["VSS"] C --> X["If Vcell low:
cell slower + timing risk"] F["Fix"] --> W["Wider stripes"] F --> VIA["More vias"] F --> DE["Decap"] F --> MOVE["Move cells / reduce density"]
IR drop là sụt áp trên mạng nguồn.
Nếu VDD tại cell bị thấp hơn nhiều so với mong muốn:
- Cell chậm hơn.
- Timing xấu hơn.
- Có thể gây functional failure.
Cách giảm:
- Tăng width power stripe.
- Thêm power stripe.
- Thêm via.
- Dùng via array lớn hơn.
- Thêm bump/IO power point.
- Giảm cell density ở vùng drop.
- Thêm decap.
- Giảm số buffer/inverter không cần thiết.
- Swap LVT -> HVT nếu timing cho phép.
27. Electromigration
Electromigration, hay EM, là hiện tượng kim loại bị dịch chuyển do mật độ dòng điện cao.
Hậu quả:
- Kim loại bị mòn gây open.
- Kim loại bị dồn gây short.
Cách giảm:
- Tăng width dây.
- Dùng layer cao hơn.
- Thêm dây song song.
- Làm ngắn dây.
- Giảm drive strength nếu dòng quá lớn.
28. OCV, CRPR và Clock Uncertainty
OCV
OCV là On-Chip Variation.
Trong sản xuất, các cell và wire không thể giống nhau 100%. Vì vậy delay thật có thể nhanh/chậm khác nhau.
Nguồn variation:
- Process.
- Voltage.
- Temperature.
- Độ rộng/độ dày metal.
- Channel length.
- Vth.
Tool dùng timing derate để làm analysis pessimistic hơn.
CRPR
CRPR là Clock Reconvergence Pessimism Removal.
Nếu launch clock và capture clock có một đoạn path chung, không nên tính pessimism quá mức trên đoạn chung đó. CRPR sẽ remove phần pessimism không cần thiết.
Clock uncertainty
Clock uncertainty mô tả độ không chắc chắn của clock.
Trước CTS:
clock uncertainty = skew + jitter + margin
Sau CTS:
clock uncertainty = jitter + margin
Vì sau CTS skew đã được tính thật trong clock tree.
29. Signoff căn bản
Signoff checks
flowchart TB A["Final layout database"] --> B["STA
setup / hold"] A --> C["DRC
manufacturing rules"] A --> D["LVS
layout vs netlist"] A --> E["ERC
electrical rules"] A --> F["EM / IR
power integrity"] A --> G["DFM
manufacturability"] B --> H["Tapeout ready? max checks clean"] C --> H D --> H E --> H F --> H G --> H
Signoff là bước kiểm tra cuối cùng trước khi tapeout.
Các check quan trọng:
STA
Static Timing Analysis.
Kiểm tra setup/hold ở tất cả mode/corner.
DRC
Design Rule Check.
Kiểm tra layout có vi phạm rule sản xuất không:
- Width.
- Spacing.
- Enclosure.
- End-of-line.
- Via rule.
LVS
Layout Versus Schematic.
Kiểm tra layout có đúng với netlist/schematic không.
Các lỗi thường gặp:
- Short.
- Open.
- Missing device.
- Wrong connection.
ERC
Electrical Rule Check.
Kiểm tra lỗi điện:
- Short power.
- Voltage violation.
- Floating net.
- Power domain issue.
EM/IR
Kiểm tra:
- IR drop.
- Electromigration.
DFM
Design For Manufacturability.
Kiểm tra layout có dễ sản xuất, yield tốt hay không.
30. Calibre signoff flow căn bản
Input thường gặp:
- GDS/OAS.
- PG netlist.
- Standard cell/macro GDS.
- Rule deck từ foundry.
Flow cơ bản:
- Merge layout:
- Merge top layout với GDS của standard cell/macro.
- V2LVS:
- Convert netlist sang format dùng cho LVS, thường là SPICE-like netlist.
- DRC:
- Check rule sản xuất.
- LVS:
- Compare layout với schematic/netlist.
- ERC:
- Check lỗi điện.
- DFM:
- Check manufacturability.
31. Một số kinh nghiệm debug cơ bản
Timing xấu sau Route Opt
Nguyên nhân có thể:
- RC thật lớn hơn estimate.
- Net bị route vòng.
- Cell density cao.
- Congestion.
- Margin ban đầu quá thấp.
Cách xử lý:
- Fix data path delay.
- Dùng buffer để cải thiện transition.
- Balance skew/useful skew.
- Nếu không còn margin, có thể cần giảm frequency.
Transition violation qua macro
Nếu output macro drive net quá yếu hoặc net quá dài:
- Add buffer gần output pin macro.
- Dùng boundary buffer gần port/macro.
- Check lại transition và setup.
Nhiều setup path cùng một startpoint
Cách debug:
- Tìm common startpoint.
- Check path trước startpoint có margin không.
- Nếu có thể mượn margin, dùng useful skew ở CTS.
- Cẩn thận kiểm tra hold/setup path liên quan.
32. Người mới nên học PD theo thứ tự nào?
Learning path cho người mới
flowchart LR A["Digital logic"] --> B["PD inputs"] B --> C["Floorplan"] C --> D["Placement"] D --> E["Timing setup/hold"] E --> F["CTS"] F --> G["Route"] G --> H["Timing closure"] H --> I["DRC/LVS"] I --> J["IR/EM + Low Power"] J --> K["Tcl/Python automation"]
Thứ tự học đề xuất:
1. Hiểu flow chip design tổng quát.
2. Học input/output của PD.
3. Học floorplan: die/core, macro, port, blockage.
4. Học placement và congestion.
5. Học timing căn bản: setup, hold, slack, delay.
6. Học CTS: latency, skew, clock tree.
7. Học routing: global/detail route, DRC, antenna.
8. Học timing closure: fix setup/hold.
9. Học physical verification: DRC/LVS/ERC.
10. Học power integrity: IR drop, EM.
11. Học low power: UPF, power domain, isolation, level shifter.
12. Học scripting Tcl/Python để automation.
33. Các kỹ năng cần có trong ngành PD
Kiến thức kỹ thuật
- Digital logic.
- CMOS basic.
- Timing analysis.
- Physical layout.
- Routing/resource concept.
- Power integrity.
- Signal integrity.
- Low power.
- Signoff.
Tool
Các tool thường gặp:
- Synopsys ICC2/Fusion Compiler.
- PrimeTime.
- StarRC.
- Calibre.
- RedHawk/Voltus.
- DFT tools như Tetramax, DFT Compiler, Mentor DFT.
Scripting
Rất quan trọng trong PD.
Nên học:
- Tcl.
- Shell.
- Python.
- Regex.
- Report parsing.
- Automation flow.
34. Tóm tắt cực ngắn
Physical Design là ngành biến netlist logic thành layout vật lý để sản xuất chip.
Người làm PD cần biết:
- Đọc input design.
- Tạo floorplan.
- Tạo power network.
- Đặt cell.
- Xây clock tree.
- Đi dây.
- Fix timing.
- Fix DRC/LVS/antenna.
- Kiểm tra IR drop/EM.
- Chuẩn bị GDS/OAS cho signoff/tapeout.
Ba nhóm kiến thức quan trọng nhất cho người mới:
1. Flow PD.
2. Timing setup/hold.
3. Physical verification và power integrity.