# SOC design Study Journel
I will try my best on this course !!
## Lab0: collaborative-learning-checklist
- Download the Slack application, and join soclab channel in Slack
- Subscribe Github/bol-edu/HLS-SOC-Discussion
- Create Personal Github
- Create Hackmd.io account, and create first document: SOCStudy.md
## Lab1: Design Flow from HLS to output bitstream to FPGA board
- Install Work Environment
- Install Oracle VM VirtualBox 6.1.42 and Extension pack
- Install Xilinx suite tool(vitis、vitis_hls、vivado).
- Use Xilinx tool vitis_hls to generate IP
- Use Xilinx tool Vivado to generate bitstream
- Verify design work correctly on FPGA board
## Lab2: Design FIR with AXI interface using HLS
- Use HLS to design FIR
- Use Xilinx tool vitis_hls to generate IP
- Use Vivado generate AXI-Master interface or AXI-Stream interface with ZYNQ
- Use Xilinx tool Vivado to generate bitstream
- Verify design work correctly on FPGA board
## Lab3: Design FIR with AXI interface using Verilog
- Use Verilog to design FIR
- Test FIR functionality using Verilog
- Design AXI-lite and AXI-Stream interfaces using Verilog
- Design Block-level Protocol using Verilog
## Lab4-1: Execute Code in User Memory
- Design Bram in user_project
- Design the controller connected with wishbone bus
- Write FIR using C language
## Lab4-2: FIR software/hardware co-design
- Using Firmware to move data in/out FIR
- Design MMIO configuration address space
- Use exmem-FIR for code storage/access
- RISC-V moves X(input)/Y(output) FIR engine
- Integrate Hardware (FIR & exmem-FIR) into Caravel user project area (add WB interface)
- Design WB decoder & WB-AXI interface
- Record latency for firmware to feed data
## Lab5: Caravel FPGA - build from each IP
- Build the three IP: caravel_ps, read_romcode, output_pin
- Build the FPGA bitstream – integrate the Caravel soc and the three IPs
- Validate it on FPGA with the Jupyter Notebook run on PS
## Lab6: Workload optimized SOC – baseline
- Simulation on Matrix Multiplication, Quick Sort, FIR and UART separately
- Firmware code integrates Matrix Multiplication, Quick Sort, FIR and UART
- Hardware integrates exmem-fir with UART design in user project area
- Modify testbench to include the test for Matrix Multiplication, Quick Sort, FIR and UART
- Verify if the firmware code can execute on FPGA