0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

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

路科验证 来源:知乎 2024-03-12 11:48 次阅读

引言

寄存器模块在集成电路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界面模式

命令行模式

命令行交互模式

批处理文件模式

总结

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

审核编辑:黄飞

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

    关注

    5321

    文章

    10750

    浏览量

    353524
  • 寄存器
    +关注

    关注

    30

    文章

    5042

    浏览量

    117799

原文标题:集成电路开发中的自动化工具 - 寄存器工具

文章出处:【微信号:Rocker-IC,微信公众号:路科验证】欢迎添加关注!文章转载请注明出处。

收藏 人收藏

    评论

    相关推荐

    寄存器是什么?怎么操作寄存器点亮LED灯?

    寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为电路内部使用的
    的头像 发表于 07-21 16:59 2987次阅读
    <b class='flag-5'>寄存器</b>是什么?怎么操作<b class='flag-5'>寄存器</b>点亮LED灯?

    #硬声创作季 #数字集成电路 数字集成电路设计-6.3.3 脉冲寄存器和灵敏放大寄存器

    寄存器数字集成电路
    水管工
    发布于 :2022年10月17日 03:18:13

    [5.5.2]--6.5.2基本移位寄存器和双向移位寄存器的典型集成电路

    集成电路移位寄存器集成电路技术
    学习电子知识
    发布于 :2022年11月16日 22:01:50

    寄存器电路及应用

    移位寄存器1.集成移位寄存器T454 T454是一种用途广泛的集成移位寄存器,它由四个R-S触发
    发表于 09-18 08:40

    KDS集成开发环境查看寄存器的方法

    KinetisDesigns Studio集成开发环境(KDS)在调试Kinetis芯片时无法像CodeWarrior10.6、IAR、KeilMDK等常用IDE那样直接在调试界面的寄存器窗口观察
    发表于 03-04 16:53

    寄存器位查看小工具

    寄存器位查看小工具
    发表于 04-26 16:51 91次下载

    集成移位寄存器

    实验七 集成移位寄存器一、 实验目的1、 掌握集成双向移位寄存器74LS95的逻辑功能2、 熟悉集成双向移位
    发表于 03-20 17:54 19次下载

    寄存器应用举例

    寄存器应用举例   在9.2.3寄存器的应用一节中,曾介绍利用寄存器集成芯片74LS194构造的两种脉冲分配器:环形计数器和扭环形计数器。
    发表于 05-17 00:02 1416次阅读
    <b class='flag-5'>寄存器</b>应用举例

    寄存器,寄存器是什么意思

    寄存器,寄存器是什么意思 寄存器定义  寄存器是中央处理器内的组成部分。寄存器是有限存贮容量的高速存贮部件,它们可用
    发表于 03-08 14:26 2.1w次阅读

    寄存器与移位寄存器

    寄存器与移位寄存器介绍寄存器原理和移位寄存器的原理及实现。
    发表于 05-20 11:47 0次下载

    主存和寄存器的区别介绍

    本文开始介绍了主存的概念和频率及主存的大小,其次介绍寄存器工作原理与寄存器用途,最后介绍了主存和寄存器
    发表于 04-11 14:27 2.2w次阅读

    寄存器、累加器、暂存器傻傻分不清?

    什么是寄存器 寄存器,是集成电路中非常重要的一种存储单元,通常由触发器组成。在集成电路设计中,寄存器可分为
    的头像 发表于 10-30 10:11 1401次阅读

    寄存器电路结构与惯常用法

    寄存器对于学习集成电路知识十分重要,不管是单片机亦或是现代计算机的CPU离开寄存器都无法快速的进行操作
    的头像 发表于 02-14 15:18 3100次阅读
    <b class='flag-5'>寄存器</b>的<b class='flag-5'>电路</b>结构与惯常用法

    简述RAL寄存器模型基础

    RAL(Register Abstract Layer,寄存器抽象层),通常也叫寄存器模型,顾名思义就是对寄存器这个部件的建模。本文要介绍的内容,包括对UVM
    的头像 发表于 02-14 16:55 2360次阅读
    简述RAL<b class='flag-5'>寄存器</b>模型基础

    寄存器开发,HAL开发和LL开发的区别和参考代码

    1,寄存器开发【难度值:难】寄存器开发是一种直接访问微控制器寄存器的编程方法,它提供了对硬件的极大灵活性和直接控制。在
    的头像 发表于 11-17 08:00 418次阅读
    <b class='flag-5'>寄存器</b><b class='flag-5'>开发</b>,HAL<b class='flag-5'>开发</b>和LL<b class='flag-5'>开发</b>的区别和参考代码