Physical Design từ Zero

Bản visual: tài liệu bắt đầu bằng Chương Mở Đầu — Kiến thức nền tảng điện tử (bán dẫn, transistor, cổng logic), tiếp theo là kiến thức bổ trợ (sequential logic, RTL, standard cell), và Phần chính — Physical Design (flow, timing, signoff). Tất cả đều có biểu đồ minh họa.

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"]
  
GoalBiến netlist logic thành layout vật lý có thể sản xuất.
Main jobsĐặt cell, cấp nguồn, tạo clock tree, đi dây, fix timing.
Main checksTiming, DRC, LVS, antenna, EM/IR, power domain.
OutputDatabase sạch và GDS/OAS cho signoff/tapeout.

Chương Mở Đầu: Kiến Thức Nền Tảng Điện Tử

Mục đích: Chương này trang bị kiến thức gốc rễ cho người chưa có nền tảng điện tử phần cứng. Nội dung đi theo luồng từ vi mô đến vĩ mô: Vật liệu bán dẫn (Semiconductor)Linh kiện (Transistor)Mạch logic số (Logic Gates)Bài toán Physical Design.

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)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àoSilicon 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
    
NMOSPMOS
ON khiGate = 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ốtLogic 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)đạ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)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ĩaVí dụ
BitĐơn vị nhỏ nhất — chỉ có giá trị 0 hoặc 11 bit = 1 dây tín hiệu
Byte8 bits0110_1010 = 106 thập phân
Nibble4 bits1010 = 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-9A-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:

