---
# System prepended metadata

title: SOCStudy_LAB2
tags: [SOCStudy]

---

在課堂中所學的知識再搭配此次 lab 的練習，讓我對 HLS 的開發步驟 Csimulation、Co-simulation，及 Block-level protocal 和 Port-level protocal 更加熟悉。在 lab1 中使用的是 axi-lite，而此次 lab 是使用了 axi-master 和 axistream，這裡我列出在此次 lab 中所遇到的問題和需要注意的點，在設定 aximaster 的 directive 設定中需要提供足夠大小的 FIFO Depth 才能避免在 Cosim 中產生 Deadlock，當 depth > dataset 會產生 SIGSEGV 的 error，而當depth < dataset 則會發生 insufficient 的 error，所以 depth 應和 dataset 為相同的 size，在此 lab 中定義的 NUM_SAMPLES 為 600，因此其 depth 也應設定為 600 才不會出現錯誤。在 Block Design 中的 AXI-Master interface 是可以直接連接 IP 和 ZYNQ，能將彼此的 frequency、protocal 等等做 converge，而 AXI-Stream interface 在 output 處須透過 axi-dma(Stream-out to AXI-M)再連接到 AXI interconnect 和 ZYNQ，在 input 處也是從 AXI interconnect 透過 axi-dma(AXI-M to Stream-out)再連接到 IP。使用的板子不同時，在 Jupyter裡 的 Overlay 路 徑 也 不 相 同 ， 在 使 用 PYNQ 板 子 時 的 路 徑 為 ”/home/xilinx/jupyter_notebooks/” ， 而 在 使 用 KV260 時 的 路 徑 為 ”/home/root/jupyter_notebooks/”。在此次的練習中讓我更熟悉 Kernal 及 Host 之間的 communication 關係。