๐Ÿ“ SoC ๊ฒŒ์ดํŠธ ์นด์šดํŠธ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

SoC ๊ฒŒ์ดํŠธ ์นด์šดํŠธ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: SRAM, ๋ ˆ์ง€์Šคํ„ฐ ๋ฉด์  ์ถ”์ •์˜ ๋ชจ๋“  ๊ฒƒ

๐Ÿ“ SoC ๊ฒŒ์ดํŠธ ์นด์šดํŠธ ์™„๋ฒฝ ๊ฐ€์ด๋“œ

SRAM, ๋ ˆ์ง€์Šคํ„ฐ ๋ฉด์  ์ถ”์ •์˜ ๋ชจ๋“  ๊ฒƒ — ์‹ค๋ฌด ์—”์ง€๋‹ˆ์–ด๋ฅผ ์œ„ํ•œ ๋ ˆํผ๋Ÿฐ์Šค

SoC ์„ค๊ณ„ ์ดˆ๊ธฐ ๋‹จ๊ณ„์—์„œ ๋ฉด์ ์„ ์ถ”์ •ํ•˜๋Š” ๊ฒƒ์€ ํ”„๋กœ์ ํŠธ ์„ฑ๊ณต์˜ ํ•ต์‹ฌ์ž…๋‹ˆ๋‹ค. Gate Count๋Š” ์„ค๊ณ„ ๋ณต์žก๋„๋ฅผ ์ •๋Ÿ‰ํ™”ํ•˜๋Š” ํ‘œ์ค€ ์ง€ํ‘œ๋กœ, ๊ธฐ์ˆ  ๋…ธ๋“œ์— ๋…๋ฆฝ์ ์ธ ๋น„๊ต๋ฅผ ๊ฐ€๋Šฅํ•˜๊ฒŒ ํ•ฉ๋‹ˆ๋‹ค. ์ด ๊ธ€์—์„œ๋Š” ํ•ฉ์„ฑ ๋ฆฌํฌํŠธ์—์„œ ๊ฒŒ์ดํŠธ ์นด์šดํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ๋ฐฉ๋ฒ•๋ถ€ํ„ฐ SRAM, ๋ ˆ์ง€์Šคํ„ฐ์˜ ๋ฉด์  ์ถ”์ •๊นŒ์ง€ ์‹ค๋ฌด์—์„œ ๋ฐ”๋กœ ํ™œ์šฉํ•  ์ˆ˜ ์žˆ๋Š” ๋‚ด์šฉ์„ ๋‹ค๋ฃน๋‹ˆ๋‹ค.

๐ŸŽฏ 1. Gate Count๋ž€?

Gate Count๋Š” ๋””์ง€ํ„ธ ํšŒ๋กœ์˜ ๋ณต์žก๋„๋ฅผ 2-input NAND ๊ฒŒ์ดํŠธ ๊ธฐ์ค€์œผ๋กœ ์ •๋Ÿ‰ํ™”ํ•œ ์ˆ˜์น˜์ž…๋‹ˆ๋‹ค.

๐Ÿ“Œ Gate Count์˜ ๋ชฉ์ 

๋ฉด์  ์ถ”์ •: ์‹ค๋ฆฌ์ฝ˜ ๋‹ค์ด ํฌ๊ธฐ ์˜ˆ์ธก, ํ”Œ๋กœ์–ดํ”Œ๋ž˜๋‹
๊ธฐ์ˆ  ๋…๋ฆฝ์  ๋น„๊ต: 28nm vs 7nm ๋“ฑ ๊ณต์ • ๊ฐ„ ๋ณต์žก๋„ ๋น„๊ต
ํ”„๋กœ์ ํŠธ ๊ด€๋ฆฌ: ๊ฐœ๋ฐœ ์ผ์ •, ๋น„์šฉ ์ถ”์ •์˜ ๊ธฐ์ดˆ ๋ฐ์ดํ„ฐ
๋ผ์ด์„ ์Šค ๋น„์šฉ: IP ๋ผ์ด์„ ์Šค๊ฐ€ ๊ฒŒ์ดํŠธ ์ˆ˜ ๊ธฐ์ค€์ธ ๊ฒฝ์šฐ

