aboutsummaryrefslogtreecommitdiff
path: root/src/tb/tb_clkmgr_new.v
blob: 75d281d49b73432774e8645352bee14ad47f5f7c (plain) (blame)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
`timescale 1ns / 1ps

module tb_clkmgr_new;


		//
		// Inputs
		//
	reg	gclk = 1'b0;
	reg	gclk_stop;
	wire	gclk_p =  (gclk & ~gclk_stop);
	wire	gclk_n = ~(gclk & ~gclk_stop);
	reg	reset_mcu_b;
	


		//
		// Outputs
		//
	wire sys_clk;
	wire sys_rst;


		//
		// UUT
		//
	novena_clkmgr_new #
	(
		.CLK_OUT_MUL	(4),	// 200 MHz
		.CLK_OUT_DIV	(1)	//
	)
	uut
	(
		.gclk_p			(gclk_p),
		.gclk_n			(gclk_n),
		
		.reset_mcu_b	(reset_mcu_b),
		
		.sys_clk			(sys_clk),
		.sys_rst			(sys_rst)
	);
	
	
		//
		// Clock (50 MHz)
		//
	always #10 gclk = ~gclk;


		//
		// Script
		//
	initial begin
		//
		reset_mcu_b = 0;	// reset active
		gclk_stop = 0;		// gclk running
		//
		#500;
		//
		reset_mcu_b = 1;	// clear reset
		//
		#1000;
		//
		gclk_stop = 1;		// try to stop gclk
		#1000;
		gclk_stop = 0;		// enable gclk again
		//
		#1000;
		//
		reset_mcu_b = 0;	// try to activate reset
		#1000;
		reset_mcu_b = 1;	// clear reset again
		//
	end
      
endmodule