SemiMatrix / TOPICS / LOGIC SYNTHESIS (DC & GENUS)
DIGITAL DESIGN & LOGIC OPTIMIZATION

Logic Synthesis & Optimization
Synopsys Design Compiler, Cadence Genus & PPA Pareto Trade-offs

Synopsys Design Compiler NXT Cadence Genus Synthesis Multi-Vth Swapping Integrated Clock Gating (ICG)

Logic Synthesis คือขั้นตอนการแปลงซอร์สโค้ดภาษาฮาร์ดแวร์ระดับพฤติกรรม (RTL SystemVerilog/VHDL) ไปเป็นโครงสร้างวงจรเกตลอจิกจริง (Gate-Level Netlist) ที่ประกอบด้วย Standard Cells จากโรงหล่อ โดยเครื่องมือจะทำการค้นหาจุดสมดุลที่ดีที่สุดระหว่างความเร็วสัญญาณนาฬิกา (Performance), พื้นที่ชิป (Area), และการกินไฟ (Power)

📍 CAREER ROADMAP CONTEXT
STAGE 04 — SYNTHESIS & TIMING: Logic Synthesis & Optimization
โหลด Technology Libraries (.db), กำหนด SDC Constraints, ทำ Clock Gating Insertion, รัน Timing-Driven Synthesis ด้วย Synopsys Design Compiler หรือ Cadence Genus, และส่งออก Verilog Netlist พร้อมไฟล์ SVF ไปยังขั้นตอน Place & Route
Industry Tools: Synopsys Design Compiler (DC-NXT), Cadence Genus Synthesis Solution, Siemens Oasys-RTL
Related: Static Timing Analysis (STA) · Logic Equivalence Checking (LEC) · Floorplanning & Power Planning · HDL Sandbox Lab
Role: ASIC Synthesis Engineer / Digital IC Design Specialist / Front-End Implementation Lead

01 บทบาทของ Logic Synthesis ใน ASIC Design Flow

ในการพัฒนาชิปเซมิคอนดักเตอร์ โค้ด RTL เช่น always_ff @(posedge clk) count <= count + 1; เป็นเพียงคำบรรยายพฤติกรรม เครื่องมือสังเคราะห์ (Synthesis Tool) จะต้องตีความว่า + 1 ควรใช้วงจรบวกแบบใด (Ripple Carry Adder, Carry Lookahead Adder, หรือ Kogge-Stone Parallel Prefix Adder) และควรเลือกขนาดเซลล์ (Cell Drive Strength เช่น X1, X2, X4, X8) ใดใน Library จึงจะทำให้เส้นทางข้อมูลผ่านเกณฑ์ Setup Time ของ SDC โดยใช้พื้นที่และพลังงานน้อยที่สุด

02 สามขั้นตอนหลัก: Translation $\to$ Logic Optimization $\to$ Technology Mapping

โฟลว์การสังเคราะห์ภายในเครื่องมือ EDA ประกอบด้วย 3 ขั้นตอนต่อเนื่อง:

1
Translation / Elaboration (RTL $\to$ Generic GTECH)
แปลงโค้ด RTL เข้าสู่โครงสร้างวงจรเกตลอจิกทั่วไป (Generic Technology: GTECH) และอินเฟอร์หน่วยความจำ Flip-Flop, Multiplexers, และ Adders โดยยังไม่อิงกับเซลล์จริงของโรงหล่อ
2
Logic Optimization (Boolean & Multi-Level Optimization)
ลดรูปสมการบูลีนด้วยทฤษฎี Karnaugh Map / Espresso Algorithm, ขจัด Logic ที่ซ้ำซ้อน (Redundant Logic Elimination), ตัดสายที่ไม่มีการใช้งาน (Dead-Code Pruning), และทำ Resource Sharing
3
Technology Mapping (GTECH $\to$ Target Standard Cells)
จับคู่โครงสร้างบูลีนเข้ากับเซลล์เกตจริงใน Target Library (.db/.lib) เช่น NAND2_X1, AOI22_X2, DFF_X4 โดยประเมินค่า Delay, Area, Dynamic Power, และ Leakage ตามเงื่อนไข SDC

03 การปรับแต่ง PPA (Power, Performance, Area Pareto Trade-offs)

การสังเคราะห์คือปัญหาการหาค่าเหมาะสมที่สุดหลายเป้าหมาย (Multi-Objective Optimization):

