一種基于自動(dòng)化ral的寄存器訪問(wèn)方法及系統(tǒng)的制作方法
【技術(shù)領(lǐng)域】
[0001]本發(fā)明涉及芯片寄存器訪問(wèn)技術(shù)領(lǐng)域,具體來(lái)講是一種基于自動(dòng)化RAURegiSterAbstract1n Layer,寄存器抽象層)的寄存器訪問(wèn)方法及系統(tǒng)。
【背景技術(shù)】
[0002]隨著全球通信技術(shù)的IP (Internet Protocol,網(wǎng)際協(xié)議)化進(jìn)程不斷深入,包處理類(lèi)芯片的應(yīng)用需求日益增多,包處理相關(guān)的協(xié)議也隨之增多,進(jìn)而使得包處理類(lèi)芯片的測(cè)試日趨復(fù)雜,包處理芯片進(jìn)行測(cè)試時(shí),需要對(duì)包處理芯片經(jīng)過(guò)多輪的設(shè)計(jì)、開(kāi)發(fā)和驗(yàn)證。
[0003]在芯片的驅(qū)動(dòng)開(kāi)發(fā)和功能級(jí)驗(yàn)證過(guò)程中,需要多次進(jìn)行寄存器的訪問(wèn)操作。目前,芯片的驅(qū)動(dòng)開(kāi)發(fā)過(guò)程和功能級(jí)驗(yàn)證過(guò)程分別存在以下不足:
[0004]對(duì)于驅(qū)動(dòng)開(kāi)發(fā)而言,由于芯片的驅(qū)動(dòng)開(kāi)發(fā)方式一般為手動(dòng)開(kāi)發(fā),當(dāng)寄存器出現(xiàn)硬件、軟件的設(shè)計(jì)修改時(shí),會(huì)導(dǎo)致驅(qū)動(dòng)開(kāi)發(fā)過(guò)程中需要手動(dòng)進(jìn)行多次軟件修訂,進(jìn)而使得整個(gè)收斂過(guò)程出現(xiàn)大量的反復(fù)操作,降低了開(kāi)發(fā)效率。
[0005]對(duì)于芯片功能級(jí)驗(yàn)證而言,由于測(cè)試用例的設(shè)計(jì)依賴(lài)寄存器的訪問(wèn),當(dāng)寄存器出現(xiàn)硬件、軟件的設(shè)計(jì)修改時(shí),會(huì)導(dǎo)致測(cè)試用例的重復(fù)修訂,進(jìn)而造成驗(yàn)證效率低下的問(wèn)題。
【發(fā)明內(nèi)容】
[0006]本發(fā)明的目的是為了克服上述【背景技術(shù)】的不足,提供一種基于自動(dòng)化RAL的寄存器訪問(wèn)方法及系統(tǒng),本發(fā)明能夠基于寄存器抽象層RAL的自動(dòng)生成完成寄存器的訪問(wèn),有效提高芯片開(kāi)發(fā)及驗(yàn)證的效率。
[0007]為達(dá)到以上目的,本發(fā)明提供一種基于自動(dòng)化RAL的寄存器訪問(wèn)方法,包括以下步驟:
[0008]S1:按照規(guī)定的格式,創(chuàng)建若干用于描述寄存器的描述文件,轉(zhuǎn)入S2 ;
[0009]S2:利用腳本工具將描述文件自動(dòng)轉(zhuǎn)換成訪問(wèn)所需的C文件,轉(zhuǎn)入S3 ;
[0010]S3:根據(jù)需要訪問(wèn)的寄存器名、表項(xiàng)名和域名,在轉(zhuǎn)換生成的C文件中查找到對(duì)應(yīng)的寄存器的域信息、表項(xiàng)的域信息;根據(jù)查找到的域信息進(jìn)行對(duì)應(yīng)域值的讀取或改變操作。
[0011]在上述技術(shù)方案的基礎(chǔ)上,SI中所述描述文件的類(lèi)型包括txt文檔、doc文檔和excel表格;所述描述文件的內(nèi)容包括文件信息、寄存器信息和表項(xiàng)信息:
[0012]所述文件信息包括文件名、文件占用的地址高低bit位;
[0013]所述寄存器信息包括寄存器名、寄存器偏移地址、寄存器占用字?jǐn)?shù)、寄存器描述和寄存器的域信息;其中,寄存器的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、只讀只寫(xiě)指示、域描述、域默認(rèn)值;
[0014]所述表項(xiàng)信息包括表項(xiàng)名、條目數(shù)、條目占用字?jǐn)?shù)、表項(xiàng)偏移地址、表項(xiàng)描述和表項(xiàng)的域信息;其中,表項(xiàng)的域信息包括域名、域所在字的偏移量、域占用的地址高低bit位、讀寫(xiě)指示、域描述。
[0015]在上述技術(shù)方案的基礎(chǔ)上,S2具體包括以下步驟:
[0016]S201:指定描述文件的輸入路徑和轉(zhuǎn)換C文件后的輸出路徑;獲取輸入路徑下的所有描述文件,轉(zhuǎn)入S202 ;
[0017]S202:利用腳本工具依次讀取每個(gè)描述文件,將讀取的信息按照一定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行保存,轉(zhuǎn)入S203 ;
[0018]S203:根據(jù)S202中保存的信息及所需C文件的模板格式,在指定的輸出路徑下自動(dòng)轉(zhuǎn)換生成對(duì)應(yīng)的C文件,S2全部結(jié)束,轉(zhuǎn)入S3。
[0019]在上述技術(shù)方案的基礎(chǔ)上,S202中讀取每個(gè)描述文件,將讀取的信息按照一定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行保存,具體包括以下步驟:
[0020]每次讀取描述文件時(shí),為讀取的描述文件定義一個(gè)文件class對(duì)象,將文件class對(duì)象保存在一個(gè)文件list中;
[0021]逐行讀取描述文件中的關(guān)鍵字指示,當(dāng)讀到FileName時(shí),表示為文件信息,將文件信息保存在文件class對(duì)象里面;當(dāng)讀到RegMem/Register時(shí),則表示為表項(xiàng)/寄存器信息,為表項(xiàng)/寄存器定義對(duì)應(yīng)的表項(xiàng)class對(duì)象/寄存器class對(duì)象,將表項(xiàng)class對(duì)象/寄存器class對(duì)象組成相應(yīng)的表項(xiàng)list/寄存器list,并保存在文件class對(duì)象中;當(dāng)讀到MemRegFields/Fields時(shí),則表示為表項(xiàng)的域信息/寄存器的域信息,為表項(xiàng)的域信息/寄存器的域信息定義對(duì)應(yīng)的表項(xiàng)域信息class對(duì)象/寄存器域信息class對(duì)象,將表項(xiàng)域信息class對(duì)象/寄存器域信息class對(duì)象組成相應(yīng)的表項(xiàng)域信息list/寄存器域信息list,并保存在對(duì)應(yīng)的表項(xiàng)class對(duì)象/寄存器class對(duì)象中。
[0022]在上述技術(shù)方案的基礎(chǔ)上,S203中所述對(duì)應(yīng)的C文件包括以下9個(gè)文件:allenum.h文件、memacc.h文件、memregs.h文件、intenum.h文件、allfields.h文件、regs.c 文件、mems.c 文件、switch_xx.c 文件和 fields, c 文件;
[0023]allenum.h文件用于:對(duì)寄存器名、表項(xiàng)名、域名進(jìn)行定義,通過(guò)調(diào)用該定義對(duì)寄存器或表項(xiàng)進(jìn)行訪問(wèn);
[0024]memacc.h文件用于:定義每個(gè)表項(xiàng)的域的讀寫(xiě)操作;
[0025]memregs.h文件用于:定義所有寄存器的讀寫(xiě)操作;
[0026]intenum.h文件用于:定義寄存器信息的查找索引、表項(xiàng)信息的查找索引;
[0027]allfields, h文件用于:對(duì)所有寄存器、表項(xiàng)的域指針進(jìn)行聲明;
[0028]regs.c文件用于:保存所有寄存器信息,包括寄存器所屬描述文件的文件名、寄存器占用字?jǐn)?shù)、寄存器偏移地址、寄存器的域個(gè)數(shù)、寄存器的域指針、默認(rèn)值;
[0029]mems.c文件用于:保存所有表項(xiàng)信息,包括表項(xiàng)的條目最小索引、條目最大索引、表項(xiàng)所屬描述文件的文件名、表項(xiàng)偏移地址、表項(xiàng)條目地址跳變字?jǐn)?shù)、表項(xiàng)的域個(gè)數(shù)、表項(xiàng)的域指針;
[0030]switch_xx.c文件用于:對(duì)芯片進(jìn)行寄存器抽象層RAL的驅(qū)動(dòng)定義,所述驅(qū)動(dòng)定義的內(nèi)容包括芯片類(lèi)型、芯片名稱(chēng)、芯片對(duì)應(yīng)寄存器傳輸層RTL版本、芯片對(duì)應(yīng)的寄存器、芯片對(duì)應(yīng)的表項(xiàng)以及初始化值;
[0031]fields, c文件用于:保存寄存器、表項(xiàng)對(duì)應(yīng)的域信息,每個(gè)寄存器的域信息、表項(xiàng)的域信息均以結(jié)構(gòu)體數(shù)組ARRAY的形式保存,且每個(gè)域信息包括域名、域所在字的偏移量、域占用的地址尚低bit位、讀與指不。
[0032]在上述技術(shù)方案的基礎(chǔ)上,S3具體包括以下步驟:
[0033]S301:根據(jù)需要訪問(wèn)的寄存器名、表項(xiàng)名,判斷對(duì)應(yīng)的寄存器、表項(xiàng)是否存在,若是,轉(zhuǎn)入S302 ;否則直接返回錯(cuò)誤信息,結(jié)束;
[0034]S302:在轉(zhuǎn)換生成的C文件中查找對(duì)應(yīng)的寄存器的所有域信息、表項(xiàng)的所有域信息,轉(zhuǎn)入S303 ;
[0035]S303:根據(jù)要訪問(wèn)的域名,判斷所述寄存器的所有域信息中、所述表項(xiàng)的所有域信息中是否分別存在與域名對(duì)應(yīng)的域信息,若是,轉(zhuǎn)入S304 ;否則返回錯(cuò)誤信息,結(jié)束;
[0036]S304:獲取對(duì)應(yīng)的域信息,并根據(jù)該對(duì)應(yīng)的域信息進(jìn)行對(duì)應(yīng)域值的讀取或改變操作。
[0037]在上述技術(shù)方案的基礎(chǔ)上,S2中所述腳本工具采用工具命令語(yǔ)言TCL,TCL是一種基于字符串解釋性的命令語(yǔ)言。
[0038]本發(fā)明還提供一種實(shí)現(xiàn)上述方法的基于自動(dòng)化RAL的寄存器訪問(wèn)系統(tǒng),包括描述文件創(chuàng)建模塊、C文件轉(zhuǎn)換模塊和域信息操作模塊;
[0039]所述描述文件創(chuàng)建模塊用于:按照規(guī)定的格式,創(chuàng)建若干用于描述寄存器的描述文件,向C文件轉(zhuǎn)換模塊發(fā)送轉(zhuǎn)換信號(hào);
[0040]所述C文件轉(zhuǎn)換模塊用于:收到轉(zhuǎn)換信號(hào)后,利用腳本工具將描述文件自動(dòng)轉(zhuǎn)換成訪問(wèn)所需的C文件,向域信息操作模塊發(fā)送操作信號(hào);
[0041]所述域信息操作模塊用于:收到操作信號(hào)后,根據(jù)需要訪問(wèn)的寄存器名、表項(xiàng)名和域名,在轉(zhuǎn)換生成的C文件中查找到對(duì)應(yīng)的寄存器的域信息、表項(xiàng)的域信息;根據(jù)查找到的域信息進(jìn)行對(duì)應(yīng)域值的讀取或改變操作。
[0042]在上述技術(shù)方案的基礎(chǔ)上,所述C文件轉(zhuǎn)換模塊包括文件獲取子模塊、文件解析子模塊和C文件生成子模塊;
[0043]所述文件獲取子模塊用于:指定描述文件的輸入路徑和轉(zhuǎn)換C文件后的輸出路徑;獲取輸入路徑下的所有描述文件,向文件解析子模塊發(fā)送解析信號(hào);
[0044]所述文件解析子模塊用于:收到解析信號(hào)后,利用腳本工具依次讀取每個(gè)描述文件,將讀取的信息按照一定的數(shù)據(jù)結(jié)構(gòu)進(jìn)行保存,向C文件生成子模塊發(fā)送文件生成信號(hào);
[0045]所述C文件生成子模塊用于:收到文件生成信號(hào)后,根據(jù)文件解析子模塊中保存的信息及所需C文件的模板格式,在指定的輸出路徑下自動(dòng)轉(zhuǎn)換生成對(duì)應(yīng)的C文件。
[0046]在上述技術(shù)方案的基礎(chǔ)上,所述域信息操作模塊包括判斷子模塊、查找子模塊、域信息判斷子模塊和域信息處理子模塊;
[0047]所述判斷子模塊用于:根據(jù)需要訪問(wèn)的寄存器名、表項(xiàng)名,判斷對(duì)應(yīng)的寄存器、表項(xiàng)是否存在,若是,向查找子模塊發(fā)送查找信號(hào);否則直接返回錯(cuò)誤信息,結(jié)束;
[0048]所述查找子模塊用于:收到查找信號(hào)后,在轉(zhuǎn)換生成的C文件中查找對(duì)應(yīng)的寄存器的所有域信息、表項(xiàng)的所有域信息,向域信息判斷子模塊發(fā)送判斷信號(hào);
[0049]所述域信息判斷子模塊用于:收到判斷信號(hào)后,根據(jù)要訪問(wèn)的域名,判斷所述寄存器的所有域信息中、所述表項(xiàng)的所有域信息中是否分別存在與域名對(duì)應(yīng)的域信息,若是,向域信息處理子模塊發(fā)送處理信號(hào);否則返回錯(cuò)誤信息,結(jié)束;
[0050]所述域信息處理