欢迎来到天天文库
浏览记录
ID:34614613
大小:477.51 KB
页数:8页
时间:2019-03-08
《第四讲 逻辑验证与testbench编写(p)》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、河海大学常州校区Verilog中级篇1/44河海大学常州校区Verilog中级篇2/44第四讲逻辑验证与Testbench编写1概述2建立Testbench3实例:CPU接口仿真河海大学常州校区Verilog中级篇3/44河海大学常州校区Verilog中级篇4/44河海大学常州校区Verilog中级篇5/44河海大学常州校区Verilog中级篇6/44¾编写仿真激励ò仿真激励与被测对象的连接ò使用initial语句和always语句ò时钟、复位的写法ò产生值序列ò利用系统函数和系统任务ò从文本文件中读出和写入数据ò并行激励ò利用for语句实现遍历测试ò封装功能模块1河海大学常州校区Ve
2、rilog中级篇7/44河海大学常州校区Verilog中级篇8/44ò使用initial语句和always语句ò时钟、复位的写法•被动地检测响应时使用always语句,主动地产生•普通时钟信号激励时则使用initial语句•区别:initial语句只执行一次,always语句不断//产生一个周期为10的时钟地重复执行parameterFAST_PERIOD=10;regClock;initialbeginClock=0;forever#(FAST_PERIOD/2)Clock=~Clock;end河海大学常州校区Verilog中级篇9/44河海大学常州校区Verilog中级篇10/44
3、河海大学常州校区Verilog中级篇11/44河海大学常州校区Verilog中级篇12/44•固定数目时钟信号//两个高脉冲的时钟parameterPulseCount=4,FAST_PERIOD=10;regClock;initialbeginClock=0;repeat(PulseCount)#(FAST_PERIOD/2)Clock=~Clock;end2河海大学常州校区Verilog中级篇13/44河海大学常州校区Verilog中级篇14/44•异步复位信号•同步复位信号//异步复位信号//同步复位信号parameterPERIOD=10;initialregRst_n;beg
4、ininitialRst_n=1;begin@(negedgeClock);//等待时钟下降沿Rst_n=1;Rst_n=0;#PERIODRst_n=0;#30;#(5*PERIOD)Rst_n=1;@(negedgeClock);//等待时钟下降沿endRst_n=1;//Rst_n低有效,10ns时开始复位,持续时间为end50ns河海大学常州校区Verilog中级篇15/44河海大学常州校区Verilog中级篇16/44//另一种同步复位信号实现方法initialbeginRst_n=1;@(negedgeClock);//等待时钟下降沿Rst_n=0;repeat(3)@(n
5、egedgeClock);//等待3个时钟下降沿Rst_n=1;end河海大学常州校区Verilog中级篇17/44河海大学常州校区Verilog中级篇18/44ò产生值序列3河海大学常州校区Verilog中级篇19/44河海大学常州校区Verilog中级篇20/44initial//在initial语句块中产生值序列//值序列模型beginParameterSLOWPERIOD=24;Mpi_addr=0;reg[5:0]Mpi_addr;Mpi_cs_n=1;regMpi_cs_n;Mpi_rw=1;regMpi_rw;Mpi_oe=0;regMpi_oe;Data_out=0;t
6、ri[7:0]Mpi_data;#SLOW_PERIOD;reg[7:0]Data_out;Data_out=MY_DATA;assignMpi_data=(Mpi_oe)?Data_out:8'bz;Mpi_addr=MY_ADDR;Mpi_rw=0;河海大学常州校区Verilog中级篇21/44河海大学常州校区Verilog中级篇22/44ò利用系统函数和系统任务#SLOW_PERIOD;•可帮助产生测试激励,显示调试信息,协助定位Mpi_oe=1;•使用display语句在仿真器中打印出地址和数据#(SLOW_PERIOD/4);$display("Addr:%b->DataWr
7、ite:%d",Mpi_cs_n=0;Mpi_addr,Data_out);#((2*SLOW_PERIOD)+(SLOW_PERIOD/2));•利用时序检查的系统任务来检查时序Mpi_cs_n=1;$setup(Sig_D,posedgeClock,1);//如果在Clock上升沿到达之前的lns时间内Sig_D#(SLOW_PERIOD/4);发生跳变,则将给出建立时间违反告警Mpi_addr=0;$hold(posedgeClock,S
此文档下载收益归作者所有