Trong ngành bán dẫn hiện đại, việc phát triển một IP (Intellectual Property) — chẳng hạn như một bộ nhân (Multiplier), FIFO hay bộ lọc FIR — trên tiến trình công nghệ 28 nm đòi hỏi một quy trình toàn diện, chính xác và tuân thủ tiêu chuẩn quốc tế. Tuy nhiên, không phải tổ chức nào cũng sở hữu xưởng sản xuất (fab) riêng. Mô hình “non-fab” (hay còn gọi là “Design-Only”) đã trở thành xu hướng phổ biến, trong đó các nhóm thiết kế hoàn thiện toàn bộ chuỗi từ RTL (Register-Transfer Level) đến GDSII và ký “tape-out” thông qua dịch vụ Multi-Project Wafer (MPW) của các nhà máy đúc (foundry) hoặc các chương trình shuttle (như TSMC Shuttle Program, MOSIS). Bài viết này sẽ giới thiệu tóm tắt quy trình thiết kế IP 28 nm non-fab, hướng tới đào tạo và thực hành cho sinh viên kỹ thuật hoặc các kỹ sư chuyển đổi sang lĩnh vực thiết kế vi mạch.

1. Định nghĩa yêu cầu (Specification)
Quy trình bắt đầu bằng việc xác định rõ URS (User Requirements Specification): mô tả chức năng chính của IP, thông số kỹ thuật (ví dụ độ rộng dữ liệu, tần số mục tiêu), yêu cầu về năng lượng, điện áp cung cấp (VDD = 0,9 V; VSS = 0 V) và dải nhiệt độ hoạt động (−40 °C … +85 °C). Với bộ nhân 16×16 bit, cần xác định kiến trúc (Wallace-Tree, Booth hay shift-add), tần số ≥ 1 GHz và công suất ≤ 10 mW. Với FIFO, xác định sâu 1024 × 32 bit, đọc-ghi đồng thời ở 500 MHz và các tín hiệu empty/full. Với bộ lọc FIR, cần tính toán số tap = 16, độ rộng fixed-point 12–16 bit, sampling rate 200 MHz và SNR ≥ 60 dB. Đồng thời, giao diện I/O (data_in[N–1:0], data_out[M–1:0], clock, reset, valid/ready) và các ràng buộc timing (setup-hold, max input/output delay) phải được liệt kê chi tiết trong URS.
2. Thiết kế RTL (Register-Transfer Level)
Từ URS, nhóm thiết kế lựa chọn kiến trúc phù hợp: ví dụ “Wallace-Booth” để tối ưu độ trễ hoặc “array multiplier” để tiết kiệm diện tích. Trong trường hợp FIFO, nếu độ sâu lớn, sử dụng Block RAM dual-port; nếu sâu nhỏ, có thể dùng shift-register. Với FIR, cân nhắc giữa thiết kế fully parallel (tăng throughput) hoặc semi-parallel (tiết kiệm tài nguyên). Tiếp theo, mô tả hành vi (behavioral) và cấu trúc (structural) của IP bằng Verilog/SystemVerilog hoặc VHDL, sử dụng parameter (như WIDTH, DEPTH) để tái sử dụng. Nếu yêu cầu tần số cao (≥ 1 GHz), nhóm thiết kế thêm pipelining, phân chia thành nhiều stage và chèn register giữa các stage để đảm bảo mỗi stage có delay ≤ 200 – 300 ps. Cuối cùng, viết testbench RTL bao gồm directed test vectors và random stimulus, chạy mô phỏng chức năng (ModelSim, QuestaSim hoặc VCS) để kiểm tra corner cases (reset, sign-extension, overflow, clock domain crossing) và báo cáo coverage (SystemVerilog Assertions).
3. Tổng hợp (Synthesis)
Sau khi RTL đã hoàn chỉnh về mặt chức năng, bước tiếp theo là synthesis: chuyển RTL sang gate-level netlist. Nhóm thiết kế chuẩn bị PDK 28 nm (TSMC OOC 28 nm educational PDK chứa file LEF, Liberty (.lib) và tech lef). Sử dụng công cụ Synopsys Design Compiler hoặc Cadence Genus, thiết lập project với các constraint (.sdc): create_clock –period 1.0 ns, set_input_delay 0.1 ns, set_output_delay 0.1 ns, set_max_transition 0.2 ns, set_max_fanout 10. Chạy compile_ultra –gate_clock để tạo netlist và xuất file .sdf. Sau đó, nhóm kiểm tra timing report (WNS ≥ 0, TNS ≥ 0), area report (tổng cell count, tổng diện tích), power report (dynamic, leakage, short-circuit). Đồng thời, chạy linting (SpyGlass hoặc Jasper) để phát hiện coding style violations, reset domain issues, hoặc clock domain crossing, trước khi chuyển sang physical design.
4. Thiết kế vật lý (Physical Design)
Bước physical design bao gồm floorplanning, placement, clock tree synthesis (CTS) và routing. Trong floorplanning, xác định die-outline dựa trên area report từ synthesis — ví dụ tổng cell area ≈ 0,02 mm² ⇒ die size ~200 µm × 200 µm (gồm margin routing). Đặt power rails (VDD/VSS) với spacing hợp lệ và xác định khu vực blockages (như dành cho PLL hoặc analog). Tiếp theo, chạy placement (max_utilization = 75 %) để giảm congestion (< 70 %) và HPWL. Sau đó, thực hiện CTS với skew ≤ 50 ps, insertion delay ≤ 100 ps, chèn buffer clock và routing clock tree (M2–M4). Trong routing, nhóm thực hiện global routing, tạo congestion map, rồi detail routing theo luật DRC (minimum width/spacing, via enclosure, sử dụng metal layers M1–M9, via rules V1–V8), đồng thời xuất DRC và LVS reports sơ bộ rồi fix cho đến khi không còn lỗi.
5. Phân tích và kiểm thử (Sign-off)
Sau khi PnR hoàn tất, nhóm chạy STA (Static Timing Analysis) bằng PrimeTime hoặc Tempus, kiểm tra WNS ≥ 0 và TNS ≥ 0 cho các corner TT (Typical), SS (Slow-Slow), FF (Fast-Fast). Nếu có violation, cần tối ưu buffer insertion, restructure logic hoặc điều chỉnh clock tree. Tiếp đó, chạy power analysis: import switching activity file (.vcd hoặc .saif) từ simulation, sử dụng PrimePower hoặc Voltus để tính dynamic power; tính leakage power dựa trên .lib ở corner T = 85 °C, VDD = 0,9 V; rồi tổng hợp và kiểm tra tổng power phải ≤ target (ví dụ ≤ 10 mW). Nếu vượt, nhóm tiến hành tối ưu multi-Vt cells, clock gating, power gating. Đối với DRC & LVS sign-off, sử dụng Cadence Pegasus hoặc Mentor Calibre để đảm bảo 0 lỗi DRC và layout vs schematic match. Nếu PDK yêu cầu, nhóm thực hiện Arduino Check (antenna) và fix. Trong trường hợp foundry đòi hỏi parasitic extraction (PEX), nhóm chạy StarRC (Synopsys) hoặc Mentor Fx để trích xuất parasitic RC, sau đó chạy STA lại với file .spf hoặc .spef để đảm bảo timing closure.
6. Xuất GDSII và tài liệu
Khi mọi sign-off criteria (DRC, LVS, STA post-PEX, power) đều đạt, nhóm thực hiện xuất GDSII: lựa chọn hierarchical GDSII hoặc flattened GDSII theo yêu cầu foundry (ví dụ TSMC 28 nm GDS rules). Đồng thời tạo tài liệu đi kèm gồm Schematic PDF (block diagram & detailed schematic), LEF file (abstract view), Liberty .lib (abstract cell), constraint file .sdc, và một README chi tiết gồm thông tin PPA summary (peak frequency, total power, total area), pin assignment, timing arcs, power rails, hướng dẫn integrate IP vào SoC (chạy synthesis/P&R lại khi thay đổi clock, generate Liberty abstract cell) và license statement nếu IP có cell proprietary. Cuối cùng, nhóm chuẩn bị tape-out checklist: DRC sign-off report, LVS sign-off report, STA sign-off report (post-PEX), ERC (Electrical Rule Check) để đảm bảo pin connections và voltage domains hợp lệ, rồi package GDSII và doc package gửi foundry (TSMC, Intel hoặc Samsung).
7. Môi trường non-fab và công cụ hỗ trợ
Trong mô hình non-fab, nhóm thiết kế tận dụng dịch vụ MPW (TSMC Shuttle Program, MOSIS) để giảm chi phí sản xuất thử. Ngoài ra, nhóm xây dựng môi trường Cloud-Based EDA (HPC) bằng cách tạo Docker container chứa license Cadence, Synopsys, Mentor (Design Compiler, PrimeTime, Innovus, Calibre) và sử dụng AWS EC2 HPC, FPT CMC Cloud hoặc Viettel IDC để chạy các job synthesis, P&R và sign-off song song, giảm turnaround time. Nếu không có PDK 28 nm, nhóm cũng có thể thực hành quy trình công việc bằng Open-Source Flow (OpenROAD/OpenLane) với PDK công khai SkyWater 130 nm, giúp sinh viên nắm vững các bước floorplan, placement, CTS, routing và sign-off. Ngoài ra, phòng lab ảo (VM hoặc Docker image) với OpenROAD, Magic, Qflow được triển khai để sinh viên kết nối SSH đến HPC/Cluster và thực hành trực tiếp.
8. Tối ưu PPA và Multi-Corner Analysis
Quá trình tối ưu PPA (Power/Performance/Area) là bước then chốt sau khi đã có layout ban đầu. Nhóm tiến hành tối ưu area bằng cách sử dụng standard cells M0/M1 (thin gate) ở những vùng không critical; reduce power qua clock gating, multi-Vt cells và power gating cho các sub-blocks idle; nâng cao performance bằng cách tăng pipeline depth, restructure combinational logic, thêm buffers tại fan-out cao. Bên cạnh đó, nhóm thực hiện Multi-Corner Multi-Mode (MCMM) analysis: chạy STA cho TT, SS, FF, TT+SS, TT+FF và các chế độ hoạt động (normal, test, sleep). Nếu phát hiện timing violations, phải điều chỉnh lại buffer insertion, cell sizing hoặc clock tree insertion. Đồng thời, tiến hành EM/IR Drop Analysis (Voltus EMI hoặc RedHawk) để kiểm tra IR drop ≤ 5 % VDD, tránh hotspot. Cuối cùng, Aging Analysis (BTI, HCI) bằng PrimeTime SI hoặc tương đương để xác định sức bền (reliability) của IP; nếu có violation, thêm margin timing hoặc đề xuất giải pháp adaptive body biasing.
9. Kết quả đầu ra (Deliverables)
Kết thúc quy trình, nhóm thiết kế bàn giao trọn bộ deliverables:
- RTL & Testbench: mã Verilog/SystemVerilog, testbench RTL, constraint .sdc và báo cáo mô phỏng (waveform, coverage, SVA assertions).
- Synthesized Netlist: gate-level netlist (.v), SDF (.sdf) và báo cáo synthesis (timing, area, power).
- Physical Design Database & Reports: thư mục Innovus/ICC2 project (netlist, .lef, .def, .mag, routing DB) cùng các báo cáo placement utilization, congestion map, clock tree report, timing sign-off.
- Sign-off Reports: DRC sign-off, LVS sign-off, STA sign-off (post-PEX) và power sign-off, kèm Antenna Check (nếu yêu cầu).
- GDSII & Documentation Package: file GDSII (.gds hierarchical hoặc flattened) cùng tài liệu kèm (schematic PDF, LEF, Liberty .lib, README trình bày PPA summary, pin assignment, integration notes, license statement).
- Integration Notes: hướng dẫn cách tích hợp IP vào SoC (chạy synthesis/P&R lại khi thay đổi clock, generate Liberty abstract cell, tạo stub macros, thiết lập testbench cấp SoC để verify), cách tái-characterize ở các corner SS/FF và cách tạo pin wrappers.
Tóm lại, quy trình thiết kế một IP 28 nm trong môi trường non-fab bao gồm chín bước chính: định nghĩa yêu cầu, thiết kế RTL, synthesis, physical design, sign-off, xuất GDSII, sử dụng môi trường non-fab, tối ưu PPA và bàn giao deliverables. Mỗi bước đều bao gồm các công việc chi tiết, từ thiết lập điều kiện ban đầu đến kết quả cuối cùng sẵn sàng gửi foundry tape-out. Mô hình “Design-Only” không yêu cầu sở hữu xưởng sản xuất, giúp các tổ chức, phòng đào tạo và sinh viên thực hành đầy đủ quy trình thiết kế vi mạch theo tiêu chuẩn quốc tế, đồng thời giảm thiểu chi phí sản xuất thử nghiệm và tăng cơ hội tiếp cận công nghệ tiên tiến.