用 verilator 輔助數位電路設計:後記

這次開發 RSA 256 ,整體來說我覺得比 2010 年那時候順多了。
2010 年因為第一次接觸 verilog 和 FPGA,在兩個月內要衝出 RSA 256,自然也不會懂什麼 valid/ready, 現在回去看介面都是用 start 配 ready,相當於只有 i_valid 跟 o_valid,除此之外都是簡單暴力的狀態機, 放一下那時候報告畫的 state diagram 給大家笑一下,根本大雜燴什麼都攪在一起。

...

用 verilator 輔助數位電路設計:SystemVerilog

上一回設定好 testbench 之後,終於可以來寫 verilog 了,這回就來看看我們怎麼用我們這套 Testbench, 搭配 verilog 的 pipeline 設計來實作 RSA256。

...

用 verilator 輔助數位電路設計:Verilator Framework

準備好 C model 和 SystemC 之後,我們的主角 verilator 終於帥氣登場啦。

verilator 會做什麼呢?它的使用流程是這樣子的,它會先分析你寫的 verilog/system verilog 檔案, 然後把它轉成一個 C++ 的標頭檔與實作,裡面的 class 會模擬你寫的 verilog 的行為。
接著你寫另一個 C++ 程式,初始化 verilator 產生出來的 class,餵它 clock 和其他你想要測試的信號, 就能模擬 verilog module 在接收這些信號時的行為,詳細的使用方式,一樣請參考強者我同學 johnjohnlin 的 blog

...

2023 COSCUP

COSCUP 2023 又到了一年一度大拜拜的時候了,經過去年全員戴口罩的第一次實體 , 今年完全解封感受得出氣氛輕鬆很多,外國人也來了不少。
自從 COSCUP 免費之後可以看出規模有一年比一年大的感覺,今年研揚已經開到六樓都全滿了,再來不會要開另一棟大樓吧。
今年也推坑沒參加過 COSCUP 的人來參加一下,幫 COSCUP 增加一些生力軍,他主力在語言相關的議程還有 k8s 等等;現在正在推坑他明年也來投稿一下XD。

...

rrxv6 : virtio

在去年五月上一回的文章 中,我們做到了 OS 版的 hello world, 讓 user process 呼叫 print 的 syscall,並由 OS 處理該 syscall 印出 hello world。
在這之後我花了一段時間(好長的一段)思考到底要做什麼,後面 xv6 依序初始化的東西包括幾個:

  1. buffer cache
  2. inode table
  3. file table
  4. virtio
  5. 做更多 user process 相關的部分

後來發現 1,2,3 都相依於 4,沒有 virtio 讀不了磁碟那還管什麼 file, inode; User process 在沒有 4 的狀況下,寫起來也是綁手綁腳,於是就決定先挑戰 qemu 的 virtio。

...

在 Ubuntu 上安裝開源 FPGA 工具鏈

故事是這個樣子的,大概在一年半前,我花了幾個月小玩了一下從 COSCUP 那邊拿到的 FPGA,那時候是在我的桌電 - 也就是 Archlinux 上進行開發。
最近因為一些原因又把這塊板子拿出來,但這次,我改用我新的筆電,裝的是 Windows 的 WSL 搭配 ubuntu 22.04,然後就發現, 我在文章中 列出來的幾項工具,包括 yosys, nextpnr, prjtrellis, 只有 yosys 能在 ubuntu 上用 apt 完成安裝,其他都在自己編譯,不像 Archlinux 上有人幫你弄好 AUR 了。

這篇文就是安裝工具的筆記,希望能幫到其他想在 ubuntu 上玩 lattice FPGA 的人, 主要參考這篇文章 ,以及一些工具 Github 的 issue。

...

書評:死亡盲飛-737MAX客機的空難悲劇與波音帝國的衰落

書名 死亡盲飛:737MAX客機的空難悲劇與波音帝國的衰落
原書名 Flying Blind: the 737 MAX Tragedy and the Fall of Boeing
作者 Peter Robison
譯者 何絜一
出版商 臉譜
出版日 2022-07-16
ISBN 9786263151468
...

用 verilator 輔助數位電路設計:C model 與 SystemC

用 verilator 的目的,就是要驗證 verilog 的實作是正確的,但我們又怎麼知道什麼是正確的呢?
就要準備好 C model 跟 SystemC 的實作了。

...

用 verilator 輔助數位電路設計:前言

有三個月沒有寫新文了,不過沒關係,這裡不像吉他英雄頻道一樣有人會催更新
故事是這樣子的,最近小弟的生活出現天翻地覆的變化,在忙各種搬家啦什麼的,都沒時間好好寫 code, 一月月初跨年、月中在三年的閉關之後出發去日本待了 10 天,回來月底接著過第二個年,什麼我的一月怎麼不見了???

這系列的主題要講電路驗證工具 verilator,本來這篇的標題是 在 2022 年應該要如何開發數位電路, 一直拖就拖到 2023 年,然後說真的,verilator 在取代現有的商用工具上應該還是不夠給力, 各大晶片設計公司也應該都有自己一套開發的流程(沒有的公司是做不出像樣的晶片的), 沒什麼稱做應該的理由,所以就改成現在這個標題了。

...

Google Test從入門到濫用:參數化測試

發現好久都沒貼文了,因為從八月開始都在忙東忙西都沒時間寫 code,主力在開發的 rrxv6 又(咦我怎麼會說又呢) 在 virtio 嚴重卡關,最近是有突破然後又被 global variable 擋下來,有夠麻煩。
會寫這篇是這樣的,從十月底小弟接到一個小任務,要用一批網路上的測資,去測試公司內一個專案的正確性,要如何做都是小弟自己決定,考量到:

  1. 待測專案用 C 寫的。
  2. 測資為自訂的文字格式。

最後決定用 C++ 搭配 google test 來開發測試,搭配大量資料進行 Data Driven Testing, 使用的 feature 為 google test 的 value-parameterized test

...