芯片寄存器代码自动生成方法及其系统技术方案

技术编号:15124636 阅读:49 留言:0更新日期:2017-04-10 02:52
本发明专利技术公开了一种芯片寄存器代码自动生成方法及其系统,方法包括以下步骤:设计通用的寄存器描述文档保存寄存器参数;提取所述寄存器描述文档中的寄存器参数,并保存于系统内存中;将系统内存中的数据保存为中间格式;通过继承中间格式的文本输出基类的方式,编写相应的文本输出类型,生成逻辑开发多阶段使用的相应寄存器输出格式。本发明专利技术,使用自动化的方式完成寄存器文档到代码的输出过程,并且通过用户少量修改代码,可实现代码输出结果的多样性,极大地提高了设计开发人员在代码编写的时间,还可以有效的保证代码输出的正确性,规避了人工编写时出现遗漏的情况,保证各个阶段寄存器编写的一致性,避免文档修改带来的反复性。

【技术实现步骤摘要】

本专利技术涉及数字集成电路的逻辑开发领域,具体涉及芯片寄存器代码自动生成方法及其系统
技术介绍
众所周知,无论是在通信、消费电子还是在工业应用等领域,数字集成电路的工艺提升越来越快,单片芯片所具有的功能越来越多,因此,集成电路芯片的设计越来越复杂。英特尔(Intel)创始人之一戈登·摩尔(GordonMoore)于1965年提出了摩尔定律,其内容为:当价格不变时,集成电路上可容纳的晶体管数目,约每隔18个月便会增加一倍,性能也将提升一倍,这一定律揭示了信息技术进步的速度。随着数字集成电路(芯片)的发展,其复杂程度日益增加,相应的,单片芯片内所包含的寄存器数量越来越多。数字集成电路(或者FPGA设计)的开发、HDL设计(HDLDesign,硬件描述语言设计)与验证以及软件驱动开发等,都归结于逻辑设计范畴,寄存器的描述贯穿于整个逻辑设计中。于是,对于每个逻辑开发团队来说,如何维护和管理这些越来越多、越来越复杂的寄存器,如何保证其在开发多个阶段的一致性和准确率,如何提高寄存器描述的开发效率,成为非常迫切的需求。在目前的逻辑开发(LogicDevelopment)过程中,对于寄存器的描述,采用的是在不同的设计阶段,通过相同的文档进行人工编写的方法进行。这种方法的缺点是:在逻辑开发过程中,需要投入较大的人力成本进行编写,并且通过人力来保证最后结果的一致性和准确率,存在太多的不确定因素。专利
技术实现思路
本专利技术所要解决的技术问题是解决如何在逻辑开发过程中描述寄存器,以缩短开发人员在寄存器编写上花费的时间,并保证在各设计阶段一致性的问题。为了解决上述技术问题,本专利技术所采用的技术方案是提供一种芯片寄存器代码自动生成方法,包括以下步骤:设计通用的寄存器描述文档,用于保存寄存器参数;从用户提供的寄存器描述文档中提取寄存器参数,并保存于系统内存中;将系统内存中的寄存器参数数据,通过文本打印程序转换为对应的Tcl编程语言的面向对象编程的扩展包Itcl代码,形成中间格式代码;通过调用继承中间格式代码的文本输出基类的方式,根据用户指定的文本输出类型生成寄存器代码,形成逻辑开发多阶段使用的相应寄存器输出格式。在上述方法中,所述寄存器描述文档为WORD文档,利用VisualBasic调用寄存器描述文件,提取所述寄存器描述文档中的寄存器参数,所述寄存器描述信息至少包括:寄存器名字、寄存器地址、寄存器类型、寄存器可选配置信息、寄存器的注释和寄存器域描述。在上述方法中,形成中间格式代码的方法如下:针对每一个寄存器,建立一个START事件;在每一个START事件中,首先依次对寄存器名字、寄存器类型、寄存器可选配置信息进行赋值,设置当前寄存器描述信息;然后从最后一个提取的寄存器域开始构建Module代码模块,每一个寄存器域对应一个Module代码模块,在所述Module代码模块中调用SetField函数依次对域名字、域在寄存器中的位置、域的类型、域的默认值和域的注释进行赋值。在上述方法中,利用表格数据结构存储相似的Itcl底层库,通过所述底层库中的BasePrint类,扩展成RtlPrint类或者SvPrint类,将寄存器参数通过文本打印程序转换为逻辑开发各个阶段不同的寄存器代码。本专利技术还提供了一种芯片寄存器代码自动生成系统,包括:输入模块,用于接收来自用户给定的输入文档,所述输入文档记录有寄存器及其寄存器域描述信息;提取模块,用于提取用户给定的输入文档中记录的寄存器及其寄存器域描述信息,并将提取的所述描述信息保存在系统内存中;系统内存,用于存储数据;转换模块,用于将系统内存中的所述描述信息数据通过文本打印程序转换为对应的Tcl编程语言的面向对象编程的扩展包Itcl代码,形成中间格式代码;扩展模块,用于通过调用继承中间格式代码的文本输出基类的方法,根据用户指定的文本输出类型,生成寄存器代码;输出模块,用于根据所述寄存器代码输出逻辑开发多阶段使用的寄存器输出格式。在上述系统中,所述转换模块包括多个中间单元,每一个中间单元对应记录一个寄存器及其寄存器域描述信息,每一个中间单元中包含多个Module代码单元,每一个Module代码单元对应记录当前寄存器下对应的一个寄存器域描述信息。本专利技术,使用自动化的方式完成寄存器文档到代码的输出过程,并且通过用户少量修改代码,可实现代码输出结果的多样性,极大地提高了设计开发人员在代码编写的时间,还可以有效的保证代码输出的正确性,规避了人工编写时出现遗漏的情况,保证各个阶段寄存器编写的一致性,避免文档修改带来的反复性。附图说明图1为本专利技术提供的方法的流程图;图2为本专利技术系统的结构示意图。具体实施方式本专利技术提供的逻辑开发过程中的寄存器代码自动生成方法,主要通过三个步骤实现,首先提取寄存器描述文档中的寄存器参数并保存于系统内存;然后转换系统内存中的数据,将其封装为中间格式代码;最后生成逻辑开发多阶段使用的寄存器输出代码。其中,寄存器描述文档为WORD文档,中间格式为TCL格式,寄存器输出代码包含RTL寄存器代码,验证模型代码以及软件驱动模型代码。下面结合附图对本专利技术做出详细的说明。首先介绍寄存器描述文档,它包含以下内容:(1)寄存器名称REG_NAME;(2)寄存器地址REG_ADDRESS;(3)寄存器类型REG_TYPE;(4)寄存器可选配置信息REG_OPTION;(5)寄存器域描述。其中,寄存器域描述包含:(1)域名称Name;(2)域在寄存器中的相对位置Bits;(3)域的传输方式Access;(4)域的默认值Default;(5)域的注释Description。如图1所示,本专利技术提供的方法,具体步骤如下:步骤1:设计通用的寄存器描述文档,用于保存寄存器参数,然后利用VisualBasic调用寄存器描述文件(Word文档),提取WORD文档中寄存器表格中的参数(表格中的内容为寄存器描述信息,至少包括:寄存器名字、寄存器地址、寄存器类型、寄存器可选配置信息和寄存器域描述),并保存在系统内存中。寄存器表格的样式如表1所示:表1:其中,寄存器“EXAMPLE_CFG0”,地址在0x0000,类型为config,可选配置信息为soft,相对应的域有三个,按照记录顺序依次为域名“本文档来自技高网
...