์™œ NAND2๋ฅผ ๊ธฐ์ค€์œผ๋กœ ํ•˜๋Š”๊ฐ€?

NAND ๊ฒŒ์ดํŠธ๋Š” Universal Gate๋กœ, ๋ชจ๋“  ๋…ผ๋ฆฌ ํ•จ์ˆ˜๋ฅผ ๊ตฌํ˜„ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค. 2-input NAND๋Š” ๊ฐ€์žฅ ๊ธฐ๋ณธ์ ์ธ ์…€๋กœ, ํŠธ๋žœ์ง€์Šคํ„ฐ 4๊ฐœ๋กœ ๊ตฌ์„ฑ๋ฉ๋‹ˆ๋‹ค.

4T
NAND2 ํŠธ๋žœ์ง€์Šคํ„ฐ
1.0
๊ธฐ์ค€ ๊ฒŒ์ดํŠธ (Reference)
Universal
๋ชจ๋“  ๋…ผ๋ฆฌ ๊ตฌํ˜„ ๊ฐ€๋Šฅ

๐Ÿ”ข 2. ๊ฒŒ์ดํŠธ ์นด์šดํŠธ ๊ณ„์‚ฐ๋ฒ•

์‹ค๋ฌด์—์„œ ๊ฒŒ์ดํŠธ ์นด์šดํŠธ๋ฅผ ๊ณ„์‚ฐํ•˜๋Š” ํ‘œ์ค€ ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

Gate Count = Total Area / NAND2 Area
ํ•ฉ์„ฑ ๊ฒฐ๊ณผ์˜ ์ด ๋ฉด์ ์„ NAND2 ์…€ ๋ฉด์ ์œผ๋กœ ๋‚˜๋ˆ”
๐Ÿ’ก ํ•ต์‹ฌ ํฌ์ธํŠธ

Total Area๋Š” ํ•ฉ์„ฑ ํˆด(Design Compiler)์ด ๋ฆฌํฌํŠธํ•˜๋Š” ๋ฉด์ ์ด๊ณ ,
NAND2 Area๋Š” ํƒ€๊ฒŸ ๊ณต์ • ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์˜ NAND2 ์…€ ๋ฉด์ ์ž…๋‹ˆ๋‹ค.

NAND2 ๋ฉด์ ์€ NDA(๋น„๋ฐ€์œ ์ง€๊ณ„์•ฝ) ๋Œ€์ƒ์ด๋ฏ€๋กœ ์ •ํ™•ํ•œ ๊ฐ’์€ ๊ณต๊ฐœ๋˜์ง€ ์•Š์Šต๋‹ˆ๋‹ค.

๊ณ„์‚ฐ ์˜ˆ์ œ

๐Ÿ“Š Gate Count ๊ณ„์‚ฐ ์˜ˆ์ œ
Total Synthesis Area = 125,000 ฮผm²
NAND2 Area (28nm ์˜ˆ์‹œ) = 0.5 ฮผm²
Gate Count = 125,000 / 0.5 = 250,000 gates

๐Ÿ“ 3. NAND2 ๊ธฐ์ค€ ๋ฉด์  (๊ณต์ •๋ณ„)

NAND2 ๋ฉด์ ์€ ๊ณต์ • ๋…ธ๋“œ์— ๋”ฐ๋ผ ํฌ๊ฒŒ ๋‹ฌ๋ผ์ง‘๋‹ˆ๋‹ค. ์ •ํ™•ํ•œ ๊ฐ’์€ NDA ๋Œ€์ƒ์ด์ง€๋งŒ, ์ƒ๋Œ€์  ๋น„์œจ๊ณผ ์ถ”์ •์น˜๋ฅผ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ์Šต๋‹ˆ๋‹ค.

⚠️ ์ฃผ์˜์‚ฌํ•ญ

์•„๋ž˜ ๊ฐ’๋“ค์€ ๊ณต๊ฐœ๋œ ํ•™์ˆ  ์ž๋ฃŒ์™€ ์—…๊ณ„ ์ถ”์ •์น˜๋ฅผ ๋ฐ”ํƒ•์œผ๋กœ ํ•œ ์ฐธ๊ณ ์šฉ ์ˆ˜์น˜์ž…๋‹ˆ๋‹ค. ์‹ค์ œ ํ”„๋กœ์ ํŠธ์—์„œ๋Š” ๋ฐ˜๋“œ์‹œ ํ•ด๋‹น ํŒŒ์šด๋“œ๋ฆฌ์˜ ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ ๋ฐ์ดํ„ฐ์‹œํŠธ๋ฅผ ํ™•์ธํ•˜์„ธ์š”.

