Skip to content

Commit c19ea1c

Browse files
committed
Merge branch 'isa_improve_sequence' into 'devel'
fix(uvm-mac_seg) add READY to dut interface. See merge request ndk/ndk-fpga!222
2 parents c61ab7a + 2aeeaa1 commit c19ea1c

File tree

9 files changed

+657
-177
lines changed

9 files changed

+657
-177
lines changed

comp/uvm/intel_mac_seg/interface.sv

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ interface intel_mac_seg_if #(int unsigned SEGMENTS) (input logic CLK);
3434
input DATA, INFRAME, EOP_EMPTY, FCS_ERROR, ERROR, STATUS_DATA, VALID, READY;
3535
endclocking
3636

37-
modport dut_rx(input DATA, INFRAME, EOP_EMPTY, FCS_ERROR, ERROR, STATUS_DATA, VALID);
37+
modport dut_rx(input DATA, INFRAME, EOP_EMPTY, FCS_ERROR, ERROR, STATUS_DATA, VALID, output READY);
3838
modport dut_tx(output DATA, INFRAME, EOP_EMPTY, FCS_ERROR, VALID, input READY);
3939

4040
// ------------------------------------------------------------------------

comp/uvm/logic_vector_array/sequence.sv

Lines changed: 97 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -19,7 +19,39 @@ class sequence_simple #(int unsigned ITEM_WIDTH) extends uvm_common::sequence_ba
1919
int unsigned transaction_count_max = 200;
2020
rand int unsigned transaction_count;
2121

22+
rand int unsigned data_size_min;
23+
rand int unsigned data_size_max;
24+
2225
constraint c1 {transaction_count inside {[transaction_count_min : transaction_count_max]};}
26+
constraint c_data_size {
27+
data_size_min <= data_size_max;
28+
data_size_min dist {
29+
cfg.array_size_min :/ 5,
30+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*0 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1] :/ 20,
31+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2] :/ 7,
32+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3] :/ 5,
33+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4] :/ 3,
34+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5] :/ 2,
35+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6] :/ 1,
36+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7] :/ 1,
37+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*8] :/ 3,
38+
cfg.array_size_max :/ 5
39+
};
40+
41+
data_size_max dist {
42+
cfg.array_size_min :/ 5,
43+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*0 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1] :/ 20,
44+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2] :/ 7,
45+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3] :/ 5,
46+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4] :/ 3,
47+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5] :/ 2,
48+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6] :/ 1,
49+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7] :/ 1,
50+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*8] :/ 3,
51+
cfg.array_size_max :/ 5
52+
};
53+
54+
}
2355

2456
// Constructor - creates new instance of this class
2557
function new(string name = "sequence_simple");
@@ -43,7 +75,7 @@ class sequence_simple #(int unsigned ITEM_WIDTH) extends uvm_common::sequence_ba
4375
while(it < transaction_count && (state == null || state.next()))
4476
begin
4577
// Generate random request, which must be in interval from min length to max length
46-
`uvm_do_with(req, {data.size inside{[cfg.array_size_min : cfg.array_size_max]}; });
78+
`uvm_do_with(req, {data.size inside{[data_size_min : data_size_max]}; });
4779
it++;
4880
end
4981
endtask
@@ -63,7 +95,18 @@ class sequence_simple_const #(int unsigned ITEM_WIDTH) extends uvm_common::seque
6395
rand int unsigned transaction_count;
6496

6597
constraint c1 {transaction_count inside {[transaction_count_min : transaction_count_max]};}
66-
constraint c2 {data_size inside {[cfg.array_size_min : cfg.array_size_max]};}
98+
constraint c2 {data_size dist {
99+
cfg.array_size_min :/ 5,
100+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*0 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1] :/ 20,
101+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2] :/ 7,
102+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3] :/ 5,
103+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4] :/ 3,
104+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5] :/ 2,
105+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6] :/ 1,
106+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7] :/ 1,
107+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*8] :/ 3,
108+
cfg.array_size_max :/ 5
109+
};}
67110

