什么样的测试程序是一个完整的SV测试.docx

上传人:p** 文档编号:1212912 上传时间:2024-11-25 格式:DOCX 页数:9 大小:21.59KB
下载 相关 举报
什么样的测试程序是一个完整的SV测试.docx_第1页
第1页 / 共9页
什么样的测试程序是一个完整的SV测试.docx_第2页
第2页 / 共9页
什么样的测试程序是一个完整的SV测试.docx_第3页
第3页 / 共9页
什么样的测试程序是一个完整的SV测试.docx_第4页
第4页 / 共9页
什么样的测试程序是一个完整的SV测试.docx_第5页
第5页 / 共9页
什么样的测试程序是一个完整的SV测试.docx_第6页
第6页 / 共9页
什么样的测试程序是一个完整的SV测试.docx_第7页
第7页 / 共9页
什么样的测试程序是一个完整的SV测试.docx_第8页
第8页 / 共9页
什么样的测试程序是一个完整的SV测试.docx_第9页
第9页 / 共9页
亲,该文档总共9页,全部预览完了,如果喜欢就下载吧!
资源描述

《什么样的测试程序是一个完整的SV测试.docx》由会员分享,可在线阅读,更多相关《什么样的测试程序是一个完整的SV测试.docx(9页珍藏版)》请在第壹文秘上搜索。

1、什么样的测试程序是一个完整的SV测试的怎样才能构成一个完成的SV测试1.首先须要有被测设计DUT,即被测试的模块。2 .其次,RT1.级的TestBenchoRT1.级的测试平台主要完成时钟和复位信号的产生,以及接口的实例化,并在这个测试平台中连接器了SV的测试平台和被测设计。RT1.级的测试平台是以传统的veri1.og的模块定义形式存在,即modu1.e和endmodu1.es来声明的。3 .在DUT,RT1.级的TB和SV级的TB之间是通过RT1.级的TB进行链接的(起到一个桥梁的作用),然后这一级别的的平台中产生最基本的时钟及复位信号。4 .在将这些模块链接起来以后(RT1.级的TB只

2、负责链接,时钟复位信号产生),由SV级的模块来负贲激励的产生,检测,最终的对比以及功能覆需率的工作。例如(一个RT1.级TB的范例):modu1.ememorytb();330331wire7:0address,datain;332wire7:0data_out;333wireread_write,chip_en;334rege1.k;335336/Connecttheinterface337memportsports(接口的实例化338.c1.ock(e1.k),339.address(address),310.chipen(chipen),341.read_write(read_write

3、),342.data_in(data_in),343.dataout(dataout)344):345/Connecttheprogram346mcmory_toptop(ports);通过接口,将SV的测试平台链接348initia1.begin349e1.k=0:350end时钟及更位信号的初始化(这个例子中无复位)351352a1.ways#1e1.k=c1.k;/时钟信号产生353354memory1.memOry(/和被测设计连接起来355.address(address),356.data-in(data_in),357.data_out(data_out),358.read_wr

