Skip to content

Commit df4a0b2

Browse files
committed
Added testbench template
1 parent 4053374 commit df4a0b2

File tree

3 files changed

+76
-10
lines changed

3 files changed

+76
-10
lines changed

Main_TB.v

Lines changed: 64 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,64 @@
1+
//--------------------------------------------------------------------------------
2+
// Counter project, 201512
3+
// Main_TB.v
4+
// Konstantin Pavlov, pavlovconst@gmail.com
5+
//--------------------------------------------------------------------------------
6+
7+
// INFO --------------------------------------------------------------------------------
8+
// Testbench template with basic clocking, periodic reset
9+
// and random stimulus signals
10+
11+
`timescale 1ns / 1ps
12+
13+
module Main_TB();
14+
15+
reg TB_clk200;
16+
initial begin
17+
#0 TB_clk200 = 0;
18+
forever
19+
#5 TB_clk200 = ~TB_clk200;
20+
end
21+
22+
reg TB_rst;
23+
initial begin
24+
#40 TB_rst = 1;
25+
#10 TB_rst = 0;
26+
//#10000;
27+
forever begin
28+
#9950 TB_rst = ~TB_rst;
29+
#50 TB_rst = ~TB_rst;
30+
end
31+
end
32+
33+
wire [31:0] TB_DerivedClocks;
34+
ClkDivider CD1 (
35+
.clk(TB_clk200),
36+
.nrst(1'b1),
37+
.out(TB_DerivedClocks[31:0]));
38+
defparam CD1.WIDTH = 32;
39+
40+
41+
42+
wire [15:0] TB_RandomNumber1;
43+
reg TB_rst1;
44+
initial begin
45+
#40 TB_rst1 = 1;
46+
#10 TB_rst1 = 0;
47+
end
48+
49+
c_rand RNG1 (
50+
.clk(TB_clk200),
51+
.rst(TB_rst1),
52+
.reseed(1'b0),
53+
.seed_val(TB_DerivedClocks[15:0]),
54+
.out(TB_RandomNumber1[15:0]));
55+
56+
wire out1,out2;
57+
Main M( // module under test
58+
TB_clk,~TB_clk,
59+
TB_rst,
60+
out1,out2 // for compiler not to remove logic
61+
);
62+
63+
endmodule
64+

README.md

Lines changed: 10 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,15 @@
33
####(licensed under CC BY-SA 4_0)
44

55

6-
**/Advanced Synthesis Cookbook/** useful code from Altera`s cookbook
7-
8-
**ClkDivider.v** - wide reference clock divider
9-
**DeBounce.v** - two-cycle debounce for input buttons
10-
**EdgeDetect.v** - edge detector, gives one-tick pulses on every signal edge
11-
**ResetSet.v** - SR trigger variant w/o metastable state, set dominates here
12-
**SetReset.v** - SR trigger variant w/o metastable state, reset dominates here
13-
**Synch.v** - input syncnronizer, standard way to get rid of metastability issues
6+
**/Advanced Synthesis Cookbook/** useful code from Altera`s cookbook
7+
8+
*Main_TB.v** - basic testbench template
9+
10+
**ClkDivider.v** - wide reference clock divider
11+
**DeBounce.v** - two-cycle debounce for input buttons
12+
**EdgeDetect.v** - edge detector, gives one-tick pulses on every signal edge
13+
**ResetSet.v** - SR trigger variant w/o metastable state, set dominates here
14+
**SetReset.v** - SR trigger variant w/o metastable state, reset dominates here
15+
**Synch.v** - input syncnronizer, standard way to get rid of metastability issues
1416

1517

Synch.v

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,8 +4,8 @@
44
//--------------------------------------------------------------------------------
55

66
// INFO --------------------------------------------------------------------------------
7-
//
8-
//
7+
// Ñèíõðîíèçàòîð äëÿ âõîäíûõ ñèãíàëîâ.
8+
// Ñòàíäàðòíûé ìåòîä ïîäàâëåíèÿ ìåòàñòàáèëüíîñòè.
99

1010
(* keep_hierarchy = "yes" *) module Synch(clk, in, out);
1111

0 commit comments

Comments
 (0)