Skip to content

Commit 51f484b

Browse files
committed
Restored testbenches
1 parent 7c9acbf commit 51f484b

File tree

3 files changed

+465
-0
lines changed

3 files changed

+465
-0
lines changed

dynamic_delay_tb.sv

+95
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,95 @@
1+
2+
// testbench for dynamic_delay_tb.sv module
3+
4+
`timescale 1ns / 1ps
5+
6+
module dynamic_delay_tb();
7+
8+
logic clk200;
9+
initial begin
10+
#0 clk200 = 1'b0;
11+
forever
12+
#2.5 clk200 = ~clk200;
13+
end
14+
15+
logic rst;
16+
initial begin
17+
#0 rst = 1'b0;
18+
#10.2 rst = 1'b1;
19+
#5 rst = 1'b0;
20+
end
21+
22+
logic nrst;
23+
assign nrst = ~rst;
24+
25+
logic rst_once;
26+
initial begin
27+
#0 rst_once = 1'b0;
28+
#10.2 rst_once = 1'b1;
29+
#5 rst_once = 1'b0;
30+
end
31+
32+
logic nrst_once;
33+
assign nrst_once = ~rst_once;
34+
35+
logic [31:0] DerivedClocks;
36+
clk_divider #(
37+
.WIDTH( 32 )
38+
) cd1 (
39+
.clk( clk200 ),
40+
.nrst( nrst_once ),
41+
.ena( 1'b1 ),
42+
.out( DerivedClocks[31:0] )
43+
);
44+
45+
logic [31:0] E_DerivedClocks;
46+
edge_detect ed1[31:0] (
47+
.clk( {32{clk200}} ),
48+
.nrst( {32{nrst_once}} ),
49+
.in( DerivedClocks[31:0] ),
50+
.rising( E_DerivedClocks[31:0] ),
51+
.falling( ),
52+
.both( )
53+
);
54+
55+
logic [15:0] RandomNumber1;
56+
c_rand rng1 (
57+
.clk( clk200 ),
58+
.rst( rst_once ),
59+
.reseed( 1'b0 ),
60+
.seed_val( DerivedClocks[31:0] ),
61+
.out( RandomNumber1[15:0] )
62+
);
63+
64+
65+
// Module under test ==========================================================
66+
67+
logic [5:0] test_data = '0;
68+
logic [3:0] sel = '0;
69+
always_ff @(posedge clk200) begin
70+
if( ~nrst_once ) begin
71+
test_data[5:0] <= '0;
72+
sel[3:0] <= '0;
73+
end else begin
74+
test_data[5:0] <= test_data[5:0] + 1'b1;
75+
if( test_data[5:0]=='1 ) begin
76+
sel[3:0] <= sel[3:0] + 1'b1;
77+
end
78+
end
79+
end
80+
81+
82+
dynamic_delay #(
83+
.LENGTH( 3 ),
84+
.WIDTH( 4 )
85+
) M (
86+
.clk( clk200 ),
87+
.nrst( nrst_once ),
88+
.ena( 1'b1 ),
89+
.in( test_data[3:0] ),
90+
.sel( sel[3:0] ),
91+
.out( )
92+
);
93+
94+
95+
endmodule

reverse_dimensions_tb.sv

+99
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,99 @@
1+
//------------------------------------------------------------------------------
2+
// reverse_dimensions_tb.sv
3+
// Konstantin Pavlov, [email protected]
4+
//------------------------------------------------------------------------------
5+
6+
// INFO ------------------------------------------------------------------------
7+
// testbench for reverse_dimensions module
8+
9+
10+
`timescale 1ns / 1ps
11+
12+
module reverse_dimensions_tb();
13+
14+
logic clk200;
15+
initial begin
16+
#0 clk200 = 1;
17+
forever
18+
#2.5 clk200 = ~clk200;
19+
end
20+
21+
logic rst;
22+
initial begin
23+
#10.2 rst = 1;
24+
#5 rst = 0;
25+
//#10000;
26+
forever begin
27+
#9985 rst = ~rst;
28+
#5 rst = ~rst;
29+
end
30+
end
31+
32+
logic nrst;
33+
assign nrst = ~rst;
34+
35+
logic rst_once;
36+
initial begin // initializing non-X data before PLL starts
37+
#10.2 rst_once = 1;
38+
#5 rst_once = 0;
39+
end
40+
initial begin
41+
#510.2 rst_once = 1; // PLL starts at 500ns, clock appears, so doing the reset for modules
42+
#5 rst_once = 0;
43+
end
44+
45+
logic nrst_once;
46+
assign nrst_once = ~rst_once;
47+
48+
logic [31:0] DerivedClocks;
49+
clk_divider #(
50+
.WIDTH( 32 )
51+
) CD1 (
52+
.clk( clk200 ),
53+
.nrst( nrst_once ),
54+
.ena( 1'b1 ),
55+
.out( DerivedClocks[31:0] )
56+
);
57+
58+
logic [31:0] E_DerivedClocks;
59+
edge_detect ED1[31:0] (
60+
.clk( {32{clk200}} ),
61+
.nrst( {32{nrst_once}} ),
62+
.in( DerivedClocks[31:0] ),
63+
.rising( E_DerivedClocks[31:0] ),
64+
.falling( ),
65+
.both( )
66+
);
67+
68+
logic [15:0] RandomNumber1;
69+
c_rand RNG1 (
70+
.clk( clk200 ),
71+
.rst( rst_once ),
72+
.reseed( 1'b0 ),
73+
.seed_val( DerivedClocks[31:0] ),
74+
.out( RandomNumber1[15:0] )
75+
);
76+
77+
logic start;
78+
initial begin
79+
#0 start = 1'b0;
80+
#100.2 start = 1'b1;
81+
#5 start = 1'b0;
82+
end
83+
84+
// Module under test ==========================================================
85+
86+
logic [1:0][7:0] in;
87+
assign in = RandomNumber1[15:0];
88+
89+
90+
logic [7:0][1:0] out;
91+
reverse_dimensions #(
92+
.D1_WIDTH( 2 ),
93+
.D2_WIDTH( 8 )
94+
) RD1 (
95+
.in( in ),
96+
.out( out )
97+
);
98+
99+
endmodule

0 commit comments

Comments
 (0)