SemiMatrix / TOPICS / STATIC TIMING ANALYSIS (STA & SDC)
DIGITAL DESIGN & TIMING SIGNOFF

Static Timing Analysis (STA)
Synopsys PrimeTime, SDC Constraints & Statistical POCV

Synopsys PrimeTime / Cadence Tempus SDC 2.1 Standard POCV / Liberty Variation (LVF) MCMM Scenario Signoff

Static Timing Analysis (STA) คือระเบียบวิธีทางคณิตศาสตร์ระดับอุตสาหกรรมที่ตรวจสอบว่าสัญญาณดิจิทัลทุกเส้นทาง (Timing Paths) สามารถสวิตช์และบันทึกข้อมูลได้ทันเวลาสัญญาณนาฬิกาโดยปราศจากการรัน Simulation เวกเตอร์ทดสอบ โดยทำงานร่วมกับข้อกำหนด Synopsys Design Constraints (SDC) เพื่อควบคุมความถี่, Skew, Jitter และความแปรปรวนในระดับอะตอม

📍 CAREER ROADMAP CONTEXT
STAGE 04 — SYNTHESIS & TIMING: Logic Synthesis & Static Timing Signoff
เขียนไฟล์ SDC, กำหนด Clock uncertainty/latency, รัน Signoff STA ด้วย PrimeTime/Tempus, วิเคราะห์ Statistical POCV/LVF, แก้ไข Setup Slack ด้วย Driver Upsizing/Multi-Vth และ Hold Slack ด้วย Delay Buffer Insertion
Industry Tools: Synopsys PrimeTime, Cadence Tempus, Synopsys Design Compiler, Cadence Genus
Related: Logic Synthesis Flow · Clock Tree Synthesis (CTS) · Clock Domain Crossing (CDC) · HDL & Logic Sandbox Lab
Role: STA Engineer / Timing Signoff Specialist / Physical Design Engineer

01 ทำไม STA จึงมีประสิทธิภาพเหนือกว่า Dynamic Simulation?

ในการตรวจสอบการทำงานของวงจรขนาดหลายพันล้านทรานซิสเตอร์ การป้อนเวกเตอร์ทดสอบ (Test Vectors) เข้าไปใน Gate-Level Simulation จะต้องใช้เวลาคำนวณนานหลายสัปดาห์ และยังไม่สามารถการันตีได้ว่าจะครอบคลุมกรณีที่เลวร้ายที่สุด (Worst-case Pattern) ในทางกลับกัน Static Timing Analysis (STA) ใช้อัลกอริทึม Graph-based Timing Engine ที่แตกวงจรออกเป็น Directed Acyclic Graph (DAG) และวิเคราะห์ความล่าช้าผ่านทฤษฎี Topological Sort ในเวลาเพียงไม่กี่นาที

02 ฟิสิกส์และสมการ Setup / Hold Slack

ในวงจร Synchronous ทุกเส้นทางระหว่าง Launch Flip-Flop และ Capture Flip-Flop จะต้องผ่านการทดสอบ 2 กฎพื้นฐาน:

1. SETUP TIME CHECK (MAX DELAY CONSTRAINT)
T_{\text{launch}} + T_{\text{ck2q, max}} + T_{\text{data, max}} \le T_{\text{period}} + T_{\text{capture}} - T_{\text{setup}} - T_{\text{uncertainty}}
\text{Setup Slack} = T_{\text{required, min}} - T_{\text{arrival, max}} \ge 0
ข้อมูลต้องเดินทางมาถึงและเสถียรก่อนที่ขอบสัญญาณนาฬิกา Capture ถัดไปจะมาถึงอย่างน้อยเท่ากับเวลา $T_{\text{setup}}$ หาก Slack ติดลบ วงจรจะไม่สามารถทำงานที่ความถี่เป้าหมายได้ (ความเร็วตก)
2. HOLD TIME CHECK (MIN DELAY CONSTRAINT)
T_{\text{launch}} + T_{\text{ck2q, min}} + T_{\text{data, min}} \ge T_{\text{capture}} + T_{\text{hold}} + T_{\text{uncertainty}}
\text{Hold Slack} = T_{\text{arrival, min}} - T_{\text{required, max}} \ge 0
ข้อมูลใหม่จะต้องไม่วิ่งเร็วเกินไปจนไปทับข้อมูลเดิมก่อนที่ Capture Flip-Flop จะอ่านค่าเสร็จ (อย่างน้อยเท่ากับเวลา $T_{\text{hold}}$) **สำคัญมาก:** ข้อผิดพลาด Hold Violation ไม่สามารถแก้ไขได้ด้วยการลดความถี่สัญญาณนาฬิกาหลังผลิตเสร็จ และจะทำให้ชิปพังทันที (Fatal Silicon Failure)

