⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 async_fifo_tb.v

📁 fifo pointers in verilog gray code utilization for synchronius
💻 V
字号:
`timescale 1ps/1psmodule async_fifo_tb ();`include "async_fifo_defines.v"parameter wclk_period = 24;parameter rclk_period = 3200;parameter wrst_n_period = 10;parameter rrst_n_period = 20;parameter TB_DELAY = 20;reg wclk;reg rclk;reg wrst_n;reg rrst_n;reg end_of_sim;integer wclk_period_rand;integer rclk_period_rand;wire rinc_tb_wire;wire [`DSIZE-1:0] rdata_tb_wire;wire rempty_tb_wire;wire winc_tb_wire;wire wfull_tb_wire;wire [`DSIZE-1:0] wdata_tb_wire;event change_clk_period;fifo2                #(                  .DSIZE(`DSIZE),                  .ASIZE(`ASIZE)                 )             async_fifo_U (                .rdata(rdata_tb_wire),                .wfull(wfull_tb_wire),                .rempty(rempty_tb_wire),                .wdata(wdata_tb_wire),                .winc(winc_tb_wire),                .wclk(wclk),                .wrst_n(wrst_n),                .rinc(rinc_tb_wire),                .rclk(rclk),`ifdef OPT_PTR                .threshhold(async_fifo_inf_U.threshhold),`endif                .rrst_n(rrst_n)                );async_fifo_if                #(                  .DSIZE(`DSIZE),                  .ASIZE(`ASIZE)                 )             async_fifo_inf_U(                .wclk(wclk),                .rclk(rclk),                .wrst_n(wrst_n),                .rrst_n(rrst_n)                );assign #TB_DELAY async_fifo_inf_U.end_of_sim = end_of_sim;assign #TB_DELAY async_fifo_inf_U.wclk_period_rand = wclk_period_rand;assign #TB_DELAY async_fifo_inf_U.rclk_period_rand = rclk_period_rand;assign #TB_DELAY rinc_tb_wire = async_fifo_inf_U.rinc;assign #TB_DELAY async_fifo_inf_U.rinc_tb_wire = async_fifo_inf_U.rinc;assign #TB_DELAY async_fifo_inf_U.rdata = rdata_tb_wire;assign #TB_DELAY async_fifo_inf_U.rempty = rempty_tb_wire;assign #TB_DELAY winc_tb_wire = async_fifo_inf_U.winc;assign #TB_DELAY async_fifo_inf_U.winc_tb_wire = async_fifo_inf_U.winc;assign #TB_DELAY async_fifo_inf_U.wfull = wfull_tb_wire;assign #TB_DELAY wdata_tb_wire = async_fifo_inf_U.wdata;assign #TB_DELAY async_fifo_inf_U.wdata_tb_wire = async_fifo_inf_U.wdata;async_fifo_tb_program                #(                  .wclk_period(wclk_period),                  .rclk_period(rclk_period),                  .DSIZE(`DSIZE),                  .ASIZE(`ASIZE)                 )             async_fifo_tb_program_U (                .async_fifo_inf(async_fifo_inf_U)                );initialbegin    wclk <= 1'b0;    rclk <= 1'b0;    wrst_n <= 1'b0;    rrst_n <= 1'b0;endinitialbegin    forever    begin  //`ifdef FIFO_GLS_SDF  //    wclk_period_rand = $urandom_range(3000,20);  //`else  //    wclk_period_rand = $urandom_range(3000,20);  //`endif      //wclk_period_rand = wclk_period;      wclk <= 1'b0;      #(wclk_period_rand/2);      wclk <= 1'b1;      #(wclk_period_rand/2);    endendinitialbegin    forever    begin       wclk_period_rand = $urandom_range(2,2_000);       rclk_period_rand = $urandom_range(900_000,2_000);       //rclk_period_rand = 100_000;       //wclk_period_rand = 2_000;       $display("WRITE TO READ RATIO is %d", (rclk_period_rand/wclk_period_rand ==0) ? wclk_period_rand/rclk_period_rand : rclk_period_rand/wclk_period_rand);       @ (change_clk_period);    endendinitialbegin    forever    begin  //`ifdef FIFO_GLS_SDF  //    rclk_period_rand = $urandom_range(3000,20);  //`else  //    rclk_period_rand = $urandom_range(3000,20);  //`endif      //rclk_period_rand = rclk_period;      rclk <= 1'b0;      #(rclk_period_rand/2);      rclk <= 1'b1;      #(rclk_period_rand/2);    endendinitialbegin   forever   begin      ->change_clk_period;      #900_0000;   endendinitialbegin    repeat (wrst_n_period) @( posedge wclk);    wrst_n <= 1'b1;endinitialbegin    repeat (rrst_n_period) @( posedge rclk);    rrst_n <= 1'b1;endinitialbegin   $vcdpluson();   $vcdplusmemon();`ifdef _NCVERILOG   $shm_open(waves_shm);   $shm_probe("AC", async_fifo_tb);   //$shm_probe("AC", async_fifo_tb_U);`endifendinitialbegin  end_of_sim = 1'b0;  repeat (9000000) @(posedge rclk);  end_of_sim = 1'b1;  #20;  $display("TEST PASSED");  $finish;endinitialbegin  `ifdef FIFO_GLS_SDF      $sdf_annotate("./netlist/fifo2.sdf", async_fifo_U);  `endifendendmodule

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -