๐ SoC ๊ฒ์ดํธ ์นด์ดํธ ์๋ฒฝ ๊ฐ์ด๋
๐ SoC ๊ฒ์ดํธ ์นด์ดํธ ์๋ฒฝ ๊ฐ์ด๋
SRAM, ๋ ์ง์คํฐ ๋ฉด์ ์ถ์ ์ ๋ชจ๋ ๊ฒ — ์ค๋ฌด ์์ง๋์ด๋ฅผ ์ํ ๋ ํผ๋ฐ์ค
SoC ์ค๊ณ ์ด๊ธฐ ๋จ๊ณ์์ ๋ฉด์ ์ ์ถ์ ํ๋ ๊ฒ์ ํ๋ก์ ํธ ์ฑ๊ณต์ ํต์ฌ์ ๋๋ค. Gate Count๋ ์ค๊ณ ๋ณต์ก๋๋ฅผ ์ ๋ํํ๋ ํ์ค ์งํ๋ก, ๊ธฐ์ ๋ ธ๋์ ๋ ๋ฆฝ์ ์ธ ๋น๊ต๋ฅผ ๊ฐ๋ฅํ๊ฒ ํฉ๋๋ค. ์ด ๊ธ์์๋ ํฉ์ฑ ๋ฆฌํฌํธ์์ ๊ฒ์ดํธ ์นด์ดํธ๋ฅผ ๊ณ์ฐํ๋ ๋ฐฉ๋ฒ๋ถํฐ SRAM, ๋ ์ง์คํฐ์ ๋ฉด์ ์ถ์ ๊น์ง ์ค๋ฌด์์ ๋ฐ๋ก ํ์ฉํ ์ ์๋ ๋ด์ฉ์ ๋ค๋ฃน๋๋ค.
๐ฏ 1. Gate Count๋?
Gate Count๋ ๋์งํธ ํ๋ก์ ๋ณต์ก๋๋ฅผ 2-input NAND ๊ฒ์ดํธ ๊ธฐ์ค์ผ๋ก ์ ๋ํํ ์์น์ ๋๋ค.
• ๋ฉด์ ์ถ์ : ์ค๋ฆฌ์ฝ ๋ค์ด ํฌ๊ธฐ ์์ธก, ํ๋ก์ดํ๋๋
• ๊ธฐ์ ๋
๋ฆฝ์ ๋น๊ต: 28nm vs 7nm ๋ฑ ๊ณต์ ๊ฐ ๋ณต์ก๋ ๋น๊ต
• ํ๋ก์ ํธ ๊ด๋ฆฌ: ๊ฐ๋ฐ ์ผ์ , ๋น์ฉ ์ถ์ ์ ๊ธฐ์ด ๋ฐ์ดํฐ
• ๋ผ์ด์ ์ค ๋น์ฉ: IP ๋ผ์ด์ ์ค๊ฐ ๊ฒ์ดํธ ์ ๊ธฐ์ค์ธ ๊ฒฝ์ฐ
์ NAND2๋ฅผ ๊ธฐ์ค์ผ๋ก ํ๋๊ฐ?
NAND ๊ฒ์ดํธ๋ Universal Gate๋ก, ๋ชจ๋ ๋ ผ๋ฆฌ ํจ์๋ฅผ ๊ตฌํํ ์ ์์ต๋๋ค. 2-input NAND๋ ๊ฐ์ฅ ๊ธฐ๋ณธ์ ์ธ ์ ๋ก, ํธ๋์ง์คํฐ 4๊ฐ๋ก ๊ตฌ์ฑ๋ฉ๋๋ค.
๐ข 2. ๊ฒ์ดํธ ์นด์ดํธ ๊ณ์ฐ๋ฒ
์ค๋ฌด์์ ๊ฒ์ดํธ ์นด์ดํธ๋ฅผ ๊ณ์ฐํ๋ ํ์ค ๋ฐฉ๋ฒ์ ๋๋ค.
Total Area๋ ํฉ์ฑ ํด(Design Compiler)์ด ๋ฆฌํฌํธํ๋ ๋ฉด์ ์ด๊ณ ,
NAND2 Area๋ ํ๊ฒ ๊ณต์ ๋ผ์ด๋ธ๋ฌ๋ฆฌ์ NAND2 ์
๋ฉด์ ์
๋๋ค.
NAND2 ๋ฉด์ ์ NDA(๋น๋ฐ์ ์ง๊ณ์ฝ) ๋์์ด๋ฏ๋ก ์ ํํ ๊ฐ์ ๊ณต๊ฐ๋์ง ์์ต๋๋ค.
๊ณ์ฐ ์์
๐ 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 ๋ฉด์ ํ์ธํ๊ธฐ
๐ 4. ํฉ์ฑ ๋ฆฌํฌํธ ํด์
Design Compiler์ ๋ฉด์ ๋ฆฌํฌํธ๋ฅผ ์ ํํ ์ฝ๊ณ ํด์ํ๋ ๋ฐฉ๋ฒ์ ๋๋ค.
report_area ๊ฒฐ๊ณผ ์ฝ๊ธฐ
๋ฉด์ ํญ๋ชฉ ์ค๋ช
| ํญ๋ชฉ | ์ค๋ช | ํฌํจ ๋ด์ฉ |
|---|---|---|
| Combinational area | ์กฐํฉ ๋ ผ๋ฆฌ ๋ฉด์ | NAND, NOR, XOR, MUX ๋ฑ |
| Buf/Inv area | ๋ฒํผ/์ธ๋ฒํฐ ๋ฉด์ | Combinational์ ํฌํจ |
| Noncombinational area | ์์ฐจ ๋ ผ๋ฆฌ ๋ฉด์ | Flip-Flop, Latch, ๋ฉ๋ชจ๋ฆฌ |
| Macro/Black Box | ๋งคํฌ๋ก ์ ๋ฉด์ | ํ๋ ๋งคํฌ๋ก (SRAM ๋ฑ) |
| Total cell area | ์ ์ฒด ์ ๋ฉด์ | ๊ฒ์ดํธ ์นด์ดํธ ๊ณ์ฐ์ ์ฌ์ฉ |
๊ฒ์ดํธ ์นด์ดํธ ์๋ ๊ณ์ฐ ์คํฌ๋ฆฝํธ
๐พ 5. SRAM ๋ฉด์ ์ถ์
SRAM์ ๋ฉด์ ์ ์ถ์ ํ ๋๋ ๋ฉ๋ชจ๋ฆฌ ์ ๊ณผ ์ฃผ๋ณ ํ๋ก๋ฅผ ๋ชจ๋ ๊ณ ๋ คํด์ผ ํฉ๋๋ค.
SRAM Gate Count ๊ณต์
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 ํฌ๊ธฐ๋ณ ๊ฒ์ดํธ ์นด์ดํธ ๋ ํผ๋ฐ์ค
| 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
| 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 ์ถ๋ ฅ ์์
๐ฏ 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) ํ์ฉ
ํฉ์ฑ ๋ฉด์ ์ต์ ํ ์คํฌ๋ฆฝํธ
๐ 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
๋๊ธ
๋๊ธ ์ฐ๊ธฐ