999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

基于SystemVerilog的同步FIFO的驗證平臺搭建

2017-10-20 05:58:08邱玉泉劉世偉楊明翰
無線電通信技術(shù) 2017年6期
關(guān)鍵詞:信號功能設(shè)計

邱玉泉,曾 維,劉世偉,馮 坤,楊明翰

(成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都610000)

基于SystemVerilog的同步FIFO的驗證平臺搭建

邱玉泉,曾 維,劉世偉,馮 坤,楊明翰

(成都理工大學(xué) 信息科學(xué)與技術(shù)學(xué)院,四川 成都610000)

針對于傳統(tǒng)驗證平臺利用Verilog搭建的驗證平臺效率低,準確度低的局限性,提出了一種基于SystemVerilog系統(tǒng)級語言的驗證平臺建模方法,可以有效地降低復(fù)雜度和設(shè)計風險。由于FIFO在大多數(shù)工程中利用率極高,也極易出現(xiàn)問題,通過對FIFO模塊進行驗證平臺建模,可以有效地降低設(shè)計與驗證的時序競爭風險,實現(xiàn)驗證平臺的復(fù)用和驗證過程中的自動監(jiān)測,并且在搭建驗證平臺的過程中闡述了基本的驗證流程,以及結(jié)合SystemVerilog語言介紹了一些基本建模規(guī)則和技巧。

驗證流程;驗證平臺;SystemVerilog;FIFO

0 引言

以往在采用Verilog搭建測試環(huán)境時,設(shè)計者難以對測試環(huán)境進行分層設(shè)計,往往將大部分測試組件放在一個模塊中[1]。SystemVerilog則采用面向?qū)ο缶幊?Object Oriented Programming,OOP)的思想來完成驗證平臺的分層建模。由于FIFO的功能并不復(fù)雜,因此將其中的一些放在一個組件來完成相關(guān)的功能[2]。

FIFO是一種先進先出的數(shù)據(jù)緩存器,根據(jù)工作時鐘域,可以將FIFO分為同步FIFO和異步FIFO。同步FIFO是指讀時鐘和寫時鐘為同一個時鐘,在時鐘沿來臨時同時發(fā)生讀寫操作,而異步FIFO指讀寫時鐘不一致,讀寫時鐘是相互獨立的[3]。

1 FIFO測試驗證與分析

該FIFO使用16×8的FIFO,其接口包括datain寫入數(shù)據(jù)、dataout讀出數(shù)據(jù)、FIFO_push寫入使能信號、FIFO_o_valid讀出使能信號、rst復(fù)位信號、clk時鐘信號、FIFO_rdy_n數(shù)據(jù)丟失測試信號以及FIFO_almost_full接近滿指示信號[4]。

該FIFO包括正常寫入寫出情況、輸出數(shù)據(jù)丟失情況。數(shù)據(jù)接近滿時警告指示,數(shù)據(jù)滿時無法寫入。通過上述功能的描述,可以制定以下驗證計劃[5]:

根據(jù)FIFO的功能要求,制定相應(yīng)的驗證計劃。其驗證計劃如下:① 驗證FIFO是否能夠正常讀寫,其FIFO讀入數(shù)據(jù)與寫出數(shù)據(jù)一致;② FIFO接近滿時,fifo_almost_full拉高提示快滿的指示;③ 在丟失數(shù)據(jù)的情況下,判斷FIFO是否正常完成從FIFO中提取數(shù)據(jù),進行輸出,保證輸出的數(shù)據(jù)不被丟失。

2 搭建驗證平臺

根據(jù)FIFO的功能不復(fù)雜和滿足通用性的原則,搭建基于SystemVerilog的FIFO通用驗證平臺,可以滿足基本FIFO的功能驗證?,F(xiàn)根據(jù)FIFO的功能以及為了驗證代碼的可維護性和可讀性以及擴展性,將驗證代碼分為頂層模塊、接口模塊和測試模塊3部分[6]。

2.1 頂層模塊(TOP)

