1. 程式人生 > 其它 >[github repo]根據Excel表格自動生成暫存器RTL/RALF/C header的指令碼

[github repo]根據Excel表格自動生成暫存器RTL/RALF/C header的指令碼

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

維護者

@wudayemen

如何貢獻

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.