๊ณต์ •๋ณ„ NAND2 ๋ฉด์  ์ถ”์ •

๊ณต์ • ๋…ธ๋“œ NAND2 ๋ฉด์  (์ถ”์ •) ์ƒ๋Œ€ ๋น„์œจ ๋น„๊ณ 
180nm ~8.0 ฮผm² 16x Legacy ๊ณต์ •
130nm ~4.0 ฮผm² 8x Legacy ๊ณต์ •
65nm ~1.5 ฮผm² 3x Mature ๊ณต์ •
40nm ~1.0 ฮผm² 2x Mature ๊ณต์ •
28nm ~0.5 ฮผm² 1x (๊ธฐ์ค€) Volume ๊ณต์ •
16nm ~0.25 ฮผm² 0.5x FinFET ์‹œ์ž‘
7nm ~0.12 ฮผm² 0.24x Advanced
5nm ~0.08 ฮผm² 0.16x Cutting-edge

๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ NAND2 ๋ฉด์  ํ™•์ธํ•˜๊ธฐ

๐Ÿ“„ TCL: Liberty ํŒŒ์ผ์—์„œ NAND2 ๋ฉด์  ์ถ”์ถœ
# Design Compiler์—์„œ NAND2 ๋ฉด์  ํ™•์ธ # ๋ฐฉ๋ฒ• 1: ํŠน์ • ์…€ ๋ฉด์  ์กฐํšŒ get_attribute [get_lib_cells */NAND2X1] area # ๋ฐฉ๋ฒ• 2: ๋ชจ๋“  NAND2 ๋ณ€ํ˜• ์กฐํšŒ foreach_in_collection cell [get_lib_cells */NAND2*] { set name [get_attribute $cell name] set area [get_attribute $cell area] puts "$name: $area" } # ์ถœ๋ ฅ ์˜ˆ์‹œ: # NAND2X1: 0.504 # NAND2X2: 0.672 # NAND2X4: 1.008

๐Ÿ“Š 4. ํ•ฉ์„ฑ ๋ฆฌํฌํŠธ ํ•ด์„

Design Compiler์˜ ๋ฉด์  ๋ฆฌํฌํŠธ๋ฅผ ์ •ํ™•ํžˆ ์ฝ๊ณ  ํ•ด์„ํ•˜๋Š” ๋ฐฉ๋ฒ•์ž…๋‹ˆ๋‹ค.

report_area ๊ฒฐ๊ณผ ์ฝ๊ธฐ

๐Ÿ“„ Design Compiler: report_area ์ถœ๋ ฅ ์˜ˆ์‹œ
**************************************** Report : area Design : my_soc_top **************************************** Library(s) Used: tcbn28hpcplusbwp30p140hvt (File: ...) Number of ports: 2456 Number of nets: 185432 Number of cells: 98234 Number of combinational cells: 67891 Number of sequential cells: 30343 Number of macros/black boxes: 4 Number of buf/inv: 12456 Combinational area: 45678.123456 Buf/Inv area: 8901.234567 Noncombinational area: 78901.234567 Macro/Black Box area: 0.000000 Net Interconnect area: undefined Total cell area: 124579.357923 Total area: undefined

๋ฉด์  ํ•ญ๋ชฉ ์„ค๋ช…

ํ•ญ๋ชฉ ์„ค๋ช… ํฌํ•จ ๋‚ด์šฉ
Combinational area ์กฐํ•ฉ ๋…ผ๋ฆฌ ๋ฉด์  NAND, NOR, XOR, MUX ๋“ฑ
Buf/Inv area ๋ฒ„ํผ/์ธ๋ฒ„ํ„ฐ ๋ฉด์  Combinational์— ํฌํ•จ
Noncombinational area ์ˆœ์ฐจ ๋…ผ๋ฆฌ ๋ฉด์  Flip-Flop, Latch, ๋ฉ”๋ชจ๋ฆฌ
Macro/Black Box ๋งคํฌ๋กœ ์…€ ๋ฉด์  ํ•˜๋“œ ๋งคํฌ๋กœ (SRAM ๋“ฑ)
Total cell area ์ „์ฒด ์…€ ๋ฉด์  ๊ฒŒ์ดํŠธ ์นด์šดํŠธ ๊ณ„์‚ฐ์— ์‚ฌ์šฉ

๊ฒŒ์ดํŠธ ์นด์šดํŠธ ์ž๋™ ๊ณ„์‚ฐ ์Šคํฌ๋ฆฝํŠธ

๐Ÿ“„ TCL: ๊ฒŒ์ดํŠธ ์นด์šดํŠธ ๊ณ„์‚ฐ ์Šคํฌ๋ฆฝํŠธ
# ============================================== # Gate Count Calculator for Design Compiler # ============================================== proc calc_gate_count { {nand2_cell "*/NAND2X1"} } { # NAND2 ๋ฉด์  ๊ฐ€์ ธ์˜ค๊ธฐ set nand2_area [get_attribute \ [get_lib_cells $nand2_cell] area] # ํ˜„์žฌ ๋””์ž์ธ์˜ ์ „์ฒด ๋ฉด์  set total_area [get_attribute \ [current_design] area] # ๊ฒŒ์ดํŠธ ์นด์šดํŠธ ๊ณ„์‚ฐ set gate_count [expr {$total_area / $nand2_area}] # ๊ฒฐ๊ณผ ์ถœ๋ ฅ puts "============================================" puts "Gate Count Report" puts "============================================" puts [format "NAND2 Area: %.4f" $nand2_area] puts [format "Total Area: %.4f" $total_area] puts [format "Gate Count: %.0f gates" $gate_count] puts [format " %.2f K gates" \ [expr {$gate_count / 1000.0}]] puts "============================================" return $gate_count } # ์‚ฌ์šฉ๋ฒ• calc_gate_count

๐Ÿ’พ 5. SRAM ๋ฉด์  ์ถ”์ •

SRAM์˜ ๋ฉด์ ์„ ์ถ”์ •ํ•  ๋•Œ๋Š” ๋ฉ”๋ชจ๋ฆฌ ์…€๊ณผ ์ฃผ๋ณ€ ํšŒ๋กœ๋ฅผ ๋ชจ๋‘ ๊ณ ๋ คํ•ด์•ผ ํ•ฉ๋‹ˆ๋‹ค.

SRAM Gate Count ๊ณต์‹

SRAM Gates = 2A × W × (4~6)
A = Address bits, W = Word size, 4~6 = Gates per bit

Gates per Bit ์ดํ•ดํ•˜๊ธฐ

๊ตฌ์„ฑ ์š”์†Œ ๊ฒŒ์ดํŠธ ๋น„์šฉ ์„ค๋ช…
6T SRAM Cell ~1.5 gates/bit 6 ํŠธ๋žœ์ง€์Šคํ„ฐ / 4T per NAND2
Address Decoder ~0.5 gates/bit Word line ์„ ํƒ ๋กœ์ง
Sense Amplifier ~1.0 gates/bit ์ฝ๊ธฐ ์‹œ ์ „์•• ๊ฐ์ง€
Write Driver ~0.5 gates/bit ์“ฐ๊ธฐ ์‹œ ์ „์•• ๊ตฌ๋™
Control Logic ~0.5 gates/bit R/W ์ œ์–ด, ํƒ€์ด๋ฐ
ํ•ฉ๊ณ„ 4~6 gates/bit ์ฃผ๋ณ€ ํšŒ๋กœ ํฌํ•จ

SRAM ๊ณ„์‚ฐ ์˜ˆ์ œ

๐Ÿ“Š SRAM Gate Count ๊ณ„์‚ฐ (32KB SRAM)
Address bits (A) = 13 (8K words)
Word size (W) = 32 bits
Total bits = 2¹³ × 32 = 262,144 bits (32KB)
Gates per bit = 5 (์ค‘๊ฐ„๊ฐ’)
Gate Count = 262,144 × 5 = 1,310,720 gates (1.3M gates)

