File tree 3 files changed +465
-0
lines changed
3 files changed +465
-0
lines changed Original file line number Diff line number Diff line change
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
Original file line number Diff line number Diff line change
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
You can’t perform that action at this time.
0 commit comments