亚洲成年人黄色一级片,日本香港三级亚洲三级,黄色成人小视频,国产青草视频,国产一区二区久久精品,91在线免费公开视频,成年轻人网站色直接看

利用硬件描述語言編寫的模塊進行集成的方法及裝置的制作方法

文檔序號:6464607閱讀:253來源:國知局

專利名稱::利用硬件描述語言編寫的模塊進行集成的方法及裝置的制作方法
技術(shù)領(lǐng)域
:本發(fā)明屬于數(shù)字信號處理系統(tǒng)領(lǐng)域,特別涉及一種利用硬件描述語言編寫的模塊進行集成的方法及裝置。
背景技術(shù)
:硬件描述語言以程序代碼的形式來描述數(shù)字系統(tǒng)硬件結(jié)構(gòu),例如VerilogHDL和VHDL就是兩種硬件描述語言,用于數(shù)字系統(tǒng)設(shè)計。VerilogHDL描述的電路設(shè)計就是該電路的VerilogHDL模型,也稱為模塊。VerilogHDL是一種結(jié)構(gòu)描述的語言,描述元器件或較大部件互連的模塊都可以用Verilog語言來建立電路^^莫型。硬件描述語言在工業(yè)界大量采用。在芯片設(shè)計階段,首先定義各個模塊的端口屬性,以Verilog語言為例moduleblock(a,b,c,d);input[3:0]a,input[3:0]b,outputc,outputd,wire[3:0]w;assignc=a|b;assignd=a&b;Endmodule由例子可以看出,verilog結(jié)構(gòu)位于在module和endmodule聲明語句之間,每個verilog程序包括端口信息,端口名稱分別為a,b,c,d,a,b為輸入,c,d為輸出,a,b位寬為4,c,d位寬為全部,內(nèi)部信號說明wire[3:0]wire表示其中的一才艮連線和功能定義,如assignc=aIb;assignd=a&b。當(dāng)各個模塊的端口定義結(jié)束以后,就需要人工將各個模塊接口連接在一起即以程序代碼的形式將各個模塊接口連接在一起,生成頂層模塊連線,工作效率低。目前業(yè)界還沒有較好的解決方法。
發(fā)明內(nèi)容為了解決現(xiàn)有技術(shù)中,各個模塊的端口定義結(jié)束以后,需要人工將各個模塊接口連接在一起,生成頂層模塊連線,工作效率低的問題,本發(fā)明實施例提供了一種利用硬件描述語言編寫的模塊進行集成的方法包括讀入預(yù)定義描述模塊的各端口之間連接關(guān)系的文本文件,并利用腳本將文本文件轉(zhuǎn)換成描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu);將描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)變?yōu)轫攲幽K連線。同時本發(fā)明實施例還提供利用硬件描述語言編寫的模塊進行集成的裝置,包括文本轉(zhuǎn)換模塊用于讀入預(yù)定義描述模塊的各端口之間連接關(guān)系的文本文件,并利用腳本將文本文件轉(zhuǎn)換成描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu);結(jié)構(gòu)轉(zhuǎn)換模塊用于將描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)變?yōu)轫攲幽K連線。由上述本發(fā)明提供的具體實施方案可以看出,正是由于讀入預(yù)定義描述模塊的各端口之間連接關(guān)系的文本文件,并利用腳本將文本文件轉(zhuǎn)換成具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu);將具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)變?yōu)榫哂芯唧w工藝的電路布線結(jié)構(gòu),因此工作效率得到了提高。圖1為本發(fā)明提供的第一實施例方法流程圖;圖2為本發(fā)明提供的第一實施例模塊之間的端口相互連接示意圖;圖3為本發(fā)明提供的第二實施例裝置結(jié)構(gòu)圖。具體實施方式本發(fā)明提供的第一實施例是一種利用硬件描述語言編寫的模塊進行集成的方法,方法流程如圖l所示,包括步驟101:利用腳本,為了表述方便以下簡稱port.tcl,分析頂層模塊的子模塊的端口信息,即利用port.tcl依次遍歷預(yù)先定義有用于各端口連接時使用的端口信息的硬件描述語言verilog文件,提取所有端口名稱,輸入輸出方向,位寬信息,并生成一個包括上述3個信息的H悟結(jié)構(gòu),如線性表l,第一維為模塊名,第二維為端口序列號,內(nèi)容為上述3個信息組成的端口信息列表,如portlnfo列表M10、portlnfo列表Mll、portlnfo列表Mln-l、portlnfo列表M20、portlnfo列表M21、portlnfo列表M2n-l。<table>tableseeoriginaldocumentpage7</column></row><table>位寬[31:0]表示位寬為32信息端口名Namel表示模塊Ml端口l的端口名portInfo列表Mll方向input表示輸入端口位寬[3:0]表示位寬為4信息端口名Namen-l表示模塊M1端口n-l的端口名portlnfo列表Mln-l其余portlnfo列表與Ml列的portlnfo列表類似,此處不再贅述。步驟102:利用一個事先定義好的文本格式的文件描述各個端口的連接關(guān)系,為了表述方便以下簡稱wire.rc,并利用連接關(guān)系分析腳本,為了表述方便以下簡稱wire.tcl讀入wire.rc來獲得描述各個端口的連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。文本才各式的文件wire.rc中可以定義如下幾種端口連接關(guān)系i.某個無需輸入的端口定義如只出現(xiàn)在電源,地,或者某些模擬IP中0->Ml.unusedOii.某個冗余的輸出端口,無需任何連接關(guān)系M2.u應(yīng)edl->0iii.模塊M1和模塊M2的一組相同位寬的輸入輸出端口互連Ml.NameO->M2.NameO,表示M1模塊的端口名為NameO的輸出端口與M2才莫塊的端口名為NameO的輸入端口互連。iv.模塊M1—個輸出端口與2個具有相同位寬的不同的模塊M2、M3的輸入端口互連Ml.NameO->M2.NameOMl.NameO->M3.Name0,表示M1模塊的端口名為NameO的輸出端口與M2模塊的端口名為NameO的輸入端口,和M1模塊的端口名為NameO的輸出端口與M3模塊的端口名為NameO的輸入端口互連。v.模塊Ml的一個端口的一部分信號輸出到其他才莫塊M2、M3的輸入端Ml.NameO[31:10]->M2.NameOMl.NameO[9:0]->M3.NameO,表示M1才莫塊的端口名為NameO的輸出端口的[31:10]與M2模塊的端口名為NameO的輸入端口互連,Ml模塊的端口名為NameO的輸出端口的[31:10]與M3模塊的端口名為NameO的輸入端口互連。vi.模塊M2的一個輸入端口與不同模塊的輸出端口互連。Ml.NameO[7:0]->M2.NameO[11:4]M3.NameO[3:0]->M2.NameO[3:0],表示M1模塊的端口名為NameO的輸出端口的[7:0]與M2模塊的端口名為NameO的輸入端口的[l1:4]互連,此時位寬相同都是8。M3模塊的端口名為NameO的輸出端口的[3:0]與M2模塊的端口名為NameO的輸入端口的[3:O]互連。以上只是示例性說明,只是說明通過文本格式的文件wire.rc中定義的幾種端口連接關(guān)系,本領(lǐng)域技術(shù)人員可以通過實際情況具體的定義各個端口的連接關(guān)系。下面以3個模塊之間的端口相互連接為例進行說明。如圖2所示,其中模塊M1的輸出端口NameO與模塊M2的輸入端口NameO互連,模塊M1的輸出端口Namel的一部分[31:10]與模塊M2的輸入端口Namel的一部分[21:0]互連,模塊M2的輸入端口Namel的另一部分[31:22]與模塊M3的輸出端口NameO互連,模塊M3的輸入端口Namel與模塊M1的輸出端口Namel的另一部分[9:0]互連。事先定義好的文本格式的文件wire.rc描述各個端口的連接關(guān)系如下所示Ml.NameO->M2.Name0,表示其中模塊M1的輸出端口NameO與模塊M2的輸入端口NameO互連。Ml.Namel[31:10]->M2.Namel[21:0]表示模塊M1的輸出端口Namel的一部分[31:10]與模塊M2的輸入端口Namel的一部分[21:0]互連。Ml.Namel[9:0]->M3.Namel,表示模塊M3的輸入端口Namel與模塊Ml的輸出端口Namel的另一部分[9:0]互連。M3.NameO誦>M2.Name1[31:22],表示模塊M2的輸入端口Name1的另一部分[31:22]與模塊M3的輸出端口NameO互連。wire.tcl腳本文件,讀入wire.rc生成表2:0portlnfo,列表MIOportlnfo,列表M20portlnfo,列表M30portInfo,列表Mll1portlnfo,列表M21portlnfo,列表M31portlnfo,列表M122portlnfo,列表M13portlnfo,列表M22portlnfo,列表M32表2方向outputInput位寬信息11表示Ml.Name0端口全部與M2.Name0端口全部互連端口名NameOM2.NameO表示才莫塊M2端口0的端口名NameOportlnfo,列表MIOportlnfo,列表M10記錄模塊M1的端口連接信息輸出端口NameO的起始位置、結(jié)束位置,本例中起始位置一結(jié)束位置為Ml.NameO端口的全部。和目的地址的起始位置、結(jié)束位置,本例中起始位置一結(jié)束位置為M2.NameO端口的全部,目的模塊M2的目的端口名NameO。方向outputInput位寬信息[31:10][21:0]表示Ml.Namel端口[31:10]與M2.Namel端口[21:0]互連端口名NamelM2.Namel表示模塊M2端口0的端口名10Namelportlnfo'列表Mllportlnfo,列表Mll記錄模塊Ml的輸出端口Namel的起始位置、結(jié)束位置,本例中起始位置為IO、結(jié)束位置為31,和目的地址的起始位置、結(jié)束位置,本例中起始位置為0、結(jié)束位置為21,目的模塊M2的目的端口名Namel。<table>tableseeoriginaldocumentpage11</column></row><table>portlnfo,列表M12portlnfo,列表M12記錄模塊Ml的輸出端口Namel的起始位置、結(jié)束位置,本例中起始位置為O、結(jié)束位置為9,和目的地址的起始位置、結(jié)束位置,本例中起始位置一結(jié)束位置為M3.Namel端口的全部,目的才莫塊M3的目的端口名Name1。<table>tableseeoriginaldocumentpage11</column></row><table>portlnfo'列表M13portlnfo'列表M13記錄模塊M3的輸出端口Namel的起始位置、結(jié)束位置,本例中起始位置一結(jié)束位置為M3.Name0,和目的地址的起始位置、結(jié)束位置,本例中端口的全部起始位置為22、結(jié)束位置為31,目的模塊M2的目的端口名Namel。其它的portlnfo,列表與Ml列的portlnfo,列表類似,此處不再贅述。步驟103:頂層輸出腳本,為了表述方便以下筒稱top.tcl遍歷根據(jù)步驟101中生成的線性表l中的各個模塊的各個端口,并根據(jù)提取的端口信息檢查表2中各portlnfo,列表中的端口連接信息。首先從表l中選擇提取出的一個模塊的一個端口的端口信息,在表2中查找有無和該端口的端口信息匹配的端口連接信息,具體可以是,查看在表2中該端口是否存在,以及連接方向是否有沖突,位寬是否一致,如果有錯,輸出到log記錄文件中,如果沒有錯誤,那么直接采用該連接關(guān)系;如果沒有,那么遍歷表2中其他模塊的各個端口,查找有無和該端口名稱一樣,輸入輸出方向不沖突的端口,所謂輸入輸出方向不沖突指不存在兩個皆為輸出;或者沒有輸出只有輸入,如果有,將這2個端口進行互連,如果沒有,則將該端口與一個該模塊的上一層的頂層模塊的端口相連。首先從表l中選擇出Ml.NameO,端口信息為端口名稱為NameO、位寬為該端口全部、方向為輸出。在表2中查找到有該端口的端口名稱Name0,進而查看表l中Ml.NameO方向為輸出對應(yīng)的相連接的M2.NameO端口為輸入,方向不沖突,位寬為Ml.NameO端口全部,相連的M2.NameO端口位寬也是全部,位寬匹配,那么直接采用該連接關(guān)系。若上述過程中因為,事先定義好的文本格式的文件wire.rc描述各個端口的連接關(guān)系有誤,將M2.NameO端口定義為輸出,使得Ml.NameO端口和M2.NameO端口的方向沖突,則輸出到log記錄文件中,以便后期查看出現(xiàn)的錯誤。繼續(xù)從表l中選擇出Ml.Namel端口信息為端口名稱為Namel、位寬信息[31:0]表示的位寬為32、方向為輸出,在表2中查找到有該端口的端口名稱NameO,進而查看表1中M1.Name1方向為輸出對應(yīng)的相連接的M2.Name1端口為輸入,方向不沖突,表l中Ml.NameO端口位寬為32,表2中與之相連的M2.Namel端口位寬為22,位寬匹配,那么直接采用該連接關(guān)系。這里表l中Ml.Namel端口位寬為32,表2中M1.Namel端口位寬信息為[31:10]其表示的位寬為22即為表l中Ml.Namel位寬信息[31:O]的一部份,此時位寬信息是匹配的,有和Ml.Namel端口的端口信息匹配的端口連接信息,但若,表l中Ml.Namel端口位寬信息為[31:10],表2中Ml.Namel端口信息為[31:0]即不是[31:10]的匹配的,沒有和Ml.Namel端口的端口信息匹配的端口連接信息。繼續(xù)查看M1.Namel方向為輸出對應(yīng)的相連接的M3.Name1端口為輸入,方向不沖突,表l中Ml.Namel端口位寬信息為[31:0],相連的M3.Namel端口位寬為全部,位寬信息匹配相同,那么直接采用該連接關(guān)系。若上述過程中因為,事先定義好的文本格式的文件wire.rc描述各個端口的連接關(guān)系有誤,例如將Ml模塊的Name4端口的端口名寫為Ml.Name5,在表2的Ml列中無法找到端口名稱為Name4的端口,則在其它模塊列中查找有無端口名稱為Name4的端口,輸入輸出方向不沖突的端口,經(jīng)過遍歷表2中其他模塊的各個端口,查找到M4列中有一個端口名稱為Name4的輸入端口,將Ml.Name4和M4.Name4這2個端口進行互連。如果沒有,則將Ml.Name4端口與一個M1模塊的上一層的頂層M模塊的端口l相連。步驟104:對于已經(jīng)存在的頂層連接關(guān)系的數(shù)據(jù)結(jié)構(gòu),連接關(guān)系產(chǎn)生腳本,為了表述方便,以下簡稱為genwire.tcl,可以根據(jù)這個具有連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)產(chǎn)生相對應(yīng)的wire.rc文件,4吏得正向,逆向l喿作皆為可能。步驟105:將最終生成的描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)表2轉(zhuǎn)變?yōu)轫攲幽K連線的verilog文件。之后可將該verilog文件根據(jù)具體需求,轉(zhuǎn)變成具有具體工藝的電路結(jié)構(gòu)。本發(fā)明提供的第二實施例是一種利用硬件描述語言編寫的模塊進行集成的裝置,其結(jié)構(gòu)如圖3所示,包括文本轉(zhuǎn)換模塊201:用于讀入預(yù)定義描述模塊的各端口之間連接關(guān)系的文本文件,并利用腳本將文本文件轉(zhuǎn)換成描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu);結(jié)構(gòu)轉(zhuǎn)換模塊202:用于將描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)變?yōu)轫攲幽K連線。進一步,還包括生成模塊203:用于從利用硬件描述語言預(yù)定義的各模塊的各端口中提取端口信息,并生成包括各端口信息的數(shù)據(jù)結(jié)構(gòu);檢查模塊204:用于利用腳本遍歷包括各端口信息的數(shù)據(jù)結(jié)構(gòu)中各模塊的各端口,并根據(jù)提取的端口信息檢查具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。進一步,檢查模塊204還包括檢查子模塊2041:用于在描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)中,若查找到有和提取的端口信息匹配的用于描述各端口之間連接關(guān)系的端口連接信息,則采用該端口連接信息,否則,在提取的端口所在模塊的上一層模塊定義一個端口,并將定義的端口連接到提取的端口,修改具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。進一步,檢查子模塊2041還包括第一檢查子模塊20411:用于在端口連接信息中查找到端口信息中的端口名稱后,根據(jù)端口信息中的位寬信息與端口連接信息中的位寬信息匹配,以及端口輸出輸入方向不沖突,采用該端口連接信息。顯然,本領(lǐng)域的技術(shù)人員可以對本發(fā)明進行各種改動和變型而不脫離本發(fā)明的精神和范圍。這樣,倘若本發(fā)明的這些修改和變型屬于本發(fā)明權(quán)利要求及其等同技術(shù)的范圍之內(nèi),則本發(fā)明也意圖包含這些改動和變型在內(nèi)。權(quán)利要求1、一種利用硬件描述語言編寫的模塊進行集成的方法,其特征在于,包括讀入預(yù)定義描述模塊的各端口之間連接關(guān)系的文本文件,并利用腳本將文本文件轉(zhuǎn)換成描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu);將描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)變?yōu)轫攲幽K連線。2、如權(quán)利要求1所述的方法,其特征在于,讀入預(yù)定義描述有模塊的各端口之間連接關(guān)系的文本文件,并利用腳本將文本文件轉(zhuǎn)換成描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)步驟前包括從利用硬件描述語言預(yù)定義的模塊的各端口屬性中提取用于實現(xiàn)端口連接的端口信息,并生成包括各端口信息的數(shù)據(jù)結(jié)構(gòu);在讀入預(yù)定義描述有模塊的各端口之間連接關(guān)系的文本文件,并利用腳本將文本文件轉(zhuǎn)換成描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)步驟之后還包括利用腳本遍歷包括各端口信息的數(shù)據(jù)結(jié)構(gòu)中模塊的各端口,并根據(jù)提取的端口信息檢查描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。3、如權(quán)利要求2所述的方法,其特征在于,根據(jù)提取的端口信息檢查具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)具體為在描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)中,若查找到有和提取的端口信息匹配的用于描述各端口之間連接關(guān)系的端口連接信息,則采用該端口連接信息,否則,在提取的端口所在模塊的上一層模塊定義一個端口,并將定義的端口連接到提取的端口,修改具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。4、如權(quán)利要求3所述的方法,其特征在于,端口信息包括端口名稱、位寬信息以及端口輸出輸入方向。5、如權(quán)利要求4所述的方法,其特征在于,在描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)中,若查找到有和提取的端口信息匹配的用于描述各端口之間連接關(guān)系的端口連接信息,則采用該端口連接信息步驟具體為在端口連接信息中查找到端口信息中的端口名稱后,才艮據(jù)端口信息中的位寬信息與端口連接信息中的位寬信息匹配,以及端口輸出輸入方向不沖突,采用該端口連接,信息。6、如權(quán)利要求3所述的方法,其特征在于,根據(jù)提取的端口信息檢查具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)步驟后還包括利用腳本將修改后的具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu),轉(zhuǎn)換成描述有修改后的各模塊的各端口之間連接關(guān)系的文本文件。7、一種利用硬件描述語言編寫的模塊進行集成的裝置,其特征在于,包括文本轉(zhuǎn)換模塊用于讀入預(yù)定義描述模塊的各端口之間連接關(guān)系的文本文件,并利用腳本將文本文件轉(zhuǎn)換成描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu);結(jié)構(gòu)轉(zhuǎn)換模塊用于將描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)變?yōu)轫攲幽K連線。8、如權(quán)利要求7所述的裝置,其特征在于,還包括生成模塊用于從利用硬件描述語言預(yù)定義的各模塊的各端口中提取用于實現(xiàn)端口連接的端口信息,并生成包括各端口信息的數(shù)據(jù)結(jié)構(gòu);檢查模塊用于利用腳本遍歷包括各端口信息的數(shù)據(jù)結(jié)構(gòu)中各模塊的各端口,并根據(jù)提取的端口信息檢查具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。9、如權(quán)利要求8所述的裝置,其特征在于,檢查模塊還包括檢查子模塊用于在描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)中,若查找到有和提取的端口信息匹配的用于描述各端口之間連接關(guān)系的端口連接信息,則采用該端口連接信息,否則,在提取的端口所在模塊的上一層模塊定義一個端口,并將定義的端口連接到提取的端口,修改具有各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)。10、如權(quán)利要求9所述的裝置,其特征在于,檢查子模塊還包括第一檢查子模塊用于在端口連接信息中查找到端口信息中的端口名稱后,根據(jù)端口信息中的位寬信息與端口連接信息中的位寬信息匹配,以及端口輸出輸入方向不沖突,采用該端口連接信息。全文摘要公開了一種利用硬件描述語言編寫的模塊進行集成的方法及裝置,為了解決各個模塊的端口定義結(jié)束以后,需要有專人將各個模塊接口連接在一起,工作效率低的問題,本發(fā)明公開的方法包括讀入預(yù)定義描述模塊的各端口之間連接關(guān)系的文本文件,并利用腳本將文本文件轉(zhuǎn)換成描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu);將描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu)轉(zhuǎn)變?yōu)轫攲幽K連線,由于通過腳本將文本文件轉(zhuǎn)換成描述各端口之間連接關(guān)系的數(shù)據(jù)結(jié)構(gòu),因此工作效率得到了提高。文檔編號G06F17/50GK101329703SQ200810117239公開日2008年12月24日申請日期2008年7月25日優(yōu)先權(quán)日2008年7月25日發(fā)明者李曉強申請人:北京中星微電子有限公司
網(wǎng)友詢問留言 已有0條留言
  • 還沒有人留言評論。精彩留言會獲得點贊!
1