03 SDC Constraints Command Reference (คำสั่งมาตรฐาน SDC 2.1)

ไฟล์ SDC คือสัญญาข้อตกลง (Contract) ระหว่างสถาปัตยกรรมดิจิทัลกับเครื่องมือ EDA ด้านล่างนี้คือกลุ่มคำสั่งที่จำเป็นต้องมีในทุกโปรเจกต์:

# =========================================================================
# SYNOPSYS DESIGN CONSTRAINTS (SDC) INDUSTRIAL PRODUCTION TEMPLATE
# =========================================================================
# 1. PRIMARY & GENERATED CLOCKS
create_clock -name SYS_CLK -period 1.000 [get_ports clk_in]  # 1 GHz Clock
create_generated_clock -name DIV2_CLK -source [get_ports clk_in] -divide_by 2 [get_pins u_pll/clk_div2]

# 2. CLOCK UNCERTAINTY (JITTER + MARGIN) & LATENCY
set_clock_uncertainty -setup 0.050 [get_clocks SYS_CLK]  # 50 ps Setup Jitter
set_clock_uncertainty -hold 0.020 [get_clocks SYS_CLK]   # 20 ps Hold Skew margin
set_clock_latency -source 0.150 [get_clocks SYS_CLK]

# 3. INPUT / OUTPUT DELAY CONSTRAINTS (INTERFACE BUDGET)
set_input_delay -clock SYS_CLK -max 0.350 [get_ports data_in[*]]
set_input_delay -clock SYS_CLK -min 0.080 [get_ports data_in[*]]
set_output_delay -clock SYS_CLK -max 0.400 [get_ports data_out[*]]
set_output_delay -clock SYS_CLK -min -0.050 [get_ports data_out[*]]

# 4. TIMING EXCEPTIONS (FALSE PATHS & MULTICYCLE PATHS)
set_false_path -from [get_ports rst_n]
set_false_path -from [get_clocks SYS_CLK] -to [get_clocks DIV2_CLK]
set_multicycle_path 2 -setup -from [get_cells u_mult/reg_a*] -to [get_cells u_mult/reg_out*]
set_multicycle_path 1 -hold -from [get_cells u_mult/reg_a*] -to [get_cells u_mult/reg_out*]

# 5. DESIGN ENVIRONMENT (DRC TRANSITION & CAPACITANCE LIMITS)
set_max_transition 0.080 [current_design]
set_max_capacitance 0.050 [current_design]

04 วิวัฒนาการแบบจำลอง Variation: OCV $\to$ AOCV $\to$ POCV/LVF

เมื่อขนาดทรานซิสเตอร์หดเล็กลงสู่ระดับต่ำกว่า 7nm ความแปรปรวนของการผลิตแบบสุ่ม (Random Dopant Fluctuation & Line Edge Roughness) ทำให้ค่าหน่วงเวลาไม่สามารถคิดแบบคงที่ได้:

ยุคสมัย วิธีการคิดค่า Variation ความแม่นยำและจุดอ่อน
Flat OCV (ยุคเก่า > 28nm) คูณค่า Flat Derate Factor เช่น Early Path = 0.95, Late Path = 1.05 Pessimistic เกินไป ส่งผลให้สิ้นเปลืองพื้นที่และพลังงานในการแก้ Over-design
AOCV (Advanced OCV 20nm–14nm) คิด Derate Factor ตามความลึกของ Logic Depth และระยะห่างเชิงพิกัด (Distance) ลดความ Pessimistic ลงได้บ้าง แต่ยังไม่สะท้อนการกระจายแบบ Gaussian จริง
POCV / LVF (Sub-7nm ถึง Sub-2nm) โมเดลการกระจายตัวแบบสถิติ ($3\sigma$ Gaussian): $Delay = \mu \pm 3\sigma$ บันทึกในไฟล์ Liberty (.lib) แม่นยำสูงสุดตามฟิสิกส์ควอนตัม รวมทั้งรองรับ Non-Gaussian Asymmetric Skewness

05 Multi-Corner Multi-Mode (MCMM) Signoff Scenarios