頂層模塊包括時鐘產(chǎn)生以及DUT例化程序。若在后續(xù)的FIFO驗證過程,需要增加FIFO的一些其他功能端口信號,只需在該模塊增加端口定義即可。時鐘的頻率也可以在此模塊修改參數(shù)模擬實際情況FIFO的頻率[7]。

時鐘激勵主要程序如下[8]:其中Simulation_cylce為時鐘周期,每隔10 ns翻轉(zhuǎn)一次。

parameter simulation_cycle =20;

forever begin

#(simulation_cycle/2) SystemClock =

~SystemClock;

end

2.2 接口模塊(interface)

使用接口模塊為了提高設(shè)計復(fù)用,降低錯誤風險,SystemVerilog采用接口(interface)對多個模塊共同使用一組信號,實現(xiàn)封裝,使之類似總線。該模塊主要是實現(xiàn)連接、同步以及2個或多個塊之間的通信功能,連接了設(shè)計塊和測試平臺[9],如圖1所示。

圖1 橫跨兩個模塊的接口

本文將接口設(shè)計代碼放在FIFO_io.sv文件中,用interface和endinterface將接口代碼包裹在里面,并且聲明信號的位寬以及接口類型,其部分代碼如下:

interface fifo_io(input bit clk);

logic rst_n;

logic [DW-1:0] fifo2bus_data; //fifo to bus data

clocking cb @(posedge clk);

………

endclocking

modport TB(clocking cb,output rst_n);

endinterface

上面fifo_io的接口聲明中,將接口中所要用到的所有信號都放入接口聲明中,并且使用clocking……endclocking將同一個時鐘域的信號包裹一起,這些代碼在時鐘clk上升沿發(fā)生時都處于激活狀態(tài)[10],同時使用modport對這些信號指定方向[11]。

2.3 test模塊

該文件主要編寫所有FIFO所有情況下的驗證代碼,根據(jù)驗證計劃,主要分為正常讀入寫出情況和輸出數(shù)據(jù)丟失情況。由于同步FIFO的功能較簡單,故driver、monitor以及compare都以task的形式放在test模塊中[12]。

由于仿真是可以無限仿真的,在test中增加了對仿真時間的控制,有利于減少仿真時間,并達到需要的效果。并且在其中增加了S|vcdpluson語句,以便可以生成vdp的波形文件,若需要使用fsdb波形文件,則可以用 S|fsdbDumpfile(“xxx.fsdb”)、S|fsdbDumpvars命令[13]。

仿真時間控制命令和生成波形文件的命令如下[14]:

S|vcdpluson;

# (300000*CLK_PRIOD);

S|finish;

根據(jù)驗證計劃,F(xiàn)IFO正常讀寫情況下,輸入和輸出在同時鐘的控制下同步進行,F(xiàn)IFO不會出現(xiàn)空和滿的情況,其模擬這種一直輸入和輸出的時序的主要代碼如下[15]:

fifo.cb.fifo_i_data<=cnt;

tdata[cnt]<=cnt;

cnt<=cnt+1;

repeat(1) @(fifo.cb);

根據(jù)傳輸?shù)臋C制,丟失數(shù)據(jù)的現(xiàn)象不可避免。根據(jù)FIFO的需求,該FIFO對丟失數(shù)據(jù)有相應(yīng)的處理,故為了驗證其FIFO的功能正確性,現(xiàn)根據(jù)需求模擬出FIFO丟失數(shù)據(jù)的情況。其核心代碼如下[16-17]:

if(S| urandom_range(1,8)!=3) begin

fifo.cb.fifo_rdy_n<=1′b0;

ready<=1′b0;

repeat(1) @(fifo.cb);

end else begin

fifo.cb.fifo_rdy_n<=1′b1;

ready<=1′b1;

repeat(1) @(fifo.cb);

end

