Methods
Procedures and functions complementing the t_coverpoint functionality.
bin()
Returns a t_new_bin_array containing a bin with a single value or multiple values. When having multiple values in a bin, only one of them needs to be sampled for the bin to collect coverage. The maximum number of multiple values is C_FC_MAX_NUM_BIN_VALUES defined in adaptations_pkg.
t_new_bin_array := bin(value)
t_new_bin_array := bin(set_of_values)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
value |
in |
integer |
Single value contained in the bin |
constant |
set_of_values |
in |
integer_vector |
Set of values contained in the bin |
-- Examples:
my_coverpoint.add_bins(bin(10));
my_coverpoint.add_bins(bin((5,10,15,20)));
bin_range()
Returns a t_new_bin_array containing a bin with a range of values. When num_bins is different than 1, several bins are created instead by dividing the range into num_bins. If the division has a residue, it is spread equally starting from the last bins. If num_bins is 0 or greater than the number of values in the range, then a single bin is created for each value.
t_new_bin_array := bin_range(min_value, max_value, [num_bins])
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
min_value |
in |
integer |
Minimum value in the range to create the bins |
constant |
max_value |
in |
integer |
Maximum value in the range to create the bins |
constant |
num_bins |
in |
natural |
Number of bins to divide the range into. Default is 1 |
-- Examples:
my_coverpoint.add_bins(bin_range(10,20)); -- creates 1 bin: 10 to 20
my_coverpoint.add_bins(bin_range(10,20,4)); -- creates 4 bins: 10 to 11, 12 to 14, 15 to 17, 18 to 20
my_coverpoint.add_bins(bin_range(10,20,0)); -- creates 11 bins: 10,11,12,13,14,15,16,17,18,19,20
my_coverpoint.add_bins(bin_range(10,20,11)); -- creates 11 bins: 10,11,12,13,14,15,16,17,18,19,20
my_coverpoint.add_bins(bin_range(10,20,20)); -- creates 11 bins: 10,11,12,13,14,15,16,17,18,19,20
bin_vector()
Returns a t_new_bin_array containing a bin with a vector’s range. When num_bins is different than 1, several bins are created instead by dividing the range into num_bins. If the division has a residue, it is spread equally starting from the last bins. If num_bins is 0 or greater than the number of values in the vector’s range, then a single bin is created for each value.
t_new_bin_array := bin_vector(vector, [num_bins])
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
vector |
in |
std_logic_vector |
Vector used to create the bins |
constant |
num_bins |
in |
natural |
Number of bins to divide the range into. Default is 1 |
-- Examples:
my_coverpoint.add_bins(bin_vector(address)); -- creates 1 bin
my_coverpoint.add_bins(bin_vector(address,4)); -- creates 4 bins
my_coverpoint.add_bins(bin_vector(address,0)); -- creates 2^(address'length) bins: address[0], address[1], ...
bin_transition()
Returns a t_new_bin_array containing a bin with a transition of values. The maximum number of transition values is C_FC_MAX_NUM_BIN_VALUES defined in adaptations_pkg.
t_new_bin_array := bin_transition(set_of_values)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
set_of_values |
in |
integer_vector |
Transition of values contained in the bin |
-- Example:
my_coverpoint.add_bins(bin_transition(1,2,9,10));
ignore_bin()
Returns a t_new_bin_array containing an ignore bin with a single value.
t_new_bin_array := ignore_bin(value)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
value |
in |
integer |
Single value contained in the bin |
-- Example:
my_coverpoint.add_bins(ignore_bin(50));
ignore_bin_range()
Returns a t_new_bin_array containing an ignore bin with a range of values.
t_new_bin_array := ignore_bin_range(min_value, max_value)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
min_value |
in |
integer |
Minimum value in the range to create the bin |
constant |
max_value |
in |
integer |
Maximum value in the range to create the bin |
-- Example:
my_coverpoint.add_bins(ignore_bin_range(50,60));
ignore_bin_transition()
Returns a t_new_bin_array containing an ignore bin with a transition of values. The maximum number of transition values is C_FC_MAX_NUM_BIN_VALUES defined in adaptations_pkg.
t_new_bin_array := ignore_bin_transition(set_of_values)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
set_of_values |
in |
integer_vector |
Transition of values contained in the bin |
-- Example:
my_coverpoint.add_bins(ignore_bin_transition(20,21,22,30));
illegal_bin()
Returns a t_new_bin_array containing an illegal bin with a single value.
t_new_bin_array := illegal_bin(value)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
value |
in |
integer |
Single value contained in the bin |
-- Example:
my_coverpoint.add_bins(illegal_bin(100));
illegal_bin_range()
Returns a t_new_bin_array containing an illegal bin with a range of values.
t_new_bin_array := illegal_bin_range(min_value, max_value)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
min_value |
in |
integer |
Minimum value in the range to create the bin |
constant |
max_value |
in |
integer |
Maximum value in the range to create the bin |
-- Example:
my_coverpoint.add_bins(illegal_bin_range(100,200));
illegal_bin_transition()
Returns a t_new_bin_array containing an illegal bin with a transition of values. The maximum number of transition values is C_FC_MAX_NUM_BIN_VALUES defined in adaptations_pkg.
t_new_bin_array := illegal_bin_transition(set_of_values)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
set_of_values |
in |
integer_vector |
Transition of values contained in the bin |
-- Example:
my_coverpoint.add_bins(illegal_bin_transition(30,10,0));
fc_set_covpts_coverage_goal()
Configures the coverpoints coverage goal, which represents the percentage of the number of coverpoints that need to be covered. Default value is 100.
fc_set_covpts_coverage_goal(percentage, [scope, [msg_id_panel]])
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
percentage |
in |
positive range 1 to 100 |
Goal percentage of the coverpoints to cover |
constant |
scope |
in |
string |
Describes the scope from which the log/alert originates. Default value is C_TB_SCOPE_DEFAULT. |
constant |
msg_id_panel |
in |
t_msg_id_panel |
Controls verbosity within a specified scope. Default value is shared_msg_id_panel. |
-- Example:
fc_set_covpts_coverage_goal(75); -- Cover only 75% of the total number of coverpoints
fc_get_covpts_coverage_goal()
Returns the coverpoints coverage goal.
positive := fc_get_covpts_coverage_goal(VOID)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
VOID |
in |
t_void |
A dummy parameter for easier reading syntax |
-- Example:
log(ID_SEQUENCER, "Covpts goal: " & to_string(fc_get_covpts_coverage_goal(VOID)));
fc_get_overall_coverage()
Returns either the coverpoints coverage, bins coverage or hits coverage accumulated from all the coverpoints. For an overview on the types of coverage click here.
real := fc_get_overall_coverage(coverage_type)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
coverage_type |
in |
Selects which coverage value to return |
-- Examples:
log(ID_SEQUENCER, "Covpts Overall Coverage: " & to_string(fc_get_overall_coverage(COVPTS),2) & "%");
log(ID_SEQUENCER, "Bins Overall Coverage: " & to_string(fc_get_overall_coverage(BINS),2) & "%");
log(ID_SEQUENCER, "Hits Overall Coverage: " & to_string(fc_get_overall_coverage(HITS),2) & "%");
fc_overall_coverage_completed()
Returns true if the coverpoints coverage has reached the goal. Default goal is 100.
boolean := fc_overall_coverage_completed(VOID)
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
VOID |
in |
t_void |
A dummy parameter for easier reading syntax |
-- Example:
if fc_overall_coverage_completed(VOID) then
...
end if;
fc_report_overall_coverage()
Prints the overall coverage summary for all the coverpoints in the testbench. The printing destination can be log and/or console and is defined by shared_default_log_destination in adaptations_pkg. The report can also be printed to a separate file by using the file_name parameter. To see an example of the generated report click here.
fc_report_overall_coverage(VOID)
fc_report_overall_coverage(verbosity, [file_name, [open_mode, [scope]]])
Object |
Name |
Dir. |
Type |
Description |
---|---|---|---|---|
constant |
VOID |
in |
t_void |
A dummy parameter for easier reading syntax |
constant |
verbosity |
in |
Controls if the coverpoints are shown in the report. Default value is NON_VERBOSE. |
|
constant |
file_name |
in |
string |
Name of the file where the report will be written. Default value is an empty string, which means do not write to file. |
constant |
open_mode |
in |
file_open_kind |
Describes the access to the file. Default value is append_mode. |
constant |
scope |
in |
string |
Describes the scope from which the log/alert originates Default value is C_TB_SCOPE_DEFAULT. |
-- Examples:
fc_report_overall_coverage(VOID);
fc_report_overall_coverage(VERBOSE);
fc_report_overall_coverage(HOLES_ONLY, "coverage_report.txt");