CN116501305A - 用于寄存器代码自动生成的方法、设备、介质及系统 - Google Patents
用于寄存器代码自动生成的方法、设备、介质及系统 Download PDFInfo
- Publication number
- CN116501305A CN116501305A CN202310773767.7A CN202310773767A CN116501305A CN 116501305 A CN116501305 A CN 116501305A CN 202310773767 A CN202310773767 A CN 202310773767A CN 116501305 A CN116501305 A CN 116501305A
- Authority
- CN
- China
- Prior art keywords
- register
- information
- registers
- logic
- code
- Prior art date
- Legal status (The legal status is an assumption and is not a legal conclusion. Google has not performed a legal analysis and makes no representation as to the accuracy of the status listed.)
- Granted
Links
- 238000000034 method Methods 0.000 title claims abstract description 99
- 230000006870 function Effects 0.000 claims abstract description 82
- 230000007246 mechanism Effects 0.000 claims description 46
- 238000012545 processing Methods 0.000 claims description 31
- 238000004590 computer program Methods 0.000 claims description 14
- 230000003068 static effect Effects 0.000 claims description 11
- 238000003860 storage Methods 0.000 claims description 11
- 238000012937 correction Methods 0.000 claims description 10
- 238000012795 verification Methods 0.000 claims description 8
- 238000002360 preparation method Methods 0.000 claims description 5
- 238000004519 manufacturing process Methods 0.000 claims description 4
- 238000007689 inspection Methods 0.000 claims description 3
- 238000000605 extraction Methods 0.000 claims description 2
- 230000008569 process Effects 0.000 description 32
- 238000010586 diagram Methods 0.000 description 12
- 239000000306 component Substances 0.000 description 11
- 238000013461 design Methods 0.000 description 9
- 230000006399 behavior Effects 0.000 description 7
- 238000011161 development Methods 0.000 description 7
- 230000006978 adaptation Effects 0.000 description 6
- 238000011537 Coomassie blue staining Methods 0.000 description 5
- 238000004891 communication Methods 0.000 description 5
- 238000012546 transfer Methods 0.000 description 5
- 238000006243 chemical reaction Methods 0.000 description 4
- 238000013500 data storage Methods 0.000 description 4
- 230000003542 behavioural effect Effects 0.000 description 3
- 230000008859 change Effects 0.000 description 3
- 239000012634 fragment Substances 0.000 description 3
- 230000002093 peripheral effect Effects 0.000 description 3
- 238000013528 artificial neural network Methods 0.000 description 2
- 230000008901 benefit Effects 0.000 description 2
- 230000015572 biosynthetic process Effects 0.000 description 2
- 230000001427 coherent effect Effects 0.000 description 2
- 238000012986 modification Methods 0.000 description 2
- 230000004048 modification Effects 0.000 description 2
- 238000005457 optimization Methods 0.000 description 2
- 239000004065 semiconductor Substances 0.000 description 2
- 230000001360 synchronised effect Effects 0.000 description 2
- 238000003786 synthesis reaction Methods 0.000 description 2
- 208000025174 PANDAS Diseases 0.000 description 1
- 208000021155 Paediatric autoimmune neuropsychiatric disorders associated with streptococcal infection Diseases 0.000 description 1
- 240000000220 Panda oleosa Species 0.000 description 1
- 235000016496 Panda oleosa Nutrition 0.000 description 1
- 230000009471 action Effects 0.000 description 1
- 239000000872 buffer Substances 0.000 description 1
- JJWKPURADFRFRB-UHFFFAOYSA-N carbonyl sulfide Chemical compound O=C=S JJWKPURADFRFRB-UHFFFAOYSA-N 0.000 description 1
- 230000001413 cellular effect Effects 0.000 description 1
- 239000008358 core component Substances 0.000 description 1
- 238000013524 data verification Methods 0.000 description 1
- 230000007547 defect Effects 0.000 description 1
- 238000005516 engineering process Methods 0.000 description 1
- 238000000802 evaporation-induced self-assembly Methods 0.000 description 1
- 230000002349 favourable effect Effects 0.000 description 1
- 239000000835 fiber Substances 0.000 description 1
- 230000006872 improvement Effects 0.000 description 1
- 238000010606 normalization Methods 0.000 description 1
- 230000003287 optical effect Effects 0.000 description 1
- 239000007787 solid Substances 0.000 description 1
Classifications
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F8/00—Arrangements for software engineering
- G06F8/30—Creation or generation of source code
-
- G—PHYSICS
- G06—COMPUTING; CALCULATING OR COUNTING
- G06F—ELECTRIC DIGITAL DATA PROCESSING
- G06F9/00—Arrangements for program control, e.g. control units
- G06F9/06—Arrangements for program control, e.g. control units using stored programs, i.e. using an internal store of processing equipment to receive or retain programs
- G06F9/30—Arrangements for executing machine instructions, e.g. instruction decode
- G06F9/30098—Register arrangements
- G06F9/30141—Implementation provisions of register files, e.g. ports
Landscapes
- Engineering & Computer Science (AREA)
- Software Systems (AREA)
- Theoretical Computer Science (AREA)
- General Engineering & Computer Science (AREA)
- Physics & Mathematics (AREA)
- General Physics & Mathematics (AREA)
- Executing Machine-Instructions (AREA)
Abstract
本申请提供用于寄存器代码自动生成的方法、设备、介质及系统。方法包括:获取寄存器信息、配置信息和寄存器间逻辑关系;基于寄存器信息,调用例化寄存器代码生成与寄存器一一对应的寄存器对象,以及,基于寄存器间逻辑关系确定第一命名规则,用于规范化所生成的寄存器对象各自的寄存器名称的前缀和后缀;基于寄存器对象各自的寄存器名称的前缀和后缀,确定用于实现寄存器相关联的逻辑功能的寄存器对象之间的连接关系,然后利用寄存器对象的连接关系、寄存器对象和接口读写逻辑生成寄存器相关联的寄存器代码,其中接口读写逻辑基于配置信息生成。如此有利于寄存器代码的稳定性和提升自动化效率。
Description
技术领域
本申请涉及计算机技术领域,尤其涉及用于寄存器代码自动生成的方法、设备、介质及系统。
背景技术
随着芯片规模扩大和应用场景多样化,需要面临各种类型的芯片与处理器适配等问题,并且需要考虑如何实现各种功能。因此,芯片与处理器之间的适配需要用到大量寄存器,例如芯片通过数据寄存器来进行数据传输,又例如处理器通过芯片的控制寄存器来控制芯片行为。这样就使得寄存器规模越来越大并且寄存器类型也变得多样化。因此导致寄存器访问通路的寄存器转换级(Register Transfer Level,RTL)的实现工作量大,耗时长并且容易出错,并且依赖人工方式来进行寄存器代码开发效率低下。
为此,本申请提供了一种用于寄存器代码自动生成的方法、设备、介质及系统,用于应对现有技术中的技术难题。
发明内容
第一方面,本申请提供了一种用于寄存器代码自动生成的方法。所述方法包括:获取寄存器信息、配置信息和寄存器间逻辑关系,其中,所述寄存器信息包括至少一个寄存器的访问属性,所述配置信息包括所述至少一个寄存器相关联的接口信息和校验机制,所述寄存器间逻辑关系指示所述至少一个寄存器相关联的逻辑功能;基于所述寄存器信息,调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,以及,基于所述寄存器间逻辑关系确定第一命名规则,所述第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀;基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,确定用于实现所述至少一个寄存器相关联的逻辑功能的所述至少一个寄存器对象之间的连接关系,然后利用所述至少一个寄存器对象的连接关系、所述至少一个寄存器对象和接口读写逻辑生成所述至少一个寄存器相关联的寄存器代码,其中,所述接口读写逻辑基于所述配置信息生成。
通过本申请的第一方面,针对芯片开发过程中寄存器迭代所带来的更新需求,利用了寄存器代码编写中的规律性特别是基于寄存器的访问属性,调用相应的例化寄存器代码,来实例化寄存器对象和域段对象,也即调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,实现了自动化生成寄存器代码并且可以有效地保证寄存器代码的稳定性和正确性;进一步地,将自动化生成寄存器对象的过程与自动化生成寄存器间逻辑及连线的过程进行解耦,通过规范化寄存器名称的前缀和后缀,实现了寄存器逻辑功能的自动化生成并且提升了自动化效率。
在本申请的第一方面的一种可能的实现方式中,所述寄存器信息、所述配置信息和所述寄存器间逻辑关系按照寄存器表格格式存储在寄存器文件中,其中,获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系,包括:读取所述寄存器文件并且基于所述寄存器表格格式获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系。
在本申请的第一方面的一种可能的实现方式中,所述方法还包括:在获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系之后,基于所述寄存器表格格式,将所获取的所述寄存器信息、所述配置信息和所述寄存器间逻辑关系保存到二维数据表,所述二维数据表用于查错纠错。
在本申请的第一方面的一种可能的实现方式中,通过检查所述二维数据表识别所述寄存器文件的错误,包括:识别基地址是否重复、识别页签名称是否重复、识别页签地址偏移是否重复、识别寄存器名称和域段名称是否重复、识别域段地址是否与预设位宽不一致、识别寄存器类型是否正确、识别同一个寄存器内的域段类型是否正确、识别域段地址是否连续。
在本申请的第一方面的一种可能的实现方式中,所述寄存器信息还包括:寄存器名称、寄存器地址、域段名称、域段范围、域段访问属性、域段复位值、域段描述,所述配置信息所包括的所述至少一个寄存器相关联的接口信息包括:寄存器基地址、接口类型、接口地址位宽、接口数据位宽、例化数量,所述配置信息所包括的所述至少一个寄存器相关联的校验机制包括所述至少一个寄存器各自是否生成奇偶校验逻辑。
在本申请的第一方面的一种可能的实现方式中,所述至少一个寄存器的访问属性基于所述至少一个寄存器各自所包括的域段的域段访问属性确定。
在本申请的第一方面的一种可能的实现方式中,所述例化寄存器代码包括与多个例化寄存器类型一一对应的例化共用模块,第一寄存器是所述至少一个寄存器中的任一寄存器,其中,基于所述寄存器信息,调用所述例化寄存器代码生成与所述至少一个寄存器一一对应的所述至少一个寄存器对象,包括:基于所述寄存器信息所包括的所述第一寄存器的访问属性,选择所述多个例化寄存器类型中的第一例化寄存器类型,然后调用与所述第一例化寄存器类型对应的例化共用模块来利用所述寄存器信息自动化生成与所述第一寄存器对应的寄存器对象的寄存器代码。
在本申请的第一方面的一种可能的实现方式中,所述多个例化寄存器类型包括:可读可写寄存器类型、只读寄存器类型、读清寄存器类型、可计数可读清寄存器类型、可读可写清零寄存器类型、只写寄存器类型、可读可写逻辑可写寄存器类型。
在本申请的第一方面的一种可能的实现方式中,所述寄存器间逻辑关系所指示的所述至少一个寄存器相关联的逻辑功能包括中断树功能。
在本申请的第一方面的一种可能的实现方式中,所述第一命名规则还用于规范化所生成的所述至少一个寄存器对象各自所包括的域段的域段名称的前缀和后缀,针对所述至少一个寄存器中的每一个寄存器,基于该寄存器的寄存器名称的前缀和后缀以及该寄存器所包括的域段的域段名称的前缀和后缀,确定所述至少一个寄存器对象之间的连接关系。
在本申请的第一方面的一种可能的实现方式中,所述至少一个寄存器对象包括第一寄存器对象,所述第一寄存器对象的寄存器名称的前缀用于指示所述第一寄存器对象所属的第一中断树机制,所述第一寄存器对象的寄存器名称的后缀用于指示所述第一寄存器对象与所述第一中断树机制下的其它寄存器对象之间的连接关系。
在本申请的第一方面的一种可能的实现方式中,所述至少一个寄存器对象包括第二寄存器对象,所述第二寄存器对象包括至少两个域段,所述第二寄存器所包括的所述至少两个域段各自的域段名称的前缀分别用于指示所述至少两个域段各自所属的中断树机制,所述第二寄存器所包括的所述至少两个域段各自的域段名称的后缀用于指示所述至少两个域段分别与所述至少两个域段各自所属的中断树机制下的其它域段之间的连接关系。
在本申请的第一方面的一种可能的实现方式中,所述方法还包括:通过改变所述第二寄存器所包括的所述至少两个域段各自的域段名称的后缀,从而改变所生成的所述至少一个寄存器相关联的寄存器代码的中断树功能。
在本申请的第一方面的一种可能的实现方式中,基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀确定所述至少一个寄存器对象的连接关系的过程与基于所述寄存器信息生成所述至少一个寄存器对象的过程之间是解耦的。
在本申请的第一方面的一种可能的实现方式中,所述寄存器间逻辑关系所指示的所述至少一个寄存器相关联的逻辑功能还包括静态随机存储器纠错码校验功能,所述至少一个寄存器对象之间的连接关系还用于实现所述静态随机存储器纠错码校验功能。
在本申请的第一方面的一种可能的实现方式中,所述至少一个寄存器对象之间的连接关系定义了所述至少一个寄存器对象之间的多种信号各自的数据流向。
在本申请的第一方面的一种可能的实现方式中,当所述配置信息所包括的所述至少一个寄存器相关联的校验机制指示第二寄存器生成奇偶校验逻辑时,所生成的与所述第二寄存器对应的寄存器对象的寄存器位宽包括一比特的奇偶校验位。
在本申请的第一方面的一种可能的实现方式中,所述例化寄存器代码包括高功耗版本和低功耗版本,其中,所述低功耗版本包括门控时钟电路用于减少时钟树翻转和寄存器时钟引脚翻转,所述高功耗版本不包括所述门控时钟电路,基于所述寄存器信息,调用所述例化寄存器代码生成与所述至少一个寄存器一一对应的所述至少一个寄存器对象,包括:基于所述寄存器信息,选择性地调用所述例化寄存器代码的所述高功耗版本或者所述低功耗版本,生成与所述至少一个寄存器一一对应的所述至少一个寄存器对象。
在本申请的第一方面的一种可能的实现方式中,所述寄存器信息包括所述至少一个寄存器各自的寄存器数据位宽,针对所述至少一个寄存器中的每一个寄存器,当该寄存器的寄存器数据位宽大于阈值位宽时调用所述低功耗版本,否则调用所述高功耗版本,其中,所述阈值位宽基于该寄存器的制备工艺预先设定。
在本申请的第一方面的一种可能的实现方式中,针对所述至少一个寄存器中的每一个寄存器,将该寄存器所包括的可读可写域段合并例化,当该寄存器的合并例化后可读可写域段的数据位宽大于阈值位宽时调用所述低功耗版本,否则调用所述高功耗版本,其中,所述阈值位宽基于该寄存器的制备工艺预先设定。
在本申请的第一方面的一种可能的实现方式中,基于所述寄存器信息所包括的所述至少一个寄存器的访问属性,合并所述至少一个寄存器中不具有逻辑写输入访问属性的一个或者多个寄存器并且插入总时钟门控电路,所述总时钟门控电路的时钟门控使能信号是所述一个或者多个寄存器的读写使能信号。
在本申请的第一方面的一种可能的实现方式中,基于所述寄存器信息所包括的所述至少一个寄存器的访问属性,对所述至少一个寄存器中具有逻辑写输入访问属性的寄存器分别单独确定是否调用相应的低功耗版本,所述具有逻辑写输入访问属性的寄存器包括以下一项或者多项:读清寄存器、可读可写清零寄存器、可读可写逻辑可写寄存器、可计数可读清寄存器。
第二方面,本申请实施例还提供了一种计算机设备,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据上述任一方面的任一种实现方式的方法。
第三方面,本申请实施例还提供了一种计算机可读存储介质,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第四方面,本申请实施例还提供了一种计算机程序产品,所述计算机程序产品包括存储在计算机可读存储介质上的指令,当所述指令在计算机设备上运行时使得所述计算机设备执行根据上述任一方面的任一种实现方式的方法。
第五方面,本申请实施例还提供了一种用于寄存器代码自动生成的系统。所述系统包括:输入模块,用于读取寄存器文件,其中,寄存器信息、配置信息和寄存器间逻辑关系按照寄存器表格格式存储在所述寄存器文件中,所述寄存器信息包括至少一个寄存器的访问属性,所述配置信息包括所述至少一个寄存器相关联的接口信息和校验机制,所述寄存器间逻辑关系指示所述至少一个寄存器相关联的逻辑功能;提取模块,用于基于所述寄存器表格格式从所述输入模块所读取的所述寄存器文件中,获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系;处理模块,用于:基于所述寄存器信息,调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,以及,基于所述寄存器间逻辑关系确定第一命名规则,所述第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,还用于:基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,确定用于实现所述至少一个寄存器相关联的逻辑功能的所述至少一个寄存器对象之间的连接关系,然后利用所述至少一个寄存器对象的连接关系、所述至少一个寄存器对象和接口读写逻辑生成所述至少一个寄存器相关联的寄存器代码,其中,所述接口读写逻辑基于所述配置信息生成;输出模块,用于输出所述寄存器文件、所述至少一个寄存器相关联的寄存器代码以及所述寄存器文件相关联的检查报告。
附图说明
为了更清楚地说明本申请实施例技术方案,下面将对实施例描述中所需要使用的附图作简单地介绍,显而易见地,下面描述中的附图是本申请的一些实施例,对于本领域普通技术人员来讲,在不付出创造性劳动的前提下,还可以根据这些附图获得其他的附图。
图1为一种寄存器访问的示意图;
图2为本申请实施例提供的一种用于寄存器代码自动生成的方法的流程示意图;
图3为本申请实施例提供的一种用于寄存器代码自动生成的系统的示意图;
图4为本申请实施例提供的一种计算设备的结构示意图。
具体实施方式
下面将结合附图对本申请实施例作进一步地详细描述。
应当理解的是,在本申请的描述中,“至少一个”指一个或一个以上,“多个”指两个或两个以上。另外,“第一”、“第二”等词汇,除非另有说明,否则仅用于区分描述的目的,而不能理解为指示或暗示相对重要性,也不能理解为指示或暗示顺序。
图1为一种寄存器访问的示意图。如图1所示,处理器110与寄存器集合120之间进行数据读写140,寄存器集合120与逻辑处理单元130之间进行配置和上报142。这里,处理器110可以是例如中央处理器(central processing unit,CPU),处理器110一般通过总线来访问逻辑处理单元130,逻辑处理单元130可以是负责具体功能的芯片,例如车规级芯片。寄存器集合120用于在处理器110和逻辑处理单元130之间的适配。寄存器集合120可以包括一个或者更多个寄存器并且可以存在不同的寄存器类型。例如,寄存器集合120可以包括数据寄存器,这样逻辑处理单元130可以通过数据寄存器进行数据传输;再例如,寄存器集合120可以包括控制寄存器,这样处理器110可以通过控制寄存器来控制逻辑处理单元130的行为。一般地,处理器110向寄存器集合120执行数据读写140如写入信息,并且写入信息转换为对逻辑处理单元130进行配置。处理器110也可以向寄存器集合120执行数据读写140如读取信息,并且读取信息转换为获取逻辑处理单元130的上报结果。可以看出,在处理器110与逻辑处理单元130之间的适配依赖寄存器集合120来进行数据读写140和配置和上报142等。随着芯片规模扩大和应用场景多样化,逻辑处理单元130可能代表了各种类型的芯片以及需要实现各种不同的功能,这样就意味着需要大量的并且不同类型的寄存器来满足适配要求。因此,寄存器集合120可能需要包括规模更大的寄存器并且寄存器类型也变得多样化。例如,在车规级芯片应用场景,用于汽车控制系统的核心组件的车规级芯片,对可靠性、安全性和缺陷率等都提出了较高的要求,特别是要考虑到因为意外因素(如宇宙射线,高温,电压波动等)导致的位翻转,因此在寄存器方面也提出了特殊的要求例如额外的奇偶校验机制等。在数字芯片设计流程中,一般在功能定义和架构设计后进行寄存器转换级(Register Transfer Level,RTL)编写,也就是进行寄存器转换级描述,从寄存器的角度表达数据的处理过程,这样后续可以通过综合工具综合成具体电路结构。RTL代码可以用于综合并生成门级网表,其包括了对寄存器和组合逻辑的数据流描述。行为级描述包括对电路功能的描述但是不涉及具体结构,一般需要芯片设计人员在行为级描述的基础上生成RTL代码,因此增加开发时间成本。因此,随着芯片规模和设计复杂度的增加,以及芯片适配要求的提高,RTL代码的编写工作量大、迭代频繁且人工编写方式受到开发人员专业水准影响。另外,具体的芯片应用场景,如车规级芯片,往往还对RTL代码提出额外的要求,例如车规级芯片的寄存器需要包括额外的奇偶校验机制,这些要求也给上述人工编写RTL代码的方式提出挑战。在芯片开发过程中,可能需要不断迭代寄存器有关的定义和配置,例如更新寄存器的数量、地址、名称和域段等。以图1为例,在芯片开发过程中可能需要频繁地改变图1所示的寄存器集合120所包括的寄存器的数量和寄存器类型还有具体寄存器配置等。每次进行寄存器迭代后,都需要相应地更新RTL代码,也就是针对迭代后的寄存器更新寄存器转换级描述。相对于行为级描述只涉及功能描述但是不涉及具体结构,寄存器代码或者说RTL代码,涉及到数据流水和硬件相互连接关系,还可能涉及到具体的综合工具的支持,因此每次寄存器迭代都需要重新考虑如何确保寄存器访问通路的RTL实现,而依赖人工方式更新寄存器代码难以保证寄存器文档与寄存器代码之间的一致性,耗时长容易出错且效率低下。为此,本申请实施例提供了一种用于寄存器代码自动生成的方法、设备、介质及系统,下面详细说明。
图2为本申请实施例提供的一种用于寄存器代码自动生成的方法的流程示意图。如图2所示,所述方法包括以下步骤。
步骤S210:获取寄存器信息、配置信息和寄存器间逻辑关系,其中,所述寄存器信息包括至少一个寄存器的访问属性,所述配置信息包括所述至少一个寄存器相关联的接口信息和校验机制,所述寄存器间逻辑关系指示所述至少一个寄存器相关联的逻辑功能。
步骤S220:基于所述寄存器信息,调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,以及,基于所述寄存器间逻辑关系确定第一命名规则,所述第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀。
步骤S230:基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,确定用于实现所述至少一个寄存器相关联的逻辑功能的所述至少一个寄存器对象之间的连接关系,然后利用所述至少一个寄存器对象的连接关系、所述至少一个寄存器对象和接口读写逻辑生成所述至少一个寄存器相关联的寄存器代码,其中,所述接口读写逻辑基于所述配置信息生成。
在步骤S210,获取寄存器信息、配置信息和寄存器间逻辑关系,这些用于后续的自动化生成寄存器代码。在一些实施例中,将用于生成寄存器代码例如RTL代码或者RTL实现的原始信息记录在寄存器文件或者寄存器文档中,例如以WORD或者EXCEL等标准文档的方式。可以通过自动化工具,例如python语言或者其它程序语言编写的自动化脚本,从寄存器文件中提取原始信息。在一些示例中,按照特定的寄存器表格格式对所提取的原始信息进行归纳整理。原始信息分成三大类,也就是在步骤S210获取的寄存器信息、配置信息和寄存器间逻辑关系。其中,所述寄存器信息包括至少一个寄存器的访问属性,所述配置信息包括所述至少一个寄存器相关联的接口信息和校验机制,所述寄存器间逻辑关系指示所述至少一个寄存器相关联的逻辑功能。在一些实施例中,寄存器信息包括寄存器定义的基本内容,如寄存器本身的名称、地址等;在寄存器内包括多个域段的情况下,寄存器信息还包括寄存器内所包括的多个域段各自的域段名、域段范围、域段访问属性、域段描述等。寄存器信息中的域段类型对应了域段访问属性,并且域段类型是预先设定的且每个域段类型有对应的例化共用模块(Common Block Building,CBB),例化共用模块可以是已经验证正确的逻辑代码这样的形式。这样后续通过寄存器信息中的域段类型或者说域段访问属性,就可以调用相应的逻辑代码来构建RTL代码的片段,进而通过整合这些RTL代码的片段从而实现相应的域段功能的组合。在一些实施例中,域段类型或者说域段访问属性包含多种类型如可读可写(Read Write,RW)和只读(Read Only,RO)等,这些示例性的域段类型是可以结合具体的电子设计自动化工具确定,例如通用验证方法学定义的寄存器访问属性等。在一些实施例中,配置信息包括寄存器的基地址、接口类型以及校验机制等,配置信息还包括接口信息。配置信息用于后续生成接口读写逻辑。寄存器间逻辑关系包括寄存器的常用逻辑功能,例如中断树和静态随机存储器(Static Random-Access Memory,SRAM)的纠错码(ErrorCorrecting Code)校验机制等。在一些实施例中,寄存器间逻辑关系通过预先设定的命名规则来规范化寄存器名称和域段名称的前后缀来实现。因此通过识别寄存器名称和域段名称包括其前缀和后缀就可以便利地确定寄存器之间的逻辑关系,例如用第一域名后缀表示中断树的触发信号,用第二域名后缀表示中断树的使能信号,这样通过添加相应的域名后缀就可以体现中断位置信号的数据流向。下面结合具体实施例详细说明。在一些示例中,寄存器信息包括:寄存器名称为“REG0”,偏移地址为0x0,通过宏“REG0_MACRO”控制寄存器生成。该寄存器包含以下域段:域名“reserved.”,域段地址为15至11,域段类型为“RO”,域段复位值为“0x0”,域段描述为“Reserved.”;域名“field0”,域段地址为10至10,域段类型为“RW”,域段复位值为“0x0”,域段描述为“Description for field0.”;域名“field1”,域段地址为9至0,域段类型为“RW”,域段复位值为“0x82”,域段描述为“Description forfield1”。
在一些实施例中,在步骤S210获取的上述信息(也即寄存器信息、配置信息和寄存器间逻辑关系)基础上,通过自动化工具如python的pandas库,可以读取这些信息(例如按照特定寄存器表格格式来提取)到二维数据表。二维数据表包括多个表项,可以利用二维数据表进行检索和分析。在一些示例中,二维数据表上第1行到第9行记录了配置信息,接着记录了寄存器信息。在一些示例中,通过寄存器表格或者二维数据表可以进行错误检查,提前发现如寄存器名重复,域名重复,寄存器地址重复,域段地址越位以及同一个寄存器内存在类型有冲突的两个域段等错误。通过遍历二维数据表,可以获取各个表项。在一些示例中,首先遍历配置信息来生成接口读写逻辑以及确定例化数量、总线形式、信号命名方式、校验逻辑等,配置信息用于确定在自动化生成寄存器代码方面的全局要素。接着,遍历寄存器信息,先实例化寄存器对象再实例化域段对象后将域段对象插入到寄存器对象的域列表中。这里,通过规范化寄存器对象和域段对象的名称的前后缀,有利于实现常用功能逻辑的自动化生成。例如,可以通过寄存器表格或者二维数据表,遍历寄存器对象及域段对象,通过识别寄存器名称和域段名称的前后缀从而便利地确定寄存器之间的逻辑关系,进而可以基于域段类型或者说域段访问属性来调用预先准备好的例化CBB来生成相应的例化代码。例如,对于寄存器访问属性为RW类型的特定寄存器,可以调用例化RW模块和该特定寄存器的寄存器对象来生成相应RTL代码。对于需要额外的奇偶校验机制如车规级芯片,这一点在配置信息中的校验机制的表项上可以体现是否生成奇偶校验逻辑,在生成相应RTL代码时,也可以通过已经验证的逻辑代码,结合接口或者逻辑写入的数据生成1位的校验位,并且在数据存储和数据校验时也同时处理数据和校验位。
在步骤S220,基于所述寄存器信息,调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,以及,基于所述寄存器间逻辑关系确定第一命名规则,所述第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀。其中,在步骤S210中获取的所述寄存器信息包括至少一个寄存器的访问属性。寄存器的访问属性可以是如可读可写(Read Write,RW)和只读(Read Only,RO)等,在寄存器包括多个域段的情况下,寄存器的访问属性还包括寄存器内部的域段的访问属性,并且,示例性的访问属性或者说域段类型可以结合具体的电子设计自动化工具确定,例如通用验证方法学定义的寄存器访问属性等。这里,基于所述寄存器信息,因此也基于所述寄存器信息包括的至少一个寄存器的访问属性,可以利用寄存器代码的编码规律性与寄存器访问属性(在寄存器包括多个域段的情况下也可以理解为包含了域段访问属性)之间的关联性,通过具有一定重复性和复用性的代码片段也就是例化寄存器代码,来实现自动化生成寄存器代码。在一些示例中,可以为每一种访问属性,例如寄存器访问属性或者域段访问属性(也可以理解为域段类型),提供对应的例化共用模块(Common Block Building,CBB),例化共用模块可以是已经验证正确的逻辑代码这样的形式。在一些实施例中,可以提供多种类型的例化共用模块,用于满足不同类型的寄存器的需求,示例性的寄存器类型可以包含如可读可写(Read Write,RW)寄存器类型、只读(Read Only,RO)寄存器类型、读清(Read Clear,RC)寄存器类型、可计数可读清(Count And Read Clear,CAR)寄存器类型、可读可写清零(Read Write Clear,RWC)寄存器类型、只写(Write Only,WO)寄存器类型、可读可写逻辑可写(Read and Write and Logic Write,RWW)寄存器类型。例化寄存器代码可以是例化共用模块或者是具有类似作用的用于自动化生成寄存器代码的模板或者脚本等。应当理解的是,随着芯片设计复杂度和规模的增加,以及综合工具和验证方法学的发展,可能出现新的寄存器类型、新的寄存器访问属性或者对现有寄存器访问机制做出更新,可以通过更新例化寄存器代码,例如生成新的已经验证正确的逻辑代码并构建新的例化共用模块来体现这些更新,进而确保自动化生成的寄存器代码可以满足更新后的需求。如此,利用了寄存器代码编写中的规律性,特别是基于寄存器的访问属性(也可以理解为寄存器所包括的多个域段各自的访问属性)确定处理器对特定寄存器的访问方式,然后可以调用相应的例化寄存器代码,来实例化寄存器对象和域段对象,也即调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象。应当理解的是,同一种寄存器访问方式或者说同一种寄存器访问属性,也可以对用不同的寄存器的定位,例如用于数据传输的数据寄存器和用于控制芯片行为的控制寄存器均可以采用同样的访问方式或者具有同样的寄存器访问属性。可以结合接口信息和配置信息确定宏观层面信息如例化数量、接口读写逻辑、总线类型等,从而可以结合寄存器间逻辑关系确定寄存器的逻辑功能以及电路的数据处理过程(例如通过后缀名确定中断位置信号的数据流向)。如此,实现了自动化生成寄存器代码,并且不需要人工来介入到寄存器代码的编写,只需要提供在步骤S210获取的上述信息(也即寄存器信息、配置信息和寄存器间逻辑关系),可选地按照特定的寄存器表格格式将这些信息保存在寄存器文件或者二维数据表中。如上所述,在芯片开发过程中,可能需要不断迭代寄存器有关的定义和配置,例如更新寄存器的数量、地址、名称和域段等。这些可以通过更新寄存器信息和配置信息,例如通过更新寄存器文件或者寄存器表格中的相应表项来体现这些更新,进而可以使用更新后的寄存器信息和配置信息来更新寄存器代码。例如可以通过修改域段访问属性来调用不同的例化CBB来实例化寄存器和/或实例化域段,再例如通过修改校验机制来改变数据存储和数据校验的相应寄存器代码。对于新增的校验机制或者其他新的寄存器功能,也可以通过设定相应的例化寄存器代码并且在寄存器表格中增加新的表项,从而可以在自动化生成的寄存器代码中包含新增功能。
继续参阅步骤S220,一方面,基于所述寄存器信息,调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象;另一方面,基于所述寄存器间逻辑关系确定第一命名规则,所述第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀。这里,基于寄存器信息来调用例化寄存器代码生成寄存器对象,意味着针对寄存器文件或者寄存器表格内记录的表项内容,利用寄存器代码的编码规律性与寄存器访问属性之间的关联性,通过具有一定重复性和复用性的代码片段也就是例化寄存器代码,来实现自动化生成寄存器代码。这一部分的寄存器代码自动生成过程针对的是寄存器对象也就是寄存器本身的内容,例如生成用于数据传输的数据寄存器或者用于控制芯片行为的控制寄存器,又例如生成具有特定访问属性的寄存器如可读可写寄存器类型或者只读寄存器类型。相对的,基于所述寄存器间逻辑关系确定第一命名规则,意味着针对寄存器之间的逻辑关系也包括其所指示的所述至少一个寄存器相关联的逻辑功能,因此涉及到的是不同寄存器之间的信息和不同寄存器之间的数据流向。寄存器之间的连线或者说连接关系可以用于实现所述至少一个寄存器相关联的逻辑功能,例如中断树功能。因此,自动化生成寄存器代码,不仅需要生成寄存器对象,而且还需要正确地布置寄存器之间的连线以及确保寄存器之间的数据流向,从而能自动化生成可实现常用逻辑功能如中断树功能的寄存器代码。另外,在芯片开发过程中,需要频繁地进行寄存器的迭代,例如改变寄存器的逻辑功能或者更新中断树的组合,因此需要相应地对寄存器代码也进行更新以体现寄存器迭代,例如可能需要更新寄存器代码从而更新信号列表或者寄存器之间的连线。但是,寄存器迭代可能还涉及到更新寄存器有关的定义和配置,例如更新寄存器的数量、地址、名称和域段等。为此,在步骤S220中,通过将自动化生成寄存器对象的过程与自动化生成寄存器间逻辑及连线的过程进行解耦,从而简化了整体过程并且提高了自动化效率。具体的,基于所述寄存器间逻辑关系确定第一命名规则,所述第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀。在一些实施例中,所述寄存器间逻辑关系包括了如中断树功能的逻辑功能,通过第一命名规则的规范化,可以使得寄存器对象的寄存器名称的前缀用于指示体现信号来源,寄存器名称后缀用于体现中断树功能的特性也就是能用于指示数据流向。这样就实现了基于寄存器名称的前缀和后缀来确定数据流向以及实现寄存器之间的连线,从而自动化生成相应的中断树组合。在一些示例中,所述至少一个寄存器对象所对应的寄存器包括三个寄存器,设为寄存器A、寄存器B和寄存器C。假设寄存器A、寄存器B和寄存器C采用同一个寄存器名称的前缀,这意味着寄存器A、寄存器B和寄存器C属于同一个中断树机制。进一步地,寄存器A的寄存器名称的后缀名是第一后缀名“int set”,这意味着中断树的触发信号;寄存器B的寄存器名称的后缀名是第二后缀名“int enable”,这意味着中断树的使能信号;寄存器C的寄存器名称的后缀名是第三后缀名“int status”,这意味着中断树的状态信号。如此,通过设定寄存器A、寄存器B和寄存器C各自的寄存器名称的前缀和后缀,就可以便利地确定了寄存器A、寄存器B和寄存器C之间的连线或者连接关系,也就是寄存器A与寄存器B一起输入到寄存器C。通过改变寄存器名称的前缀和后缀,可以便利地改变中断树组合和寄存器之间的数据流向。例如,仍以寄存器A、寄存器B和寄存器C为例,假设寄存器A、寄存器B和寄存器C采用同一个寄存器名称的前缀,这意味着寄存器A、寄存器B和寄存器C属于同一个中断树机制。进一步地,寄存器B的寄存器名称的后缀名是第一后缀名“int set”,这意味着中断树的触发信号;寄存器C这意味着中断树的触发信号是第二后缀名“int enable”,这意味着中断树的使能信号;寄存器A的寄存器名称的后缀名是第三后缀名“int status”,这意味着中断树的状态信号。如此,通过改变寄存器名称的后缀,便利地实现了更新寄存器之间的连线,使得寄存器B与寄存器C一起输入到寄存器A。
应当理解的是,第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,因此当需要改变寄存器的逻辑功能或者更新中断树的组合或者改变信号列表,可以通过更新第一命名规则,例如对前缀和后缀的设定制定新的规则,如为新增的中断树机制添加对应的前缀和后缀。如此,对寄存器的逻辑功能例如中断树组合的更新,通过更新第一命名规则来实现,因此不需要改变寄存器表格的表项,只需要改变寄存器名称的前缀就可以指示不同的信号来源也即指示不同的中断树机制,以及改变寄存器名称的后缀就可以指示寄存器之间的连线和数据流向,这样就与通过改变寄存器表格的表项来体现对寄存器定义进行更新的过程进行了解耦。因此,寄存器迭代所带来的更新需求,其中与更新寄存器定义和配置有关的需求,例如更新寄存器的数量、地址、名称和域段等,这部分需求通过基于寄存器信息来调用例化寄存器代码生成寄存器对象实现,意味着针对寄存器文件或者寄存器表格内记录的表项内容进行更新;而寄存器迭代所带来的更新需求中与改变寄存器的逻辑功能或者更新中断树的组合有关的需求,这部分需求则通过基于所述寄存器间逻辑关系确定第一命名规则实现,意味着针对寄存器之间的逻辑关系也包括其所指示的所述至少一个寄存器相关联的逻辑功能,因此涉及到的是不同寄存器之间的信息和不同寄存器之间的数据流向。如此,在步骤S220中,通过将自动化生成寄存器对象的过程与自动化生成寄存器间逻辑及连线的过程进行解耦,通过对寄存器名称的后缀进行规范化命名,只需改变后缀即可生成不同的中断树,并且通过多个不同信号的后缀组合可以实现不同类型的中断树。类似地,通过对寄存器名称的后缀进行规范化命名,可以实现其它逻辑功能例如静态随机存储器(Static Random-Access Memory,SRAM)的纠错码(ErrorCorrecting Code)校验机制等。另外,对于车规级芯片应用场景等可能存在寄存器方面特殊要求的情况,可以通过在第一命名规则中设定专门部分,例如针对特定应用设定特定命名规则以及设定特定的规范化的寄存器名称的后缀,从而可以通过识别特定的后缀来便利地识别出特定应用并且实现相应的寄存器之间的连线和数据流向。另外,通过在步骤S220中将自动化生成寄存器对象的过程与自动化生成寄存器间逻辑及连线的过程进行解耦,这意味着可以分别通过改变寄存器信息如寄存器表格的表项和通过改变寄存器间逻辑如寄存器相关联的逻辑功能(如中断树组合)来分别体现相应的寄存器迭代的更新需要,并且,在改变某个寄存器的寄存器名称的前缀和后缀同时可以保持该寄存器的寄存器名称不变,而在改变某个寄存器的寄存器名称同时可以保持该寄存器的寄存器名称的前缀和后缀不变。这样意味着,通过改变寄存器名称的后缀,来体现寄存器间逻辑关系的更新,这样就将某个寄存器自身的内容和该寄存器以外的寄存器之间的逻辑关系解耦,有利于分别对寄存器自身和寄存器之间的逻辑关系进行迭代,简化了整体过程并且提高了自动化效率。
接着,在步骤230,基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,确定用于实现所述至少一个寄存器相关联的逻辑功能的所述至少一个寄存器对象之间的连接关系。如上所述,第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,因此当需要改变寄存器的逻辑功能或者更新中断树的组合或者改变信号列表,可以通过更新第一命名规则,例如对前缀和后缀的设定制定新的规则,如为新增的中断树机制添加对应的前缀和后缀。如此,对寄存器的逻辑功能例如中断树组合的更新,通过更新第一命名规则来实现,因此不需要改变寄存器表格的表项,只需要改变寄存器名称的前缀就可以指示不同的信号来源也即指示不同的中断树机制,以及改变寄存器名称的后缀就可以指示寄存器之间的连线和数据流向,这样就与通过改变寄存器表格的表项来体现对寄存器定义进行更新的过程进行了解耦。在步骤S230中,利用所述至少一个寄存器对象的连接关系、所述至少一个寄存器对象和接口读写逻辑生成所述至少一个寄存器相关联的寄存器代码。这样自动化生成的所述至少一个寄存器相关联的寄存器代码,不仅可以通过更新寄存器信息、配置信息和寄存器间逻辑关系来体现寄存器迭代的更新需要,而且通过在步骤S220中将自动化生成寄存器对象的过程与自动化生成寄存器间逻辑及连线的过程进行解耦,简化了整体过程并且提高了自动化效率。其中,所述接口读写逻辑基于所述配置信息生成。在一些实施例中,配置信息包括基地址,接口类型,接口地址位宽,接口数据位宽,例化数量,是否采用总线形式,信号以域段名命名还是以寄存器名加上域段名命名,例化寄存器信号的前缀可配,是否生成奇偶校验逻辑等。在一些示例中,配置信息包括:基地址为0x000+0x0400*N (N=0, 1, 2, 3),接口地址位宽为16,接口数据位宽为16,接口类型为APB(Advanced Peripheral Bus)接口,多例化类型为Bus总线类型,例化数量为4,生成奇偶校验逻辑,信号名以寄存器名加域段名命名,例化的寄存器信号的前缀为“slv_”。
图2所示的用于寄存器代码自动生成的方法,针对芯片开发过程中寄存器迭代所带来的更新需求,利用了寄存器代码编写中的规律性特别是基于寄存器的访问属性,调用相应的例化寄存器代码,来实例化寄存器对象和域段对象,也即调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,实现了自动化生成寄存器代码并且可以有效地保证寄存器代码的稳定性和正确性;进一步地,将自动化生成寄存器对象的过程与自动化生成寄存器间逻辑及连线的过程进行解耦,通过规范化寄存器名称的前缀和后缀,实现了寄存器逻辑功能的自动化生成并且提升了自动化效率。
在一种可能的实现方式中,所述寄存器信息、所述配置信息和所述寄存器间逻辑关系按照寄存器表格格式存储在寄存器文件中,其中,获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系,包括:读取所述寄存器文件并且基于所述寄存器表格格式获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系。在一种可能的实现方式中,所述方法还包括:在获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系之后,基于所述寄存器表格格式,将所获取的所述寄存器信息、所述配置信息和所述寄存器间逻辑关系保存到二维数据表,所述二维数据表用于查错纠错。在一种可能的实现方式中,通过检查所述二维数据表识别所述寄存器文件的错误,包括:识别基地址是否重复、识别页签名称是否重复、识别页签地址偏移是否重复、识别寄存器名称和域段名称是否重复、识别域段地址是否与预设位宽不一致、识别寄存器类型是否正确、识别同一个寄存器内的域段类型是否正确、识别域段地址是否连续。如此,通过寄存器表格或者二维数据表可以进行错误检查,提前发现如寄存器名重复,域名重复,寄存器地址重复,域段地址越位以及同一个寄存器内存在类型有冲突的两个域段等错误。例如,可以通过寄存器表格或者二维数据表,遍历寄存器对象及域段对象,通过识别寄存器名称和域段名称的前后缀从而便利地确定寄存器之间的逻辑关系,进而可以基于域段类型或者说域段访问属性来调用预先准备好的例化CBB来生成相应的例化代码。应当理解的是,通过将自动化生成寄存器对象的过程与自动化生成寄存器间逻辑及连线的过程进行解耦,这样意味着,通过改变寄存器名称的后缀,来体现寄存器间逻辑关系的更新,这样就将某个寄存器自身的内容和该寄存器以外的寄存器之间的逻辑关系解耦,有利于分别对寄存器自身和寄存器之间的逻辑关系进行迭代。因此,改变寄存器文件或者二维数据表的表项的操作可以与改变寄存器名称的后缀的操作进行解耦,这样有利于使用二维数据表进行查错纠错,可以提升纠错效率。
在一种可能的实现方式中,所述寄存器信息还包括:寄存器名称、寄存器地址、域段名称、域段范围、域段访问属性、域段复位值、域段描述,所述配置信息所包括的所述至少一个寄存器相关联的接口信息包括:寄存器基地址、接口类型、接口地址位宽、接口数据位宽、例化数量,所述配置信息所包括的所述至少一个寄存器相关联的校验机制包括所述至少一个寄存器各自是否生成奇偶校验逻辑。在一种可能的实现方式中,所述至少一个寄存器的访问属性基于所述至少一个寄存器各自所包括的域段的域段访问属性确定。在一些示例中,寄存器内部可能包括多个域段,每个域段各自具有域段名称、域段范围、域段访问属性、域段复位值、域段描述。因此,寄存器的访问属性是基于该寄存器所包括的域段的域段访问属性确定。对于需要额外的奇偶校验机制如车规级芯片,这一点在配置信息中的校验机制的表项上可以体现是否生成奇偶校验逻辑,在生成相应RTL代码时,也可以通过已经验证的逻辑代码,结合接口或者逻辑写入的数据生成1位的校验位,并且在数据存储和数据校验时也同时处理数据和校验位。
在一种可能的实现方式中,所述例化寄存器代码包括与多个例化寄存器类型一一对应的例化共用模块,第一寄存器是所述至少一个寄存器中的任一寄存器,其中,基于所述寄存器信息,调用所述例化寄存器代码生成与所述至少一个寄存器一一对应的所述至少一个寄存器对象,包括:基于所述寄存器信息所包括的所述第一寄存器的访问属性,选择所述多个例化寄存器类型中的第一例化寄存器类型,然后调用与所述第一例化寄存器类型对应的例化共用模块来利用所述寄存器信息自动化生成与所述第一寄存器对应的寄存器对象的寄存器代码。如此,基于所述寄存器信息,因此也基于所述寄存器信息包括的至少一个寄存器的访问属性,可以利用寄存器代码的编码规律性与寄存器访问属性(在寄存器包括多个域段的情况下也可以理解为包含了域段访问属性)之间的关联性,通过具有一定重复性和复用性的代码片段也就是例化寄存器代码,来实现自动化生成寄存器代码。例化共用模块可以是已经验证正确的逻辑代码这样的形式。这样后续通过寄存器信息中的域段类型或者说域段访问属性,就可以调用相应的逻辑代码来构建RTL代码的片段,进而通过整合这些RTL代码的片段从而实现相应的域段功能的组合。
在一种可能的实现方式中,所述多个例化寄存器类型包括:可读可写寄存器类型、只读寄存器类型、读清寄存器类型、可计数可读清寄存器类型、可读可写清零寄存器类型、只写寄存器类型、可读可写逻辑可写寄存器类型。应当理解的是,随着芯片设计复杂度和规模的增加,以及综合工具和验证方法学的发展,可能出现新的寄存器类型、新的寄存器访问属性或者对现有寄存器访问机制做出更新,可以通过更新例化寄存器代码,例如生成新的已经验证正确的逻辑代码并构建新的例化共用模块来体现这些更新,进而确保自动化生成的寄存器代码可以满足更新后的需求。
在一种可能的实现方式中,所述寄存器间逻辑关系所指示的所述至少一个寄存器相关联的逻辑功能包括中断树功能。寄存器间逻辑关系包括寄存器的常用逻辑功能,例如中断树和静态随机存储器(Static Random-Access Memory,SRAM)的纠错码(ErrorCorrecting Code)校验机制等。
在一种可能的实现方式中,所述第一命名规则还用于规范化所生成的所述至少一个寄存器对象各自所包括的域段的域段名称的前缀和后缀,针对所述至少一个寄存器中的每一个寄存器,基于该寄存器的寄存器名称的前缀和后缀以及该寄存器所包括的域段的域段名称的前缀和后缀,确定所述至少一个寄存器对象之间的连接关系。寄存器间逻辑关系通过预先设定的命名规则来规范化寄存器名称和域段名称的前后缀来实现。因此通过识别寄存器名称和域段名称就可以便利地确定寄存器之间的逻辑关系,例如用第一域名后缀表示中断树的触发信号,用第二域名后缀表示中断树的使能信号,这样通过添加相应的域名后缀就可以体现中断位置信号的数据流向。寄存器内部可能包括多个域段并且各个域段各自具有访问属性,中断树机制涉及到多个寄存器之间的连线并且涉及到寄存器内部的域段的访问属性。例如,多个寄存器可以各自包括两个或者更多个域段,通过规范化寄存器名称和域段名称的后缀,可以自动化生成中断树的连接关系,并且可以实现中断事件的触发、中断状态上报以及中断处理等。因此,基于规范化命名的寄存器名称和域段名称的前后缀,只需要改变前缀和后缀,即可生成不同的中断树,并且,通过多个不同信号的后缀名字组合,实现不同类型的中断树,有利于提升自动化效率。
在一种可能的实现方式中,所述至少一个寄存器对象包括第一寄存器对象,所述第一寄存器对象的寄存器名称的前缀用于指示所述第一寄存器对象所属的第一中断树机制,所述第一寄存器对象的寄存器名称的后缀用于指示所述第一寄存器对象与所述第一中断树机制下的其它寄存器对象之间的连接关系。如此,通过识别寄存器名称包括其前缀和后缀就可以便利地确定寄存器之间的逻辑关系。
在一种可能的实现方式中,所述至少一个寄存器对象包括第二寄存器对象,所述第二寄存器对象包括至少两个域段,所述第二寄存器所包括的所述至少两个域段各自的域段名称的前缀分别用于指示所述至少两个域段各自所属的中断树机制,所述第二寄存器所包括的所述至少两个域段各自的域段名称的后缀用于指示所述至少两个域段分别与所述至少两个域段各自所属的中断树机制下的其它域段之间的连接关系。在一种可能的实现方式中,所述方法还包括:通过改变所述第二寄存器所包括的所述至少两个域段各自的域段名称的后缀,从而改变所生成的所述至少一个寄存器相关联的寄存器代码的中断树功能。如此,基于规范化命名的寄存器名称和域段名称的前后缀,只需要改变前缀和后缀,即可生成不同的中断树,并且,通过多个不同信号的后缀名字组合,实现不同类型的中断树,有利于提升自动化效率。
在一种可能的实现方式中,基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀确定所述至少一个寄存器对象的连接关系的过程与基于所述寄存器信息生成所述至少一个寄存器对象的过程之间是解耦的。如此,将自动化生成寄存器对象的过程与自动化生成寄存器间逻辑及连线的过程进行解耦,这意味着可以分别通过改变寄存器信息如寄存器表格的表项和通过改变寄存器间逻辑如寄存器相关联的逻辑功能(如中断树组合)来分别体现相应的寄存器迭代的更新需要,并且,在改变某个寄存器的寄存器名称的前缀和后缀同时可以保持该寄存器的寄存器名称不变,而在改变某个寄存器的寄存器名称同时可以保持该寄存器的寄存器名称的前缀和后缀不变。这样意味着,通过改变寄存器名称的后缀,来体现寄存器间逻辑关系的更新,这样就将某个寄存器自身的内容和该寄存器以外的寄存器之间的逻辑关系解耦,有利于分别对寄存器自身和寄存器之间的逻辑关系进行迭代,简化了整体过程并且提高了自动化效率。
在一种可能的实现方式中,所述寄存器间逻辑关系所指示的所述至少一个寄存器相关联的逻辑功能还包括静态随机存储器纠错码校验功能,所述至少一个寄存器对象之间的连接关系还用于实现所述静态随机存储器纠错码校验功能。应当理解的是,除了静态随机存储器纠错码校验功能,还可以针对特定应用设定特定命名规则以及设定特定的规范化的寄存器名称的后缀,从而可以通过识别特定的后缀来便利地识别出特定应用并且实现相应的寄存器之间的连线和数据流向。
在一种可能的实现方式中,所述至少一个寄存器对象之间的连接关系定义了所述至少一个寄存器对象之间的多种信号各自的数据流向。如此,通过改变所述至少一个寄存器对象之间的连接关系或者连线,可以改变信号的数据流向。
在一种可能的实现方式中,当所述配置信息所包括的所述至少一个寄存器相关联的校验机制指示第二寄存器生成奇偶校验逻辑时,所生成的与所述第二寄存器对应的寄存器对象的寄存器位宽包括一比特的奇偶校验位。如此,有利于满足如车规级芯片等应用场景的寄存器要求。
在一种可能的实现方式中,所述例化寄存器代码包括高功耗版本和低功耗版本,其中,所述低功耗版本包括门控时钟电路用于减少时钟树翻转和寄存器时钟引脚翻转,所述高功耗版本不包括所述门控时钟电路,基于所述寄存器信息,调用所述例化寄存器代码生成与所述至少一个寄存器一一对应的所述至少一个寄存器对象,包括:基于所述寄存器信息,选择性地调用所述例化寄存器代码的所述高功耗版本或者所述低功耗版本,生成与所述至少一个寄存器一一对应的所述至少一个寄存器对象。如上所述,基于所述寄存器信息,因此也基于所述寄存器信息包括的至少一个寄存器的访问属性,可以利用寄存器代码的编码规律性与寄存器访问属性(在寄存器包括多个域段的情况下也可以理解为包含了域段访问属性)之间的关联性,通过具有一定重复性和复用性的代码片段也就是例化寄存器代码,来实现自动化生成寄存器代码。在一些应用场景下可能对功耗比较敏感也就是优先考虑降低功耗,为此需要在功耗、性能、资源、成本等因素之间进行权衡,例如通过占用更多的资源来保持较低的功耗。另外,客户可能结合自身需要会在高功耗但是占用资源少和低功耗但是占用资源多这两种策略之间进行选择。其中,寄存器的内部功耗主要来自于时钟树翻转和寄存器时钟引脚翻转。时钟树由大量的缓冲器和反相器组成,时钟信号为设计中翻转率最高的信号,时钟树的功耗可能高达整个设计功耗百分之四十。为了降低时钟网络的功耗消耗从而降低寄存器内部消耗,可以通过门控时钟电路减少时钟树翻转和寄存器时钟引脚翻转,这样节省了翻转功耗和减少了寄存器时钟引脚翻转行为。但是,引入门控时钟电路也意味着占用额外的资源,因此可以提供所述例化寄存器代码的所述高功耗版本或者所述低功耗版本,这样可以基于所述寄存器信息来进行选择相应版本用于自动化生成寄存器对象。如此,实现了对功耗因素的优化和满足客户定制需要。
在一种可能的实现方式中,所述寄存器信息包括所述至少一个寄存器各自的寄存器数据位宽,针对所述至少一个寄存器中的每一个寄存器,当该寄存器的寄存器数据位宽大于阈值位宽时调用所述低功耗版本,否则调用所述高功耗版本,其中,所述阈值位宽基于该寄存器的制备工艺预先设定。如上所述,低功耗版本引入门控时钟电路也意味着占用额外的资源,当数据位宽大于等于阈值位宽时,这可能意味着引入门控时钟电路的收益较大,因为较大的寄存器数据位宽可能意味着在翻转功耗和翻转行为上带来的功耗消耗较大,因此值得采用低功耗版本。阈值位宽受到具体的制备工艺影响,一般为3个比特位。当该寄存器的寄存器数据位宽大于阈值位宽时,寄存器的翻转行为带来大量不必要的翻转功耗,而且随着寄存器数量增加还会进一步增加芯片功耗,因此适合调用所述低功耗版本从而引入门控时钟电路。当该寄存器的寄存器数据位宽不大于阈值位宽时,这意味着门控时钟电路的资源占用带来的损失大于引入门控时钟电路的收益,因此适合调用所述高功耗版本,也就是不插入门控时钟电路从而减少了门控时钟电路的资源消耗。
在一种可能的实现方式中,针对所述至少一个寄存器中的每一个寄存器,将该寄存器所包括的可读可写域段合并例化,当该寄存器的合并例化后可读可写域段的数据位宽大于阈值位宽时调用所述低功耗版本,否则调用所述高功耗版本,其中,所述阈值位宽基于该寄存器的制备工艺预先设定。从系统级角度整体优化寄存器,需要考虑到寄存器内的域段可能分布较为分散,这样每个域段的数据位宽可能都小于阈值位宽如3个比特位,但是整体上而言仍然意味着引入门控时钟电路的收益大于门控时钟电路的资源占用带来的损失。因此,可以将可读可写域段合并例化,当该寄存器的合并例化后可读可写域段的数据位宽大于阈值位宽时,例如可以将多个1比特位的可读可写域段合并例化后使得数据位宽大于阈值位宽,这样适合调用所述低功耗版本从而引入门控时钟电路,节省了翻转功耗和减少了寄存器时钟引脚翻转行为。
在一种可能的实现方式中,基于所述寄存器信息所包括的所述至少一个寄存器的访问属性,合并所述至少一个寄存器中不具有逻辑写输入访问属性的一个或者多个寄存器并且插入总时钟门控电路,所述总时钟门控电路的时钟门控使能信号是所述一个或者多个寄存器的读写使能信号。如上所述,寄存器访问属性以及寄存器内部的域段的访问属性可能存在多种类型。其中,对于可读可写(Read Write,RW)寄存器和只写(Write Only,WO)寄存器,这样的寄存器类型不具有逻辑写输入访问属性,因此可以在顶层插入总时钟门控电路,并且所述总时钟门控电路的时钟门控使能信号是所述一个或者多个寄存器的读写使能信号,这样可以基于预设规则自动插入门控时钟电路。
在一种可能的实现方式中,基于所述寄存器信息所包括的所述至少一个寄存器的访问属性,对所述至少一个寄存器中具有逻辑写输入访问属性的寄存器分别单独确定是否调用相应的低功耗版本,所述具有逻辑写输入访问属性的寄存器包括以下一项或者多项:读清寄存器、可读可写清零寄存器、可读可写逻辑可写寄存器、可计数可读清寄存器。其中,对于读清(Read Clear,RC)寄存器、可读可写清零(Read Write Clear,RWC)寄存器、可读可写逻辑可写(Read and Write and Logic Write,RWW)寄存器、可计数可读清(Count AndRead Clear,CAR)寄存器,这样的寄存器类型具有逻辑写输入访问属性,因此可以先遍历寄存器,分别单独确定是否调用相应的低功耗版本。例如,当这些寄存器内部的相应域段访问属性的域段的数据位宽大于等于某个阈值如8个比特位时,可以分别单独插入时钟门控电路。对于剩余的寄存器,可以合并后插入时钟门控电路并且确保数据位宽不超过某个数值如32个比特位。应当理解的是,基于所述寄存器信息所包括的所述至少一个寄存器的访问属性,可以合并所述至少一个寄存器中不具有逻辑写输入访问属性的一个或者多个寄存器并且插入总时钟门控电路,或者,可以对所述至少一个寄存器中具有逻辑写输入访问属性的寄存器分别单独确定是否调用相应的低功耗版本。因此,可以通过预设规则确定对哪些类型的寄存器插入时钟门控电路,以及确定当数据位宽大于哪个数值时采插入时钟门控电路(也就是与预设阈值比较以判断是否调用低功耗版本来插入时钟门控电路),因此可以灵活地结合具体制备工艺、寄存器类型、客户需求等,从而有利于在在功耗、性能、资源、成本等因素之间做出最佳抉择。
图3为本申请实施例提供的一种用于寄存器代码自动生成的系统的示意图。如图3所示,所述系统包括:输入模块310,用于读取寄存器文件,其中,寄存器信息、配置信息和寄存器间逻辑关系按照寄存器表格格式存储在所述寄存器文件中,所述寄存器信息包括至少一个寄存器的访问属性,所述配置信息包括所述至少一个寄存器相关联的接口信息和校验机制,所述寄存器间逻辑关系指示所述至少一个寄存器相关联的逻辑功能;提取模块320,用于基于所述寄存器表格格式从所述输入模块所读取的所述寄存器文件中,获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系;处理模块330,用于:基于所述寄存器信息,调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,以及,基于所述寄存器间逻辑关系确定第一命名规则,所述第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,还用于:基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,确定用于实现所述至少一个寄存器相关联的逻辑功能的所述至少一个寄存器对象之间的连接关系,然后利用所述至少一个寄存器对象的连接关系、所述至少一个寄存器对象和接口读写逻辑生成所述至少一个寄存器相关联的寄存器代码,其中,所述接口读写逻辑基于所述配置信息生成;输出模块340,用于输出所述寄存器文件、所述至少一个寄存器相关联的寄存器代码以及所述寄存器文件相关联的检查报告。
图3所示的用于寄存器代码自动生成的系统,针对芯片开发过程中寄存器迭代所带来的更新需求,利用了寄存器代码编写中的规律性特别是基于寄存器的访问属性,调用相应的例化寄存器代码,来实例化寄存器对象和域段对象,也即调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,实现了自动化生成寄存器代码并且可以有效地保证寄存器代码的稳定性和正确性;进一步地,将自动化生成寄存器对象的过程与自动化生成寄存器间逻辑及连线的过程进行解耦,通过规范化寄存器名称的前缀和后缀,实现了寄存器逻辑功能的自动化生成并且提升了自动化效率。
图4是本申请实施例提供的一种计算设备的结构示意图,该计算设备400包括:一个或者多个处理器410、通信接口420以及存储器430。所述处理器410、通信接口420以及存储器430通过总线440相互连接。可选地,该计算设备400还可以包括输入/输出接口450,输入/输出接口450连接有输入/输出设备,用于接收用户设置的参数等。该计算设备400能够用于实现上述的本申请实施例中设备实施例或者系统实施例的部分或者全部功能;处理器410还能够用于实现上述的本申请实施例中方法实施例的部分或者全部操作步骤。例如,该计算设备400执行各种操作的具体实现可参照上述实施例中的具体细节,如处理器410用于执行上述方法实施例中部分或者全部步骤或者上述方法实施例中的部分或者全部操作。再例如,本申请实施例中,计算设备400可用于实现上述装置实施例中一个或者多个部件的部分或者全部功能,此外通信接口420具体可用于为了实现这些装置、部件的功能所必须的通讯功能等,以及处理器410具体可用于为了实现这些装置、部件的功能所必须的处理功能等。
应当理解的是,图4的计算设备400可以包括一个或者多个处理器410,并且多个处理器410可以按照并行化连接方式、串行化连接方式、串并行连接方式或者任意连接方式来协同提供处理能力,或者多个处理器410可以构成处理器序列或者处理器阵列,或者多个处理器410之间可以分成主处理器和辅助处理器,或者多个处理器410之间可以具有不同的架构如采用异构计算架构。另外,图4所示的计算设备400,相关的结构性描述及功能性描述是示例性且非限制性的。在一些示例性实施例中,计算设备400可以包括比图4所示的更多或更少的部件,或者组合某些部件,或者拆分某些部件,或者具有不同的部件布置。
处理器410可以有多种具体实现形式,例如处理器410可以包括中央处理器(central processing unit,CPU)、图形处理器(graphic processing unit,GPU)、神经网络处理器(neural-network processing unit,NPU)、张量处理器(tensor processingunit,TPU)或数据处理器(data processing unit,DPU)等一种或多种的组合,本申请实施例不做具体限定。处理器410还可以是单核处理器或多核处理器。处理器410可以由CPU和硬件芯片的组合。上述硬件芯片可以是专用集成电路(application-specific integratedcircuit,ASIC),可编程逻辑器件(programmable logic device,PLD)或其组合。上述PLD可以是复杂可编程逻辑器件(complex programmable logic device,CPLD),现场可编程逻辑门阵列(field-programmable gate array,FPGA),通用阵列逻辑(generic array logic,GAL)或其任意组合。处理器410也可以单独采用内置处理逻辑的逻辑器件来实现,例如FPGA或数字信号处理器(digital signal processor,DSP)等。通信接口420可以为有线接口或无线接口,用于与其他模块或设备进行通信,有线接口可以是以太接口、局域互联网络(local interconnect network,LIN)等,无线接口可以是蜂窝网络接口或使用无线局域网接口等。
存储器430可以是非易失性存储器,例如,只读存储器(read-only memory,ROM)、可编程只读存储器(programmable ROM,PROM)、可擦除可编程只读存储器(erasable PROM,EPROM)、电可擦除可编程只读存储器(electrically EPROM,EEPROM)或闪存。存储器430也可以是易失性存储器,易失性存储器可以是随机存取存储器(random access memory,RAM),其用作外部高速缓存。通过示例性但不是限制性说明,许多形式的RAM可用,例如静态随机存取存储器(static RAM,SRAM)、动态随机存取存储器(dynamic RAM,DRAM)、同步动态随机存取存储器(synchronous DRAM,SDRAM)、双倍数据速率同步动态随机存取存储器(double data rate SDRAM,DDR SDRAM)、增强型同步动态随机存取存储器(enhancedSDRAM,ESDRAM)、同步连接动态随机存取存储器(synchlink DRAM,SLDRAM)和直接内存总线随机存取存储器(direct rambus RAM,DR RAM)。存储器430也可用于存储程序代码和数据,以便于处理器410调用存储器430中存储的程序代码执行上述方法实施例中的部分或者全部操作步骤,或者执行上述设备实施例中的相应功能。此外,计算设备400可能包含相比于图4展示的更多或者更少的组件,或者有不同的组件配置方式。
总线440可以是快捷外围部件互连标准(peripheral component interconnectexpress,PCIe)总线,或扩展工业标准结构(extended industry standard architecture,EISA)总线、统一总线(unified bus,Ubus或UB)、计算机快速链接(compute express link,CXL)、缓存一致互联协议(cache coherent interconnect for accelerators,CCIX)等。总线440可以分为地址总线、数据总线、控制总线等。总线440除包括数据总线之外,还可以包括电源总线、控制总线和状态信号总线等。但是为了清楚说明起见,图4中仅用一条粗线表示,但并不表示仅有一根总线或一种类型的总线。
本申请实施例提供的方法和设备是基于同一发明构思的,由于方法及设备解决问题的原理相似,因此方法与设备的实施例、实施方式、示例或实现方式可以相互参见,其中重复之处不再赘述。本申请实施例还提供一种系统,该系统包括多个计算设备,每个计算设备的结构可以参照上述所描述的计算设备的结构。该系统可实现的功能或者操作可以参照上述方法实施例中的具体实现步骤和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本申请实施例还提供一种计算机可读存储介质,所述计算机可读存储介质中存储有计算机指令,当所述计算机指令在计算机设备(如一个或者多个处理器)上运行时可以实现上述方法实施例中的方法步骤。所述计算机可读存储介质的处理器在执行上述方法步骤的具体实现可参照上述方法实施例中所描述的具体操作和/或上述装置实施例中所描述的具体功能,在此不再赘述。
本领域内的技术人员应明白,本申请的实施例可提供为方法、系统、或计算机程序产品。本申请可采用完全硬件实施例、完全软件实施例、或结合软件和硬件方面的实施例的形式。本申请实施例可以全部或部分地通过软件、硬件、固件或其他任意组合来实现。当使用软件实现时,上述实施例可以全部或部分地以计算机程序产品的形式实现。本申请可采用在一个或多个其中包含有计算机可用程序代码的计算机可用存储介质上实施的计算机程序产品的形式。所述计算机程序产品包括一个或多个计算机指令。在计算机上加载或执行所述计算机程序指令时,全部或部分地产生按照本申请实施例所述的流程或功能。所述计算机可以为通用计算机、专用计算机、计算机网络、或者其他可编程装置。计算机指令可以存储在计算机可读存储介质中,或者从一个计算机可读存储介质向另一个计算机可读存储介质传输,例如,计算机指令可以从一个网站站点、计算机、服务器或数据中心通过有线(例如同轴电缆、光纤、数字用户线)或无线(例如红外、无线、微波等)方式向另一个网站站点、计算机、服务器或数据中心进行传输。计算机可读存储介质可以是计算机能够存取的任何可用介质或者是包含一个或多个可用介质集合的服务器、数据中心等数据存储设备。可用介质可以是磁性介质(如软盘、硬盘、磁带)、光介质、或者半导体介质。半导体介质可以是固态硬盘,也可以是随机存取存储器,闪存,只读存储器,可擦可编程只读存储器,电可擦可编程只读存储器,寄存器或任何其他形式的合适存储介质。
本申请是参照根据本申请实施例的方法、设备(系统)、和计算机程序产品的流程图和/或方框图来描述。可由计算机程序指令实现流程图和/或方框图中的每一流程和/或方框、以及流程图和/或方框图中的流程和/或方框的结合。可提供这些计算机程序指令到通用计算机、专用计算机、嵌入式处理机或其他可编程数据处理设备的处理器以产生一个机器,使得通过计算机或其他可编程数据处理设备的处理器执行的指令产生用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的装置。这些计算机程序指令也可存储在能引导计算机或其他可编程数据处理设备以特定方式工作的计算机可读存储器中,使得存储在该计算机可读存储器中的指令产生包括指令装置的制造品,该指令装置实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能。这些计算机程序指令也可装载到计算机或其他可编程数据处理设备上,使得在计算机或其他可编程设备上执行一系列操作步骤以产生计算机实现的处理,从而在计算机或其他可编程设备上执行的指令提供用于实现在流程图一个流程或多个流程和/或方框图一个方框或多个方框中指定的功能的步骤。
在上述实施例中,对各个实施例的描述都各有侧重,某个实施例中没有详述的部分,可以参见其它实施例的相关描述。显然,本领域的技术人员可以对本申请实施例进行各种改动和变型而不脱离本申请实施例的精神和范围。本申请实施例方法中的步骤可以根据实际需要进行顺序调整、合并或删减;本申请实施例系统中的模块可以根据实际需要进行划分、合并或删减。如果本申请实施例的这些修改和变型属于本申请权利要求及其等同技术的范围之内,则本申请也意图包含这些改动和变型在内。
Claims (25)
1.一种用于寄存器代码自动生成的方法,其特征在于,所述方法包括:
获取寄存器信息、配置信息和寄存器间逻辑关系,其中,所述寄存器信息包括至少一个寄存器的访问属性,所述配置信息包括所述至少一个寄存器相关联的接口信息和校验机制,所述寄存器间逻辑关系指示所述至少一个寄存器相关联的逻辑功能;
基于所述寄存器信息,调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,以及,基于所述寄存器间逻辑关系确定第一命名规则,所述第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀;
基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,确定用于实现所述至少一个寄存器相关联的逻辑功能的所述至少一个寄存器对象之间的连接关系,然后利用所述至少一个寄存器对象的连接关系、所述至少一个寄存器对象和接口读写逻辑生成所述至少一个寄存器相关联的寄存器代码,其中,所述接口读写逻辑基于所述配置信息生成。
2.根据权利要求1所述的方法,其特征在于,所述寄存器信息、所述配置信息和所述寄存器间逻辑关系按照寄存器表格格式存储在寄存器文件中,其中,获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系,包括:读取所述寄存器文件并且基于所述寄存器表格格式获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系。
3.根据权利要求2所述的方法,其特征在于,所述方法还包括:
在获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系之后,基于所述寄存器表格格式,将所获取的所述寄存器信息、所述配置信息和所述寄存器间逻辑关系保存到二维数据表,所述二维数据表用于查错纠错。
4.根据权利要求3所述的方法,其特征在于,通过检查所述二维数据表识别所述寄存器文件的错误,包括:识别基地址是否重复、识别页签名称是否重复、识别页签地址偏移是否重复、识别寄存器名称和域段名称是否重复、识别域段地址是否与预设位宽不一致、识别寄存器类型是否正确、识别同一个寄存器内的域段类型是否正确、识别域段地址是否连续。
5.根据权利要求1所述的方法,其特征在于,所述寄存器信息还包括:寄存器名称、寄存器地址、域段名称、域段范围、域段访问属性、域段复位值、域段描述,所述配置信息所包括的所述至少一个寄存器相关联的接口信息包括:寄存器基地址、接口类型、接口地址位宽、接口数据位宽、例化数量,所述配置信息所包括的所述至少一个寄存器相关联的校验机制包括所述至少一个寄存器各自是否生成奇偶校验逻辑。
6.根据权利要求5所述的方法,其特征在于,所述至少一个寄存器的访问属性基于所述至少一个寄存器各自所包括的域段的域段访问属性确定。
7.根据权利要求1所述的方法,其特征在于,所述例化寄存器代码包括与多个例化寄存器类型一一对应的例化共用模块,第一寄存器是所述至少一个寄存器中的任一寄存器,其中,基于所述寄存器信息,调用所述例化寄存器代码生成与所述至少一个寄存器一一对应的所述至少一个寄存器对象,包括:基于所述寄存器信息所包括的所述第一寄存器的访问属性,选择所述多个例化寄存器类型中的第一例化寄存器类型,然后调用与所述第一例化寄存器类型对应的例化共用模块来利用所述寄存器信息自动化生成与所述第一寄存器对应的寄存器对象的寄存器代码。
8.根据权利要求7所述的方法,其特征在于,所述多个例化寄存器类型包括:可读可写寄存器类型、只读寄存器类型、读清寄存器类型、可计数可读清寄存器类型、可读可写清零寄存器类型、只写寄存器类型、可读可写逻辑可写寄存器类型。
9.根据权利要求1所述的方法,其特征在于,所述寄存器间逻辑关系所指示的所述至少一个寄存器相关联的逻辑功能包括中断树功能。
10.根据权利要求9所述的方法,其特征在于,所述第一命名规则还用于规范化所生成的所述至少一个寄存器对象各自所包括的域段的域段名称的前缀和后缀,针对所述至少一个寄存器中的每一个寄存器,基于该寄存器的寄存器名称的前缀和后缀以及该寄存器所包括的域段的域段名称的前缀和后缀,确定所述至少一个寄存器对象之间的连接关系。
11.根据权利要求9所述的方法,其特征在于,所述至少一个寄存器对象包括第一寄存器对象,所述第一寄存器对象的寄存器名称的前缀用于指示所述第一寄存器对象所属的第一中断树机制,所述第一寄存器对象的寄存器名称的后缀用于指示所述第一寄存器对象与所述第一中断树机制下的其它寄存器对象之间的连接关系。
12.根据权利要求10所述的方法,其特征在于,所述至少一个寄存器对象包括第二寄存器对象,所述第二寄存器对象包括至少两个域段,所述第二寄存器所包括的所述至少两个域段各自的域段名称的前缀分别用于指示所述至少两个域段各自所属的中断树机制,所述第二寄存器所包括的所述至少两个域段各自的域段名称的后缀用于指示所述至少两个域段分别与所述至少两个域段各自所属的中断树机制下的其它域段之间的连接关系。
13.根据权利要求12所述的方法,其特征在于,所述方法还包括:
通过改变所述第二寄存器所包括的所述至少两个域段各自的域段名称的后缀,从而改变所生成的所述至少一个寄存器相关联的寄存器代码的中断树功能。
14.根据权利要求1所述的方法,其特征在于,基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀确定所述至少一个寄存器对象的连接关系的过程与基于所述寄存器信息生成所述至少一个寄存器对象的过程之间是解耦的。
15.根据权利要求10所述的方法,其特征在于,所述寄存器间逻辑关系所指示的所述至少一个寄存器相关联的逻辑功能还包括静态随机存储器纠错码校验功能,所述至少一个寄存器对象之间的连接关系还用于实现所述静态随机存储器纠错码校验功能。
16.根据权利要求9至15中任一项所述的方法,其特征在于,所述至少一个寄存器对象之间的连接关系定义了所述至少一个寄存器对象之间的多种信号各自的数据流向。
17.根据权利要求5所述的方法,其特征在于,当所述配置信息所包括的所述至少一个寄存器相关联的校验机制指示第二寄存器生成奇偶校验逻辑时,所生成的与所述第二寄存器对应的寄存器对象的寄存器位宽包括一比特的奇偶校验位。
18.根据权利要求1所述的方法,其特征在于,所述例化寄存器代码包括高功耗版本和低功耗版本,其中,所述低功耗版本包括门控时钟电路用于减少时钟树翻转和寄存器时钟引脚翻转,所述高功耗版本不包括所述门控时钟电路,
基于所述寄存器信息,调用所述例化寄存器代码生成与所述至少一个寄存器一一对应的所述至少一个寄存器对象,包括:基于所述寄存器信息,选择性地调用所述例化寄存器代码的所述高功耗版本或者所述低功耗版本,生成与所述至少一个寄存器一一对应的所述至少一个寄存器对象。
19.根据权利要求18所述的方法,其特征在于,所述寄存器信息包括所述至少一个寄存器各自的寄存器数据位宽,针对所述至少一个寄存器中的每一个寄存器,当该寄存器的寄存器数据位宽大于阈值位宽时调用所述低功耗版本,否则调用所述高功耗版本,其中,所述阈值位宽基于该寄存器的制备工艺预先设定。
20.根据权利要求18所述的方法,其特征在于,针对所述至少一个寄存器中的每一个寄存器,将该寄存器所包括的可读可写域段合并例化,当该寄存器的合并例化后可读可写域段的数据位宽大于阈值位宽时调用所述低功耗版本,否则调用所述高功耗版本,其中,所述阈值位宽基于该寄存器的制备工艺预先设定。
21.根据权利要求18所述的方法,其特征在于,基于所述寄存器信息所包括的所述至少一个寄存器的访问属性,合并所述至少一个寄存器中不具有逻辑写输入访问属性的一个或者多个寄存器并且插入总时钟门控电路,所述总时钟门控电路的时钟门控使能信号是所述一个或者多个寄存器的读写使能信号。
22.根据权利要求18所述的方法,其特征在于,基于所述寄存器信息所包括的所述至少一个寄存器的访问属性,对所述至少一个寄存器中具有逻辑写输入访问属性的寄存器分别单独确定是否调用相应的低功耗版本,所述具有逻辑写输入访问属性的寄存器包括以下一项或者多项:读清寄存器、可读可写清零寄存器、可读可写逻辑可写寄存器、可计数可读清寄存器。
23.一种计算机设备,其特征在于,所述计算机设备包括存储器、处理器及存储在所述存储器上并可在所述处理器上运行的计算机程序,所述处理器执行所述计算机程序时实现根据权利要求1至22中任一项所述的方法。
24.一种计算机可读存储介质,其特征在于,所述计算机可读存储介质存储有计算机指令,当所述计算机指令在计算机设备上运行时使得所述计算机设备执行根据权利要求1至22中任一项所述的方法。
25.一种用于寄存器代码自动生成的系统,其特征在于,所述系统包括:
输入模块,用于读取寄存器文件,其中,寄存器信息、配置信息和寄存器间逻辑关系按照寄存器表格格式存储在所述寄存器文件中,所述寄存器信息包括至少一个寄存器的访问属性,所述配置信息包括所述至少一个寄存器相关联的接口信息和校验机制,所述寄存器间逻辑关系指示所述至少一个寄存器相关联的逻辑功能;
提取模块,用于基于所述寄存器表格格式从所述输入模块所读取的所述寄存器文件中,获取所述寄存器信息、所述配置信息和所述寄存器间逻辑关系;
处理模块,用于:基于所述寄存器信息,调用例化寄存器代码生成与所述至少一个寄存器一一对应的至少一个寄存器对象,以及,基于所述寄存器间逻辑关系确定第一命名规则,所述第一命名规则用于规范化所生成的所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,还用于:基于所述至少一个寄存器对象各自的寄存器名称的前缀和后缀,确定用于实现所述至少一个寄存器相关联的逻辑功能的所述至少一个寄存器对象之间的连接关系,然后利用所述至少一个寄存器对象的连接关系、所述至少一个寄存器对象和接口读写逻辑生成所述至少一个寄存器相关联的寄存器代码,其中,所述接口读写逻辑基于所述配置信息生成;
输出模块,用于输出所述寄存器文件、所述至少一个寄存器相关联的寄存器代码以及所述寄存器文件相关联的检查报告。
Priority Applications (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310773767.7A CN116501305B (zh) | 2023-06-28 | 2023-06-28 | 用于寄存器代码自动生成的方法、设备、介质及系统 |
Applications Claiming Priority (1)
Application Number | Priority Date | Filing Date | Title |
---|---|---|---|
CN202310773767.7A CN116501305B (zh) | 2023-06-28 | 2023-06-28 | 用于寄存器代码自动生成的方法、设备、介质及系统 |
Publications (2)
Publication Number | Publication Date |
---|---|
CN116501305A true CN116501305A (zh) | 2023-07-28 |
CN116501305B CN116501305B (zh) | 2023-10-13 |
Family
ID=87320643
Family Applications (1)
Application Number | Title | Priority Date | Filing Date |
---|---|---|---|
CN202310773767.7A Active CN116501305B (zh) | 2023-06-28 | 2023-06-28 | 用于寄存器代码自动生成的方法、设备、介质及系统 |
Country Status (1)
Country | Link |
---|---|
CN (1) | CN116501305B (zh) |
Cited By (3)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116956789A (zh) * | 2023-09-19 | 2023-10-27 | 芯耀辉科技有限公司 | 一种用于寄存器后门访问的方法、计算设备及介质 |
CN117034840A (zh) * | 2023-10-09 | 2023-11-10 | 芯耀辉科技有限公司 | 一种控制信号生成方法及电路 |
CN117234792A (zh) * | 2023-11-09 | 2023-12-15 | 北京火山引擎科技有限公司 | 一种用于dpu的数据校验方法、装置、设备及介质 |
Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290693A1 (en) * | 2012-04-27 | 2013-10-31 | Esencia Technologies Inc. | Method and Apparatus for the Automatic Generation of RTL from an Untimed C or C++ Description as a Fine-Grained Specialization of a Micro-processor Soft Core |
CN105607897A (zh) * | 2015-09-30 | 2016-05-25 | 烽火通信科技股份有限公司 | 芯片寄存器代码自动生成方法及其系统 |
CN107436762A (zh) * | 2017-07-03 | 2017-12-05 | 北京东土军悦科技有限公司 | 一种寄存器代码文件生成方法、装置和电子设备 |
CN111259618A (zh) * | 2020-01-10 | 2020-06-09 | 何刚 | 一种基于寄存器流程工具的设计验证芯片方法 |
CN114912391A (zh) * | 2022-05-11 | 2022-08-16 | 杭州云合智网技术有限公司 | 寄存器设计和验证模型自动生成方法、装置、设备及介质 |
CN115237390A (zh) * | 2022-08-10 | 2022-10-25 | 南京国电南自电网自动化有限公司 | 一种继电保护装置逻辑图生成代码方法、装置及存储介质 |
CN115983173A (zh) * | 2023-03-21 | 2023-04-18 | 湖北芯擎科技有限公司 | 寄存器模型生成方法、装置、计算机设备及存储介质 |
-
2023
- 2023-06-28 CN CN202310773767.7A patent/CN116501305B/zh active Active
Patent Citations (7)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
US20130290693A1 (en) * | 2012-04-27 | 2013-10-31 | Esencia Technologies Inc. | Method and Apparatus for the Automatic Generation of RTL from an Untimed C or C++ Description as a Fine-Grained Specialization of a Micro-processor Soft Core |
CN105607897A (zh) * | 2015-09-30 | 2016-05-25 | 烽火通信科技股份有限公司 | 芯片寄存器代码自动生成方法及其系统 |
CN107436762A (zh) * | 2017-07-03 | 2017-12-05 | 北京东土军悦科技有限公司 | 一种寄存器代码文件生成方法、装置和电子设备 |
CN111259618A (zh) * | 2020-01-10 | 2020-06-09 | 何刚 | 一种基于寄存器流程工具的设计验证芯片方法 |
CN114912391A (zh) * | 2022-05-11 | 2022-08-16 | 杭州云合智网技术有限公司 | 寄存器设计和验证模型自动生成方法、装置、设备及介质 |
CN115237390A (zh) * | 2022-08-10 | 2022-10-25 | 南京国电南自电网自动化有限公司 | 一种继电保护装置逻辑图生成代码方法、装置及存储介质 |
CN115983173A (zh) * | 2023-03-21 | 2023-04-18 | 湖北芯擎科技有限公司 | 寄存器模型生成方法、装置、计算机设备及存储介质 |
Cited By (6)
Publication number | Priority date | Publication date | Assignee | Title |
---|---|---|---|---|
CN116956789A (zh) * | 2023-09-19 | 2023-10-27 | 芯耀辉科技有限公司 | 一种用于寄存器后门访问的方法、计算设备及介质 |
CN116956789B (zh) * | 2023-09-19 | 2023-12-12 | 芯耀辉科技有限公司 | 一种用于寄存器后门访问的方法、计算设备及介质 |
CN117034840A (zh) * | 2023-10-09 | 2023-11-10 | 芯耀辉科技有限公司 | 一种控制信号生成方法及电路 |
CN117034840B (zh) * | 2023-10-09 | 2023-12-19 | 芯耀辉科技有限公司 | 一种控制信号生成方法及电路 |
CN117234792A (zh) * | 2023-11-09 | 2023-12-15 | 北京火山引擎科技有限公司 | 一种用于dpu的数据校验方法、装置、设备及介质 |
CN117234792B (zh) * | 2023-11-09 | 2024-02-09 | 北京火山引擎科技有限公司 | 一种用于dpu的数据校验方法、装置、设备及介质 |
Also Published As
Publication number | Publication date |
---|---|
CN116501305B (zh) | 2023-10-13 |
Similar Documents
Publication | Publication Date | Title |
---|---|---|
CN116501305B (zh) | 用于寄存器代码自动生成的方法、设备、介质及系统 | |
US7363610B2 (en) | Building integrated circuits using a common database | |
US8156454B2 (en) | Virtual data representation through selective bidirectional translation | |
US7483823B2 (en) | Building integrated circuits using logical units | |
JP6212042B2 (ja) | コンパイル用の構文解析済みヘッダ | |
CN113408222B (zh) | 文件生成方法、装置、电子设备及存储介质 | |
CN117034821B (zh) | 用于芯片设计前端仿真验证的回归验证方法及介质 | |
US7496869B1 (en) | Method and apparatus for implementing a program language description of a circuit design for an integrated circuit | |
WO2023087720A1 (zh) | 小程序生成方法、装置、设备及存储介质 | |
US10255399B2 (en) | Method, apparatus and system for automatically performing end-to-end channel mapping for an interconnect | |
CN112733478B (zh) | 用于对设计进行形式验证的装置 | |
CN116069726B (zh) | 一种集成电路设计库的管理方法、设备及介质 | |
US7770147B1 (en) | Automatic generators for verilog programming | |
US10235486B2 (en) | Method, apparatus and system for automatically deriving parameters for an interconnect | |
CN115688643A (zh) | 仿真逻辑系统设计的方法、设备及存储介质 | |
CN112464636B (zh) | 约束文件的比较方法、装置、电子设备和存储介质 | |
CN117574822B (zh) | 用于芯片的面向优化设计测试方法、计算机设备及介质 | |
CN117291128B (zh) | 用于芯片设计工程自动化的方法、计算机设备及介质 | |
CN116956789B (zh) | 一种用于寄存器后门访问的方法、计算设备及介质 | |
JP6305644B2 (ja) | アーキテクチャ生成装置およびアーキテクチャ生成プログラム | |
JP5577619B2 (ja) | 論理回路設計装置 | |
CN118113660B (zh) | Fpga延时优化方法、装置、设备、存储介质及程序产品 | |
CN112148650B (zh) | 一种存储控制器的设计方法、装置、设备以及存储介质 | |
US7350162B2 (en) | Structure analytic program | |
US7765502B1 (en) | ASIC functional specification parser |
Legal Events
Date | Code | Title | Description |
---|---|---|---|
PB01 | Publication | ||
PB01 | Publication | ||
SE01 | Entry into force of request for substantive examination | ||
SE01 | Entry into force of request for substantive examination | ||
GR01 | Patent grant | ||
GR01 | Patent grant |