๐ AXI4 ํ๋กํ ์ฝ ์๋ฒฝ ๊ฐ์ด๋, ๊ฐ๋ ๊ณผ ์ ํธ๋ถํฐ VIP ์ค๊ณ๊น์ง
๐ AXI4 ํ๋กํ ์ฝ ์๋ฒฝ ๊ฐ์ด๋
SoC/VIP ์์ง๋์ด๋ฅผ ์ํ AMBA AXI4 ์ฌ์ธต ๋ถ์
AXI4 (Advanced eXtensible Interface 4)๋ ARM AMBA ํ์ค์ ํต์ฌ์ผ๋ก, ํ๋ SoC ์ค๊ณ์์ ๊ณ ์ฑ๋ฅ ์จ์นฉ ํต์ ์ ๋ด๋นํฉ๋๋ค. ์ด ๊ฐ์ด๋์์๋ 5๊ฐ ์ฑ๋ ๊ตฌ์กฐ, ํธ๋์ ฐ์ดํฌ ๊ท์น, Burst ํธ๋์ญ์ , ๊ทธ๋ฆฌ๊ณ VIP ๊ฒ์ฆ ํฌ์ธํธ๊น์ง ์์ธํ ๋ค๋ฃน๋๋ค.
๐ 1. AXI4 ๊ฐ์
AXI4๋ ARM์ AMBA (Advanced Microcontroller Bus Architecture) ํ์ค ์ค ํ๋๋ก, ๊ณ ๋์ญํญ·์ ์ง์ฐ ํต์ ์ ์ํด ์ค๊ณ๋์์ต๋๋ค.
• ๋ถ๋ฆฌ๋ ์ฃผ์/๋ฐ์ดํฐ ์ฑ๋: ์ฝ๊ธฐ/์ฐ๊ธฐ ๋
๋ฆฝ์ ์ํ
• ํ์ดํ๋ผ์ธ ์ง์: ์ฌ๋ฌ Outstanding ํธ๋์ญ์
๊ฐ๋ฅ
• Burst ์ ์ก: ์ต๋ 256 beat๊น์ง ์ฐ์ ์ ์ก
• Out-of-Order ์๋ฃ: ID ๊ธฐ๋ฐ ํธ๋์ญ์
๊ด๋ฆฌ
• ์ ์ฐํ ๋ฐ์ดํฐ ํญ: 32~1024 bit ์ง์
| ํญ๋ชฉ | AXI4 ์ฌ์ |
|---|---|
| ๋ฐ์ดํฐ ํญ | 32, 64, 128, 256, 512, 1024 bit |
| ์ฃผ์ ํญ | 32 ~ 64 bit (์ต๋ 63 bit) |
| ID ํญ | ์ต๋ 32 bit (์ค๊ณ ์ ๊ฒฐ์ ) |
| Burst ๊ธธ์ด | 1 ~ 256 beat (AxLEN + 1) |
| Burst ํ์ | FIXED, INCR, WRAP |
๐ 2. 5๊ฐ ์ฑ๋ ๊ตฌ์กฐ
AXI4๋ 5๊ฐ์ ๋ ๋ฆฝ์ ์ธ ์ฑ๋๋ก ๊ตฌ์ฑ๋ฉ๋๋ค. ๊ฐ ์ฑ๋์ VALID/READY ํธ๋์ ฐ์ดํฌ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
Read AR Channel
๋ฐฉํฅ: Master → Slave
์ฉ๋: ์ฝ๊ธฐ ์ฃผ์ ๋ฐ ์ ์ด ์ ๋ณด ์ ์ก
์ฃผ์ ์ ํธ: ARADDR, ARLEN, ARSIZE, ARBURST
Read R Channel
๋ฐฉํฅ: Slave → Master
์ฉ๋: ์ฝ๊ธฐ ๋ฐ์ดํฐ ๋ฐ ์๋ต ์ ์ก
์ฃผ์ ์ ํธ: RDATA, RRESP, RLAST
Write AW Channel
๋ฐฉํฅ: Master → Slave
์ฉ๋: ์ฐ๊ธฐ ์ฃผ์ ๋ฐ ์ ์ด ์ ๋ณด ์ ์ก
์ฃผ์ ์ ํธ: AWADDR, AWLEN, AWSIZE, AWBURST
Write W Channel
๋ฐฉํฅ: Master → Slave
์ฉ๋: ์ฐ๊ธฐ ๋ฐ์ดํฐ ์ ์ก
์ฃผ์ ์ ํธ: WDATA, WSTRB, WLAST
Write B Channel
๋ฐฉํฅ: Slave → Master
์ฉ๋: ์ฐ๊ธฐ ์๋ฃ ์๋ต
์ฃผ์ ์ ํธ: BRESP, BID
๐ค 3. VALID/READY ํธ๋์ ฐ์ดํฌ
AXI4์ ๋ชจ๋ ์ฑ๋์ VALID/READY ํธ๋์ ฐ์ดํฌ๋ก ๋ฐ์ดํฐ๋ฅผ ์ ์กํฉ๋๋ค.
- 1 VALID๋ READY์ ๋ ๋ฆฝ์ : Source๋ READY๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ VALID๋ฅผ assertํ ์ ์์
- 2 VALID assert ํ ์ ์ง: VALID๊ฐ assert๋๋ฉด ํธ๋์ ฐ์ดํฌ ์๋ฃ๊น์ง deassert ๊ธ์ง
- 3 READY๋ VALID ๊ธฐ๋ค๋ฆด ์ ์์: Destination์ VALID๋ฅผ ๋ณด๊ณ READY๋ฅผ ๊ฒฐ์ ํ ์ ์์
- 4 ์ ์ก ์๋ฃ: VALID && READY๊ฐ ๋์์ HIGH์ธ ํด๋ญ rising edge์์ ์ ์ก ๋ฐ์
- 5 ๋ฐ์ดํฐ ์์ ์ฑ: VALID๊ฐ HIGH์ธ ๋์ ๋ชจ๋ ์ ๋ณด ์ ํธ๋ ์์ ์ ์ด์ด์ผ ํจ
Master: VALID๋ READY๋ฅผ ๊ธฐ๋ค๋ฆฌ์ง ์๊ณ assertํด์ผ ํจ (๊ท์น 1)
Slave: READY๋ฅผ VALID ์ ์ assertํ๊ฑฐ๋, ์ผ์ ์๊ฐ ๋ด ๋ฐ๋์ assertํด์ผ ํจ
๋ ์ชฝ ๋ชจ๋ ์๋๋ฐฉ์ ๊ธฐ๋ค๋ฆฌ๋ฉด deadlock์ด ๋ฐ์ํฉ๋๋ค.
๐ก 4. ์ฑ๋๋ณ ์ ํธ ๋ชฉ๋ก
Global Signals
| ์ ํธ | ํญ | ์ค๋ช |
|---|---|---|
ACLK |
1 | ๊ธ๋ก๋ฒ ํด๋ญ |
ARESETn |
1 | ์กํฐ๋ธ LOW ๋ฆฌ์ |
Read Address Channel (AR)
| ์ ํธ | ํญ | ์ค๋ช |
|---|---|---|
ARVALID |
1 | ์ฃผ์ ์ ํจ ํ์ |
ARREADY |
1 | Slave ์์ ์ค๋น ํ์ |
ARADDR |
32-64 | ์ฝ๊ธฐ ์์ ์ฃผ์ |
ARLEN |
8 | Burst ๊ธธ์ด - 1 (0~255 → 1~256 beat) |
ARSIZE |
3 | Beat๋น ๋ฐ์ดํธ ์ (2^ARSIZE) |
ARBURST |
2 | Burst ํ์ (FIXED/INCR/WRAP) |
ARID |
๊ฐ๋ณ | ํธ๋์ญ์ ID |
ARLOCK |
1 | Exclusive access (0: Normal, 1: Exclusive) |
ARCACHE |
4 | ์บ์ ์์ฑ |
ARPROT |
3 | ๋ณดํธ ํ์ (Privileged/Secure/Instruction) |
ARQOS |
4 | QoS (Quality of Service) |
Read Data Channel (R)
| ์ ํธ | ํญ | ์ค๋ช |
|---|---|---|
RVALID |
1 | ๋ฐ์ดํฐ ์ ํจ |
RREADY |
1 | Master ์์ ์ค๋น |
RDATA |
32-1024 | ์ฝ๊ธฐ ๋ฐ์ดํฐ |
RRESP |
2 | ์๋ต (OKAY/EXOKAY/SLVERR/DECERR) |
RLAST |
1 | Burst์ ๋ง์ง๋ง beat ํ์ |
RID |
๊ฐ๋ณ | ํธ๋์ญ์ ID (AR์ ARID์ ๋งค์นญ) |
Write Address Channel (AW)
AR ์ฑ๋๊ณผ ๋์ผํ ๊ตฌ์กฐ (AW prefix ์ฌ์ฉ)
Write Data Channel (W)
| ์ ํธ | ํญ | ์ค๋ช |
|---|---|---|
WVALID |
1 | ๋ฐ์ดํฐ ์ ํจ |
WREADY |
1 | Slave ์์ ์ค๋น |
WDATA |
32-1024 | ์ฐ๊ธฐ ๋ฐ์ดํฐ |
WSTRB |
DATA/8 | ๋ฐ์ดํธ ์คํธ๋ก๋ธ (์ ํจ ๋ฐ์ดํธ ํ์) |
WLAST |
1 | Burst์ ๋ง์ง๋ง beat ํ์ |
Write Response Channel (B)
| ์ ํธ | ํญ | ์ค๋ช |
|---|---|---|
BVALID |
1 | ์๋ต ์ ํจ |
BREADY |
1 | Master ์์ ์ค๋น |
BRESP |
2 | ์ฐ๊ธฐ ์๋ต |
BID |
๊ฐ๋ณ | ํธ๋์ญ์ ID |
| RESP | ๊ฐ | ์๋ฏธ |
|---|---|---|
OKAY |
2'b00 | ์ ์ ์๋ฃ |
EXOKAY |
2'b01 | Exclusive access ์ฑ๊ณต |
SLVERR |
2'b10 | Slave ์๋ฌ |
DECERR |
2'b11 | Decode ์๋ฌ (์ฃผ์ ๋ฒ์ ์ธ) |
๐ฆ 5. Burst ํธ๋์ญ์
AXI4๋ ์ฐ์๋ ๋ฐ์ดํฐ ์ ์ก์ ์ํด Burst๋ฅผ ์ง์ํฉ๋๋ค. ์ฃผ์ ํ ๋ฒ ์ ์ก์ผ๋ก ์ต๋ 256 beat๊น์ง ๋ฐ์ดํฐ ์ ์ก์ด ๊ฐ๋ฅํฉ๋๋ค.
Burst ํ๋ผ๋ฏธํฐ
| ํ๋ผ๋ฏธํฐ | ์ ํธ | ๋ฒ์ | ์ค๋ช |
|---|---|---|---|
| Length | AxLEN |
0~255 | Burst beat ์ = AxLEN + 1 |
| Size | AxSIZE |
0~7 | Beat๋น ๋ฐ์ดํธ = 2^AxSIZE |
| Type | AxBURST |
0~2 | FIXED(0), INCR(1), WRAP(2) |
Burst ํ์
๐น FIXED (2'b00)
๋ชจ๋ beat๊ฐ ๋์ผํ ์ฃผ์๋ก ์ ์ก
์ฉ๋: FIFO ์ ๊ทผ
์: ์ฃผ์ 0x1000์ผ๋ก 4 beat
→ 0x1000, 0x1000, 0x1000, 0x1000
๐ธ INCR (2'b01)
beat๋ง๋ค ์ฃผ์๊ฐ ์ฆ๊ฐ
์ฉ๋: ์์ฐจ ๋ฉ๋ชจ๋ฆฌ ์ ๊ทผ
์: ์ฃผ์ 0x1000, SIZE=2 (4B)
→ 0x1000, 0x1004, 0x1008, 0x100C
๐ป WRAP (2'b10)
์ฃผ์๊ฐ ๊ฒฝ๊ณ์์ ๋ํ
์ฉ๋: ์บ์ ๋ผ์ธ ์ ๊ทผ
์ ์ฝ: LEN์ 2, 4, 8, 16๋ง ๊ฐ๋ฅ
Burst ์ฃผ์ ๊ณ์ฐ ์์
INCR Burst: ์์์ฃผ์ 0x04, SIZE=2 (4B), LEN=3 (4 beat)
WRAP Burst: ์์์ฃผ์ 0x04, SIZE=2 (4B), LEN=3 (4 beat, ๊ฒฝ๊ณ=16B)
๐ข 6. ํธ๋์ญ์ ์์ ๊ท์น
AXI4๋ Out-of-Order ์๋ต์ ์ง์ํ์ง๋ง, ํน์ ๊ท์น์ ๋ฐ๋ผ์ผ ํฉ๋๋ค.
- 1 ๋์ผ ID: ๊ฐ์ ID์ ํธ๋์ญ์ ์ ์์๋๋ก ์๋ตํด์ผ ํจ
- 2 ๋ค๋ฅธ ID: ๋ค๋ฅธ ID์ ํธ๋์ญ์ ์ ์์ ๋ฌด๊ดํ๊ฒ ์๋ต ๊ฐ๋ฅ
- 3 Write Response: B ์ฑ๋ ์๋ต์ ํด๋น W ์ฑ๋์ WLAST ์ดํ์๋ง ๊ฐ๋ฅ
- 4 Read Data: R ์ฑ๋ ๋ฐ์ดํฐ๋ AR ์ฑ๋์ ํธ๋์ ฐ์ดํฌ ์ดํ์๋ง ๊ฐ๋ฅ
AXI3: ๋ค๋ฅธ ID์ Write Data๋ฅผ interleave ๊ฐ๋ฅ (WID ์ ํธ ์ฌ์ฉ)
AXI4: Write Data interleaving ์ ๊ฑฐ๋จ (WID ์ ํธ ์์)
→ AXI4์์๋ AW ์์๋๋ก W ๋ฐ์ดํฐ๋ฅผ ๋ณด๋ด์ผ ํจ
๐ 7. Exclusive Access
Exclusive Access๋ ๋ฉํฐ ๋ง์คํฐ ํ๊ฒฝ์์ ์์์ (atomic) ์ฝ๊ธฐ-์์ -์ฐ๊ธฐ๋ฅผ ๊ตฌํํ๋ ๋ฉ์ปค๋์ฆ์ ๋๋ค.
• ๋์ผ ์ฃผ์/ํฌ๊ธฐ: Exclusive Write๋ Exclusive Read์ ๋์ผํ ์ฃผ์, ํฌ๊ธฐ์ฌ์ผ ํจ
• Monitor: Slave๋ Exclusive Monitor๋ฅผ ๊ตฌํํด์ผ ํจ
• ์คํจ ์: BRESP=OKAY ๋ฐํ, Master๋ ์ ์ฒด ์ํ์ค ์ฌ์๋
• ์ฑ๊ณต ์: BRESP=EXOKAY ๋ฐํ, ๋ฐ์ดํฐ ์ฐ๊ธฐ ์๋ฃ
๐ 8. AXI4 ๋ณํ ๋น๊ต
| ๊ธฐ๋ฅ | AXI4 (Full) | AXI4-Lite | AXI4-Stream |
|---|---|---|---|
| ์ฑ๋ ์ | 5๊ฐ (AR, R, AW, W, B) | 5๊ฐ (AR, R, AW, W, B) | 1๊ฐ (๋จ๋ฐฉํฅ) |
| Burst | 1~256 beat | 1 beat๋ง (Single) | ๋ฌด์ ํ (์ฐ์) |
| ๋ฐ์ดํฐ ํญ | 32~1024 bit | 32 ๋๋ 64 bit | ๊ฐ๋ณ |
| ID ์ง์ | ✓ Out-of-Order | ✗ | ✓ (์ ํ) |
| ์ฉ๋ | ๊ณ ์ฑ๋ฅ ๋ฉ๋ชจ๋ฆฌ, DMA | ๋ ์ง์คํฐ ์ ๊ทผ, ์ ์ ์ฃผ๋ณ์ฅ์น | ๋ฐ์ดํฐ ์คํธ๋ฆฌ๋ฐ, DSP |
| ๋ณต์ก๋ | ๋์ | ๋ฎ์ | ์ค๊ฐ |
• ์ฃผ์ ๊ฐ๋
์์ (๋ฐ์ดํฐ๋ง ์ ์ก)
• TVALID/TREADY ํธ๋์
ฐ์ดํฌ
• TLAST: ํจํท/ํ๋ ์ ๊ฒฝ๊ณ ํ์
• TKEEP/TSTRB: ์ ํจ ๋ฐ์ดํธ ํ์
• ์ฉ๋: ๋น๋์ค/์ค๋์ค ์คํธ๋ฆฌ๋ฐ, ๋คํธ์ํฌ ํจํท, FFT ๋ฑ
✅ 9. VIP ๊ฒ์ฆ ํฌ์ธํธ
AXI4 VIP ๊ฐ๋ฐ ๋ฐ ๊ฒ์ฆ ์ ํ์ธํด์ผ ํ ํต์ฌ ํฌ์ธํธ์ ๋๋ค.
❌ 10. ํํ ๊ตฌํ ์ค์
1. READY๋ฅผ ๊ธฐ๋ค๋ฆฌ๊ณ VALID๋ฅผ assert (→ Deadlock)
2. VALID HIGH ์ค ๋ฐ์ดํฐ ๋ณ๊ฒฝ
3. WLAST๋ฅผ ์๋ชป๋ beat์์ assert
4. 4KB ๊ฒฝ๊ณ crossing burst ๋ฐํ
5. AW/W ์ฑ๋ ์์ ๋ถ์ผ์น (AXI4์์๋ AW ์์๋๋ก W ์ ์ก ํ์)
1. READY๋ฅผ ์์ํ LOW๋ก ์ ์ง (→ Starvation)
2. ๋์ผ ID ์๋ต ์์ ์๋ฐ
3. RLAST ์์ด burst ์ข
๋ฃ
4. WLAST ์ ์ BRESP ์ ์ก
5. ์๋ชป๋ RID/BID ๋ฐํ
AXI4 burst๋ 4KB ๊ฒฝ๊ณ๋ฅผ crossingํ ์ ์์ต๋๋ค. ์ด๋ ๋ฉ๋ชจ๋ฆฌ ๋งต์ ํ์ด์ง ๊ฒฝ๊ณ๋ฅผ ๋ณดํธํ๊ธฐ ์ํ ๊ท์น์
๋๋ค.
์: ์์์ฃผ์ 0x0FF0, SIZE=4B, LEN=15 (64B ์ ์ก)
→ ์ข
๋ฃ์ฃผ์ 0x102F๋ก 4KB ๊ฒฝ๊ณ(0x1000) crossing! ํ๋กํ ์ฝ ์๋ฐ
๐ ํต์ฌ ์์ฝ
| ํญ๋ชฉ | ํต์ฌ ๋ด์ฉ |
|---|---|
| ์ฑ๋ | 5๊ฐ (AR, R, AW, W, B), ๋ ๋ฆฝ์ ํธ๋์ ฐ์ดํฌ |
| ํธ๋์ ฐ์ดํฌ | VALID && READY rising edge์์ ์ ์ก |
| Burst | FIXED, INCR, WRAP / ์ต๋ 256 beat |
| Ordering | ๋์ผ ID๋ ์์ ์ ์ง, ๋ค๋ฅธ ID๋ Out-of-Order ๊ฐ๋ฅ |
| ์ ์ฝ | 4KB ๊ฒฝ๊ณ crossing ๊ธ์ง, WRAP LEN ์ ํ |
VIP ๊ฐ๋ฐ์ ํ์ ์ฒดํฌ:
✓ VALID stability — assert ํ deassert ๊ธ์ง
✓ LAST ์ ํธ — burst beat ์์ ์ผ์น
✓ ID ordering — ๋์ผ ID ์์ ๋ณด์ฅ
• ARM IHI 0022H: AMBA AXI and ACE Protocol Specification
• ARM IHI 0051A: AMBA AXI4-Stream Protocol Specification
• Verification Academy: AXI4 Protocol Tutorial
๋๊ธ
๋๊ธ ์ฐ๊ธฐ