集成电路开发之寄存器工具介绍

描述

引言

寄存器模块在集成电路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支持下面几种文件类型:

Verilog寄存器模块源代码

HTML格式的开发文档,适合内部使用

验证用UVM代码

验证用C语言代码

C语言的头文件,定义一些宏、结构体、函数

软件开发工具Trace32用的寄存器描述文件

docx格式的寄存器用户手册

当然,除了这些工具自带的文件类型,用户可以扩展自己的文件类型,RegFab支持使用模板机制来做扩展,包括扩展不同排版风格的docx用户手册; Verilog源代码是寄存器工具最重要的输出文件,它包含以下内容:

可选择的接口类型:AXI、AHB、APB、MEM

支持寄存器和ROM/RAM的混合存在

可选择地生成输入/输出同步器

可选择的同步复位和异步复位,以及复位掩膜

可选择的丰富寄存器类型,及位域类型

除了以上的基本功能外,RegFab还开发了一些数据级的功能,以满足开发过程中所遇到的困难和需求,可以批量执行一些操作,比如以下一些例子:

检查用户输入数据的有效性,比如:地址重叠,信息缺失,类型冲突等

将一个地址范围内的寄存器移动到另外一个地址段

批量修改满足一定名字匹配规则的寄存器、位域,或者其它类型的属性

相同类型的寄存器以一定地址间隔重复一些次数,只有名字后缀上的差别,其它完全相同

将多个模块的寄存器文件合并起来产生输出文件

对于工具的使用形式,RegFab提供以下几种工作模式,最大程度满足各类工程师的工作习惯:

GUI界面模式

命令行模式

命令行交互模式

批处理文件模式

总结

在大规模集成电路产品开发中,庞大的硬件规模必然对应众多的寄存器模块,随之而来的就是巨大的工作量 ;所以出现自动化的寄存器工具是自然而然的想法,工具的开发难度不算高,带来的好处却是肉眼可见的;一款想工程师之所想,忧工程师之所忧,功能强大,配置灵活,使用方便的寄存器工具,也是工程师们喜闻乐见的心头好!

审核编辑:黄飞

 

打开APP阅读更多精彩内容
声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

全部0条评论

快来发表一下你的评论吧 !

×
20
完善资料,
赚取积分