HexBinaryDecimalHexBinaryDecimal
000000810008
100011910019
200102A101010
300113B101111
401004C110012
501015D110113
601106E111014
701117F111115

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ánKý hiệuÝ nghĩaTruth Table
ANDA · BKết quả = 1 chỉ khi cả hai = 10·0=0 0·1=0 1·0=0 1·1=1
ORA + BKết quả = 1 khi ít nhất một = 10+0=0 0+1=1 1+0=1 1+1=1
NOTA′ hoặc ĀĐảo: 0→1, 1→00′=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"
Tại sao De Morgan quan trọng? Trong thiết kế CMOS, cổng NAND thực hiện (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ậtAND formOR form
IdentityA · 1 = AA + 0 = A
NullA · 0 = 0A + 1 = 1
ComplementA · A′ = 0A + A′ = 1
IdempotentA · A = AA + A = A
DistributiveA·(B+C) = A·B+A·CA+(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ổngHàm BooleanMô tảGhi chú CMOS
NOTY = A′Đảo tín hiệu: 0→1, 1→01 PMOS + 1 NMOS (đơn giản nhất)
NANDY = (A·B)′AND rồi đảoCổng "native" hiệu quả nhất trong CMOS
NORY = (A+B)′OR rồi đảoCổng native hiệu quả thứ hai
ANDY = A·BOutput = 1 chỉ khi cả hai input = 1= NAND + Inverter (tốn thêm transistor)
ORY = A+BOutput = 1 khi ít nhất một input = 1= NOR + Inverter
XORY = A⊕BOutput = 1 khi hai input khác nhauDùng nhiều trong bộ cộng, CRC
Tại sao NAND/NOR là "native"? Cấu trúc CMOS tự nhiên tạo ra output đảo (inverted). NAND chỉ cần 4 transistor, trong khi AND cần 6 (= NAND + 2 transistor inverter). Vì vậy, hầu hết thư viện cell chuẩn (Standard Cell Library) ưu tiên NAND và NOR làm cell cơ sở, từ đó xây dựng mọi hàm logic phức tạp hơn.

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:

Câu hỏi trung tâm của Physical Design: Khi thiết kế logic tạo ra một Netlist với hàng chục tỷ cổng logic, làm sao để sắp xếp (Placement) và đi dây (Routing) tất cả chúng trên một diện tích silicon chỉ vài mm² — mà vẫn đảm bảo tốc độ tín hiệu, điện năng cung cấp, tản nhiệt, và tuân thủ mọi ràng buộc sản xuất của nhà máy?

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ệuVai 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 World
asic-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.
Lộ trình gợi ý: Hoàn thành (1) và (2) để có nền tảng vững → Dùng (3) song song khi bắt đầu thực hành RTL/Synthesis → Đọc tài liệu PD này để hiểu flow tổng quát → Đọc (4) khi muốn đi sâu vào lý thuyết thuật toán PD.

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:

VendorTool PD chínhTool TimingTool Signoff
SynopsysIC Compiler II (ICC2)PrimeTime (PT)StarRC (parasitic extraction)
CadenceInnovusTempusQuantus (parasitic extraction)
Siemens EDACalibre (DRC/LVS)
TclNgôn ngữ scripting chính trong EDA tools. Mọi command trong ICC2/Innovus đều là Tcl.
PythonDùng cho automation, data analysis, report parsing. Ngày càng phổ biến trong PD.
Linux CLIcd, ls, grep, awk, sed, vi/vim — kỹ năng bắt buộc hàng ngày.
Version ControlGit hoặc Perforce — quản lý script, runset, constraint files.


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ị.
Ví dụ thực tế: giống như chụp ảnh. Setup time = đối tượng phải đứng yên TRƯỚC khi bấm nút chụp. Hold time = đối tượng phải giữ yên SAU khi bấm nút chụp (trong lúc ảnh đang ghi). Nếu đối tượng cử động trong khoảng này → ảnh bị nhòe (= FF capture sai data).

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

FrontendBackend (PD)
FocusLogic, chức năng, verificationLayout vật lý, sản xuất
InputSpec, architectureGate-level netlist
OutputNetlist đã synthesizeGDS/OAS (layout file)
Công việcRTL coding, simulation, synthesis, DFTFloorplan, 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ạiTốc độLeakage PowerKhi nào dùng
LVT (Low Vt)Nhanh nhấtCao nhấtTiming critical paths
SVT (Standard Vt)Trung bìnhTrung bìnhMặc định
HVT (High Vt)Chậm nhấtThấp nhấtNon-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

FileChứa gìAi dùng
.libTiming arcs, power data, capacitanceSynthesis, STA, PD
.lefKích thước cell, vị trí pin, obstructionPD tool (placement, routing)
.gdsLayout 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"]
    
FEOLBEOL
Tạo gìTransistor (NMOS/PMOS) trên siliconDây kim loại kết nối transistor (interconnect)
Vị tríTrên bề mặt silicon substrateCác lớp kim loại chồng lên trên transistor
Quy trình chínhLithography, etching, doping, oxidationDeposition, lithography, etching (cho metal)
PD liên quanPD không trực tiếp kiểm soát FEOL — đó là việc của library/foundryPD 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
  
Mối liên hệ với PD: Khi PD engineer thực hiện Placement, thực chất là quyết định vị trí transistor trên mặt phẳng silicon (FEOL). Khi thực hiện Routing, thực chất là vẽ các đường dây kim loại (BEOL) nối giữa các cell. Mọi quy tắc DRC (Design Rule Check) đều bắt nguồn từ giới hạn vật lý của quy trình fabrication này.

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
ProcessPSai lệch trong quá trình sản xuất — mỗi wafer, mỗi die hơi khác nhauTransistor nhanh hơn hoặc chậm hơn thiết kế
VoltageVĐiện áp cung cấp dao động (VDD ± 10%)V cao → nhanh hơn, V thấp → chậm hơn
TemperatureTNhiệ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 (Slow-Slow)Process chậm, V thấp, T nóng → mọi thứ chạy chậm nhất. Dùng để check Setup time (tín hiệu có kịp đến không?).
FF (Fast-Fast)Process nhanh, V cao, T lạnh → mọi thứ chạy nhanh nhất. Dùng để check Hold time (tín hiệu có đến quá sớm không?).
TT (Typical-Typical)Điều kiện trung bình — dùng để ước lượng ban đầu, không dùng để signoff.
Tại sao người mới cần biết PVT sớm? Từ bước Placement (Chương 12), tool PD đã yêu cầu chỉ định corner (ví dụ: 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.

🎓 Hoàn thành phần Nền tảng. Bây giờ bạn đã có đủ kiến thức cơ bản (binary, boolean, semiconductor, transistor, logic gate, flip-flop, RTL, synthesis, standard cell, fabrication, PVT, khái niệm vật lý) để bước vào phần chính: Physical Design. Các chương tiếp theo sẽ đi sâu vào từng bước của PD flow.

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.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.