引言
寄存器模块在集成电路SOC和IP开发中是常见的模块,主要是让用户软件可以操作硬件,是软件和硬件的桥梁,也是固件开发者和终端软件开发者最关注的部分;
寄存器模块的一端跟芯片内部总线相连,如AXI/AHB/APB等,另一端则直接跟模块的核心相连,通过这个桥梁,用户软件可以配置、操作硬件,也可以读取硬件状态;
围绕寄存器模块,工程师有许多工作需要做,比如硬件源代码,验证UVM代码,验证C代码,C头文件,Trace32寄存器描述文件,开发文档,用户手册等等;这些工作重复且有规律,非常适合用自动化工具来生成;
寄存器工具
开发一个通用的寄存器工具,需要满足以下几个方面的需求,才能适应更广的使用场景:- 数据文件格式的多样性,如Excel、XML、ipxact、批处理命令文件,其它文本等
- 支持丰富的数据操作,如合并、分拆、复制、移动、删除、重复、查找、过滤、批处理等
- 可灵活配置的硬件源代码生成,如接口类型,同步异步等
- 支持丰富的寄存器类型和位域类型,包括关联型的和独立型
RegFab
RegFab是笔者开发的通用寄存器工具,遵循以上全部原则,力求为工程师打造一个好用的工具,便捷,高效;为了支持第三方IP,RegFab支持标准的ipxact文件,intel的XML文件,SVD文件;对于自研IP模块,支持固定的Excel模板,或者用户使用工具提供的命令写一个批处理文件,用命令创建寄存器及一些配置信息;另外工具还提供GUI界面创建、编辑寄存器内容,直观明了;各个文件格式之间可以相互转换,方便对外交流;RegFab内部数据模型除了寄存器、位域,还有常数、参数、寄存器组、接口、复位、访问、枚举、存储器、中断等模型,模型的属性基本上涵盖了全部寄存器相关的信息,力求可以处理所有跟寄存器有关的需求;寄存器工具最重要的部分是输出特定格式的文件,目前RegFab支持下面几种文件类型:当然,除了这些工具自带的文件类型,用户可以扩展自己的文件类型,RegFab支持使用模板机制来做扩展,包括扩展不同排版风格的docx用户手册;Verilog源代码是寄存器工具最重要的输出文件,它包含以下内容:除了以上的基本功能外,RegFab还开发了一些数据级的功能,以满足开发过程中所遇到的困难和需求,可以批量执行一些操作,比如以下一些例子:- 检查用户输入数据的有效性,比如:地址重叠,信息缺失,类型冲突等
- 批量修改满足一定名字匹配规则的寄存器、位域,或者其它类型的属性
- 相同类型的寄存器以一定地址间隔重复一些次数,只有名字后缀上的差别,其它完全相同
对于工具的使用形式,RegFab提供以下几种工作模式,最大程度满足各类工程师的工作习惯:总结
在大规模集成电路产品开发中,庞大的硬件规模必然对应众多的寄存器模块,随之而来的就是巨大的工作量 ;所以出现自动化的寄存器工具是自然而然的想法,工具的开发难度不算高,带来的好处却是肉眼可见的;一款想工程师之所想,忧工程师之所忧,功能强大,配置灵活,使用方便的寄存器工具,也是工程师们喜闻乐见的心头好!
*免责声明:文章来源于知乎,版权归原作者Quickor所有。如有侵权,请联系路科验证删稿。文章内容系作者个人观点,路科验证转载仅为了传达一种不同的观点,不代表路科验证对该观点赞同或支持,欢迎评论区留言交流。原文官网链接:http://www.quickor.cn/doc/index.html