[github repo]根據Excel表格自動生成寄存器RTL/RALF/C header的腳本


gen_apb_file

Repo
Author
License
standard-readme compliant

目錄

背景

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

注:

  1. 工作簿template.xls中的名稱template不會體現在生成文件中,你可以將它改成任何名稱如芯片名稱。
  2. 工作表<sheet_name>名稱tmplmd,xuartlite[3]為功能模塊的名稱,運行腳本會根據每一個工作表生成<sheet_name>_apb_cfg.v、<sheet_name>.h,<sheet_name>.ralf

維護者

@wudayemen

如何貢獻

Open an issue or submit PRs.

參考

[1] [參考路科驗證文章](http://blog.eetop.cn/blog-1561828-6266218.html)
[2] [參考 «UVM實戰» p512]
[3] [參考Xilinx Uartlite](https://www.xilinx.com/support/documentation/ip_documentation/axi_uartlite/v2_0/pg142-axi-uartlite.pdf)

許可證

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:

  • if you modify the gen_apb_file.py , please, share your improvements.
    Also, gen_apb_file is provided "as is", without warranty of any kind.


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM