verilog-testbench 时钟和复位模板
/********************************************* ** Clocks & Reset *********************************************/ `define CLOCK_FREQ 200e6 //时钟频率 `define RESET_TIME 100 reg clk; initial clk = 1'b0; localparam CLOCK_PERIOD = 1e9/`CLOCK_FREQ; always #(CLOCK_PERIOD) clk = ~clk; reg reset; initial begin reset = 1'b1; #(`RESET_TIME); @(posedge clk); reset = 1'b0; end
边沿触发模板
@(posedge clk); if (o_tvalid) begin $display("Test 1 FAILED!"); $error("o_tvalid still asserted after emptying FIFO!"); $stop; end
inout型testbench的写法
使用相反控制信号inout口,等于两个模块之间用inout双向口互连。 这种方法要注意assign 语句只能放在initial和always块内。 module test(); wire data_inout; reg data_reg; reg link; initial begin .......... end assign data_inout=link?data_reg:1'bz; endmodule