SRAM ํฌ๊ธฐ๋ณ„ ๊ฒŒ์ดํŠธ ์นด์šดํŠธ ๋ ˆํผ๋Ÿฐ์Šค

SRAM ํฌ๊ธฐ ๊ตฌ์„ฑ Total Bits Gate Count (5x)
1 KB 256 × 32 8,192 ~41K gates
4 KB 1K × 32 32,768 ~164K gates
16 KB 4K × 32 131,072 ~655K gates
32 KB 8K × 32 262,144 ~1.3M gates
64 KB 16K × 32 524,288 ~2.6M gates
128 KB 32K × 32 1,048,576 ~5.2M gates

๐Ÿ“ 6. ๋ ˆ์ง€์Šคํ„ฐ (Flip-Flop) ๋ฉด์ 

๋ ˆ์ง€์Šคํ„ฐ๋Š” Flip-Flop์œผ๋กœ ๊ตฌ์„ฑ๋˜๋ฉฐ, SRAM๋ณด๋‹ค ๋น„ํŠธ๋‹น ๊ฒŒ์ดํŠธ ๋น„์šฉ์ด ๋†’์Šต๋‹ˆ๋‹ค.

Flip-Flop Gate Count

Register Gates = N × (6~10)
N = Bit width, 6~10 = Gates per Flip-Flop
FF ํƒ€์ž… Gates/bit ํŠน์ง•
Basic DFF 6~8 ๊ธฐ๋ณธ D Flip-Flop
DFF + Reset 7~9 ๋น„๋™๊ธฐ/๋™๊ธฐ ๋ฆฌ์…‹ ํฌํ•จ
DFF + Scan 8~10 ์Šค์บ” ์ฒด์ธ MUX ํฌํ•จ
DFF + Clock Gate 8~10 ๋กœ์ปฌ ํด๋Ÿญ ๊ฒŒ์ดํŒ… ํฌํ•จ

๐Ÿ’พ SRAM (4~6 gates/bit)

• ๋ฐ€๋„๊ฐ€ ๋†’์Œ (์ž‘์€ ๋ฉด์ )
• ๋Œ€์šฉ๋Ÿ‰ ์ €์žฅ์— ์ ํ•ฉ
• ์ฝ๊ธฐ ์ง€์—ฐ์ด ์žˆ์Œ
• Memory Compiler ํ•„์š”

๐Ÿ“ Register (6~10 gates/bit)

• ๋ฐ€๋„๊ฐ€ ๋‚ฎ์Œ (ํฐ ๋ฉด์ )
• ์†Œ์šฉ๋Ÿ‰, ๋น ๋ฅธ ์ ‘๊ทผ์— ์ ํ•ฉ
• ์ฆ‰์‹œ ์ฝ๊ธฐ/์“ฐ๊ธฐ
• ํ•ฉ์„ฑ์œผ๋กœ ์ž๋™ ์ƒ์„ฑ

๐Ÿ“š 7. ๋ฉ”๋ชจ๋ฆฌ ํƒ€์ž…๋ณ„ ๋น„๊ต

SoC์—์„œ ์‚ฌ์šฉ๋˜๋Š” ๋‹ค์–‘ํ•œ ๋ฉ”๋ชจ๋ฆฌ ํƒ€์ž…์˜ ๋ฉด์  ํšจ์œจ์„ ๋น„๊ตํ•ฉ๋‹ˆ๋‹ค.

๋ฉ”๋ชจ๋ฆฌ ํƒ€์ž… Gates/bit ์šฉ๋„ ๊ตฌํ˜„ ๋ฐฉ๋ฒ•
6T SRAM 4~6 ์บ์‹œ, ๋Œ€์šฉ๋Ÿ‰ ๋ฒ„ํผ Memory Compiler
8T SRAM 5~7 ๋“€์–ผ ํฌํŠธ, ์ €์ „์•• Memory Compiler
Register File 8~12 CPU ๋ ˆ์ง€์Šคํ„ฐ, ์ž‘์€ RF Memory Compiler
Standard Reg 6~10 ์ปจํŠธ๋กค ๋ ˆ์ง€์Šคํ„ฐ ํ•ฉ์„ฑ
Latch 3~5 ๋ ˆ๋ฒจ ์„ผ์‹œํ‹ฐ๋ธŒ ์ €์žฅ ํ•ฉ์„ฑ
ROM 1~2 ๋ถ€ํŠธ ์ฝ”๋“œ, LUT Memory Compiler

