What is the difference between RISC and CISC?
CISC (Complex-Instrument-Set-Computer) is an instrument set that contains common instruments and uncommon instruments. For example, 80% of the common instruments we used in the arithmetic program is 20% of the total instrument set.
RISC (Reduced-Instrument-Set-Computer) only contains common instruments. It will use more than one simple instrument to finshed one complex instrument which takes more cycles to do the same job but keep the processor simple and clean.
第一天開始學RISC-V ISA
我就去書店買了這本書來看 因此之後幾個篇文章都會跟隨這本書,雖然這本書裡面是寫簡體字,用語跟台灣相當不一樣xD 但是原作者就是中國人且經歷相當豐富,希望看完這本書能收穫滿滿。
本書是介紹 蜂鳥E200系列的處理器,本書開源的是面相低功耗低面積的嵌入式處理器,依照作者給的數據應該是全勝於ARM Cortex-M0/M0+ 系列能耗比。 開源網址在早期,也就是這本書剛出版的時候為 GitHub網址
但是原網址已經不維護與更新了,最新版本在新版本GitHub網址。讀者可以自行前往比對,我應該是先以舊版的搭配書嗑完後再去run看看新版的。
先裝一些工具軟體
SystemC on MacOS
Version I (work)
到 Brew 直接無腦安裝 SystemC Brew link
|
|
安裝完長這樣: 然後就來測試一下 SystemC的 helloworld吧
|
|
|
|
執行:
Version II (not working)
先到官方網站上下載systemC原始程式碼 SystemC 下載.
參考網址 Stackoverflow
然後解壓縮後執行以下步驟
|
|
configure完應該長這樣:
結果直接不work xD 不知道為什麼…
Verilator
參考來源 https://ys-hayashi.me/2020/12/verilator-2/
安裝Verilator Brew.
用Brew安裝完,應該也沒什麼問題。
測試功能
先準備待測試的verilog code.
|
|
要跑的步驟如下
- 撰寫 testbench
testbench.cpp
- 準備可合成之待測模組
design_under_test.sv
- 把待測試模組轉換成 C++(或是 SystemC),並指名要使用的 testbench
verilator design_under_test.sv --exe testbench.cpp --cc
- Verilator 產生的檔案都在
obj_dir
資料夾(這個是預設名稱)。 - 在該資料夾下面編譯產生 binary
make -C obj_dir -f Vdesign_under_test.mk
。 - 執行模擬
./obj_dir/Vdesign_under_test
。
但是我們先跑一個空白的testbench.cpp
看怎麼樣。
|
|
存好testbench.cpp
後,跑一次上面的流程,可以看到會generate一個資料夾 obj_dir
下面有一個檔案Vdesign_under_test.h
的前幾行大概是長這樣:
|
|
可以看出來 這四個I/O ports就是我們在verilog定義的。 因此我們testbench可以這樣寫:
|
|
使用 dut->eval()
就會跳一次clock。
依照上面流程跑完應該會看到如下:
本日小節
雖然我看這本書要寫的testbench是應該用 SystemVerilog去寫,然後我發現iverilog不支援 parallel assertion語法,就來研究一下verilator但是verilator要用SystemC來做testbench其實也不是我要的!所以要再survey看看。
附上今日迷因: