๐Ÿ”Œ AXI4 ํ”„๋กœํ† ์ฝœ ์™„๋ฒฝ ๊ฐ€์ด๋“œ, ๊ฐœ๋…๊ณผ ์‹ ํ˜ธ๋ถ€ํ„ฐ VIP ์„ค๊ณ„๊นŒ์ง€

AXI4 ํ”„๋กœํ† ์ฝœ ์™„๋ฒฝ ๊ฐ€์ด๋“œ: SoC/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) ํ‘œ์ค€ ์ค‘ ํ•˜๋‚˜๋กœ, ๊ณ ๋Œ€์—ญํญ·์ €์ง€์—ฐ ํ†ต์‹ ์„ ์œ„ํ•ด ์„ค๊ณ„๋˜์—ˆ์Šต๋‹ˆ๋‹ค.

๐Ÿ“Œ AXI4 ํ•ต์‹ฌ ํŠน์ง•

• ๋ถ„๋ฆฌ๋œ ์ฃผ์†Œ/๋ฐ์ดํ„ฐ ์ฑ„๋„: ์ฝ๊ธฐ/์“ฐ๊ธฐ ๋…๋ฆฝ์  ์ˆ˜ํ–‰
• ํŒŒ์ดํ”„๋ผ์ธ ์ง€์›: ์—ฌ๋Ÿฌ 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 ํ•ธ๋“œ์…ฐ์ดํฌ๋ฅผ ์‚ฌ์šฉํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š AXI4 ์ฑ„๋„ ๊ตฌ์กฐ ┌─────────────────────────────────────────────────┐ │ SLAVE │ │ │ ┌────────┐ AR Channel (Read Address) │ │ ══════════════════════════════════════════▶ │ │ │ │ R Channel (Read Data) │ │ ◀══════════════════════════════════════════ │ MASTER │ │ │ AW Channel (Write Address) │ │ ══════════════════════════════════════════▶ │ │ │ │ W Channel (Write Data) │ │ ══════════════════════════════════════════▶ │ │ │ │ B Channel (Write Response) │ │ ◀══════════════════════════════════════════ └────────┘ │ │ └─────────────────────────────────────────────────┘

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 ํ•ธ๋“œ์…ฐ์ดํฌ๋กœ ๋ฐ์ดํ„ฐ๋ฅผ ์ „์†กํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“Š VALID/READY ํ•ธ๋“œ์…ฐ์ดํฌ ํƒ€์ด๋ฐ ACLK ──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌──┐ ┌── └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ └──┘ 1 2 3 4 5 6 7 8 Case 1: VALID before READY VALID ──────┐ ┌────────────────────── └─────────────────┘ READY ────────────┐ ┌────────────────────── └───────────┘ DATA ──────╱ D1 ╲─────────────────────────────────── Transfer! Case 2: READY before VALID VALID ────────────┐ ┌────────────────────── └───────────┘ READY ──────┐ ┌────────────────────── └─────────────────┘ DATA ────────────╱ D1 ╲───────────────────────────── Transfer! Case 3: Simultaneous VALID ──────┐ ┌───────────────────────────────── └─────┘ READY ──────┐ ┌───────────────────────────────── └─────┘ DATA ──────╱ D1 ╲───────────────────────────────── Transfer!
๐Ÿ“œ ํ•ธ๋“œ์…ฐ์ดํฌ ๊ทœ์น™ (AXI4 ์ŠคํŽ™ A3.2)
  • 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์ธ ๋™์•ˆ ๋ชจ๋“  ์ •๋ณด ์‹ ํ˜ธ๋Š” ์•ˆ์ •์ ์ด์–ด์•ผ ํ•จ
⚠️ Deadlock ๋ฐฉ์ง€

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
๐Ÿ“Œ Response ์ฝ”๋“œ
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)

์ฃผ์†Œ: 0x04 0x08 0x0C 0x10
Beat #: 1 2 3 4

WRAP Burst: ์‹œ์ž‘์ฃผ์†Œ 0x04, SIZE=2 (4B), LEN=3 (4 beat, ๊ฒฝ๊ณ„=16B)

์ฃผ์†Œ: 0x04 0x08 0x0C 0x00
Beat #: 1 2 3 4 (wrap)
๐Ÿ“„ Burst ์ฃผ์†Œ ๊ณ„์‚ฐ ์ˆ˜์‹
// INCR Burst ์ฃผ์†Œ ๊ณ„์‚ฐ Address[n] = Start_Address + (n × 2^AxSIZE) // WRAP Burst ์ฃผ์†Œ ๊ณ„์‚ฐ Wrap_Boundary = (AxLEN + 1) × 2^AxSIZE Lower_Wrap_Addr = (Start_Address / Wrap_Boundary) × Wrap_Boundary Upper_Wrap_Addr = Lower_Wrap_Addr + Wrap_Boundary if (Address[n] == Upper_Wrap_Addr) Address[n] = Lower_Wrap_Addr // Wrap!

