Logic Synthesis & Optimization
Synopsys Design Compiler, Cadence Genus & PPA Pareto Trade-offs
Logic Synthesis คือขั้นตอนการแปลงซอร์สโค้ดภาษาฮาร์ดแวร์ระดับพฤติกรรม (RTL SystemVerilog/VHDL) ไปเป็นโครงสร้างวงจรเกตลอจิกจริง (Gate-Level Netlist) ที่ประกอบด้วย Standard Cells จากโรงหล่อ โดยเครื่องมือจะทำการค้นหาจุดสมดุลที่ดีที่สุดระหว่างความเร็วสัญญาณนาฬิกา (Performance), พื้นที่ชิป (Area), และการกินไฟ (Power)
โหลด 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 ขั้นตอนต่อเนื่อง:
03 การปรับแต่ง PPA (Power, Performance, Area Pareto Trade-offs)
การสังเคราะห์คือปัญหาการหาค่าเหมาะสมที่สุดหลายเป้าหมาย (Multi-Objective Optimization):
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 ระดับโปรดักชัน:
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 ในเบราว์เซอร์