电商网站开发报价单,wordpress 栏目显示,网上购物哪家好又便宜,网站建设中效果一、认识Testbench Bench有平台之意#xff0c;所以Testbench就是测试平台的意思。 任何一个被测模块#xff0c;都有输入和输出#xff0c;此模块是否合格的判断依据#xff0c;就是在满足输入要求的情况下#xff0c;能否得到符合预期的输出。我们把被测模块称作UUT所以Testbench就是测试平台的意思。 任何一个被测模块都有输入和输出此模块是否合格的判断依据就是在满足输入要求的情况下能否得到符合预期的输出。我们把被测模块称作UUTUnit Under Test。 Vivado提供了Simulator(仿真)功能用户可以通过编写仿真文件根据UUT 顶层输入/输出接口的设计要求产生测试激励信号输入到被测模块UUT同时对被测模块的输出进行捕捉监视顶层输出接口观察输出是否符合预期。整个流程就像把一个模块放到一个测试平台上验证一样只不过在这里平台是一个文件Testbench文件一种模拟实际环境输入激励和输出校验的“虚拟平台”。 可见Testbench文件的作用是1、产生输入接口的测试激励2、监视输出接口。 Testbench文件也采用Verilog语言编写不需要输入输出所以Testbench对外无接口不需要端口声明。
二、最基本的Testbench模板 TestBench最基本的功能是例化UUT模块产生时钟信号clk和复位信号rst。稍微复杂一点还可以监视UUT模块的输出。下面是一个最基本的Testbench模板。
//定义模块的仿真时的时间单位和时间精度
timescale 1ns / 1psmodule vtf_pll_test();//不需要声明端口// Inputs被测模块UUT的输入设置为regreg sys_clk;reg rst_n;
// Outputs被测模块UUT的输出设置为wirewire clk_out;// Instantiate the Unit Under Test (UUT)例化被测模块uutpll_test uut (.sys_clk(sys_clk), .rst_n(rst_n), .clk_out(clk_out));//起始语句只执行一次初始化变量产生复位信号initial begin// Initialize Inputs,初始化uut的输入信号复位sys_clk 0;rst_n 0;// Wait 100 ns for global reset to finish等待全局复位完成时间为100个时间单位#100;rst_n 1; #20000;// 等待20000个时间单位$display(stop);//在命令行显示字符串$stop;//系统函数结束仿真end//always后面没有代表永远循环执行没有的always语句不可综合产生时钟信号//如果有后面一定要加时钟代表时钟边沿来到的时候顺序执行begin end里面的语句。//没有begin...end限制只执行其下面一个语句 always #10 sys_clk ~ sys_clk; //20ns一个周期产生50MHz时钟源endmodule