[github repo]根據Excel表格自動生成暫存器RTL/RALF/C header的指令碼
阿新 • • 發佈:2021-06-14
gen_apb_file
目錄
背景
SOC晶片中絕大部分功能模組都有暫存器,處理器通過對暫存器的讀寫,實現對模組狀態的獲取和功能的配置。硬體工程師、驗證工程師、軟體工程師都需要與暫存器打交道,需要有一份中心化[1]且可讀性強的暫存器描述檔案作為依據,以製作暫存器硬體模組、暫存器驗證模型、暫存器配置的標頭檔案。而手動製作消耗時間,且容易出錯。
graph TD; 暫存器描述檔案-->暫存器硬體模組RTL; 暫存器描述檔案-->暫存器驗證模型; 暫存器描述檔案-->暫存器配置的標頭檔案;描述
gen_apb_file為一種開源的暫存器檔案解決方案,包括中心化的暫存器描述檔案(Excel格式)和相應的暫存器檔案生成指令碼,能夠快速生成用於暫存器硬體模組、ralf模型、c語言標頭檔案。主要有以下特性:
- 支援APB介面型別
- 暫存器位寬可配
- 支援25種暫存器存取型別[2](見下表)
- 可生成verilog
- 可生成ralf
- 可生成c header
- 支援多個模組
尚待改進的地方如下:
- 未支援語義檢查
- c header未包括域的資訊
NO | ACCESS | DESCRIPTION |
---|---|---|
1 | RO | 讀寫此域都無影響 |
2 | RW | 會盡量寫入,讀取時對此域無影響 |
3 | RC | 寫入時無影響,讀取時會清零 |
4 | RS | 寫入時無影響,讀取時會設定所有的位 |
5 | WRC | 儘量寫入,讀取時會清零 |
6 | WRS | 儘量寫入,讀取時會設定所有的位 |
7 | WC | 寫入時會清零,讀取時無影響 |
8 | WS | 寫入時會設定所有的位,讀取時無影響 |
9 | WSRC | 寫入時會設定所有的位,讀取時會清零 |
10 | WCRS | 寫入時會清零,讀取時會設定所有的位 |
11 | W1C | 寫1清零,寫0時無影響,讀取時無影響 |
12 | W1S | 寫1設定所有的位,寫0時無影響,讀取時無影響 |
13 | W1T | 寫1入時會翻轉,寫0時無影響,讀取時無影響 |
14 | W0C | 寫0清零,寫1時無影響,讀取時無影響 |
15 | W0S | 寫0設定所有的位,寫1時無影響,讀取時無影響 |
16 | W0T | 寫0入時會翻轉,寫1時無影響,讀取時無影響 |
17 | W1SRC | 寫1設定所有的位,寫0時無影響,讀清零 |
18 | W1CRS | 寫1清零,寫0時無影響,讀設定所有位 |
19 | W0SRC | 寫0設定所有的位,寫1時無影響,讀清零 |
20 | W0CRS | 寫0清零,寫1時無影響,讀設定所有位 |
21 | WO | 儘可能寫入,讀取時會出錯 |
22 | WOC | 寫入時清零,讀取時出錯 |
23 | WOS | 寫入時設定所有位,讀取時會出錯 |
24 | W1 | 在復位(reset)後,第一次會盡量寫入,其他寫入無影響,讀取時無影響 |
25 | WO1 | 在復位後,第一次會盡量寫入,其他的寫入無影響,讀取時會出錯 |
安裝
依賴python及xlrd
sudo apt-get install python
pip install xlrd
用法
python gen_apb_file.py template.xls
維護者
如何貢獻
Open an issue or submit PRs.
參考
[1] [參考路科驗證文章](http://blog.eetop.cn/blog-1561828-6266218.html) [2] [參考 «UVM實戰» p512]許可證
The gen_apb_file.py is using the LGPL license. That's for the formalities. But there are some practical statements implied by those licenses:
Your freedoms are:
- You can use gen_apb_file.py in your closed/commercial projects.
- The generated RTL is yours (.v files)
- The generated RALF is yours (.ralf files)
- The generated C HEADER is yours (.h files)
Your obligations (and my wish) are:
- f you modify the gen_apb_file.py , please, share your improvements.
Also, gen_apb_file is provided "as is", without warranty of any kind.