---
# System prepended metadata

title: SoC Design Final Project
tags: [SoC]

---

# SoC Design Final Project

Github: https://github.com/Bromine035/SOC-lab/tree/main/lab_final

## Note

&ensp;&ensp;&ensp;&ensp;首先是若在 software 中採用 ```taps[N] = {0,-10,-9, ...``` 這樣宣告時直接賦值的寫法並於後續代碼中不再調用的話，compiler 就會認為他是一個無用的變數便不幫他做 pre-load data，這樣 DMA 去抓就會抓不到東西，因此我這邊是採用先宣告後賦值的寫法讓他至少調用一次，DMA 就抓得到東西了  
&ensp;&ensp;&ensp;&ensp;第二是我們發現在老師提供的 10T pipelie memory [exmem_pipeline.v](https://github.com/bol-edu/caravel-soc_fpga-lab/blob/main/lab-wlos_baseline/exmem_pipeline.v) 中第 71 行有 bug，N-2 要改成 N-1。  
&ensp;&ensp;&ensp;&ensp;第三是在硬體加速器全部做完之後，看波形運算過程與結果都是正確的，吐到 testbench 上的答案卻是 unknown，最後發現是在硬體加速算完寫回記憶體的步驟時，並沒有像讀取時使用 in_(out_valid) 排隊處理同時有多個請求打架的情況，導致優先級低的並沒有成功將運算結果寫回記憶體而在讀取時出現 unknown，加上去讓他們排隊就解決了。  
&ensp;&ensp;&ensp;&ensp;其他就沒有遇到的重大 bug 了。  
