專利名稱:一種存儲器控制器驗證系統(tǒng)、方法及記分板的制作方法
技術(shù)領(lǐng)域:
本發(fā)明屬于存儲器控制器技術(shù)領(lǐng)域,尤其涉及一種存儲器控制器驗證系統(tǒng)、方法 及記分板。
背景技術(shù):
隨著集成電路芯片的規(guī)模越來越大,在基于知識產(chǎn)權(quán)(Intellectual Property, IP)復(fù)用的片上系統(tǒng)(System On Chip, S0C)設(shè)計中,片上總線設(shè)計成為了最關(guān)鍵的問題。 為此,業(yè)界出現(xiàn)了很多片上總線標(biāo)準(zhǔn)。其中由ARM公司推出的AMBA片上總線結(jié)構(gòu)已經(jīng)成為 一種流行的工業(yè)標(biāo)準(zhǔn)。AMBA規(guī)范主要包括了 AHB系統(tǒng)總線和APB(Advanced Peripheral Bus)外圍總線。圖1是主模塊、存儲器控制器和存儲器的連接示意圖,主模塊與存儲器控制器通 過AHB總線連接,存儲器控制器和存儲器之間通過存儲器接口連接。現(xiàn)有的存儲器控制器 接收由主模塊master module (發(fā)出AHB總線讀/寫操作的模塊)通過AHB總線發(fā)出的讀 /寫操作,再轉(zhuǎn)換為存儲器接口的讀寫操作,實現(xiàn)對存儲器的讀寫操作。此外,AHB總線讀或?qū)懖僮鬟€可能被另一個讀或?qū)懖僮髟谌我鈺r刻打斷,即就 是,AHB總線上某一讀或?qū)懖僮髟谶M行中被另一個讀或?qū)懖僮鞔驍嗬^而執(zhí)行后一個讀或?qū)?操作,待后一操作完成后再繼續(xù)執(zhí)行前一讀或?qū)懖僮?。這使得動態(tài)隨機存儲器(Dynamic Random Access Memory,DRAM)控制器的驗證情況更為復(fù)雜,要充分的驗證存儲器控制器的 正確性也更為困難。圖2是現(xiàn)有技術(shù)提供的驗證存儲器控制器的正確性流程圖,具體過程是在步驟 S201中,發(fā)出總線寫操作,寫數(shù)據(jù)至寫操作中指定的存儲器的寫入地址中。在步驟S202中, 發(fā)出總線讀操作,從上述寫入地址中讀取數(shù)據(jù)。在步驟S203中,將上述寫入至存儲器中的 寫入地址中的數(shù)據(jù)與讀操作從該地址讀取的數(shù)據(jù)進行比較,如果相同,則存儲器控制器工 作正?!,F(xiàn)有的驗證存儲器控制器的正確性的方案中,必須先進行寫操作,再進行讀操作, 且讀寫操作必須是在相同情況,即讀寫地址,大小等條件必須完全相同才可以驗證正確性。這種驗證方法對于單純的AHB總線讀寫操作可以進行基本測試,但是不能建立與 實際運行時完全相同的環(huán)境,因為實際中對AHB總線操作是隨機的,不會按照這種先寫后 讀的硬性要求來運行,例如連續(xù)進行兩次寫操作,若后一個寫操作會對前一個寫操作產(chǎn)生 影響,并導(dǎo)致錯誤,現(xiàn)有的測試方法就可能測不出來。而且,對于AHB總線的讀寫打斷情況 則更沒有辦法進行測試,如一個寫操作打斷一個讀操作時,我們沒辦法制作一個相反方向 的操作,來驗證其存儲器控制器的正確性。只能制作一個讀操作來測試上一個寫操作是否 正確,但讀操作是否正確運行則沒有辦法驗證。因此,現(xiàn)有技術(shù)提供的存儲器控制器驗證方法在讀寫操作不一致時,無法成功驗 證存儲器控制器是否工作正常。
發(fā)明內(nèi)容
本發(fā)明的目的在于提供一種存儲器控制器驗證方法,旨在解決現(xiàn)有技術(shù)在讀寫操 作不一致時,無法成功驗證存儲器控制器是否工作正常的問題。本發(fā)明是這樣實現(xiàn)的,一種存儲器控制器驗證方法,所述方法包括下述步驟記分板根據(jù)監(jiān)測存儲器控制器產(chǎn)生的監(jiān)測事務(wù)和測試用例產(chǎn)生器產(chǎn)生的控制事 務(wù)檢測總線操作;當(dāng)所述總線操作中有寫操作時,將所述寫操作中的地址和該地址對應(yīng)的數(shù)據(jù)寫入 預(yù)先設(shè)置類型的結(jié)構(gòu)體中;將生成的結(jié)構(gòu)體存儲在隊列中;當(dāng)所述總線操作中有讀操作時,將從隊列中存儲的結(jié)構(gòu)體中或者從存儲器中讀取 的與所述讀操作中的讀取地址相同的地址中存儲的數(shù)據(jù)與通過所述讀操作讀取的數(shù)據(jù)進 行比較,如果兩者相同,表示存儲器控制器工作正常。本發(fā)明的另一目的在于提供一種記分板,所述記分板包括總線操作檢測單元,用于根據(jù)監(jiān)測存儲器控制器產(chǎn)生的監(jiān)測事務(wù)和測試用例產(chǎn)生 器產(chǎn)生的控制事務(wù)檢測總線操作;結(jié)構(gòu)體生成單元,用于當(dāng)所述總線操作中有寫操作時,將所述寫操作中的地址和 該地址對應(yīng)的數(shù)據(jù)寫入預(yù)先設(shè)置類型的結(jié)構(gòu)體中;隊列生成單元,用于將生成的結(jié)構(gòu)體存儲在隊列中;驗證結(jié)果生成單元,用于將從隊列中存儲的結(jié)構(gòu)體中或者從存儲器中讀取的與所 述讀操作中的讀取地址相同的地址中存儲的數(shù)據(jù)與通過所述讀操作讀取的數(shù)據(jù)進行比較, 如果兩者相同,表示存儲器控制器工作正常。本發(fā)明的另一目的在于提供一種存儲器控制器驗證系統(tǒng),所述系統(tǒng)包括如上所述 的記分板,所述系統(tǒng)還包括測試用例產(chǎn)生器、主模塊模擬器、存儲器控制器以及存儲器。在本發(fā)明中,當(dāng)記分板接收到測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)是將對存儲器進行 寫操作時,存儲即將寫入到存儲器中的數(shù)據(jù)以及該數(shù)據(jù)的存儲地址至預(yù)先設(shè)置類型的結(jié)構(gòu) 體中,并添加到預(yù)先設(shè)置的隊列中,當(dāng)記分板接收到測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)是將 對存儲器進行讀操作時,將從隊列中存儲的結(jié)構(gòu)體中或者從存儲器中讀取的與所述讀操作 中的讀取地址相同的地址中存儲的數(shù)據(jù)與通過所述讀操作讀取的數(shù)據(jù)進行比對,若數(shù)據(jù)相 同,則測試通過,該驗證方法在完成一次總線寫操作以后,記住該寫操作寫入存儲器中的數(shù) 據(jù)以及該數(shù)據(jù)的存儲地址,在檢測到總線操作是讀操作時,將讀操作讀取的數(shù)據(jù)與寫操作 寫入的數(shù)據(jù)進行比較,不一定總線操作一定滿足先寫后讀的時序,可以在各種總線時序下 驗證存儲器控制器的正確性。
圖1是現(xiàn)有技術(shù)提供的主模塊、存儲器控制器和存儲器的連接示意圖;圖2是現(xiàn)有技術(shù)提供的驗證存儲器控制器的正確性的實現(xiàn)流程圖;圖3是本發(fā)明實施例提供的存儲器控制器驗證的實現(xiàn)流程圖;圖4是本發(fā)明實施例提供的存儲器控制器驗證系統(tǒng)的結(jié)構(gòu)示意圖。
具體實施例方式為了使本發(fā)明的目的、技術(shù)方案及優(yōu)點更加清楚明白,以下結(jié)合附圖及實施例,對 本發(fā)明進行進一步詳細說明。應(yīng)當(dāng)理解,此處所描述的具體實施例僅用以解釋本發(fā)明,并不 用于限定本發(fā)明。在本發(fā)明實施例中,當(dāng)記分板接收到測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)是將通過總 線對存儲器進行寫操作時,存儲即將寫入到存儲器中的數(shù)據(jù)以及該數(shù)據(jù)的存儲地址至預(yù)先 設(shè)置類型的結(jié)構(gòu)體中,并添加到預(yù)先設(shè)置的隊列中,當(dāng)記分板接收到測試用例產(chǎn)生器產(chǎn)生 的控制事務(wù)是將通過總線對存儲器進行讀操作時,將從隊列中存儲的結(jié)構(gòu)體中或者從存儲 器中讀取的與所述讀操作中的讀取地址相同的地址中存儲的數(shù)據(jù)與通過所述讀操作讀取 的數(shù)據(jù)進行比對,若數(shù)據(jù)相同,則測試通過,該驗證方法可以驗證在各種總線時序情況下, 存儲器控制器能否對存儲器進行正確控制。圖3示出了本發(fā)明實施例提供的存儲器控制器驗證方法的實現(xiàn)流程,詳述如下在步驟S301中,記分板根據(jù)監(jiān)測存儲器控制器產(chǎn)生的監(jiān)測事務(wù)和測試用例產(chǎn)生 器產(chǎn)生的控制事務(wù)檢測總線操作。作為本發(fā)明的一個實施例,記分板先根據(jù)監(jiān)測存儲器控制器產(chǎn)生的監(jiān)測事務(wù)以及 測試用例產(chǎn)生器傳輸?shù)目刂剖聞?wù)檢測主模塊模擬器是否正確發(fā)出總線操作,然后根據(jù)流程 判斷存儲器控制器是否正確執(zhí)行總線操作,在本實施例中,主模塊模擬器通過總線發(fā)送總 線操作命令至存儲器控制器,存儲器控制器接收所述主模塊模擬器發(fā)送的總線操作,所述 總線操作包括寫操作、讀操作。其中,在步驟S301之前,存儲器控制器驗證方法還包括下 面的步驟,第一步測試用例產(chǎn)生器發(fā)送控制事務(wù)至主模塊模擬器和記分板,該控制事務(wù)是 對主模塊模擬器要傳輸給存儲器控制器的總線操作的一個描述,例如主模塊模擬器要傳 輸給存儲器控制器的總線操作是讀還是寫,是否會被另一個操作打斷等;第二步主模塊 模擬器根據(jù)所述控制事務(wù)產(chǎn)生符合總線時序的操作并將其傳送至存儲器控制器,例如,主 模塊模擬器接收測試用例產(chǎn)生器傳輸?shù)目刂剖聞?wù),根據(jù)該控制事務(wù)產(chǎn)生符合總線時序的操 作,再通過總線傳輸給存儲器控制器;第三步通過存儲器控制器的接口總線時序監(jiān)測存 儲器控制器生成監(jiān)測事務(wù)并傳送至記分板,所述監(jiān)測事務(wù)是由監(jiān)測存儲器控制器的接口總 線時序所解析出來的總線操作描述。最后,記分板根據(jù)監(jiān)測存儲器控制器產(chǎn)生的監(jiān)測事務(wù) 按照一系列的流程對存儲器控制器是否正確執(zhí)行總線操作進行判斷。在本發(fā)明實施例中, 總線是AHB總線,存儲器控制器是DRAM控制器,存儲器是DRAM。在步驟S302中,判斷接收到測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)中的總線操作中是 否有寫操作,當(dāng)所述總線操作中有寫操作時,將所述寫操作中的地址和該地址對應(yīng)的數(shù)據(jù) 寫入預(yù)先設(shè)置類型的結(jié)構(gòu)體中,并一一進行存儲。作為本發(fā)明的一個實施例,判斷主模塊模擬器發(fā)出的總線操作(打斷和被打斷的 操作)中是否有寫操作,當(dāng)所述總線操作中有寫操作時,將所述寫操作中的地址和該地址 對應(yīng)的數(shù)據(jù)寫入預(yù)先設(shè)置好類型的結(jié)構(gòu)體中,并一一進行存儲,其中結(jié)構(gòu)體的類型預(yù)先設(shè) 置,包括以字節(jié)為單位的寫操作存儲地址和該寫操作存儲地址中存儲的相應(yīng)的以字節(jié)為單 位的數(shù)據(jù)。在步驟S303中,將生成的結(jié)構(gòu)體存儲在隊列中。作為本發(fā)明的一個實施例,檢查生成的結(jié)構(gòu)體中存儲的地址是否與隊列中存放的
6結(jié)構(gòu)體中存儲的地址相同,如果相同,則用新生成的結(jié)構(gòu)體替換隊列中原來存儲的結(jié)構(gòu)體; 否則直接將新生成的結(jié)構(gòu)體添加到隊列中,其中,隊列是預(yù)先設(shè)置的,隊列中存放的單位是 預(yù)先設(shè)置類型的結(jié)構(gòu)體。在步驟S304中,判斷接收到測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)中的總線操作中是 否有讀操作,當(dāng)所述總線操作中有讀操作時,則從隊列中存儲的結(jié)構(gòu)體中或者直接從存儲 器中讀取與該讀操作中的讀取地址對應(yīng)的存儲地址中存儲的數(shù)據(jù)。作為本發(fā)明的一個實施例,判斷主模塊模擬器發(fā)出的總線操作(打斷和被打斷的 操作)中是否有讀操作,當(dāng)所述總線操作中有讀操作時,則首先檢查隊列中是否有與該讀 操作的讀取地址相同的結(jié)構(gòu)體,如果有,則從該結(jié)構(gòu)體中取出與該讀取地址相應(yīng)的數(shù)據(jù)與 主模塊模擬器通過讀操作從總線上讀出的數(shù)據(jù)進行比對,否則,直接讀取存儲器中的與該 讀取地址相應(yīng)的數(shù)據(jù),與主模塊模擬器通過讀操作從總線上讀出的數(shù)據(jù)進行比對。在步驟S305中,將從隊列中存儲的結(jié)構(gòu)體中或者直接從存儲器中讀取的與該讀 操作中的讀取地址對應(yīng)的存儲地址中存儲的數(shù)據(jù)與主模塊模擬器通過讀操作從總線上讀 取的數(shù)據(jù)進行比較,如果兩者相同,則表示存儲器控制器工作正常。作為本發(fā)明的一個實施例,首先檢查隊列中是否有與該讀操作的讀取地址相同的 結(jié)構(gòu)體,如果有,則從該結(jié)構(gòu)體中取出與該讀取地址相應(yīng)的數(shù)據(jù)與主模塊模擬器通過讀操 作從總線上讀出的數(shù)據(jù)進行比對,如果兩者相同,則表示存儲器控制器工作正常;否則,直 接讀取存儲器中的與該讀取地址相應(yīng)的數(shù)據(jù),與主模塊模擬器通過讀操作從總線上讀出的 數(shù)據(jù)進行比對,如果兩者相同,則表示存儲器控制器工作正常。圖4示出了本發(fā)明實施例提供的存儲器控制器驗證系統(tǒng)的結(jié)構(gòu),為了便于說明, 僅示出了本發(fā)明實施例相關(guān)的部分。該存儲器控制器驗證系統(tǒng)包括主模塊模擬器41、存 儲器控制器42、存儲器43、測試用例產(chǎn)生器44、記分板45。其中,所述記分板45包括結(jié)構(gòu)體類型設(shè)置單元451、隊列設(shè)置單元452、總線操作 檢測單元453、結(jié)構(gòu)體生成單元454、隊列生成單元455以及驗證結(jié)果生成單元456。結(jié)構(gòu)體類型設(shè)置單元451用于預(yù)先設(shè)置結(jié)構(gòu)體類型,所述結(jié)構(gòu)體類型包括一寫操 作時寫入存儲器的數(shù)據(jù)和一所述數(shù)據(jù)在存儲器中的存儲地址,所述數(shù)據(jù)和存儲地址均以字 節(jié)為單位。隊列設(shè)置單元452用于預(yù)先設(shè)置隊列,所述隊列的存放單位是預(yù)先設(shè)置類型的結(jié) 構(gòu)體。整個存儲器控制器驗證系統(tǒng)的工作過程詳述如下測試用例產(chǎn)生器44發(fā)送控制事務(wù)至主模塊模擬器41和記分板45,該控制事務(wù)是 對主模塊模擬器41要傳輸給存儲器控制器42的總線操作的一個描述,例如主模塊模擬 器41要傳輸給存儲器控制器42的總線操作是讀還是寫,是否會被另一個操作打斷等;第二 步主模塊模擬器41根據(jù)所述控制事務(wù)產(chǎn)生符合總線時序的操作并將其傳送至存儲器控 制器42,例如,主模塊模擬器41接收測試用例產(chǎn)生器44傳輸?shù)目刂剖聞?wù),根據(jù)該控制事務(wù) 產(chǎn)生符合總線時序的操作,再通過總線傳輸給存儲器控制器42 ;第三步通過存儲器控制 器42的接口總線時序監(jiān)測存儲器控制器42生成監(jiān)測事務(wù)并傳送至記分板45,所述監(jiān)測事 務(wù)是由監(jiān)測存儲器控制器的接口總線時序所解析出來的總線操作描述。記分板45的總線操作檢測單元453根據(jù)監(jiān)測存儲器控制器42產(chǎn)生的監(jiān)測事務(wù)以及測試用例產(chǎn)生器傳輸?shù)目刂剖聞?wù)檢測主模塊模擬器是否正確發(fā)出總線操作,然后根據(jù)流 程判斷存儲器控制器是否正確執(zhí)行總線操作。當(dāng)接收到測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)中 的總線操作中有寫操作時,通過結(jié)構(gòu)體生成單元454將所述寫操作中的地址和該地址對應(yīng) 的數(shù)據(jù)寫入預(yù)先設(shè)置類型的結(jié)構(gòu)體中,并一一進行存儲,其中結(jié)構(gòu)體的類型由結(jié)構(gòu)體類型 設(shè)置單元451預(yù)先設(shè)置,包括以字節(jié)為單位的寫操作存儲地址和該寫操作存儲地址中存儲 的相應(yīng)的以字節(jié)為單位的數(shù)據(jù),在本發(fā)明實施例中,總線是AHB總線,存儲器控制器是DRAM 控制器,存儲器是DRAM。隊列生成單元455用于將生成的結(jié)構(gòu)體存儲在隊列中。作為本發(fā)明的一個實施 例,首先檢查新生成的結(jié)構(gòu)體中存儲的地址是否與隊列中存放的結(jié)構(gòu)體中存儲的地址相 同,如果兩者相同,則用新生成的結(jié)構(gòu)體替換隊列中原來存儲的結(jié)構(gòu)體;否則直接將新生成 的結(jié)構(gòu)體添加到隊列中,其中,隊列是通過隊列設(shè)置單元452預(yù)先設(shè)置的,隊列中存放的單 位是結(jié)構(gòu)體,該結(jié)構(gòu)體的類型通過結(jié)構(gòu)體類型設(shè)置單元451預(yù)先設(shè)置。驗證結(jié)果生成單元456根據(jù)監(jiān)測存儲器控制器42所產(chǎn)生的監(jiān)測事務(wù)以及測試用 例產(chǎn)生器傳輸?shù)目刂剖聞?wù)檢測存儲器控制器42是否正確執(zhí)行總線操作,當(dāng)接收到測試用 例產(chǎn)生器產(chǎn)生的控制事務(wù)中的總線操作中有讀操作時,將從隊列中存儲的結(jié)構(gòu)體中或者從 存儲器中讀取的與所述讀操作中的讀取地址相同的地址中存儲的數(shù)據(jù)與通過所述讀操作 讀取的數(shù)據(jù)進行比較,如果兩者相同,表示存儲器控制器工作正常。具體過程如下,檢測測 試用例產(chǎn)生器產(chǎn)生的總線操作(打斷和被打斷的操作)中是否有讀操作,當(dāng)所述總線操作 有讀操作時,則首先通過驗證結(jié)果生成單元456的地址判斷子單元檢查隊列中是否有與所 述讀操作的讀取地址相同的結(jié)構(gòu)體,如果隊列中有與所述讀操作的讀取地址相同的結(jié)構(gòu) 體,則通過第一驗證結(jié)果生成子單元從所述結(jié)構(gòu)體中取出與所述讀取地址相應(yīng)的數(shù)據(jù)與通 過所述讀操作讀出的數(shù)據(jù)進行比對,如果兩者相同,表示存儲器控制器工作正常;如果隊列 中沒有與所述讀操作的讀取地址相同的結(jié)構(gòu)體,則通過第二驗證結(jié)果生成子單元讀取存儲 器中的與該讀取地址相應(yīng)的數(shù)據(jù),與主模塊模擬器通過所述讀操作讀出的數(shù)據(jù)進行比對, 如果兩者相同,表示存儲器控制器工作正常。另外,由于結(jié)構(gòu)體是以字節(jié)為單位的,所以進 行讀操作時可能只有一部分?jǐn)?shù)據(jù)可在隊列的結(jié)構(gòu)體中找到,另一部分要與直接讀取存儲器 中的相應(yīng)地址的數(shù)據(jù)進行拼接,才能完成所有的讀操作數(shù)據(jù)比對,因此驗證結(jié)果生成單元 456還包括數(shù)據(jù)拼接子單元,用于將從隊列中存儲的結(jié)構(gòu)體中讀取的與所述讀操作中的讀 取地址相同的地址中存儲的數(shù)據(jù)與從存儲器中相應(yīng)的地址讀取的數(shù)據(jù)進行拼接。在本發(fā)明實施例中,當(dāng)記分板接收到測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)是將對存儲 器進行寫操作時,存儲即將寫入到存儲器中的數(shù)據(jù)以及該數(shù)據(jù)的存儲地址至預(yù)先設(shè)置類型 的結(jié)構(gòu)體中,并添加到預(yù)先設(shè)置的隊列中,當(dāng)記分板接收到測試用例產(chǎn)生器產(chǎn)生的控制事 務(wù)是將對存儲器進行讀操作時,將從隊列中存儲的結(jié)構(gòu)體中或者從存儲器中讀取的與所述 讀操作指令中的讀取地址相同的地址中存儲的數(shù)據(jù)與通過所述讀操作指令讀取的數(shù)據(jù)進 行比對,若數(shù)據(jù)相同,則測試通過,該驗證方法可以驗證在各種總線時序情況下,存儲器控 制器能否對存儲器進行正確控制。以上所述僅為本發(fā)明的較佳實施例而已,并不用以限制本發(fā)明,凡在本發(fā)明的精 神和原則之內(nèi)所作的任何修改、等同替換和改進等,均應(yīng)包含在本發(fā)明的保護范圍之內(nèi)。
權(quán)利要求
一種存儲器控制器驗證方法,其特征在于,所述方法包括下述步驟記分板根據(jù)監(jiān)測存儲器控制器產(chǎn)生的監(jiān)測事務(wù)和測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)檢測總線操作;當(dāng)所述總線操作中有寫操作時,將所述寫操作中的地址和該地址對應(yīng)的數(shù)據(jù)寫入預(yù)先設(shè)置類型的結(jié)構(gòu)體中;將生成的結(jié)構(gòu)體存儲在隊列中;當(dāng)所述總線操作中有讀操作時,將從隊列中存儲的結(jié)構(gòu)體中或者從存儲器中讀取的與所述讀操作中的讀取地址相同的地址中存儲的數(shù)據(jù)與通過所述讀操作讀取的數(shù)據(jù)進行比較,如果兩者相同,表示存儲器控制器工作正常。
2.如權(quán)利要求1所述的方法,其特征在于,在所述記分板根據(jù)監(jiān)測存儲器控制器產(chǎn)生 的監(jiān)測事務(wù)檢測測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)中的總線操作的步驟之前,所述方法還包 括下述步驟預(yù)先設(shè)置結(jié)構(gòu)體類型,所述結(jié)構(gòu)體類型包括一寫操作時寫入存儲器的數(shù)據(jù)和一所述數(shù) 據(jù)在存儲器中的存儲地址,所述數(shù)據(jù)和存儲地址均以字節(jié)為單位;預(yù)先設(shè)置隊列,所述隊列的存放單位是預(yù)先設(shè)置類型的結(jié)構(gòu)體。
3.如權(quán)利要求1所述的方法,其特征在于,在所述記分板根據(jù)監(jiān)測存儲器控制器產(chǎn)生 的監(jiān)測事務(wù)檢測測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)中的總線操作的步驟之前,所述方法還包 括下述步驟測試用例產(chǎn)生器發(fā)送控制事務(wù)至主模塊模擬器和記分板;主模塊模擬器根據(jù)所述控制事務(wù)產(chǎn)生符合總線時序的操作并將其傳送至存儲器控制器;通過存儲器控制器的接口總線時序監(jiān)測存儲器控制器的總線操作,生成監(jiān)測事務(wù)并傳 送至記分板。
4.如權(quán)利要求1所述的方法,其特征在于,所述當(dāng)所述總線操作中有讀操作時,將從隊 列中存儲的結(jié)構(gòu)體中或者從存儲器中讀取的與所述讀操作中的讀取地址相同的地址中存 儲的數(shù)據(jù)與通過所述讀操作讀取的數(shù)據(jù)進行比較,如果相同,表示存儲器控制器工作正常 的步驟具體為檢查隊列中是否有與所述讀操作的讀取地址相同的結(jié)構(gòu)體;當(dāng)隊列中有與所述讀操作的讀取地址相同的結(jié)構(gòu)體時,從所述結(jié)構(gòu)體中取出與所述讀 取地址相應(yīng)的數(shù)據(jù)與通過所述讀操作讀出的數(shù)據(jù)進行比對,如果兩者相同,表示存儲器控 制器工作正常;當(dāng)隊列中沒有與所述讀操作的讀取地址相同的結(jié)構(gòu)體時,讀取存儲器中的與該讀取地 址相應(yīng)的數(shù)據(jù),與主模塊模擬器通過所述讀操作讀出的數(shù)據(jù)進行比對,如果兩者相同,表示 存儲器控制器工作正常。
5.如權(quán)利要求1所述的方法,其特征在于,所述將從隊列中存儲的結(jié)構(gòu)體中或者從存 儲器中讀取的與所述讀操作中的讀取地址相同的地址中存儲的數(shù)據(jù)與通過所述讀操作讀 取的數(shù)據(jù)進行比較的步驟還包括將從隊列中存儲的結(jié)構(gòu)體中讀取的與所述讀操作中的讀取地址相同的地址中存儲的 數(shù)據(jù)與從存儲器中相應(yīng)的地址讀取的數(shù)據(jù)進行拼接。
6.一種記分板,其特征在于,所述記分板包括總線操作檢測單元,用于根據(jù)監(jiān)測存儲器控制器產(chǎn)生的監(jiān)測事務(wù)和測試用例產(chǎn)生器產(chǎn) 生的控制事務(wù)檢測總線操作;結(jié)構(gòu)體生成單元,用于當(dāng)所述總線操作中有寫操作時,將所述寫操作中的地址和該地 址對應(yīng)的數(shù)據(jù)寫入預(yù)先設(shè)置類型的結(jié)構(gòu)體中;隊列生成單元,用于將生成的結(jié)構(gòu)體存儲在隊列中;驗證結(jié)果生成單元,用于將從隊列中存儲的結(jié)構(gòu)體中或者從存儲器中讀取的與所述讀 操作中的讀取地址相同的地址中存儲的數(shù)據(jù)與通過所述讀操作讀取的數(shù)據(jù)進行比較,如果 兩者相同,表示存儲器控制器工作正常。
7.如權(quán)利要求6所述的記分板,其特征在于,所述記分板還包括結(jié)構(gòu)體類型設(shè)置單元,用于預(yù)先設(shè)置結(jié)構(gòu)體類型,所述結(jié)構(gòu)體類型包括一寫操作時寫 入存儲器的數(shù)據(jù)和一所述數(shù)據(jù)在存儲器中的存儲地址,所述數(shù)據(jù)和存儲地址均以字節(jié)為單 位;隊列設(shè)置單元,用于預(yù)先設(shè)置隊列,所述隊列的存放單位是預(yù)先設(shè)置類型的結(jié)構(gòu)體。
8.如權(quán)利要求6所述的記分板,其特征在于,所述驗證結(jié)果生成單元包括 地址判斷子單元,用于檢查隊列中是否有與所述讀操作的讀取地址相同的結(jié)構(gòu)體; 第一驗證結(jié)果生成子單元,用于當(dāng)隊列中有與所述讀操作的讀取地址相同的結(jié)構(gòu)體時,從所述結(jié)構(gòu)體中取出與所述讀取地址相應(yīng)的數(shù)據(jù)與通過所述讀操作讀出的數(shù)據(jù)進行比 對,如果兩者相同,表示存儲器控制器工作正常;第二驗證結(jié)果生成子單元,用于當(dāng)隊列中沒有與所述讀操作的讀取地址相同的結(jié)構(gòu)體 時,讀取存儲器中的與該讀取地址相應(yīng)的數(shù)據(jù),與主模塊模擬器通過所述讀操作讀出的數(shù) 據(jù)進行比對,如果兩者相同,表示存儲器控制器工作正常。
9.如權(quán)利要求6所述的記分板,其特征在于,所述驗證結(jié)果生成單元還包括數(shù)據(jù)拼接子單元,用于將從隊列中存儲的結(jié)構(gòu)體中讀取的與所述讀操作中的讀取地址 相同的地址中存儲的數(shù)據(jù)與從存儲器中相應(yīng)的地址讀取的數(shù)據(jù)進行拼接。
10.一種存儲器控制器驗證系統(tǒng),其特征在于,所述系統(tǒng)包括權(quán)利要求6至9任一項所 述的記分板,所述系統(tǒng)還包括測試用例產(chǎn)生器、主模塊模擬器、存儲器控制器以及存儲器。
全文摘要
本發(fā)明適用于存儲器控制器技術(shù)領(lǐng)域,提供了一種存儲器控制器驗證系統(tǒng)、方法及記分板,所述存儲器控制器驗證方法包括下述步驟記分板根據(jù)監(jiān)測存儲器控制器產(chǎn)生的監(jiān)測事務(wù)和測試用例產(chǎn)生器產(chǎn)生的控制事務(wù)檢測總線操作;當(dāng)所述總線操作中有寫操作時,將所述寫操作中的地址和該地址對應(yīng)的數(shù)據(jù)寫入預(yù)先設(shè)置類型的結(jié)構(gòu)體中;將生成的結(jié)構(gòu)體存儲在隊列中;當(dāng)所述總線操作中有讀操作時,當(dāng)從隊列中存儲的結(jié)構(gòu)體中或者從存儲器中讀取的數(shù)據(jù)與從通過所述讀操作讀取的數(shù)據(jù)相同時,存儲器控制器工作正常。在本發(fā)明中,提供的驗證方法可以驗證在各種總線時序情況下,存儲器控制器能否對存儲器進行正確控制。
文檔編號G06F13/16GK101923494SQ20091010832
公開日2010年12月22日 申請日期2009年6月17日 優(yōu)先權(quán)日2009年6月17日
發(fā)明者卿梅, 王恒軍, 胡勝發(fā), 趙玉梅 申請人:安凱(廣州)微電子技術(shù)有限公司