【技术保护点】
芯片寄存器代码自动生成方法,其特征在于,包括以下步骤:设计通用的寄存器描述文档,用于保存寄存器参数;从用户提供的寄存器描述文档中提取寄存器参数,并保存于系统内存中;将系统内存中的寄存器参数数据,通过文本打印程序转换为对应的Tcl编程语言的代码,形成中间格式代码;通过调用继承中间格式代码的文本输出基类的方式,根据用户指定的文本输出类型生成寄存器代码,形成逻辑开发多阶段使用的相应寄存器输出格式。

【技术特征摘要】
1.芯片寄存器代码自动生成方法,其特征在于,包括以下步骤:
设计通用的寄存器描述文档,用于保存寄存器参数;
从用户提供的寄存器描述文档中提取寄存器参数,并保存于系统内存
中;
将系统内存中的寄存器参数数据,通过文本打印程序转换为对应的Tcl
编程语言的代码,形成中间格式代码;
通过调用继承中间格式代码的文本输出基类的方式,根据用户指定的
文本输出类型生成寄存器代码,形成逻辑开发多阶段使用的相应寄存器输
出格式。
2.如权利要求1所述的方法,其特征在于,
所述寄存器描述文档为WORD文档,利用VisualBasic调用寄存器描
述文件,提取所述寄存器描述文档中的寄存器参数,所述寄存器描述信息
至少包括:寄存器名字、寄存器地址、寄存器类型、寄存器可选配置信息
和寄存器域描述。
3.如权利要求1所述的方法,其特征在于,形成中间格式代码的方法
如下:
针对每一个寄存器,建立一个START事件;
在每一个START事件中,首先依次对寄存器名字、寄存器类型、寄存
器可选配置信息进行赋值,设置当前寄存器描述信息;
然后从最后一个提取的寄存器域开始构建Module代码模块,每一个寄
存器域对应一个Module代码模块,在所述Module代码模块中调用SetField
函数依次对域名字、域在寄存器中的位置、域的类型、域的默认值和域的
注释进...

【专利技术属性】
技术研发人员:柏帆袁博浒张睿
申请(专利权)人:烽火通信科技股份有限公司
类型:发明
国别省市:湖北;42

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1