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界面模式

命令行模式

命令行交互模式

批处理文件模式

总结

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

审核编辑:黄飞

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

    关注

    5387

    文章

    11530

    浏览量

    361628
  • 寄存器
    +关注

    关注

    31

    文章

    5336

    浏览量

    120230

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

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

收藏 人收藏

    评论

    相关推荐

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

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

    集成移位寄存器

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

    寄存器应用举例

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

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

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

    寄存器与移位寄存器

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

    移位寄存器的特点_移位寄存器工作原理

    目前移位寄存器电路中已经得到普遍使用。本文以移位寄存器为中心。主要介绍了移位寄存器分类、移位寄存器
    发表于 12-22 15:20 4.9w次阅读
    移位<b class='flag-5'>寄存器</b>的特点_移位<b class='flag-5'>寄存器</b>工作原理

    主存和寄存器的区别介绍

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

    逆向基础寄存器和内存详解

    本文主要介绍的是逆向基础的寄存器和内存方面的信息,首先介绍的是逆向主要是做什么的,其次对编程和机器架构做了个简介,最后详细的阐述了逆向基础的寄存器和内存。
    发表于 04-26 09:52 2974次阅读

    寄存器由什么组成

    本文首先介绍寄存器的原理组成,其次介绍了ARM寄存器组成,最后介绍寄存器的用途。
    的头像 发表于 08-21 18:33 3.7w次阅读

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

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

    MPU6050寄存器介绍

    MPU6050寄存器介绍电源管理寄存器1(0X6B)陀螺仪配置寄存器(0X1B)加速度传感配置寄存器
    发表于 12-06 11:51 20次下载
    MPU6050<b class='flag-5'>寄存器</b><b class='flag-5'>介绍</b>

    AArch64寄存器介绍

    作为 RISC 架构,AArch64 提供了大量的通用寄存器。除通用寄存器之外,本节还会介绍特殊寄存器、系统控制寄存器、处理
    的头像 发表于 08-24 09:57 6102次阅读

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

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

    简述RAL寄存器模型基础

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

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

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