代碼中根據(jù)S|urandom_range(1,8)!=3來模擬丟失數(shù)據(jù)的幾率,此處根據(jù)實際應(yīng)用場景來設(shè)置相應(yīng)的概率。該FIFO具有提前警示FIFO幾乎滿的功能,當丟失數(shù)據(jù)個數(shù)超過24 h,其FIFO_almost_ful會拉高來警示FIFO快要滿了。根據(jù)DUT中的相應(yīng)的設(shè)計,其Verilog代碼實現(xiàn)如下:

if( fifo_level > ({{(AW-3){1′b1}},3′b0}))

fifo_almost_full <= 1′b1;

if(fifo_level < ({1′b1,{(AW-1){1′b0}}}))

fifo_almost_full <= 1′b0;

在通常的情況下,經(jīng)過FIFO數(shù)據(jù)量很大,通過肉眼觀察波形來檢查FIFO輸入輸出的數(shù)據(jù)是否正確,其效率極低。特別是在信號繁多,數(shù)據(jù)和協(xié)議復(fù)雜的情況下,更需要一種機制來自動檢測DUT的功能和數(shù)據(jù)正確性。其monitor就是實現(xiàn)這種自動監(jiān)控輸出的機制,使驗證更加高效可靠。以下是FIFO的monitor核心代碼實現(xiàn):

if(fifo.cb.fifo_o_valid) begin

rdata [r_cnt]<=fifo.cb.fifo_o_data;

r_cnt<=r_cnt+1;

repeat(1) @(fifo.cb);

end else begin

repeat(1) @(fifo.cb);

end

當monitor監(jiān)測到輸出時的有效數(shù)據(jù)時,需要通過將輸出和輸入數(shù)據(jù)進行自動比較,來檢測FIFO在傳輸數(shù)據(jù)的過程是否改變了相應(yīng)的值。其compare進行比較的核心代碼實現(xiàn)如下[18]:

if(tdata[i]==rdata[i]) begin