๐Ÿ”ข 6. ํŠธ๋žœ์žญ์…˜ ์ˆœ์„œ ๊ทœ์น™

AXI4๋Š” Out-of-Order ์‘๋‹ต์„ ์ง€์›ํ•˜์ง€๋งŒ, ํŠน์ • ๊ทœ์น™์„ ๋”ฐ๋ผ์•ผ ํ•ฉ๋‹ˆ๋‹ค.

๐Ÿ“œ Ordering ๊ทœ์น™
  • 1 ๋™์ผ ID: ๊ฐ™์€ ID์˜ ํŠธ๋žœ์žญ์…˜์€ ์ˆœ์„œ๋Œ€๋กœ ์‘๋‹ตํ•ด์•ผ ํ•จ
  • 2 ๋‹ค๋ฅธ ID: ๋‹ค๋ฅธ ID์˜ ํŠธ๋žœ์žญ์…˜์€ ์ˆœ์„œ ๋ฌด๊ด€ํ•˜๊ฒŒ ์‘๋‹ต ๊ฐ€๋Šฅ
  • 3 Write Response: B ์ฑ„๋„ ์‘๋‹ต์€ ํ•ด๋‹น W ์ฑ„๋„์˜ WLAST ์ดํ›„์—๋งŒ ๊ฐ€๋Šฅ
  • 4 Read Data: R ์ฑ„๋„ ๋ฐ์ดํ„ฐ๋Š” AR ์ฑ„๋„์˜ ํ•ธ๋“œ์…ฐ์ดํฌ ์ดํ›„์—๋งŒ ๊ฐ€๋Šฅ
๐Ÿ“Š Out-of-Order ์‘๋‹ต ์˜ˆ์‹œ Master sends: AR (ID=0) ─────▶ T1 AR (ID=1) ─────▶ T2 AR (ID=0) ─────▶ T3 Slave responds (Out-of-Order allowed): R (ID=1) ◀───── T2 response ← T2๊ฐ€ ๋จผ์ € ์™„๋ฃŒ (๋‹ค๋ฅธ ID) R (ID=0) ◀───── T1 response ← T1์ด T3๋ณด๋‹ค ๋จผ์ € (๊ฐ™์€ ID, ์ˆœ์„œ ์œ ์ง€) R (ID=0) ◀───── T3 response
๐Ÿ’ก Write Interleaving (AXI3 vs AXI4)

AXI3: ๋‹ค๋ฅธ ID์˜ Write Data๋ฅผ interleave ๊ฐ€๋Šฅ (WID ์‹ ํ˜ธ ์‚ฌ์šฉ)
AXI4: Write Data interleaving ์ œ๊ฑฐ๋จ (WID ์‹ ํ˜ธ ์—†์Œ)

→ AXI4์—์„œ๋Š” AW ์ˆœ์„œ๋Œ€๋กœ W ๋ฐ์ดํ„ฐ๋ฅผ ๋ณด๋‚ด์•ผ ํ•จ

๐Ÿ”’ 7. Exclusive Access

Exclusive Access๋Š” ๋ฉ€ํ‹ฐ ๋งˆ์Šคํ„ฐ ํ™˜๊ฒฝ์—์„œ ์›์ž์ (atomic) ์ฝ๊ธฐ-์ˆ˜์ •-์“ฐ๊ธฐ๋ฅผ ๊ตฌํ˜„ํ•˜๋Š” ๋ฉ”์ปค๋‹ˆ์ฆ˜์ž…๋‹ˆ๋‹ค.

๐Ÿ“Š Exclusive Access ์‹œํ€€์Šค Master A Slave (Monitor) 1. Exclusive Read (ARLOCK=1) ────────────────────────────────▶ Monitor ๋“ฑ๋ก (Addr, ID) 2. Read Data (RRESP=EXOKAY) ◀──────────────────────────────── [Master modifies data locally] 3. Exclusive Write (AWLOCK=1) ────────────────────────────────▶ Monitor ์ฒดํฌ 4. Write Response ◀──────────────────────────────── BRESP = EXOKAY (์„ฑ๊ณต) BRESP = OKAY (์‹คํŒจ, ์žฌ์‹œ๋„ ํ•„์š”)
๐Ÿ“Œ Exclusive Access ๊ทœ์น™

• ๋™์ผ ์ฃผ์†Œ/ํฌ๊ธฐ: 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
๋ณต์žก๋„ ๋†’์Œ ๋‚ฎ์Œ ์ค‘๊ฐ„
๐ŸŒŠ AXI4-Stream ํŠน์ง•

