-
Notifications
You must be signed in to change notification settings - Fork 10
/
mult_neg_seq.sv
121 lines (111 loc) · 3.13 KB
/
mult_neg_seq.sv
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
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
class mult_neg_seq extends uvm_sequence #(mult_input_t);
`uvm_object_utils(mult_neg_seq)
function new(string name = "");
super.new(name);
endfunction: new
task body;
mult_input_t tx;
// a == b == -1
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A == -1; tx.B == -1;});
finish_item(tx);
// a == -1, b == 1
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A == -1; tx.B == 1;});
finish_item(tx);
// a == 1, b == -1
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A == 1; tx.B == -1;});
finish_item(tx);
// a == 0, b == -1
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A == 0; tx.B == -1;});
finish_item(tx);
// a == -1, b == 0
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A == -1; tx.B == 0;});
finish_item(tx);
// a == -1
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A == -1;});
finish_item(tx);
end
// b == -1
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.B == -1;});
finish_item(tx);
end
// a == neg, b== pos
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A inside {[$:-2]};});
finish_item(tx);
end
// a == pos, b == neg
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.B inside {[$:-2]};});
finish_item(tx);
end
// a == 0 , b == neg
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A == 0; tx.B inside {[$:-2]};});
finish_item(tx);
end
// a == neg , b == 0
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A inside {[$:-2]}; tx.B == 0;});
finish_item(tx);
end
// a == -1 , b == neg
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A == -1; tx.B inside {[$:-2]};});
finish_item(tx);
end
// a == neg , b == -1
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A inside {[$:-2]}; tx.B == -1;});
finish_item(tx);
end
// a == b == neg
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.B inside {[$:-2]}; tx.A inside {[$:-2]};});
finish_item(tx);
end
// a == 1 , b == neg
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A == 1; tx.B inside {[$:-2]};});
finish_item(tx);
end
// a == neg , b == 1
repeat(10) begin
tx = mult_input_t::type_id::create("tx");
start_item(tx);
assert(tx.randomize() with {tx.A inside {[$:-2]}; tx.B == 1;});
finish_item(tx);
end
endtask: body
endclass: mult_neg_seq