S|display("tdata[%0d]=%0d",i,tdata[i],

S|display("rdata[%0d]=%0d",i,rdata[i],

S|display("-----SUCCESSFUL----- ");

repeat(1) @(fifo.cb);

end else begin

S|display("tdata[%0d]=%0d",i,tdata[i],

S|display("rdata[%0d]=%0d",i,rdata[i],

S|display("-----FAILED----- ");

repeat(1) @(fifo.cb);

end

3 驗證結(jié)果的確認

驗證結(jié)果的確認主要通過自動監(jiān)測確認和波形確認,根據(jù)驗證結(jié)果來判斷FIFO設(shè)計是否符合設(shè)計要求。

為了方便波形觀察,本文采用計數(shù)的方式對FIFO進行輸入。其FIFO正常讀寫情況下波形如圖2所示,可以觀察到波形中的輸入輸出數(shù)據(jù)來初步確定FIFO滿足設(shè)計要求。

圖2 FIFO正常讀寫波形圖

圖3是在FIFO在丟失數(shù)據(jù)的情況下,可以看出FIFO在丟失數(shù)據(jù)時能夠?qū)?shù)據(jù)保存下來,等待下一時刻有效時將丟失數(shù)據(jù)重新發(fā)送出去。

圖3 FIFO丟失數(shù)據(jù)波形圖

當丟失的數(shù)據(jù)超過24 h,fifo_almost_full幾乎滿信號拉高,如圖4所示。

圖4 幾乎滿信號波形圖

根據(jù)monitor和compare的代碼實現(xiàn),其自動監(jiān)測部分結(jié)果如下,通過打印的消息可得出結(jié)論,該FIFO設(shè)計滿足功能的實現(xiàn)。

tdata[0]=0 300135

rdata[0]=0 300135

------------SUCCESSFUL------------

tdata[1]=1 300145

rdata[1]=1 300145

------------SUCCESSFUL------------

tdata[2]=2 300155

rdata[2]=2 300155

------------SUCCESSFUL------------

tdata[3]=3 300165

rdata[3]=3 300165

------------SUCCESSFUL------------

tdata[4]=4 300175

rdata[4]=4 300175

------------SUCCESSFUL------------

4 結(jié)束語

在此,介紹了使用SystemVerilog進行驗證平臺建模的一般原則和技巧,以及面對建模過程中使用的一些接口,將自動檢測等新技術(shù)用于同步FIFO驗證平臺的建模中,并使用VCS仿真驗證工具進行檢驗。結(jié)果證明,使用這些建模技術(shù)的設(shè)計的驗證平臺,很容易完成代碼的復(fù)用和驗證過程中的自動監(jiān)測。

[1] 張明.Verilog HDL實用教程[M].成都:電子科技大學(xué)出版社,1999.

[2] SystemVerilog Testbench Workshop Student Guide[M].California:Synopsys Customer Education Services,2011.

[3] Cummings C E.Simualtion and Synthesis Techniques for Asyachrononous FIFO Design[M].USA:Sunburst Design,Inc.,2000.

[4] 張毅,周成英.高速同步FIFO存儲器在數(shù)字信號源中的應(yīng)用[J].電子技術(shù),2003(11):48-50.

[5] Lam W K.Hardwave Design Verification:Simulation and Formal Method-Based Approaches[M].Upper Saddle River,NJ:Prentice Hall,2005:81-120.

[6] Janick B.Writing Testbench Using SystemVerilog[M].USA:Springer,2005.

[7] Janick B,Eduard C,Hunter A L ,et al.SystemVerilog 驗證方法學(xué)[M].夏宇聞,楊雷,陳先勇,等,譯.北京:北京航空航天大學(xué)出版社,2007.

[8] 張春,麥宋平,趙益新,譯.SystemVerilog測試驗證平臺編寫指南[M].北京:科學(xué)出版社,2009

[9] Stuart S,Simon D,Peter F.SystemVerilog for Design[M]. US:Springer:2006.

[10] Janick B.Write Testbenches Using SystemVerilog[M].USA:Springer,2006.

[11] Lam W K.Hardwave Design Verification:Simulation and Formal Method-Based Approaches[M].Upper Saddle River,NJ:Prentice Hall,2005.

[12] 常勇,申敏.一種基于事務(wù)的SoC功能驗證方法[J].微計算機信息,2008,24(2):137-139.

[13] 閆沫,張媛.基于SystemVerilog語言的設(shè)計驗證技術(shù)[J].現(xiàn)代電子技術(shù),2008,31(6):8-11.

[14] Bhadra J,Abadir M S,Wang L,et al.A Survey of Hybrid Techniques for Functional Verification[C]∥Design & Test of Computers,2007:112-122.

[15] 鐘文楓.下一代芯片設(shè)計與驗證語言:SystemVerilog(驗證篇)[J].電子設(shè)計應(yīng)用,2008(12):61-67.

[16] 劉杰,徐偉杰,夏宇聞,等.設(shè)計驗證中的隨機約束[J].中國集成電路,2006(11):28-31.

[17] Willamette H D L.SystemVerilog for Verification Training[M].USA:Willamette HDL,2008.

VerificationPlatformofSynchronousFIFOBasedonSystemVerilog

QIU Yu-quan,ZENG Wei,LIU Shi-wei,FENG Kun,YANG Ming-han

(College of Information Science & Technology,Chengdu University of Technology,Chengdu Sichuan 610000,China)

This paper mainly introduces the practical verification environment of synchronous FIFO based on SystemVerilog structures,which breaks through the traditional limitations in verification platform modeling,can greatly improve the efficiency of chip test and interface protocol,and can effectively reduce the risk of design. The FIFO verification platform in this paper can effectively reduce the risk of the time sequence competition between design and verification,realize verification platform reuse and automatic monitoring in verification process. The paper also describes basic verification process,and introduces some of basic rules and modeling skills combined with SystemVerilog language in the process of building verification platform.

verification process; verification platform; SystemVerilog; FIFO

TP391.8

A

1003-3114(2017)06-64-3

10. 3969/j.issn. 1003-3114. 2017.06.16

邱玉泉,曾維,劉世偉,等.基于SystemVerilog的同步FIFO的驗證平臺搭建[J].無線電通信技術(shù),2017,43(6):64-66,96.

[QIU Yuquan,ZENG Wei,LIU Shiwei,et al. Verification Platform of Synchronous FIFO Based on SystemVerilog [J]. Radio Communications Technology,2017,43(6):64-66,96.]

2017-07-23

邱玉泉(1992—),男,碩士研究生,主要研究方向:FPGA嵌入式設(shè)計與驗證。曾 維(1976—),男,副教授,主要研究方向:數(shù)字電路設(shè)計和模擬電路分析。

猜你喜歡
信號功能設(shè)計
也談詩的“功能”
中華詩詞(2022年6期)2022-12-31 06:41:24
信號
鴨綠江(2021年35期)2021-04-19 12:24:18
完形填空二則
瞞天過海——仿生設(shè)計萌到家
基于FPGA的多功能信號發(fā)生器的設(shè)計
電子制作(2018年11期)2018-08-04 03:25:42
設(shè)計秀
海峽姐妹(2017年7期)2017-07-31 19:08:17
關(guān)于非首都功能疏解的幾點思考
有種設(shè)計叫而專
Coco薇(2017年5期)2017-06-05 08:53:16
基于LabVIEW的力加載信號采集與PID控制
中西醫(yī)結(jié)合治療甲狀腺功能亢進癥31例
主站蜘蛛池模板: 91精品人妻互换| 中文字幕无码av专区久久| 国产第一页屁屁影院| 波多野结衣一区二区三区四区| 999国内精品视频免费| 国产精品一区在线观看你懂的| 四虎永久在线精品国产免费| 亚洲AV人人澡人人双人| 福利国产微拍广场一区视频在线| 在线亚洲精品自拍| 少妇精品网站| 日韩人妻精品一区| 国产永久在线观看| 精品国产成人国产在线| 亚洲男人天堂久久| 久久综合色视频| 免费无码又爽又黄又刺激网站| 人人澡人人爽欧美一区| 国产内射一区亚洲| 亚洲va视频| 99久久精品国产综合婷婷| 国产精品大白天新婚身材| 怡红院美国分院一区二区| 久久久噜噜噜| 日本道综合一本久久久88| 欧美日韩导航| 亚洲欧美成人影院| 免费视频在线2021入口| 欧美成人在线免费| 亚洲无码高清一区| 国产美女一级毛片| 午夜欧美理论2019理论| 久久精品只有这里有| 久久久精品久久久久三级| 国产香蕉一区二区在线网站| 亚洲午夜综合网| 日本亚洲欧美在线| 国产亚洲精品91| 色综合天天综合中文网| 热热久久狠狠偷偷色男同| 欧美成人一区午夜福利在线| 日韩av手机在线| 国产一级片网址| a级高清毛片| 91精品小视频| 国产自在线播放| 国产一区在线观看无码| 国产乱人伦精品一区二区| 国产一区二区精品高清在线观看| 精品亚洲麻豆1区2区3区| 日韩在线成年视频人网站观看| AⅤ色综合久久天堂AV色综合 | 亚洲第一成人在线| 这里只有精品在线| 毛片国产精品完整版| 午夜不卡视频| 无码日韩人妻精品久久蜜桃| 亚洲色图欧美在线| 欧美三级视频网站| 国产一区二区网站| 99久久精品久久久久久婷婷| 日韩在线第三页| 日韩国产综合精选| 国产成人a在线观看视频| 亚洲第一天堂无码专区| 亚洲成人网在线播放| 国产成人啪视频一区二区三区| 97青草最新免费精品视频| 无码丝袜人妻| 日韩欧美中文亚洲高清在线| 国产精品99r8在线观看| 亚洲IV视频免费在线光看| 无码精品一区二区久久久| 国外欧美一区另类中文字幕| 真人免费一级毛片一区二区| 亚洲无码高清免费视频亚洲| 久久精品亚洲中文字幕乱码| 亚洲视频在线观看免费视频| 五月天综合婷婷| 亚洲天堂视频在线播放| 亚洲美女一区| 91亚洲视频下载|