์šฉ๋Ÿ‰๋ณ„ ์ตœ์  ์„ ํƒ ๊ฐ€์ด๋“œ

๐Ÿ“‹ ๋ฉ”๋ชจ๋ฆฌ ํƒ€์ž… ์„ ํƒ ๊ธฐ์ค€

~64 bits: Standard Register (ํ•ฉ์„ฑ) ✅
64~512 bits: Register File ๊ณ ๋ ค, ์ ‘๊ทผ ๋นˆ๋„์— ๋”ฐ๋ผ ๊ฒฐ์ •
512 bits ~ 2KB: Register File ๋˜๋Š” Small SRAM
2KB ์ด์ƒ: SRAM (Memory Compiler) ✅

๐Ÿ’ก ๊ฒฝ๊ณ„ ์˜์—ญ์—์„œ๋Š” ๋ฉด์ ๋ฟ ์•„๋‹ˆ๋ผ ํƒ€์ด๋ฐ๊ณผ ์ „๋ ฅ๋„ ํ•จ๊ป˜ ๊ณ ๋ คํ•˜์„ธ์š”.

๐Ÿญ 8. Memory Compiler vs ํ•ฉ์„ฑ ๋ฉ”๋ชจ๋ฆฌ

๋ฉ”๋ชจ๋ฆฌ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋‘ ๊ฐ€์ง€ ๋ฐฉ๋ฒ•์˜ ์ฐจ์ด๋ฅผ ์ดํ•ดํ•˜๋Š” ๊ฒƒ์ด ์ค‘์š”ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿญ Memory Compiler

• ํŒŒ์šด๋“œ๋ฆฌ ์ œ๊ณต ์ „์šฉ ํˆด
• ์ตœ์ ํ™”๋œ ๋ ˆ์ด์•„์›ƒ
• ์ •ํ™•ํ•œ ํƒ€์ด๋ฐ/์ „๋ ฅ ๋ชจ๋ธ
• Hard Macro๋กœ ์ƒ์„ฑ
• ๋ฉด์  ํšจ์œจ ์ตœ๊ณ 
• ์„ค์ • ๋ณ€๊ฒฝ ์‹œ ์žฌ์ƒ์„ฑ ํ•„์š”

⚙️ ํ•ฉ์„ฑ ๋ฉ”๋ชจ๋ฆฌ

• RTL๋กœ ์ž‘์„ฑ, DC๊ฐ€ ํ•ฉ์„ฑ
• ํ‘œ์ค€ ์…€๋กœ ๊ตฌํ˜„
• ์œ ์—ฐํ•œ ๊ตฌ์„ฑ ๋ณ€๊ฒฝ
• ๋ฉด์  ํšจ์œจ ๋‚ฎ์Œ
• ํƒ€์ด๋ฐ ์˜ˆ์ธก ์šฉ์ด
• ์†Œ์šฉ๋Ÿ‰์— ์ ํ•ฉ

Memory Compiler ์ถœ๋ ฅ ์˜ˆ์‹œ

๐Ÿ“„ Memory Compiler ์ƒ์„ฑ ํŒŒ์ผ
# 32KB SRAM (8192 x 32) ์ƒ์„ฑ ์‹œ ์ถœ๋ ฅ ํŒŒ์ผ sram_8192x32/ ├── sram_8192x32.v # Verilog behavioral model ├── sram_8192x32.lib # Liberty timing model ├── sram_8192x32_tt.lib # Typical corner ├── sram_8192x32_ss.lib # Slow corner ├── sram_8192x32_ff.lib # Fast corner ├── sram_8192x32.lef # Abstract layout (P&R) ├── sram_8192x32.gds # Full layout (Tapeout) └── sram_8192x32.spi # SPICE netlist # Liberty ํŒŒ์ผ ๋‚ด ๋ฉด์  ์ •๋ณด cell (sram_8192x32) { area : 45678.123; # ์‹ค์ œ ๋ฉด์  (ฮผm²) ... }

