## SoC Labs ### [Lab 3](https://hackmd.io/@muscat/rJTIlOaiyl) * FIR ### [Lab 4-0](https://hackmd.io/@muscat/HJD7ZHhexg) * Caravel Simulation ### [Lab 4-1](https://hackmd.io/@muscat/rJZwGM1-el) * Exeme-fir ### [Lab 4-2](https://hackmd.io/@muscat/rJQfO6TQgl) * Caravel-fir ## SoC Final project ### [Final Project](https://hackmd.io/mF_6AqAPRBWr9qYD6lHXlw?both) * Contributions * Study notes * NTT address generator ## SoC Questions ### [Week 1](https://hackmd.io/gK8Ai28mTLKT7vPaGTGzIQ) * Basic coding style * Logic Design Basics ### [Week 2](https://hackmd.io/VzXh0GaoTo2uLuqAEl4y8Q) * axi * io cache ### [Week 3](https://hackmd.io/lTB7hhJ2QFGihB21g1_Gxg) * Testbench * Delay * Blocking/ Nonblocking ### [Week 4](https://hackmd.io/Col7ov3DRfa5paPB9jKtIA?view) * RTL-synthesis consistency * Construct design * FSM * SRAM * Reset ### [Week 6](https://hackmd.io/37Be8h5gQw6n6qXwm8od0g?both) * Caravel_hk_gpio_spi_mmio * caravel_intr_sram_wb_usrprj_firmware * caravel soc - lab4-0 ### [Week 7](https://hackmd.io/NlAK5ROdS2i-ZlxgTwmPuw?both) * Superscalar ### [Week 8](https://hackmd.io/DbbTEXuVS2CnCNRTJ7oJCQ?both) * DMA * Interrupt * Timer ### [Week 9](https://hackmd.io/9N8llY-tTKGlezyOHlR_Jg?view#Fir-rule-check) * lab verilog fir : rule check ### [Week 10](https://hackmd.io/UulXs49aRWy1hkuwK63xUQ?both) * Cache * Memory ### [Week 11](https://hackmd.io/nRDaElWERueoIBAn026ypQ?both) * Lab 4-2 SW/HW Codesign – Judge SW or HW is faster <!-- ## Summary of this semester 自評分數: | Lab 3 | Lab 4 | Final project | Weekly questions|Total | -------- | -------- | -------- |-------- |-------- | | 24.75/25 | 30/30 | 15/25 |20/20|89.75/100 * Lab 3: fir lab 中,我學到最多的是 **pipeline** 和 **buffer** 的概念--利用這兩個概念可讓硬體的使用率達到最大化,進而提升運算效率,不需要等所有步驟都算完才開始下一個,而是讓空閒的硬體接續著工作。在打這個lab的時候,同時也在學計結,更能理解硬體是如何透過這些概念加速。 我給自己這部分的成績是**24.75**,除了demo 分數扣1之外,報告、模擬與程式碼部分,我都有完整完成,並根據助教與教授提出的建議多次進行優化(雖然一開始因為不懂為甚麼要加i/o buffer而停滯了很久),因此在其餘方面給自己滿分。 * Lab 4: 由於組員有3位,就分成interface decode, firmware, fir rtl code。我自己是負責fir rtl code的優化,其實我在lab3的cycle 數只有 `tap_num + 6`(就是沒有pipeline+io buffer),剛好可以藉由此次分工到要完成的部分把沒優化好的部分做好。 另外因為要軟硬體配合收/送資料,所以firmware 部分在改code時,我也在旁邊學到組員是怎麼改的(改-O3、觀察RAW去改hex code、依硬體的邏輯改變送資料的順序等);而interface decode部分,雖然在4-2並不是我主要負責的部分,但也在4-0, 4-1了解其原理。 我給自己這部分的成績是**30**,因為最後有順利優化到12cyc,並且也在撰寫報告、實作過程中了解整體架構。 * Final project: 此部分我認為自己在6/17的完成度還不太夠,但我認為在組別頻繁更動的情況下,我還是有做出東西,依據這些給自己的分數如下。 由於初期分工時,我還在處理lab4-2的優化,原本的組別(operator)有些人已經lab4-2 idle,他們能力太強就速速的完成大部分東西,當時詢問過也說目前他們應該不太需要人手了,所以就去了另外一組IOP。我認為在架構了解上,我同時有碰到乘法器、還有address generator,並且還需在短時間內快速補足新組別的進度,此部分給自己5分。 後來在IOP做出的東西是NTT 的address generator 架構(目前以FFT的架構為基底,方便之後合併),但由於小組討論現階段可以完整呈現的是1 kernal 1 mode(FTT),所以就還沒將打好的NTT併入github。對於現階段自己能完成的部分給自己10分。 因此此部分我給自己**15分** * Weekly questions: 這部分應該比較像課程基本的作業,有時簡答答案即可,而我在回答這些問題時,都有加入**為甚麼這樣作答的詳細過程**。雖然有些題目在老師講解之前有寫錯,但後來都有在講解後更正。因此這部分在所有題目都有完整回答之下,我給自己的成績是**20** * 覺得自己需要加強的部分 我認為自己在處理很大架構,且需要小組分工的項目,會更容易停滯不前,其實設計應該是make it work -> make it correct -> make it fast,但每次都一直紙上談兵想要直接一步登天到make it fast,導致最後時間不夠連make it work 都很勉強的才做出來,但其實就是要做了才知道應該怎麼改才會更好。 -->