周文強(qiáng)
(中科芯集成電路有限公司,江蘇無(wú)錫 214072)
移動(dòng)產(chǎn)業(yè)處理器高速顯示串行接口(MIPI DSI)是移動(dòng)產(chǎn)業(yè)處理器接口聯(lián)盟提出的一種應(yīng)用于顯示技術(shù)的高速串行接口[1-3],支持顯示像素接口(DPI)、顯示總線接口(DBI)標(biāo)準(zhǔn)以及顯示指令集(DCS)標(biāo)準(zhǔn)等[4-5],具有高速和低功耗2 種工作模式。相對(duì)于傳統(tǒng)的紅綠藍(lán)(RGB)接口,其具有高速、低功耗、抗干擾性強(qiáng)等特點(diǎn)。MIPI DSI 具有1 條時(shí)鐘通道和最多4 條數(shù)據(jù)通道,每條數(shù)據(jù)通道的最高傳輸速率可達(dá)2.5 Gbit/s,4 條數(shù)據(jù)通道理論上最高可達(dá)10 Gbit/s。MIPI DSI 被廣泛應(yīng)用于汽車、手機(jī)、多媒體以及各類可穿戴設(shè)備。為了保證產(chǎn)品的正確性和可靠性,芯片設(shè)計(jì)的驗(yàn)證工作必須充分,目前在系統(tǒng)級(jí)芯片(SoC)的研發(fā)階段,驗(yàn)證占據(jù)的時(shí)間已達(dá)到70%左右[6],嚴(yán)重影響了芯片的研發(fā)進(jìn)程,因此采用快速并有效的系統(tǒng)級(jí)驗(yàn)證方法顯得至關(guān)重要。通用驗(yàn)證方法學(xué)(UVM)因其有效結(jié)合了可重復(fù)利用、隨機(jī)化約束、測(cè)試激勵(lì)隨機(jī)生成、覆蓋率驅(qū)動(dòng)驗(yàn)證等特點(diǎn)[7-9],能夠大大縮短驗(yàn)證時(shí)間,近年來(lái)被廣泛使用。然而,業(yè)界在使用UVM 時(shí),大部分只針對(duì)模塊級(jí),不能很好地模擬整體芯片的實(shí)際工作狀態(tài),從而遺漏設(shè)計(jì)上的錯(cuò)誤。因此,本文針對(duì)MIPI DSI 提出了一種基于UVM 可重用的MIPI DSI 系統(tǒng)級(jí)驗(yàn)證方法,并設(shè)計(jì)了基于UVM 可重用的系統(tǒng)級(jí)驗(yàn)證平臺(tái)。
本文提出的基于UVM 的MIPI DSI 系統(tǒng)級(jí)可重用驗(yàn)證平臺(tái)的總體結(jié)構(gòu)如圖1 所示。在該平臺(tái)中,本文設(shè)計(jì)了符合MIPI DSI 1.2 版本標(biāo)準(zhǔn)[4]的可重復(fù)利用的參考模型、符合適配MIPI DSI 物理層接口(D-PHY)1.2 版本標(biāo)準(zhǔn)[10]的從物理接口,用于連接電路上的主物理接口;并設(shè)計(jì)了接收模型(RX model),用于將傳輸?shù)臄?shù)據(jù)接收后存儲(chǔ)下來(lái),以便通過(guò)記分板與參考模型的輸出數(shù)據(jù)進(jìn)行實(shí)時(shí)在線比較。開發(fā)的測(cè)試激勵(lì)通過(guò)測(cè)試序列傳遞給各個(gè)序列器,然后通過(guò)各個(gè)驅(qū)動(dòng)器發(fā)送到SoC,隨后經(jīng)過(guò)總線配置給各個(gè)模塊的寄存器,使系統(tǒng)中的各個(gè)模塊一起工作。例如將測(cè)試激勵(lì)配置給DDR4 存儲(chǔ)器、顯示處理器(DPU)、MIPI DSI 控制器、主物理接口等模塊,隨后DPU 從DDR4 存儲(chǔ)器中讀取像素?cái)?shù)據(jù),并依次發(fā)送給MIPI DSI 控制器、主物理接口和驗(yàn)證平臺(tái)中的從物理接口、接收模型,同時(shí)DPU 將數(shù)據(jù)和控制信號(hào)發(fā)送給參考模型,最終記分板對(duì)期望值和實(shí)際值進(jìn)行實(shí)時(shí)在線比較,一旦數(shù)據(jù)包不匹配,仿真立即停止,并報(bào)告詳細(xì)的錯(cuò)誤信息。
圖1 MIPI DSI 系統(tǒng)級(jí)可重用UVM 驗(yàn)證平臺(tái)
因?yàn)镸IPI DSI 控制器支持MIPI DSI 1.2 版本標(biāo)準(zhǔn),所以本設(shè)計(jì)的參考模型也以MIPI DSI 1.2 版本為準(zhǔn),并采用SystemVerilog 硬件描述語(yǔ)言設(shè)計(jì)該參考模型,模擬DSI 支持的所有功能。
3.1.1 第1 步
復(fù)位后參考模型處于空閑狀態(tài),復(fù)位消除后等待垂直同步信號(hào)(表示一幀數(shù)據(jù)的開始)的到來(lái),之后模型處于垂直同步有效(VSA)狀態(tài),一幅圖像的垂直同步區(qū)域如圖2 所示。
圖2 一幅圖像的垂直同步區(qū)域
為了遵循重復(fù)利用的原則,在設(shè)計(jì)代碼時(shí)把“插入垂直同步時(shí)的行數(shù)”的功能封裝為一個(gè)任務(wù),以便重復(fù)利用,其部分代碼如下:
task inset_vsync_line;
begin
……
command_head = `VSYNC_START;//
VSYNC_START =‘h01,根據(jù)MIPI DSI 1.2
版本標(biāo)準(zhǔn),該值必須為1,代表垂直同步開始
數(shù)據(jù)包
data_ID= {virtual_channel_ID_sample,
command_head};//根據(jù)MIPI DSI 1.2 版本標(biāo)
準(zhǔn),data_ID 的bit[7:6]為虛通道ID,bit[5:0]為
數(shù)據(jù)類型
insert_vsa_line();//增加一行vsa line
end
endtask
其中command_head 表示數(shù)據(jù)包的類型,根據(jù)MIPI DSI 1.2 版本標(biāo)準(zhǔn),該值為2’b01,代表垂直同步開始數(shù)據(jù)包。data_ID 為8 bit 數(shù)據(jù)包包頭,表示數(shù)據(jù)包的類型,數(shù)據(jù)包包頭格式如圖3 所示。
圖3 數(shù)據(jù)包包頭格式
3.1.2 第2~4 步
后面的步驟是VSA、VBP、VACTIVE、VFP 區(qū)域分別一行一行增加數(shù)據(jù),因代碼較長(zhǎng),不再分別詳細(xì)描述,參考模型的主體狀態(tài)機(jī)如圖4 所示。
圖4 參考模型的主體狀態(tài)機(jī)
MIPI DSI 1.2 版本標(biāo)準(zhǔn)規(guī)定的數(shù)據(jù)短包和長(zhǎng)包格式見圖3,根據(jù)該格式對(duì)其進(jìn)行建模:
expect_data[expect_pointer]=data_ID;
expect_pointer=expect_pointer+1;
expect_data[expect_pointer]=data[7:0];
expect_pointer=expect_pointer+1;
expect_data[expect_pointer]=data[15:8];
expect_pointer=expect_pointer+1;
expect_data[expect_pointer]=
ecc_cal ({word_cont [15:8], word_cont [7:0],data_ID});
expect_pointer=expect_pointer+1;
代碼中ecc_cal 函數(shù)的功能是根據(jù)輸入的數(shù)據(jù)來(lái)計(jì)算出相應(yīng)的ECC,上述為短包建模的代碼。長(zhǎng)包建模類似,但還需要增加各個(gè)數(shù)據(jù)字節(jié)和校驗(yàn)(通過(guò)一個(gè)循環(huán)冗余碼校驗(yàn)算法計(jì)算得到)。
從物理接口連接電路上的主物理接口,因?yàn)镸IPI DSI 控制器和主物理接口支持1 條時(shí)鐘通道和最多4條數(shù)據(jù)通道(數(shù)據(jù)通道數(shù)目可通過(guò)寄存器配置調(diào)節(jié)),所以本設(shè)計(jì)的UVM 系統(tǒng)級(jí)可重用驗(yàn)證平臺(tái)中的從物理接口模型在設(shè)計(jì)時(shí)也支持1 條時(shí)鐘通道和最多4 條數(shù)據(jù)通道。
因?yàn)镸IPI DSI 控制器和主物理接口只有“數(shù)據(jù)通道0”在低功耗模式下支持雙向通信,其余數(shù)據(jù)通道在高速或低功耗模式下都只能單向通信,所以設(shè)計(jì)的從物理接口中的各條數(shù)據(jù)通道支持高速模式下的數(shù)據(jù)接收(HS-RX)、低功耗模式下的數(shù)據(jù)接收(LP-RX)和數(shù)據(jù)的發(fā)送(LP-TX),從物理接口數(shù)據(jù)通道結(jié)構(gòu)如圖5 所示。從物理接口中設(shè)計(jì)的時(shí)鐘通道由一個(gè)狀態(tài)機(jī)控制,其各個(gè)狀態(tài)跳轉(zhuǎn)關(guān)系如圖6 所示。
圖5 從物理接口數(shù)據(jù)通道結(jié)構(gòu)
圖6 時(shí)鐘通道的狀態(tài)機(jī)跳轉(zhuǎn)關(guān)系
接收模型連接從物理接口,主要用于接收譯碼主機(jī)發(fā)送的像素?cái)?shù)據(jù)包和命令包,并將數(shù)據(jù)存儲(chǔ)在自身的數(shù)據(jù)存儲(chǔ)器中。設(shè)計(jì)的UVM 系統(tǒng)級(jí)可重用驗(yàn)證平臺(tái)中的接收模型支持最多4 條數(shù)據(jù)通道相關(guān)信號(hào)的處理,同時(shí)實(shí)現(xiàn)了HS-RX、LP-RX 和LP-TX,其結(jié)構(gòu)如圖7 所示。數(shù)據(jù)的接收、譯碼、校驗(yàn)過(guò)程通過(guò)圖8 所示的狀態(tài)機(jī)控制。
圖7 接收模型結(jié)構(gòu)
圖8 接收模型中數(shù)據(jù)接收、譯碼、校驗(yàn)狀態(tài)機(jī)
最終記分板會(huì)將接收模型中存儲(chǔ)的數(shù)據(jù)和參考模型輸出的數(shù)據(jù)進(jìn)行實(shí)時(shí)在線比較,一旦數(shù)據(jù)與理論值不一致,仿真立即停止,并報(bào)告詳細(xì)的錯(cuò)誤信息,記分板結(jié)構(gòu)如圖9 所示。
圖9 記分板結(jié)構(gòu)
為了能重復(fù)利用測(cè)試代碼,測(cè)試用例構(gòu)建時(shí)采用層次化的方式,并在UVM 類的層次中將共用的代碼封裝成各個(gè)任務(wù),以便重復(fù)利用,測(cè)試用例中類的繼承關(guān)系如圖10 所示。
圖10 測(cè)試用例中類的繼承關(guān)系
最終,測(cè)試序列發(fā)送給虛擬序列器中相應(yīng)的序列器,然后通過(guò)對(duì)應(yīng)的驅(qū)動(dòng)器發(fā)送給SoC,對(duì)DDR4 存儲(chǔ)器、DPU、MIPI DSI 控制器、D-PHY 等模塊進(jìn)行配置,隨后DPU 從DDR4 中讀取像素?cái)?shù)據(jù),并將數(shù)據(jù)依次傳遞給MIPI DSI 控制器、主物理接口、從物理接口和接收模型等驗(yàn)證組件。同時(shí)DPU 輸出的控制信號(hào)和數(shù)據(jù)會(huì)傳遞給參考模型,最后記分板將實(shí)時(shí)在線比較實(shí)際值和期望值,一旦有任何錯(cuò)誤,立即停止仿真。設(shè)計(jì)的UVM 系統(tǒng)級(jí)可重用驗(yàn)證平臺(tái)總體UVM 類的層次結(jié)構(gòu)如圖11 所示。
圖11 MIPI DSI 系統(tǒng)級(jí)可重用驗(yàn)證平臺(tái)類層次結(jié)構(gòu)
在MIPI DSI 系統(tǒng)級(jí)可重用UVM 驗(yàn)證平臺(tái)中編寫各個(gè)功能的測(cè)試用例,以分辨率640×480,像素格式RGB30 (即RGB10-10-10,其他格式如RGB888、RGB565、RGB666 等也支持)為例,配置分辨率相關(guān)參數(shù):VSA 為2 行;VBP 為25 行;VACTIVE 為480 行;VFP 為2 行;HSA 為96 行;HBP 為40 行;水平有效(HACTIVE)為640 行;HFP 為8 行;刷新頻率為60 Hz;像素時(shí)鐘頻率為25.2 MHz。同時(shí)MIPI DSI 主、從物理接口均采用4 條數(shù)據(jù)通道和1 條時(shí)鐘通道的工作模式,工作速率為2.5 Gbit/s。該測(cè)試用例首先對(duì)整個(gè)系統(tǒng)進(jìn)行復(fù)位、配置時(shí)鐘等初始化操作,然后對(duì)DDR4存儲(chǔ)器系統(tǒng)進(jìn)行初始化,通過(guò)后門方式將像素?cái)?shù)據(jù)導(dǎo)入DDR4 存儲(chǔ)器,接著依次配置MIPI DSI 控制器、MIPI DSI 主物理接口以及DPU,隨后DPU 從DDR4存儲(chǔ)器中讀取數(shù)據(jù)并發(fā)送給MIPI DSI 子系統(tǒng)、從物理接口模型、接收模型以及參考模型,最終記分板對(duì)實(shí)際值和期望值進(jìn)行實(shí)時(shí)在線比較,一旦數(shù)據(jù)不同,仿真立即停止,并報(bào)告詳細(xì)的錯(cuò)誤信息。
由于設(shè)計(jì)的MIPI DSI 系統(tǒng)級(jí)可重用UVM 驗(yàn)證平臺(tái)是基于UVM 的,因此可重復(fù)利用性強(qiáng),平臺(tái)中在設(shè)計(jì)各個(gè)任務(wù)、函數(shù)以及組件時(shí)(如參考模型、記分板、接收模型等)就充分考慮了可重復(fù)利用性和便于移植的因素,因此在其他類似的項(xiàng)目中,可完全重復(fù)利用該平臺(tái)中的所有代碼,大大縮短了開發(fā)測(cè)試激勵(lì)以及驗(yàn)證的時(shí)間。同時(shí),該平臺(tái)是系統(tǒng)級(jí)的,能讓電路上的大部分模塊共同工作起來(lái),而不是單一地讓一個(gè)模塊工作,更加接近實(shí)際芯片的工作狀態(tài),能及時(shí)發(fā)現(xiàn)電路上的錯(cuò)誤。例如,之前在項(xiàng)目中發(fā)現(xiàn)DPU 輸出的vsync 信號(hào)寬度在時(shí)序上并不是嚴(yán)格的行數(shù)寬度,而是略微短小,這就需要對(duì)MIPI DSI 控制器進(jìn)行設(shè)計(jì)調(diào)整,這在單獨(dú)的模塊級(jí)驗(yàn)證中是很難發(fā)現(xiàn)的;另外,還發(fā)現(xiàn)過(guò)MIPI DSI 控制器外接的SRAM 的使能信號(hào)在代碼集成時(shí)沒有取反就連接的錯(cuò)誤,這都需要在系統(tǒng)級(jí)驗(yàn)證時(shí)才能發(fā)現(xiàn)。
采用Synopsys VCS 仿真工具對(duì)平臺(tái)進(jìn)行仿真,DPU 輸出信號(hào)和MIPI DSI 控制器輸入信號(hào)如圖12所示。DP550*是DPU 的輸出信號(hào),dpi*為MIPI DSI控制器的輸入信號(hào)。
圖12 DPU 輸出信號(hào)和MIPI DSI 控制器輸入信號(hào)
從圖 12 可以看出, 垂直同步信號(hào)DP550_0_VSYNC1 的有效寬度期間(高電平有效)占據(jù)2 行,即2 個(gè)水平同步信號(hào)DP550_0_HSYNC1 所在的寬度(高電平有效),這與上述測(cè)試用例中設(shè)置的VSA 參數(shù)一致。另外,在DP550_0_VSYNC1 下降沿和DP550_0_DATAEN1 第一個(gè)上升沿之間有25 個(gè)DP550_0_HSYNC1 有效寬度,這也與測(cè)試用例設(shè)置的VBP 參數(shù)一致。隨后就是RGB 像素?cái)?shù)據(jù)的傳遞。
注意在RGB30 格式下,MIPI DSI 控制器接口數(shù)據(jù)信號(hào) dpipixdata 與 DPU 的接口數(shù)據(jù)信號(hào)DP550_0_PXLDATAR1、DP550_0_PXLDATAG1、DP550_0_PXLDATAB1 之間的譯碼關(guān)系如下(即DPU的上述各R、G、B 分量均取高10 位,然后組合后賦值給dpipixdata):
dpipixdata[29:0]=
{DP550_0_PXLDATAR1[11:2],DP550_0_
PXLDATAG1[11:2],DP550_0_PXLDATAB1[11:2]};其他RGB 格式的情況(如RGB888、RGB565、RGB666)譯碼關(guān)系會(huì)有相應(yīng)的變化,這里不再贅述,像素時(shí)鐘和像素?cái)?shù)據(jù)傳遞的波形如圖13 所示。從圖中Verdi 工具右上角可知,像素時(shí)鐘頻率為25.170MHz,與上述測(cè)試用例設(shè)置的25.2 MHz 基本一致。dpipixdata 的數(shù)據(jù)值和DPU 輸出的R、G、B 分量截取后的組合值一致。 DP550_0_PXLDATAR1、DP550_0_PXLDATAG1、DP550_0_PXLDATAB1 分別為0x70、0xc0、0x121,dpipixdata 的結(jié)果為0x1c0c048,這與波形上dpipixdata 的數(shù)值一致。
圖13 像素時(shí)鐘和數(shù)據(jù)
MIPI DSI 主物理接口接收的輸入數(shù)據(jù)(pin*)和接收模型接收的輸入數(shù)據(jù)(rx*)如圖14 所示,從圖中可知兩者傳遞的數(shù)據(jù)前后保持一致。
圖14 MIPI DSI 主物理接口輸入數(shù)據(jù)、接收模型輸入數(shù)據(jù)
上述實(shí)驗(yàn)結(jié)果表明,測(cè)試用例通過(guò)本文設(shè)計(jì)的系統(tǒng)級(jí)驗(yàn)證平臺(tái)已經(jīng)配置了DPU、MIPI DSI 控制器、MIPI DSI 主物理接口、DDR4 存儲(chǔ)器等模塊,并使得系統(tǒng)工作起來(lái),其正確性可以通過(guò)參考模型和記分板實(shí)時(shí)在線比較進(jìn)行驗(yàn)證。
垂直同步開始包、水平同步開始包以及像素?cái)?shù)據(jù)包的仿真實(shí)時(shí)比較如圖15 所示。從圖中可知,實(shí)時(shí)輸出打印的實(shí)際值與期望值保持一致。按照MIPI DSI 1.2 版本標(biāo)準(zhǔn),垂直同步開始包的包頭為0x01,對(duì)應(yīng)的ECC 值為0x7;水平同步開始包的包頭為0x21,對(duì)應(yīng)的ECC 值為0x12,仿真結(jié)果符合標(biāo)準(zhǔn)協(xié)議。
從圖15 可知參考模型實(shí)時(shí)輸出每一筆事務(wù)的期望值,而MIPI DSI 電路則實(shí)時(shí)輸出實(shí)際數(shù)據(jù)到接收模型,然后記分板實(shí)時(shí)比較期望值和實(shí)際值,能夠?qū)崟r(shí)驗(yàn)證其正確性。按照MIPI DSI 1.2 版本標(biāo)準(zhǔn),像素?cái)?shù)據(jù)的包頭為0x0d,從圖15 中的像素?cái)?shù)據(jù)包打印信息可知,仿真結(jié)果符合標(biāo)準(zhǔn)協(xié)議。
圖15 垂直同步包、水平同步包及像素?cái)?shù)據(jù)包實(shí)時(shí)比較
在設(shè)計(jì)的系統(tǒng)級(jí)可重用UVM 驗(yàn)證平臺(tái)中,開發(fā)測(cè)試MIPI DSI 所有功能的測(cè)試激勵(lì),然后進(jìn)行仿真并收集覆蓋率。除項(xiàng)目中冗余的信號(hào)和代碼外,覆蓋率達(dá)到100%。因此,該系統(tǒng)級(jí)可重用UVM 驗(yàn)證平臺(tái)能夠從系統(tǒng)級(jí)上對(duì)DSI 進(jìn)行有效的驗(yàn)證,而其他驗(yàn)證平臺(tái)與之相比存在以下問(wèn)題:在單模塊驗(yàn)證平臺(tái)中不能多模塊共同運(yùn)行,無(wú)法仿真整體芯片的工作狀態(tài);而其他不是基于UVM 的系統(tǒng)級(jí)驗(yàn)證平臺(tái)則有可重復(fù)利用性低、可擴(kuò)展性差、更換項(xiàng)目需要重新搭建平臺(tái)的缺點(diǎn),同時(shí)在調(diào)試時(shí)不能做到實(shí)時(shí)在線比較每一筆傳輸,可能需要等仿真全部完成后只比較最終數(shù)據(jù)正確與否,中間步驟沒法檢驗(yàn),甚至還需要借助查看波形進(jìn)行調(diào)試,比較繁瑣。本研究設(shè)計(jì)的UVM 系統(tǒng)級(jí)可重用驗(yàn)證平臺(tái)能夠彌補(bǔ)上述各種缺陷。
為了縮短芯片研發(fā)中驗(yàn)證環(huán)節(jié)的時(shí)間,解決模塊級(jí)UVM 驗(yàn)證不能真實(shí)模擬SoC 整體工作狀態(tài)的問(wèn)題,提高驗(yàn)證平臺(tái)的隨機(jī)性、可重復(fù)利用性,本文針對(duì)MIPI DSI 提出了一種基于UVM 的系統(tǒng)級(jí)可重用的驗(yàn)證方法,并設(shè)計(jì)了相應(yīng)的驗(yàn)證平臺(tái),在該平臺(tái)中設(shè)計(jì)了可重復(fù)利用的各個(gè)驗(yàn)證組件和測(cè)試激勵(lì),從系統(tǒng)級(jí)上利用UVM 驗(yàn)證方法學(xué)對(duì)其仿真驗(yàn)證,多模塊共同運(yùn)行,更加接近真實(shí)的SoC 工作狀態(tài)。同時(shí),平臺(tái)中的組件、任務(wù)、函數(shù)等遵循可重復(fù)利用的原則進(jìn)行設(shè)計(jì),在今后的項(xiàng)目中只需稍加修改或無(wú)需修改即可重復(fù)利用,開發(fā)的測(cè)試激勵(lì)只需調(diào)用不同的任務(wù)和函數(shù)即可完成功能測(cè)試,大大縮短了開發(fā)驗(yàn)證代碼所需的時(shí)間。另外,該平臺(tái)具有實(shí)時(shí)在線比較的特點(diǎn),在數(shù)據(jù)不匹配時(shí)能及時(shí)停止仿真并打印詳細(xì)的錯(cuò)誤信息,便于快速定位錯(cuò)誤,減少調(diào)試時(shí)間。實(shí)驗(yàn)結(jié)果表明,設(shè)計(jì)的UVM 系統(tǒng)級(jí)可重用驗(yàn)證平臺(tái)能夠有效驗(yàn)證MIPI DSI,除一些冗余的信號(hào)和代碼外,驗(yàn)證覆蓋率達(dá)到100%。