aboutsummaryrefslogtreecommitdiffstats
path: root/tests/svtypes/typedef_initial_and_assign.sv
blob: 05579947d1c9c99b996dd57a00b6c4bfe0fa6d91 (plain)
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
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
package pkg;
	typedef logic pkg_user_t;
endpackage

module top;
	typedef logic user_t;

	// Continuous assignment to a variable is legal
	user_t var_1;
	assign var_1 = 0;
	assert property (var_1 == 0);

	var user_t var_2;
	assign var_2 = 0;
	assert property (var_2 == 0);

	var pkg::pkg_user_t var_3;
	assign var_3 = 0;
	assert property (var_3 == 0);

	// Procedural assignment to a variable is legal
	user_t var_4 = 0;
	assert property (var_4 == 0);

	user_t var_5;
	initial var_5 = 0;
	assert property (var_5 == 0);

	var user_t var_6 = 0;
	assert property (var_6 == 0);

	var user_t var_7;
	initial var_7 = 0;
	assert property (var_7 == 0);

	pkg::pkg_user_t var_8 = 0;
	assert property (var_8 == 0);

	pkg::pkg_user_t var_9;
	initial var_9 = 0;
	assert property (var_9 == 0);

	var pkg::pkg_user_t var_10 = 0;
	assert property (var_10 == 0);

	var pkg::pkg_user_t var_11;
	initial var_11 = 0;
	assert property (var_11 == 0);

	// Continuous assignment to a net is legal
	wire user_t wire_1 = 0;
	assert property (wire_3 == 0);

	wire user_t wire_2;
	assign wire_2 = 0;
	assert property (wire_2 == 0);

	wire pkg::pkg_user_t wire_3 = 0;
	assert property (wire_3 == 0);

	wire pkg::pkg_user_t wire_4;
	assign wire_4 = 0;
	assert property (wire_4 == 0);

	// Mixing continuous and procedural assignments is illegal
	user_t var_12 = 0;
	assign var_12 = 1; // warning: reg assigned in a continuous assignment

	user_t var_13;
	initial var_13 = 0;
	assign var_13 = 1; // warning: reg assigned in a continuous assignment

	var user_t var_14 = 0;
	assign var_14 = 1; // warning: reg assigned in a continuous assignment

	var user_t var_15;
	initial var_15 = 0;
	assign var_15 = 1; // warning: reg assigned in a continuous assignment

	pkg::pkg_user_t var_16 = 0;
	assign var_16 = 1; // warning: reg assigned in a continuous assignment

	pkg::pkg_user_t var_17;
	initial var_17 = 0;
	assign var_17 = 1; // warning: reg assigned in a continuous assignment

	var pkg::pkg_user_t var_18 = 0;
	assign var_18 = 1; // warning: reg assigned in a continuous assignment

	var pkg::pkg_user_t var_19;
	initial var_19 = 0;
	assign var_19 = 1; // warning: reg assigned in a continuous assignment

endmodule