一种基于自动化ral的寄存器访问方法及系统的制作方法
【技术领域】
[0001]本发明涉及芯片寄存器访问技术领域,具体来讲是一种基于自动化RAURegiSterAbstract1n Layer,寄存器抽象层)的寄存器访问方法及系统。
【背景技术】
[0002]随着全球通信技术的IP (Internet Protocol,网际协议)化进程不断深入,包处理类芯片的应用需求日益增多,包处理相关的协议也随之增多,进而使得包处理类芯片的测试日趋复杂,包处理芯片进行测试时,需要对包处理芯片经过多轮的设计、开发和验证。
[0003]在芯片的驱动开发和功能级验证过程中,需要多次进行寄存器的访问操作。目前,芯片的驱动开发过程和功能级验证过程分别存在以下不足:
[0004]对于驱动开发而言,由于芯片的驱动开发方式一般为手动开发,当寄存器出现硬件、软件的设计修改时,会导致驱动开发过程中需要手动进行多次软件修订,进而使得整个收敛过程出现大量的反复操作,降低了开发效率。
[0005]对于芯片功能级验证而言,由于测试用例的设计依赖寄存器的访问,当寄存器出现硬件、软件的设计修改时,会导致测试用例的重复修订,进而造成验证效率低下的问题。
【发明内容】
[0006]本发明的目的是为了克服上述【背景技术】的不足,提供一种基于自动化RAL的寄存器访问方法及系统,本发明能够基于寄存器抽象层RAL的自动生成完成寄存器的访问,有效提高芯片开发及验证的效率。
[0007]为达到以上目的,本发明提供一种基于自动化RAL的寄存器访问方法,包括以下步骤:
[0008]S1:按照规定的格式,创建若干用于描述寄存器的描述文件,转入S2 ;
[0009]S2:利用脚本工具将描述文件自动转换成访问所需的C文件,转入S3 ;
[0010]S3:根据需要访问的寄存器名、表项名和域名,在转换生成的C文件中查找到对应的寄存器的域信息、表项的域信息;根据查找到的域信息进行对应域值的读取或改变操作。
[0011]在上述技术方案的基础上,SI中所述描述文件的类型包括txt文档、doc文档和excel表格;所述描述文件的内容包括文件信息、寄存器信息和表项信息:
[0012]所述文件信息包括文件名、文件占用的地址高低bit位;
[0013]所述寄存器信息包括寄存器名、寄存器偏移地址、寄存器占用字数、寄存器描述和寄存器的域信息;其中,寄存器的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、只读只写指示、域描述、域默认值;
[0014]所述表项信息包括表项名、条目数、条目占用字数、表项偏移地址、表项描述和表项的域信息;其中,表项的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、读写指示、域描述。
[0015]在上述技术方案的基础上,S2具体包括以下步骤:
[0016]S201:指定描述文件的输入路径和转换C文件后的输出路径;获取输入路径下的所有描述文件,转入S202 ;
[0017]S202:利用脚本工具依次读取每个描述文件,将读取的信息按照一定的数据结构进行保存,转入S203 ;
[0018]S203:根据S202中保存的信息及所需C文件的模板格式,在指定的输出路径下自动转换生成对应的C文件,S2全部结束,转入S3。
[0019]在上述技术方案的基础上,S202中读取每个描述文件,将读取的信息按照一定的数据结构进行保存,具体包括以下步骤:
[0020]每次读取描述文件时,为读取的描述文件定义一个文件class对象,将文件class对象保存在一个文件list中;
[0021]逐行读取描述文件中的关键字指示,当读到FileName时,表示为文件信息,将文件信息保存在文件class对象里面;当读到RegMem/Register时,则表示为表项/寄存器信息,为表项/寄存器定义对应的表项class对象/寄存器class对象,将表项class对象/寄存器class对象组成相应的表项list/寄存器list,并保存在文件class对象中;当读到MemRegFields/Fields时,则表示为表项的域信息/寄存器的域信息,为表项的域信息/寄存器的域信息定义对应的表项域信息class对象/寄存器域信息class对象,将表项域信息class对象/寄存器域信息class对象组成相应的表项域信息list/寄存器域信息list,并保存在对应的表项class对象/寄存器class对象中。
[0022]在上述技术方案的基础上,S203中所述对应的C文件包括以下9个文件:allenum.h文件、memacc.h文件、memregs.h文件、intenum.h文件、allfields.h文件、regs.c 文件、mems.c 文件、switch_xx.c 文件和 fields, c 文件;
[0023]allenum.h文件用于:对寄存器名、表项名、域名进行定义,通过调用该定义对寄存器或表项进行访问;
[0024]memacc.h文件用于:定义每个表项的域的读写操作;
[0025]memregs.h文件用于:定义所有寄存器的读写操作;
[0026]intenum.h文件用于:定义寄存器信息的查找索引、表项信息的查找索引;
[0027]allfields, h文件用于:对所有寄存器、表项的域指针进行声明;
[0028]regs.c文件用于:保存所有寄存器信息,包括寄存器所属描述文件的文件名、寄存器占用字数、寄存器偏移地址、寄存器的域个数、寄存器的域指针、默认值;
[0029]mems.c文件用于:保存所有表项信息,包括表项的条目最小索引、条目最大索引、表项所属描述文件的文件名、表项偏移地址、表项条目地址跳变字数、表项的域个数、表项的域指针;
[0030]switch_xx.c文件用于:对芯片进行寄存器抽象层RAL的驱动定义,所述驱动定义的内容包括芯片类型、芯片名称、芯片对应寄存器传输层RTL版本、芯片对应的寄存器、芯片对应的表项以及初始化值;
[0031]fields, c文件用于:保存寄存器、表项对应的域信息,每个寄存器的域信息、表项的域信息均以结构体数组ARRAY的形式保存,且每个域信息包括域名、域所在字的偏移量、域占用的地址尚低bit位、读与指不。
[0032]在上述技术方案的基础上,S3具体包括以下步骤:
[0033]S301:根据需要访问的寄存器名、表项名,判断对应的寄存器、表项是否存在,若是,转入S302 ;否则直接返回错误信息,结束;
[0034]S302:在转换生成的C文件中查找对应的寄存器的所有域信息、表项的所有域信息,转入S303 ;
[0035]S303:根据要访问的域名,判断所述寄存器的所有域信息中、所述表项的所有域信息中是否分别存在与域名对应的域信息,若是,转入S304 ;否则返回错误信息,结束;
[0036]S304:获取对应的域信息,并根据该对应的域信息进行对应域值的读取或改变操作。
[0037]在上述技术方案的基础上,S2中所述脚本工具采用工具命令语言TCL,TCL是一种基于字符串解释性的命令语言。
[0038]本发明还提供一种实现上述方法的基于自动化RAL的寄存器访问系统,包括描述文件创建模块、C文件转换模块和域信息操作模块;
[0039]所述描述文件创建模块用于:按照规定的格式,创建若干用于描述寄存器的描述文件,向C文件转换模块发送转换信号;
[0040]所述C文件转换模块用于:收到转换信号后,利用脚本工具将描述文件自动转换成访问所需的C文件,向域信息操作模块发送操作信号;
[0041]所述域信息操作模块用于:收到操作信号后,根据需要访问的寄存器名、表项名和域名,在转换生成的C文件中查找到对应的寄存器的域信息、表项的域信息;根据查找到的域信息进行对应域值的读取或改变操作。
[0042]在上述技术方案的基础上,所述C文件转换模块包括文件获取子模块、文件解析子模块和C文件生成子模块;
[0043]所述文件获取子模块用于:指定描述文件的输入路径和转换C文件后的输出路径;获取输入路径下的所有描述文件,向文件解析子模块发送解析信号;
[0044]所述文件解析子模块用于:收到解析信号后,利用脚本工具依次读取每个描述文件,将读取的信息按照一定的数据结构进行保存,向C文件生成子模块发送文件生成信号;
[0045]所述C文件生成子模块用于:收到文件生成信号后,根据文件解析子模块中保存的信息及所需C文件的模板格式,在指定的输出路径下自动转换生成对应的C文件。
[0046]在上述技术方案的基础上,所述域信息操作模块包括判断子模块、查找子模块、域信息判断子模块和域信息处理子模块;
[0047]所述判断子模块用于:根据需要访问的寄存器名、表项名,判断对应的寄存器、表项是否存在,若是,向查找子模块发送查找信号;否则直接返回错误信息,结束;
[0048]所述查找子模块用于:收到查找信号后,在转换生成的C文件中查找对应的寄存器的所有域信息、表项的所有域信息,向域信息判断子模块发送判断信号;
[0049]所述域信息判断子模块用于:收到判断信号后,根据要访问的域名,判断所述寄存器的所有域信息中、所述表项的所有域信息中是否分别存在与域名对应的域信息,若是,向域信息处理子模块发送处理信号;否则返回错误信息,结束;
[0050]所述域信息处理