ในการส่งมอบงานเทปเอาต์ ชิปจะต้องผ่านการตรวจ Timing ในหลายสิบสถานการณ์การทำงานพร้อมกัน:

  • Operating Modes: Functional High-Speed Mode, Low-Power Standby Mode, Scan Shift Test Mode, Scan Capture At-Speed Test Mode, และ BIST Memory Mode
  • Corner Conditions: SSG (Slow-Slow Global $0.675\text{V}, 125^\circ\text{C}$), FFG (Fast-Fast Global $0.825\text{V}, -40^\circ\text{C}$), และ TT (Typical-Typical $0.75\text{V}, 25^\circ\text{C}$)

06 การวิเคราะห์ Synopsys PrimeTime Timing Report

รายงาน Timing Report แสดงรายละเอียดของเส้นทางข้อมูล (Data Arrival Path) เทียบกับเส้นทางสัญญาณนาฬิกา (Data Required Path):

Startpoint: u_core/reg_a_reg[0] (rising edge-triggered flip-flop clocked by SYS_CLK)
Endpoint:   u_core/reg_b_reg[0] (rising edge-triggered flip-flop clocked by SYS_CLK)
Path Group: SYS_CLK
Path Type:  max (Setup Check)

Point                                             Incr       Path
--------------------------------------------------------------------------------
clock SYS_CLK (rise edge)                       0.000       0.000
clock network delay (ideal)                     0.120       0.120
u_core/reg_a_reg[0]/CP (DFCNQD1BWP)             0.000       0.120 r
u_core/reg_a_reg[0]/Q (DFCNQD1BWP)              0.065       0.185 f
u_core/U124/ZN (NAND2D1BWP)                     0.042       0.227 r
u_core/U189/ZN (AOI22D1BWP)                     0.088       0.315 f
u_core/reg_b_reg[0]/D (DFCNQD1BWP)              0.015       0.330 f
data arrival time                                           0.330

clock SYS_CLK (rise edge)                       1.000       1.000
clock network delay (ideal)                     0.110       1.110
clock uncertainty                              -0.050       1.060
u_core/reg_b_reg[0]/CP (DFCNQD1BWP)             0.000       1.060 r
library setup time                             -0.035       1.025
data required time                                          1.025
--------------------------------------------------------------------------------
data required time                                          1.025
data arrival time                                          -0.330
--------------------------------------------------------------------------------
slack (MET)                                                 0.695

07 กลยุทธ์การแก้ไข Setup และ Hold Violations ในกระบวนการ ECO

ในขั้นตอน Engineering Change Order (ECO) วิศวกรจะใช้กลยุทธ์เฉพาะทางในการแก้ไข Slack:

กลยุทธ์แก้ Setup Violation (Data ช้าเกินไป)

  • Cell Sizing / Upsizing: เปลี่ยนเกตตัวขับให้มีขนาดใหญ่ขึ้นเพื่อเพิ่มกระแสขับ ($I_{drive}$)
  • Multi-Vth Swapping: เปลี่ยนเซลล์จาก HVT (High-Vth) เป็น SVT หรือ LVT (Low-Vth)
  • Logic Restructuring / Cloning: แยกโหลดตัวขับขนานกันเพื่อลด Fanout
  • Useful Skew: ปรับเลื่อน Clock Arrival ของ Capture Flip-Flop ให้มาช้าลง

กลยุทธ์แก้ Hold Violation (Data เร็วเกินไป)

  • Delay Buffer Insertion: แทรกบัฟเฟอร์หน่วงเวลาใน Data Path ตรงจุดที่มี Setup Slack เหลือเฟือ
  • Cell Downsizing: ลดขนาดตัวขับของเซลล์ก่อนหน้าเพื่อให้สัญญาณเปลี่ยนช้าลง
  • HVT Swapping: เปลี่ยนเซลล์เป็น HVT เพื่อเพิ่มเวลาหน่วงและประหยัดกระแสไฟรั่ว

08 ปฏิบัติการจำลองบน HDL & Logic Sandbox Lab

คุณสามารถทดสอบการสังเคราะห์วงจรตรรกะดิจิทัล การสร้างเวฟฟอร์มสัญญาณ และสังเกตการหน่วงเวลาของ Logic Gates ได้ทันทีในห้องแล็บจำลองของเรา:

HDL & Digital Logic Sandbox

เขียนโค้ด Verilog HDL, ทดสอบวงจร Adder/Multiplexer, และดู Timing Waveforms พร้อมการจำลอง Gate Delays ในเบราว์เซอร์

เปิดห้องแล็บ HDL Sandbox →