๐ŸŽฏ 9. ๋ฉด์  ์ตœ์ ํ™” ํŒ

๐Ÿ’ก ๋ฒ ํ…Œ๋ž‘ ์—”์ง€๋‹ˆ์–ด์˜ ๋ฉด์  ์ตœ์ ํ™” ๋…ธํ•˜์šฐ

1. ์ ์ ˆํ•œ ๋ฉ”๋ชจ๋ฆฌ ํƒ€์ž… ์„ ํƒ
• 256 bits ์ดํ•˜: Register ์‚ฌ์šฉ
• 256 bits ~ 2KB: Register File ๊ฒ€ํ† 
• 2KB ์ด์ƒ: SRAM ํ•„์ˆ˜

2. SRAM ๋ฑ…ํ‚น(Banking)
• ํฐ SRAM์„ ์ž‘์€ ๋ฑ…ํฌ๋กœ ๋ถ„ํ• 
• ์‚ฌ์šฉํ•˜์ง€ ์•Š๋Š” ๋ฑ…ํฌ๋Š” ์ „๋ ฅ ์ฐจ๋‹จ
• ํƒ€์ด๋ฐ ๊ฐœ์„  ํšจ๊ณผ

3. ํ•ฉ์„ฑ ์ตœ์ ํ™” ์˜ต์…˜
compile_ultra -area: ๋ฉด์  ์šฐ์„  ์ตœ์ ํ™”
set_max_area 0: ์ตœ๋Œ€ ๋ฉด์  ์ œ์•ฝ

4. ๋ถˆํ•„์š”ํ•œ ๋ ˆ์ง€์Šคํ„ฐ ์ œ๊ฑฐ
• ํŒŒ์ดํ”„๋ผ์ธ ๊นŠ์ด ๊ฒ€ํ† 
• ์ค‘๋ณต ๋ ˆ์ง€์Šคํ„ฐ ์ œ๊ฑฐ
• ๋ฆฌํƒ€์ด๋ฐ(Retiming) ํ™œ์šฉ

ํ•ฉ์„ฑ ๋ฉด์  ์ตœ์ ํ™” ์Šคํฌ๋ฆฝํŠธ

๐Ÿ“„ TCL: ๋ฉด์  ์ตœ์ ํ™” ํ•ฉ์„ฑ ์Šคํฌ๋ฆฝํŠธ
# ============================================== # Area-Optimized Synthesis Script # ============================================== # ๋ฉด์  ์ œ์•ฝ ์„ค์ • (๊ฐ€๋Šฅํ•œ ์ตœ์†Œํ™”) set_max_area 0 # ํด๋Ÿญ ๊ฒŒ์ดํŒ… ํ™œ์„ฑํ™” (๋ฉด์  ์•ฝ๊ฐ„ ์ฆ๊ฐ€, ์ „๋ ฅ ๋Œ€ํญ ๊ฐ์†Œ) set_clock_gating_style -sequential_cell latch \ -positive_edge_logic {integrated} # ๋ฉด์  ์šฐ์„  ์ปดํŒŒ์ผ compile_ultra -gate_clock -area # ์ถ”๊ฐ€ ๋ฉด์  ์ตœ์ ํ™” optimize_netlist -area # ๊ฒฐ๊ณผ ํ™•์ธ report_area -hierarchy report_reference -hierarchy

๐Ÿ“– 10. ์‹ค์ „ ๋ ˆํผ๋Ÿฐ์Šค ํ…Œ์ด๋ธ”

SoC ์„ค๊ณ„ ์‹œ ๋น ๋ฅด๊ฒŒ ์ฐธ๊ณ ํ•  ์ˆ˜ ์žˆ๋Š” ๋ฉด์  ์ถ”์ • ํ…Œ์ด๋ธ”์ž…๋‹ˆ๋‹ค.

Quick Reference: ๊ฒŒ์ดํŠธ ์นด์šดํŠธ

์ปดํฌ๋„ŒํŠธ Gates/unit ์˜ˆ์‹œ
NAND2 1 ๊ธฐ์ค€
NOR2 1 -
INV 0.5 -
XOR2 2~3 -
MUX2 3~4 -
D Flip-Flop 6~10 32-bit reg: ~256 gates
Full Adder 7~9 32-bit adder: ~250 gates
32-bit Multiplier ~5,000 Array ๋ฐฉ์‹
SRAM bit 4~6 1KB: ~41K gates