4、ite(read_write),359.chip_en(chip_en)360);361endmodu1.e5.然后要到SV的顶层中。这个顶层中,主要的构成单元式类。先对类的句柄进行定义,然后运用构建函数为类创建对象,然后通过线程将所须要的函数调用,最终实现SV层次的验证。例如(一个SV的顶层):programmemory_top(meni_p(rtsports);留意,SV顶层开头的和RT1.级的开头不同。RT1.运用的是modu1.e和endmodu1.e,SV运用的是Program和endprogram。302303mem_txgentxgen:定义类的句柄304mem_SCoreboa

5、rdsb;305mem_ip_monitoripm;306mem_op_monitoropm:307308initia1.begin309sb=newO:构建函数,开拓内存空间,通过接口将进程之间联系起来310ipm=new(sb,ports);311opm=new(sb,ports);312txgen=new(ports);313314fork不同的进程315ipm.input_monitor();316opm.output-monitorO;317join_none318txgen.gen_cmdsO;319320repeat(20)(posedgeports.c1.ock);延迟20个时

6、钟周期结束321322end323324endprogram6.scoreboard计分板(实意为对比模型,在这个模块进行输出数据与目标数据的对比),计分板的作用是对数据进行对比。对输出数据进行对比,来查看数据是否正确。例如:ifnt1.efMEM_SCOREBOARD_SV142defineMEM_SCOREBOARD_SV143144c1.assmcm_scoreboard;145/Createakeyed1isttostorethewrittendata146/Keytothe1.istisaddressofwriteaccess147mem_base_objectmem_object;

7、148149/post_inputmethodisusedforstoringwritedata150/atWriteaddress151taskpost_input(mem_base_objectinput_object):负责将数据写入的写入地址存储152begin153mem_objectinput_object.addr=input_object;154end155endtask156/post_outputmethodisusedbytheoutputmonitorto157/comparetheoutputofmemorywithexpecteddata158taskpost_ou

8、tput(mem_base_objectoutput_object);输出的模块主要对比输出结果和目标结果是否相等159begin160/Checkifaddressexistsinscoreboard161if(mem_objectoutput_object.addr!=nu1.1.)begin162mem_base_objectin_mem=mcm_objectoutput_object.addr;163Jdisp1.ay(scoreboard:FoundAddress%xin1.ist,output_object.addr);164if(output_object.data!=in_me

9、m.data)begin165Jdisp1.ay(Scoreboard:Error:ExpdataandGotdatadonrtmatch);166Sdisp1.ay(Expected-%x,in_mcm.data);167Sdisp1.ay(Got-%x,output_object.data);168enc1.e1.sebegin169$disp1.ay(Scoreboard:ExpdataandGotdatamatch);170end171end172end173endtask7.事务产生器。这个事物产生器,说明产生了三次的读写操作。在事务级的事务发生器中,只说明要产生的事务是什么。比如这

10、个事务产生器中说明,产生三次读写操作,数据陨机。在事务产生器中,模块和驱动器干脆相连接。例如:ifndefMEMJrXGEN一SV1.O6defineMEM_TXGEN_SV107c1.assmcm_txgen;108109mem_base_objectmem-object;基本模块110mem_drivermem_driver;驱动的例化,驱动模块并没有在SV的TB中干脆体现出来,而是通过事务发生器来调用驱动模块H1.112integernum_cmds;114functionnew(virtua1.mem_portsports);115begin116num_cmds=3:/事务级事务发生

11、的次数117mem_driver=new(ports);/事务级和驱动相联系,事务级负责确定行为。驱动负贡和dut相联系。118end119endfunction122taskgen_cmdsO;123begin124integeri=0:125for(i=0:inum_cmds;i+)begin126mem_object=new();127mem_object.addr=$randomO:/随机产生数据和地址128mem_object.data=SrandomO;129mcm_object.rd_wr=1;130mem_driver.drive_mem(mem_object);写操作131m

12、em_object.rd_wr=0;132mem_driver.drive_mem(memobject);读操作133end134end135endtask136137endc1.ass138endif8.驱动器。驱动器负责和底层设计联系起来,山事务产生器告知驱动,现在要读写三次ram,然后详细的连接是在驱动中完成的(由驱动链接到DUDo因为dut是一个RAM,只完成读写操作。读的时候给一个地址输出一个8位的数据;写的时候给出地址和对应数据,然后写入数据。所以这个驱动瑞完成的功能就是给RAM地址和数据或者只有地址。48ifndefMEM_DRIVER_SV49defineMEM_DRIVER_

13、SV50c1.assmem_driver;51virtua1.mem_portsports;5253functionnew(virtua1.mem_portsports);这个函数对数据清零,包括地址,使能位,读写信号,数据54begin55this,ports=ports;56ports,address=0;57ports.chip_en=0;58ports.read_write=0;59ports.data_in=0:60end61endfunction6263taskdrive_mem(mem_base_objectobject):/task中调用了基本类,并对其实例化64begin65

14、(posedgeports,c1.ock):在第一上升沿对数据进行打值66ports,address=object,addr;读写地址67ports.chip_en=1;片选使能信号68ports.read_write=object.rd_wr;读写使能信号69ports.data_in=(object,rdwr)?object,data:0;依据读写信号,来确定数据输入70if(object.rd_wr)begin71Sdisp1.ay(Driver:Memorywriteaccess-Address:%xData:%xn,object,addr,object,da1.a);若是写信号,则显

15、示写地址和对应数据。72ende1.sebegin73Sdisp1.ay(Driver:Memoryreadaccess-Address:%xn,object,addr);若是读,显示读地址74end75(posedgeports.c1.ock);再遇到上升沿则全部清零76ports.address=0;77ports.chip_en=0;78ports.read_write=0;79ports.data_in=0;80end81endtaskendc1.ass84endif9.监视器O监视流负责检查输入和输出数据的是否满意规范。这个例子中的输入监视器主要将随机产生的地址和数据存储。输出监视器将须要的地址的数据传给监视器,并通过积分板来完成数据的对比。例如:(输入的监视器)ifndefMEM_IP_MONITOR_SV182defineMEM_IP_MONITOR_SV183c1.assmem_ip_monitor:184mcm_base_objectmem_object;基本模块的实例化185mem_scoreboardsb:/计分板的实例化186virtua1.mem_portsports;18718

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 法律/法学 > 行政法

copyright@ 2008-2023 1wenmi网站版权所有

经营许可证编号:宁ICP备2022001189号-1

本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。第壹文秘仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知第壹文秘网,我们立即给予删除!