天天看點

試用 wujian100 流程記錄1. 前言2. VCS仿真3. FPGA bitstream 編譯4. 工程結構附錄

1. 前言

官方提供了

隔壁的幾個文章已經總結了開發環境的配置流程,無需贅述 我再說說他們沒提到的

1.1 有關License的環境變量

請各位指向正确的license,具體可以在 tools/setup.csh 中改動,也可以自行在 terminal 裡手動添加。

  • bash/zsh
export VCS_HOME=/home/xxxx/vcs/vcs/P-2019.06-1/
export PATH=$PATH:/home/xxxx/vcs/vcs/P-2019.06-1/bin/
export PATH=$PATH:/home/xxxx/scl/scl/2018.06-SP1/linux64/bin/
export LM_LICENSE_FILE=xxxx
export SNPSLMD_LICENSE_FILE=xxxx           
  • csh
setenv VCS_HOME /home/xxxx/vcs/vcs/P-2019.06-1/
setenv LM_LICENSE_FILE xxxx
setenv SNPSLMD_LICENSE_FILE xxxx
setenv RISCV /home/xxxx/rocket-tools/
setenv LM_LICENSE_FILE xxxx
setenv SNPSLMD_LICENSE_FILE xxxx           

1.2 遇到的問題

1.2.1 riscv64-unknown-elf-gcc 無法識别 選項 ‘-mabi=ilp32e’

試用 wujian100 流程記錄1. 前言2. VCS仿真3. FPGA bitstream 編譯4. 工程結構附錄

應該是我的riscv-tools 工具鍊設定有問題,請大家自行下載下傳官方工具

解壓的時候需要注意,把解壓後的檔案放置在 riscv-tools 下,以便腳本能夠找到 risc-tools/bin/

1.2.2 注意vcs的位置,我目前的機器是linux64的,需要修改setup.csh第14行

2. VCS仿真

2.1 流程

請參照官方文檔

2.2 timer_test.c 仿真結果

運作

../tools/run_case -sim_tool vcs ../case/timer/timer_test.c           

會得到 timer_test.c 的結果

試用 wujian100 流程記錄1. 前言2. VCS仿真3. FPGA bitstream 編譯4. 工程結構附錄

我們看一眼 timer_test.c 的源碼

試用 wujian100 流程記錄1. 前言2. VCS仿真3. FPGA bitstream 編譯4. 工程結構附錄

看一來是配置了Timer 1d的寄存器,然後等待觸發中斷,清中斷标志位,最後退出。

Hello Friend!

timer test successfully           

就是代碼的輸出了。

2.3 我們看看其他的仿真/測試

試用 wujian100 流程記錄1. 前言2. VCS仿真3. FPGA bitstream 編譯4. 工程結構附錄

測個gpio玩吧,

試用 wujian100 流程記錄1. 前言2. VCS仿真3. FPGA bitstream 編譯4. 工程結構附錄

看看波形,這裡我們用的是verdi,請自行導入 vcd 檔案。

對照c的源碼,

試用 wujian100 流程記錄1. 前言2. VCS仿真3. FPGA bitstream 編譯4. 工程結構附錄

能看到是在将GPIO輸出 0xa5a5a5a5,也就是 ob10100101101001011010010110100101。 我們來見檢查一下

試用 wujian100 流程記錄1. 前言2. VCS仿真3. FPGA bitstream 編譯4. 工程結構附錄

果然是這樣,嗯,看起來是對的。

3. FPGA bitstream 編譯

先占坑,後面慢慢填,

沒有 synplify license 啊,窮。

4. 工程結構

我們來翻翻具體的設計。

官方文檔提到的:

項目目錄結構

|–Project //開源項目工作目錄

|–riscv_toolchain //工具鍊安裝目錄,使用者需要将工具鍊按照在該目錄下。工具鍊可以在下載下傳頁面下載下傳

|–wujian100_open //wujian100_open平台項目工程目錄。wujian100_open 平台代碼可以通過github下載下傳擷取

|–case //仿真使用的測試case

|–doc //wujian100_open平台的使用者手冊

|–fpga //FPGA制作相關腳本

|–lib //仿真編譯使用的腳本及庫檔案

|–regress //回歸測試的結果

|–sdk //軟體開發套件

|–soc //SoC RTL源碼

|–tb //test bench和monitor檔案

|–tools //仿真腳本和環境變量設定檔案

|–workdir //執行仿真的工作目錄

|–LICENSE

|–README.md

4.1 一些檔案

4.1.1 頂層檔案

https://github.com/T-head-Semi/wujian100_open/blob/master/soc/wujian100_open_top.v

4.1.2 aou_top

https://github.com/T-head-Semi/wujian100_open/blob/master/soc/aou_top.v

下面接了 pmu_dummy_top (peripheral management unit) ,gpio0_sec_top 和 RTC

4.1.3 感興趣的部分來了 core_top

https://github.com/T-head-Semi/wujian100_open/blob/master/soc/core_top.v https://raw.githubusercontent.com/T-head-Semi/wujian100_open/master/soc/E902_20191018.v

想來 剔除注釋和合并代碼的腳本寫的挺不錯的,1MB的檔案。 後續再仔細分析一下

未完待續

附錄

幾處typo, 這裡的指令應該是 sudo apt-get install / sudo yum install

試用 wujian100 流程記錄1. 前言2. VCS仿真3. FPGA bitstream 編譯4. 工程結構附錄

原文作者:YangWang

點選檢視原文