TOTAL POWER DISSIPATION IN CMOS LOGIC
P_{\text{total}} = P_{\text{dynamic}} + P_{\text{leakage}} = \left(\alpha \cdot C_{\text{load}} \cdot V_{dd}^2 \cdot f_{\text{clk}} + I_{\text{short-circuit}} \cdot V_{dd}\right) + \left(I_{\text{sub-threshold}} + I_{\text{gate-leak}}\right) \cdot V_{dd}
เมื่อ $\alpha$ คือ Switching Activity Factor, $C_{\text{load}}$ คือ Total Capacitance ของสายไฟและเกตถัดไป, $V_{dd}$ คือแรงดันไฟเลี้ยง การปรับปรุง PPA ใน Synthesis ต้องควบคุมทั้ง $\alpha$ (ผ่าน Clock Gating) และ $I_{\text{sub-threshold}}$ (ผ่าน Multi-Vth cell assignment)

04 Integrated Clock Gating (ICG) & Leakage Optimization

เทคนิคประหยัดพลังงานที่ทรงพลังที่สุดในขั้น Synthesis:

1. Integrated Clock Gating (ICG)

เครื่องมือจะตรวจจับโครงสร้าง Register ที่มีเงื่อนไข Enable แล้วเปลี่ยนจาก Feed-back Multiplexer กลายเป็นการตัดสัญญาณนาฬิกาที่ต้นทางด้วย Latch-based ICG Cell ช่วยลด Dynamic Power ของ Clock Tree ลงได้ถึง 30–60%

2. Multi-$V_{th}$ Cell Swapping

บนเส้นทาง Critical Path ที่มี Setup Slack ตึงเครียด เครื่องมือจะเลือกใช้ ULVT / LVT (ความเร็วสูงแต่กระแสไฟฟ้ารั่วสูง) ส่วนเส้นทางที่มี Slack เหลือเฟือจะสลับไปใช้ SVT / HVT (กินไฟรั่วต่ำกว่า 10-100 เท่า)

05 Physical Synthesis & Topographical Mapping (DC-NXT / Genus iSpatial)

ในเทคโนโลยี Sub-7nm แบบจำลอง Wire Load Model (WLM) ดั้งเดิมไม่แม่นยำอีกต่อไป เครื่องมือยุคใหม่จึงใช้ Topographical / Physical Synthesis ที่โหลดไฟล์ Floorplan (DEF), ความหนาแน่นของพิน, และ Metal Layer Profiles เข้ามาร่วมคำนวณตำแหน่งพิกัดเสมือน $(X,Y)$ เพื่อคาดการณ์ความต้านทานและความจุไฟฟ้าแฝงของสายลวดล่วงหน้า ทำให้ผลลัพธ์ Timing Correlation ตรงกับ Place & Route สูงกว่า 95%

06 กฎการเขียน RTL ให้สังเคราะห์ได้ดี (Synthesis Best Practices)

ข้อห้าม / แนวปฏิบัติ เหตุผลทางฮาร์ดแวร์ ผลกระทบหากละเลย
หลีกเลี่ยง Inferred Latches ต้องกำหนดค่า Default Value ให้ครบทุกกรณีใน if-else และ case เกิด Transparent Latch แฝง ทำให้ควบคุม STA ได้ยากและเสี่ยงต่อการเกิด Race Condition
หลีกเลี่ยง Long Combinational Paths ไม่ต่อบล็อกคำนวณซ้อนกันยาวเกินไปโดยไม่มี Pipeline Register คั่น เกิด Setup Time Violation ทำให้ชิปไม่สามารถรันที่ความถี่สัญญาณนาฬิกาเป้าหมายได้
ใช้ Parallel Multiplexers ใช้ case แทน if-else-if ลึกๆ เมื่อเงื่อนไขไม่ขึ้นต่อกัน ลด Delay ของ Priority Encoder Chain ลงได้มากกว่า 40%

07 สคริปต์คำสั่ง Synopsys Design Compiler (DC Tcl Script)

ตัวอย่าง Synthesis Command Deck ระดับโปรดักชัน:

# 1. SETUP TARGET LIBRARIES & SVF GUIDANCE
set_svf output/core_alu.svf
set target_library "tsmc3nm_lvt.db tsmc3nm_svt.db tsmc3nm_hvt.db"
set link_library "* $target_library"

# 2. READ & ELABORATE RTL
analyze -format sverilog [glob rtl/*.sv]
elaborate core_alu -parameters "WIDTH=64"

# 3. APPLY SDC CONSTRAINTS & CLOCK GATING
read_sdc constraints/core_alu.sdc
set_clock_gating_style -sequential_cell latch -positive_edge_logic {integrated:ICG_X2}

# 4. COMPILE ULTRA WITH BOUNDARY & TIMING OPTIMIZATION
compile_ultra -gate_clock -scan -retime -exact_map

# 5. EXPORT NETLIST & REPORTS
write -format verilog -hierarchy -output netlist/core_alu_synth.v
report_timing -max_paths 10 > reports/synth_timing.rpt
report_area > reports/synth_area.rpt
report_power > reports/synth_power.rpt

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

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

HDL & Digital Logic Sandbox

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

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