• ์ฃผ์†Œ ๊ฐœ๋… ์—†์Œ (๋ฐ์ดํ„ฐ๋งŒ ์ „์†ก)
• TVALID/TREADY ํ•ธ๋“œ์…ฐ์ดํฌ
• TLAST: ํŒจํ‚ท/ํ”„๋ ˆ์ž„ ๊ฒฝ๊ณ„ ํ‘œ์‹œ
• TKEEP/TSTRB: ์œ ํšจ ๋ฐ”์ดํŠธ ํ‘œ์‹œ
• ์šฉ๋„: ๋น„๋””์˜ค/์˜ค๋””์˜ค ์ŠคํŠธ๋ฆฌ๋ฐ, ๋„คํŠธ์›Œํฌ ํŒจํ‚ท, FFT ๋“ฑ

✅ 9. VIP ๊ฒ€์ฆ ํฌ์ธํŠธ

AXI4 VIP ๊ฐœ๋ฐœ ๋ฐ ๊ฒ€์ฆ ์‹œ ํ™•์ธํ•ด์•ผ ํ•  ํ•ต์‹ฌ ํฌ์ธํŠธ์ž…๋‹ˆ๋‹ค.

๐Ÿ” ํ•ธ๋“œ์…ฐ์ดํฌ ์ฒดํฌ
☑️ VALID assert ํ›„ READY ์ „๊นŒ์ง€ deassert ๊ธˆ์ง€
☑️ VALID HIGH ๋™์•ˆ ๋ชจ๋“  ์ •๋ณด ์‹ ํ˜ธ ์•ˆ์ •์„ฑ
☑️ Deadlock ์‹œ๋‚˜๋ฆฌ์˜ค ํ…Œ์ŠคํŠธ
๐Ÿ” Burst ์ฒดํฌ
☑️ AxLEN๊ณผ ์‹ค์ œ beat ์ˆ˜ ์ผ์น˜ (LAST ์‹ ํ˜ธ ํ™•์ธ)
☑️ WRAP burst์˜ LEN ์ œ์•ฝ (2, 4, 8, 16๋งŒ ํ—ˆ์šฉ)
☑️ 4KB ๊ฒฝ๊ณ„ crossing ๊ธˆ์ง€
☑️ ์ฃผ์†Œ ์ •๋ ฌ (AxSIZE์— ๋งž๊ฒŒ)
๐Ÿ” Ordering ์ฒดํฌ
☑️ ๋™์ผ ID ํŠธ๋žœ์žญ์…˜ ์ˆœ์„œ ๋ณด์žฅ
☑️ Write Response๋Š” WLAST ์ดํ›„์—๋งŒ
☑️ Outstanding ํŠธ๋žœ์žญ์…˜ ํ•œ๊ณ„ ํ…Œ์ŠคํŠธ
๐Ÿ“„ SystemVerilog Assertion ์˜ˆ์‹œ
// VALID stability check property valid_stable; @(posedge ACLK) disable iff (!ARESETn) ARVALID && !ARREADY |-> ##1 ARVALID; endproperty assert property (valid_stable); // Data stability during VALID property data_stable; @(posedge ACLK) disable iff (!ARESETn) ARVALID && !ARREADY |-> ##1 $stable(ARADDR); endproperty assert property (data_stable); // WLAST count check property wlast_count; int cnt; @(posedge ACLK) disable iff (!ARESETn) (AWVALID && AWREADY, cnt=AWLEN) |-> ##1 (WVALID && WREADY && !WLAST, cnt--)[*0:$] ##1 (WVALID && WREADY && WLAST && cnt==0); endproperty

❌ 10. ํ”ํ•œ ๊ตฌํ˜„ ์‹ค์ˆ˜

๐Ÿšซ Master ์ธก ์‹ค์ˆ˜

1. READY๋ฅผ ๊ธฐ๋‹ค๋ฆฌ๊ณ  VALID๋ฅผ assert (→ Deadlock)
2. VALID HIGH ์ค‘ ๋ฐ์ดํ„ฐ ๋ณ€๊ฒฝ
3. WLAST๋ฅผ ์ž˜๋ชป๋œ beat์—์„œ assert
4. 4KB ๊ฒฝ๊ณ„ crossing burst ๋ฐœํ–‰
5. AW/W ์ฑ„๋„ ์ˆœ์„œ ๋ถˆ์ผ์น˜ (AXI4์—์„œ๋Š” AW ์ˆœ์„œ๋Œ€๋กœ W ์ „์†ก ํ•„์š”)

๐Ÿšซ Slave ์ธก ์‹ค์ˆ˜

1. READY๋ฅผ ์˜์›ํžˆ LOW๋กœ ์œ ์ง€ (→ Starvation)
2. ๋™์ผ ID ์‘๋‹ต ์ˆœ์„œ ์œ„๋ฐ˜
3. RLAST ์—†์ด burst ์ข…๋ฃŒ
4. WLAST ์ „์— BRESP ์ „์†ก
5. ์ž˜๋ชป๋œ RID/BID ๋ฐ˜ํ™˜

⚠️ 4KB ๊ฒฝ๊ณ„ ๊ทœ์น™

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

๋Œ“๊ธ€

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

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

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

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