本發(fā)明涉及仿真,特別是涉及一種使用fifo移位實(shí)現(xiàn)流水線(xiàn)時(shí)鐘的系統(tǒng)和方法。
背景技術(shù):
1、現(xiàn)有典型的高效率仿真模型(如c模型)內(nèi)的function?module(功能模塊)中復(fù)雜的計(jì)算模型在實(shí)現(xiàn)過(guò)程中不會(huì)考慮硬件中的流水延遲,通常因?yàn)橛布械慕M合電路和組合邏輯的復(fù)雜性,只實(shí)現(xiàn)其內(nèi)部功能,作為“黑盒”來(lái)使用,大大提升方便性。但是其缺點(diǎn)就是,無(wú)法準(zhǔn)確有效的模擬硬件中的時(shí)序,從而在時(shí)序分析中function?model就毫無(wú)優(yōu)勢(shì)。
2、具有“黑盒”功能的function?module在被直接拿來(lái)做function?module?timer模型的時(shí)候會(huì)存著以下的問(wèn)題:
3、有一個(gè)層級(jí)tn=5級(jí)的流水功能模塊作為“黑盒”被使用在當(dāng)前可以分析時(shí)序的模型中,當(dāng)某次輸入的數(shù)據(jù)時(shí)刻為t時(shí),輸出的數(shù)據(jù)時(shí)刻必然為t+tn,即t+5。可以直接通過(guò)對(duì)“黑盒”的輸出做延遲5個(gè)cycle就可以實(shí)現(xiàn)其基本的時(shí)序延遲。但是如果有連續(xù)cycle的兩次輸入數(shù)據(jù)時(shí)刻為t0=0和t1=1時(shí),通常采取一個(gè)數(shù)據(jù)輸入結(jié)束后,再輸入另一個(gè)數(shù)據(jù),經(jīng)過(guò)剛才實(shí)現(xiàn)的延遲,輸出數(shù)據(jù)時(shí)刻為t0′=t0+5,t1′=t0+10,如圖1所示;而在實(shí)際硬件中的輸出數(shù)據(jù)時(shí)刻應(yīng)為t0′=t0+5,t1′=t1+5=t0+6,如圖2所示。顯然在連續(xù)的輸入數(shù)據(jù)在“黑盒”中執(zhí)行后進(jìn)行輸出時(shí),對(duì)“黑盒”進(jìn)行簡(jiǎn)單的延遲會(huì)導(dǎo)致模擬的時(shí)鐘與實(shí)際情況完全不符。
4、鑒于此,克服該現(xiàn)有技術(shù)所存在的缺陷是本技術(shù)領(lǐng)域亟待解決的問(wèn)題。
技術(shù)實(shí)現(xiàn)思路
1、本發(fā)明實(shí)施例要解決的技術(shù)問(wèn)題在于保障仿真效率的同時(shí),如何解決功能模塊內(nèi)無(wú)法直接正確分析時(shí)序的問(wèn)題。
2、本發(fā)明實(shí)施例采用如下技術(shù)方案:
3、第一方面,本發(fā)明提出了一種使用fifo移位實(shí)現(xiàn)流水線(xiàn)時(shí)鐘的系統(tǒng),包括多個(gè)功能模塊、多個(gè)fifo移位模塊和攔截層模塊,每?jī)蓚€(gè)相鄰的功能模塊之間設(shè)置有一個(gè)fifo移位模塊;所述攔截層模塊與所述多個(gè)fifo移位模塊連接;
4、每個(gè)所述fifo移位模塊用于對(duì)數(shù)據(jù)執(zhí)行流水線(xiàn)移位操作,并計(jì)算時(shí)鐘數(shù);
5、所述攔截層模塊用于配置所述多個(gè)fifo移位模塊的級(jí)數(shù)。
6、優(yōu)選的,每一所述功能模塊包括sched模塊、ictrl模塊、多個(gè)alu管線(xiàn)和多個(gè)寄存器;
7、所述sched模塊和所述ictrl模塊之間配置有級(jí)數(shù)為s的fifo移位模塊,所述ictrl模塊與所述alu管線(xiàn)之間配置有級(jí)數(shù)為i的fifo移位模塊,所述alu管線(xiàn)與對(duì)應(yīng)的所述寄存器之間配置有級(jí)數(shù)為ai的fifo移位模塊,其中,i=0,1,…,n,且n為所述alu管線(xiàn)的數(shù)量;所述sched模塊用于調(diào)度系統(tǒng)內(nèi)的數(shù)據(jù),并將調(diào)度的數(shù)據(jù)傳輸?shù)絠ctrl模塊內(nèi);
8、所述ictrl模塊用于將sched模塊傳輸?shù)臄?shù)據(jù)解析為對(duì)應(yīng)alu管線(xiàn)的指令,并將指令分發(fā)到對(duì)應(yīng)的alu管線(xiàn)內(nèi);
9、所述alu管線(xiàn)用于將接收的指令的計(jì)算結(jié)果寫(xiě)入對(duì)應(yīng)的寄存器內(nèi)。
10、優(yōu)選的,所述fifo移位模塊用于對(duì)數(shù)據(jù)執(zhí)行流水線(xiàn)移位操作,具體包括:
11、獲取fifo移位模塊內(nèi)的深度單元數(shù)量m,將fifo移位模塊內(nèi)的深度單元的位置標(biāo)志初始化為0,并按照數(shù)據(jù)的傳輸順序?qū)ι疃葐卧M(jìn)行排序,排序的順序?yàn)?、2、…、m,其中,m為大于0的自然數(shù);
12、當(dāng)t時(shí)刻第一數(shù)據(jù)輸入時(shí),將第一數(shù)據(jù)拉入fifo移位模塊內(nèi)序號(hào)為1的深度單元內(nèi),并將序號(hào)為1的深度單元的位置標(biāo)志更新為1;
13、當(dāng)t+t時(shí)刻第二數(shù)據(jù)輸入時(shí),將第一數(shù)據(jù)向前移動(dòng)t個(gè)深度單元,并將第一數(shù)據(jù)拉入fifo移位模塊內(nèi)序號(hào)為t+1的深度單元內(nèi),將序號(hào)為1的深度單元的位置標(biāo)志更新為0,將序號(hào)為t+1的深度單元的位置標(biāo)志更新為1,并將第二數(shù)據(jù)拉入序號(hào)為1的深度單元內(nèi),并將序號(hào)為1的深度單元的位置標(biāo)志更新為1;
14、當(dāng)準(zhǔn)備輸出時(shí),若當(dāng)前fifo移位模塊內(nèi)序號(hào)為m的深度單元內(nèi)的位置標(biāo)志為0時(shí),則fifo移位模塊內(nèi)的數(shù)據(jù)整體向前移動(dòng)一個(gè)深度單元;若當(dāng)前fifo移位模塊內(nèi)序號(hào)為m的深度單元內(nèi)的位置標(biāo)志為1時(shí),則輸出對(duì)應(yīng)的數(shù)據(jù)。
15、優(yōu)選的,所述alu管線(xiàn)為fop、dot、bit、int、cpx和mov中的一種或多種。
16、第二方面,本發(fā)明還提供了一種使用fifo移位實(shí)現(xiàn)流水線(xiàn)時(shí)鐘的方法,所述方法用于構(gòu)建第一方面的使用fifo移位實(shí)現(xiàn)流水線(xiàn)時(shí)鐘的系統(tǒng),所述方法包括:
17、在每?jī)蓚€(gè)相鄰的功能模塊之間設(shè)置對(duì)應(yīng)的fifo移位模塊,將攔截層模塊與所述fifo移位模塊連接,并設(shè)置fifo移位模塊的級(jí)數(shù);
18、利用fifo移位模塊對(duì)系統(tǒng)內(nèi)的數(shù)據(jù)執(zhí)行流水線(xiàn)操作,并計(jì)算出數(shù)據(jù)的時(shí)鐘數(shù),以獲取數(shù)據(jù)傳輸?shù)臅r(shí)序。
19、優(yōu)選的,所述功能模塊包括sched模塊、ictrl模塊、多個(gè)alu管線(xiàn)和多個(gè)寄存器,所述通過(guò)攔截層模塊配置所述fifo移位模塊的級(jí)數(shù),并利用所述fifo移位模塊對(duì)數(shù)據(jù)執(zhí)行流水線(xiàn)操作,獲取數(shù)據(jù)的時(shí)鐘數(shù),具體包括:利用所述sched模塊調(diào)度系統(tǒng)內(nèi)的數(shù)據(jù),并將調(diào)度的數(shù)據(jù)傳輸?shù)剿鰅ctrl模塊內(nèi);
20、利用所述ictrl模塊將sched模塊傳輸?shù)臄?shù)據(jù)解析為對(duì)應(yīng)alu管線(xiàn)的指令,并將指令分發(fā)到對(duì)應(yīng)的alu管線(xiàn)內(nèi);
21、利用所述alu管線(xiàn)將接收的指令的計(jì)算結(jié)果寫(xiě)入對(duì)應(yīng)的寄存器內(nèi);
22、利用攔截層模塊在sched模塊與ictrl模塊之間、ictrl模塊與alu管線(xiàn)之間,以及alu管線(xiàn)與寄存器之間配置對(duì)應(yīng)的fifo移位模塊的級(jí)數(shù),并利用所述fifo移位模塊對(duì)數(shù)據(jù)執(zhí)行流水線(xiàn)時(shí)鐘移位操作,獲取數(shù)據(jù)的時(shí)鐘數(shù)。
23、優(yōu)選的,所述利用所述fifo移位模塊對(duì)數(shù)據(jù)執(zhí)行流水線(xiàn)移位操作,還包括獲取所述系統(tǒng)內(nèi)各fifo移位模塊對(duì)應(yīng)的時(shí)序延時(shí),具體包括:
24、將測(cè)試數(shù)據(jù)輸入到所述系統(tǒng)內(nèi)進(jìn)行仿真,獲取第一仿真波形數(shù)據(jù);
25、從第一仿真波形數(shù)據(jù)中抽取各fifo移位模塊內(nèi)輸入信號(hào)時(shí)序和輸出信號(hào)時(shí)序,獲取各fifo移位模塊輸入信號(hào)時(shí)序和輸出信號(hào)時(shí)序之間的時(shí)鐘數(shù)差。
26、優(yōu)選的,在構(gòu)建所述系統(tǒng)之后,還包括利用rtl模型對(duì)所述系統(tǒng)內(nèi)的fifo移位模塊的流水線(xiàn)時(shí)序的準(zhǔn)確度進(jìn)行驗(yàn)證,具體包括:
27、獲取預(yù)設(shè)數(shù)量的測(cè)試數(shù)據(jù),將測(cè)試數(shù)據(jù)依次輸入rtl模型內(nèi)進(jìn)行仿真,獲取rtl模型的第二仿真波形數(shù)據(jù);
28、將測(cè)試數(shù)據(jù)輸入所述系統(tǒng)內(nèi)進(jìn)行仿真,獲取所述系統(tǒng)的第三仿真波形數(shù)據(jù);
29、將第二仿真波形數(shù)據(jù)與第三仿真波形數(shù)據(jù)進(jìn)行比對(duì),根據(jù)比對(duì)結(jié)構(gòu)獲取第二仿真波形數(shù)據(jù)與第三仿真波形數(shù)據(jù)不一致的數(shù)據(jù)量,并計(jì)算出所述數(shù)據(jù)量占測(cè)試數(shù)據(jù)的第一誤差百分比;
30、設(shè)定第一誤差百分比的比對(duì)閾值,若第一誤差百分比小于等于比對(duì)閾值,則說(shuō)明驗(yàn)證通過(guò);若第一誤差百分比大于比對(duì)閾值,則說(shuō)明驗(yàn)證不通過(guò),并對(duì)所述系統(tǒng)進(jìn)行重新調(diào)整。
31、優(yōu)選的,所述系統(tǒng)內(nèi)的fifo移位模塊的時(shí)序驗(yàn)證,按照數(shù)據(jù)流入fifo移位模塊的長(zhǎng)度統(tǒng)計(jì)耗時(shí)、任務(wù)整體統(tǒng)計(jì)時(shí)耗或任務(wù)對(duì)應(yīng)的各子階段功能邏輯的耗時(shí)中的一種或多種。
32、優(yōu)選的,構(gòu)建所述系統(tǒng)之后,還包括利用所述系統(tǒng)進(jìn)行仿真,具體包括:
33、加載所述系統(tǒng)內(nèi)流水線(xiàn)操作配置文件,配置各fifo移位模塊流水線(xiàn)移位延時(shí);
34、獲取待仿真的數(shù)據(jù)任務(wù),按照輸入所述系統(tǒng)內(nèi)的順序?qū)Υ抡娴臄?shù)據(jù)任務(wù)進(jìn)行排序;
35、依次按照排序的序號(hào),將待仿真的數(shù)據(jù)任務(wù)輸入所述系統(tǒng)內(nèi)進(jìn)行仿真,直到完成所有的待仿真的數(shù)據(jù)任務(wù)的仿真,并記錄每個(gè)待仿真的數(shù)據(jù)任務(wù)的開(kāi)始時(shí)鐘、結(jié)束時(shí)鐘,以及結(jié)束時(shí)對(duì)應(yīng)的仿真波形數(shù)據(jù)。
36、本發(fā)明的使用fifo移位實(shí)現(xiàn)流水線(xiàn)時(shí)鐘的系統(tǒng)內(nèi)通過(guò)在每?jī)蓚€(gè)相鄰的功能模塊之間添加fifo移位模塊,并通過(guò)攔截層模塊配置fifo移位模塊的級(jí)數(shù),fifo移位模塊對(duì)數(shù)據(jù)執(zhí)行流水線(xiàn)移位操作,并計(jì)算時(shí)鐘數(shù),使得fifo移位模塊具有正確的流水線(xiàn)時(shí)序邏輯,使得本發(fā)明的流水線(xiàn)時(shí)鐘系統(tǒng)既具有組合邏輯的仿真速度,又能模擬硬件中的時(shí)序,具有評(píng)估流水線(xiàn)時(shí)鐘系統(tǒng)的能力。