IP ๋ธ”๋ก๋ณ„ ๊ฒŒ์ดํŠธ ์นด์šดํŠธ ์ฐธ๊ณ 

IP ๋ธ”๋ก Gate Count ๋น„๊ณ 
UART 5K ~ 15K FIFO ํฌ๊ธฐ์— ๋”ฐ๋ผ
SPI Master 3K ~ 10K -
I2C Controller 5K ~ 15K -
GPIO (32-bit) 3K ~ 8K ๊ธฐ๋Šฅ์— ๋”ฐ๋ผ
Timer (32-bit) 2K ~ 5K -
DMA Controller 30K ~ 100K ์ฑ„๋„ ์ˆ˜์— ๋”ฐ๋ผ
Interrupt Controller 10K ~ 30K ์ธํ„ฐ๋ŸฝํŠธ ์ˆ˜์— ๋”ฐ๋ผ
AHB/APB Bridge 5K ~ 20K -
Cortex-M0 ~12K ์ฝ”์–ด๋งŒ (๋ฉ”๋ชจ๋ฆฌ ์ œ์™ธ)
Cortex-M3 ~40K ์ฝ”์–ด๋งŒ (๋ฉ”๋ชจ๋ฆฌ ์ œ์™ธ)
Cortex-M4 ~50K FPU ๋ฏธํฌํ•จ
RISC-V (RV32I) 15K ~ 25K ๊ธฐ๋ณธ ์ฝ”์–ด

๐Ÿ“Œ ํ•ต์‹ฌ ์š”์•ฝ

๐Ÿ”ข Gate Count ๊ณ„์‚ฐ

๊ณต์‹: Gate Count = Total Area / NAND2 Area
NAND2 ๋ฉด์ : ๊ณต์ •๋ณ„ ์ƒ์ด (NDA), ๋ผ์ด๋ธŒ๋Ÿฌ๋ฆฌ์—์„œ ํ™•์ธ
ํ•ฉ์„ฑ ๋ฆฌํฌํŠธ: Total cell area ๊ฐ’ ์‚ฌ์šฉ

๐Ÿ’พ ๋ฉ”๋ชจ๋ฆฌ ๋ฉด์ 

SRAM: 4~6 gates/bit (์ฃผ๋ณ€ ํšŒ๋กœ ํฌํ•จ)
Register: 6~10 gates/bit (FF ํƒ€์ž…์— ๋”ฐ๋ผ)
์„ ํƒ ๊ธฐ์ค€: 2KB ์ด์ƒ → SRAM, ์ดํ•˜ → Register

๐ŸŽฏ ์ตœ์ ํ™”

• ์ ์ ˆํ•œ ๋ฉ”๋ชจ๋ฆฌ ํƒ€์ž… ์„ ํƒ์ด ๊ฐ€์žฅ ์ค‘์š”
• SRAM Banking์œผ๋กœ ์ „๋ ฅ/ํƒ€์ด๋ฐ ๊ฐœ์„ 
compile_ultra -area ์˜ต์…˜ ํ™œ์šฉ

๐Ÿ“š ์ฐธ๊ณ  ์ž๋ฃŒ

• Synopsys Design Compiler User Guide
• ํŒŒ์šด๋“œ๋ฆฌ๋ณ„ Memory Compiler User Guide
• Standard Cell Library Datasheet
• ARM Cortex-M Technical Reference Manual

๋Œ“๊ธ€

์ด ๋ธ”๋กœ๊ทธ์˜ ์ธ๊ธฐ ๊ฒŒ์‹œ๋ฌผ

๐Ÿ“š SDC ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค ์‹œ๋ฆฌ์ฆˆ | Chapter 1

๐Ÿ“š SDC ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค ์‹œ๋ฆฌ์ฆˆ | Chapter 2

๐Ÿ“š SDC ๋งˆ์Šคํ„ฐ ํด๋ž˜์Šค ์‹œ๋ฆฌ์ฆˆ | Chapter 3