68111
// Constructor - creates new instance of this class
69112
function new(string name = "sequence_simple_const");
@@ -112,7 +155,20 @@ class sequence_simple_gauss #(int unsigned ITEM_WIDTH) extends uvm_common::seque
112155
int unsigned std_deviation_max = 32;
113156

114157
constraint c1 {transaction_count inside {[transaction_count_min : transaction_count_max]};}
115-
constraint c2 {mean inside {[cfg.array_size_min : cfg.array_size_max]};}
158+
constraint c2 {
159+
mean dist {
160+
cfg.array_size_min :/ 5,
161+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*0 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1] :/ 20,
162+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2] :/ 7,
163+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3] :/ 5,
164+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4] :/ 3,
165+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5] :/ 2,
166+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6] :/ 1,
167+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7] :/ 1,
168+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*8] :/ 3,
169+
cfg.array_size_max :/ 5
170+
};
171+
}
116172
constraint c3 {std_deviation inside {[std_deviation_min : std_deviation_max]};}
117173

118174
function int gaussian_dist();
@@ -343,6 +399,39 @@ class sequence_inverted_gauss #(int unsigned ITEM_WIDTH) extends sequence_simple
343399
`m_uvm_get_type_name_func(uvm_logic_vector_array::sequence_inverted_gauss)
344400

345401
int unsigned mean;
402+
rand int unsigned data_size_min;
403+
rand int unsigned data_size_max;
404+
405+
constraint c_data_size {
406+
data_size_min <= data_size_max;
407+
data_size_min dist {
408+
cfg.array_size_min :/ 5,
409+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*0 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1] :/ 20,
410+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2] :/ 7,
411+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3] :/ 5,
412+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4] :/ 3,
413+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5] :/ 2,
414+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6] :/ 1,
415+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7] :/ 1,
416+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*8] :/ 3,
417+
cfg.array_size_max :/ 5
418+
};
419+
420+
data_size_max dist {
421+
cfg.array_size_min :/ 5,
422+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*0 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1] :/ 20,
423+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*1 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2] :/ 7,
424+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*2 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3] :/ 5,
425+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*3 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4] :/ 3,
426+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*4 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5] :/ 2,
427+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*5 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6] :/ 1,
428+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*6 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7] :/ 1,
429+
[cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*7 : cfg.array_size_min + (cfg.array_size_max-cfg.array_size_min)/8*8] :/ 3,
430+
cfg.array_size_max :/ 5
431+
};
432+
433+
}
434+
346435

347436
// Constructor
348437
function new(string name = "sequence_inverted_gauss");
@@ -359,14 +448,14 @@ class sequence_inverted_gauss #(int unsigned ITEM_WIDTH) extends sequence_simple
359448

360449
function int inverted_gaussian_dist();
361450
int value = $dist_normal($urandom(), mean, mean/3);
362-
value = math_min(value, cfg.array_size_max);
363-
value = math_max(value, cfg.array_size_min);
451+
value = math_min(value, data_size_max);
452+
value = math_max(value, data_size_min);
364453

365454
if (value < mean) begin
366-
return math_min(value+mean, cfg.array_size_max);
455+
return math_min(value+mean, data_size_max);
367456
end
368457
else begin
369-
return math_max(value-mean, cfg.array_size_min);
458+
return math_max(value-mean, data_size_min);
370459
end
371460
endfunction
372461

@@ -376,7 +465,7 @@ class sequence_inverted_gauss #(int unsigned ITEM_WIDTH) extends sequence_simple
376465

377466
`uvm_info(m_sequencer.get_full_name(), "\n\tsequence_inverted_gauss is running", UVM_DEBUG)
378467

379-
mean = (cfg.array_size_max-cfg.array_size_min)/2;
468+
mean = (data_size_max-data_size_min)/2;
380469

381470
repeat (transaction_count) begin
382471
int unsigned data_size;

0 commit comments

Comments
 (0)