According to wikipedia Pentium FDIV bug affects the floating point unit(FPU) of the early intel Pentium processors. Because of this bug incorrect floating point results were returned. In December 1994, Intel recalled defective processors. In January 1995, Intel announced “a pre-tax charge of 475 Million against earnings. Total cost associated with the replacements of the flawed processors.
According byte.com web page archive, Intel wanted to boost the execution of their floating-point unit. To do that they moved from its traditional shift-and-subtract division algorithm to new method called SRT algorithm. SRT algorithm uses a lookup table. Pentium’s SRT lookup table implementation is matrix of 2048 cells. Only 1066 of these cells actually contained the valid values. Due to issue in script loading the lookup table 5/1066 entries were not programmed with valid values.
SRT algorithm is recursive. This bug leads to corruption only with certain pairs of divisors and numerators. The “buggy pairs” are identified. They always lead to corruption. At its worst, the error can rise as high as the fourth significant digit of decimal number. Chances of this happening randomly, is about 1 in 360 billion. Usually the error appears around the 9th or 10th decimal digit. The chances of this happening randomly, is about 1 in 9 billion.
Here you can see even if we had constrained random generation on divisor and numerators how low is probability of hitting the buggy pair. Even if we create the functional coverage on the inputs how low is probability that we would specifically write coverpoints for the buggy pair.
Of-course now we have formal methods to prove correctness of such computationally intensive blocks.
We are already convinced that constrained random hitting on this buggy pair has very low probability. Hence even if it hits this case it may take long wall clock time. Pure floating-point arithmetic verification approach alone is not sufficient.
For a moment if you think what could have helped maximize the probability of finding this issue in traditional simulation based verification?
Simulation world is always time limited. We cannot do exhaustive verification of everything. Even a simple 32-bit counter exhaustive verification would mean 2 ^ 32 = 4G of state space. That’s where the judgment of the verification engineers plays major role as to what to abstract and what to focus.
Let’s say a curious verification engineer like you looked inside the implementation. He tried to identify the major blocks of design and spotted the lookup table. His mind suddenly flashed insight floating-point inputs must use all valid entries of the lookup table. This is one more critical dimension for the quality of the input stimulus.
Let’s say he thought of checking that by writing functional coverage on input address of the lookup table. He thought of adding a bin per each valid cell of matrix.
This could have helped maximize the probability of catching this issue. There is a notion that verification engineers should not look into design as it can bias their thinking. While the intent is good but let’s not forget we are verifying this specific implementation of requirements. Some level of balancing act is required. It cannot be applied in purity.
He scans the following lookup table organization. Thanks to david deley for providing it:
Our curious engineer quickly makes notes about the following facts about the Look up table:
He decides functional coverage on access for all the valid cells and simple assertion to check if the values were one of the {-2, -1, 1, 2}. Well assertion is simple enough in this case.
But the functional coverage requires 1066 bins. Due to asymmetrical nature it would at least need 86 entries of varying ranges to be coded. Any small change in the lookup table he would need to repeat it again.
Now remember although our engineer is curious he also has packed schedule to code the stimulus and write checks. Effort to write functional coverage is certainly discouraging. So he drops writing functional coverage and we all know what happened.
Certainly it’s a daunting task to satisfy the curiosity of verification engineers. Not if the functional coverage is made more programmable. What if he had access to use the python along with the SystemVerilog functional coverage?
What would he have said? He would have said “easy peasy lemon squeezy”
Here is how the code would look like:
#!/home/utils/Python-2.7.5/bin/python
########################################################################################
#
# Title: Lookup table address coverage
# Description:
# For look up table organized as matrix with varying number of cells usage in
# each row, creates the covergroup with the bin per cell
# Step 1: Store the valid row addresses bits only as key of dictionary
# Step 2: Store the mask indicating the valid cells with 1 as values in dictionary
# Step 3: Loop through row and column address to create bins for each cell
# Category: EKB
# Status: PUBLISH
#
########################################################################################
from curiosity_user_common_utils import *
from numpy import binary_repr
# Extends fro the "curiosity_user_lib" which has built in functions to ease the creation of the wb_input entries
class curiosity_dut_lib(curiosity_user_lib):
def set_dut_spec(self, **dut_spec_dict):
self.dut_spec = copy.deepcopy(dut_spec_dict)
# Set default value for all entries
self.set_default_value_wbv_entry(
WBV_CLOCK = self.dut_spec['__DUT_CLK__'],
WBV_RESET = self.dut_spec['__DUT_RSTN__'],
WBV_USR_META_VAR2VAL = self.dut_spec,
WBV_LOOP_LIST = [''],)
def get_valid_cell_addr_bins(self):
# Key : row address; Value: Mask representing valid cells matching LUT map shown in picture
lut_valid_entries_cell_mask = {
# Top Half - 20 valid entries of varying valid elements
'0101.011' : '0000_0000_0000_0001',
'0101.010' : '0000_0000_0000_0011',
'0101.001' : '0000_0000_0000_0011',
'0101.000' : '0000_0000_0000_0111',
'0100.111' : '0000_0000_0000_1111',
'0100.110' : '0000_0000_0001_1111',
'0100.101' : '0000_0000_0001_1111',
'0100.100' : '0000_0000_0011_1111',
'0100.011' : '0000_0000_0111_1111',
'0100.010' : '0000_0000_0111_1111',
'0100.001' : '0000_0000_1111_1111',
'0100.000' : '0000_0001_1111_1111',
'0011.111' : '0000_0011_1111_1111',
'0011.110' : '0000_0111_1111_1111',
'0011.101' : '0000_0111_1111_1111',
'0011.100' : '0000_1111_1111_1111',
'0011.011' : '0001_1111_1111_1111',
'0011.010' : '0011_1111_1111_1111',
'0011.001' : '0011_1111_1111_1111',
'0011.000' : '0111_1111_1111_1111',
# Middle 46 entries of all cells valid
'0010.111' : '1111_1111_1111_1111',
'0010.110' : '1111_1111_1111_1111',
'0010.101' : '1111_1111_1111_1111',
'0010.100' : '1111_1111_1111_1111',
'0010.011' : '1111_1111_1111_1111',
'0010.010' : '1111_1111_1111_1111',
'0010.001' : '1111_1111_1111_1111',
'0010.000' : '1111_1111_1111_1111',
'0001.111' : '1111_1111_1111_1111',
'0001.110' : '1111_1111_1111_1111',
'0001.101' : '1111_1111_1111_1111',
'0001.100' : '1111_1111_1111_1111',
'0001.011' : '1111_1111_1111_1111',
'0001.010' : '1111_1111_1111_1111',
'0001.001' : '1111_1111_1111_1111',
'0001.000' : '0111_1111_1111_1111',
'0000.111' : '1111_1111_1111_1111',
'0000.110' : '1111_1111_1111_1111',
'0000.101' : '1111_1111_1111_1111',
'0000.100' : '1111_1111_1111_1111',
'0000.011' : '1111_1111_1111_1111',
'0000.010' : '1111_1111_1111_1111',
'0000.001' : '1111_1111_1111_1111',
'0000.000' : '1111_1111_1111_1111',
'1111.111' : '1111_1111_1111_1111',
'1111.110' : '1111_1111_1111_1111',
'1111.101' : '1111_1111_1111_1111',
'1111.100' : '1111_1111_1111_1111',
'1111.011' : '1111_1111_1111_1111',
'1111.010' : '1111_1111_1111_1111',
'1111.001' : '1111_1111_1111_1111',
'1111.000' : '1111_1111_1111_1111',
'1110.111' : '1111_1111_1111_1111',
'1110.110' : '1111_1111_1111_1111',
'1110.101' : '1111_1111_1111_1111',
'1110.100' : '1111_1111_1111_1111',
'1110.011' : '1111_1111_1111_1111',
'1110.010' : '1111_1111_1111_1111',
'1110.001' : '1111_1111_1111_1111',
'1110.000' : '1111_1111_1111_1111',
'1101.111' : '1111_1111_1111_1111',
'1101.110' : '1111_1111_1111_1111',
'1101.101' : '1111_1111_1111_1111',
'1101.100' : '1111_1111_1111_1111',
'1101.011' : '1111_1111_1111_1111',
'1101.010' : '1111_1111_1111_1111',
'1101.001' : '1111_1111_1111_1111',
# Bottom Half - 20 entries of varying valid cells
'1101.000' : '0111_1111_1111_1111',
'1100.111' : '0011_1111_1111_1111',
'1100.110' : '0011_1111_1111_1111',
'1100.101' : '0001_1111_1111_1111',
'1100.100' : '0000_1111_1111_1111',
'1100.011' : '0000_0111_1111_1111',
'1100.010' : '0000_0111_1111_1111',
'1100.001' : '0000_0011_1111_1111',
'1100.000' : '0000_0001_1111_1111',
'1011.110' : '0000_0000_1111_1111',
'1011.101' : '0000_0000_1111_1111',
'1011.100' : '0000_0000_0111_1111',
'1011.011' : '0000_0000_0011_1111',
'1011.010' : '0000_0000_0001_1111',
'1011.001' : '0000_0000_0001_1111',
'1011.000' : '0000_0000_0000_1111',
'1011.000' : '0000_0000_0000_0111',
'1010.111' : '0000_0000_0000_0011',
'1010.110' : '0000_0000_0000_0011',
'1010.101' : '0000_0000_0000_0001',
}
max_col_dec = 15
valid_cell_addr_bins = []
for index, row_addr in enumerate(lut_valid_entries_cell_mask):
row_addr_bin_str = row_addr.replace('.','')
valid_cell_mask_bin = lut_valid_entries_cell_mask[row_addr].replace('_','')
valid_cell_mask_int = int(valid_cell_mask_bin, 2)
for col_addr_dec in range(0, max_col_dec+1):
if self.testBit(valid_cell_mask_int, col_addr_dec):
addr_bin_str = row_addr_bin_str + binary_repr((max_col_dec - col_addr_dec), width=4)
bin_prefix_str = 'bin_' + row_addr_bin_str + '_' + binary_repr((max_col_dec - col_addr_dec), width=4)
valid_cell_addr_bins.extend(self.get_custom_bin_list([str(int(addr_bin_str, 2))], bin_prefix_str))
return (valid_cell_addr_bins)
def gen_coverage(self):
# ENTRY: Built-in object to create the covergroup covering the value of signal specified when enable is true
with add_wbv_entry(self,
WBV_NAME = 'lut_2048_addr_cov',
WBV_TYPE = 'WBV_SIGNAL_VALUE',
WBV_FUNCTIONAL_COV = '1',
WBV_CP_COV_USER = self.get_valid_cell_addr_bins(),
WBV_DESCRIPTION = 'SRT FDIV LUT organized as 128x16 matrix coverage') as wbv_entry:
# Simplest form, Auto bins and no enable control
wbv_entry.add_wbv_si_entry(
SIGNAL_OR_EXPR = '__FDIV_LUT_ADDR_11_BITS__',
SIGNAL_ENABLE = '__FDIV_LUT_ENABLE__')
def main():
curiosity_dut_cov_obj = curiosity_dut_lib() # Create the user lib for easing the wb_input entries creation
# Setup DUT attributes
curiosity_dut_cov_obj.set_dut_spec(
__DUT_CLK__ = 'dut.clk',
__DUT_RSTN__ = '!dut.resetn',
__FDIV_LUT_ADDR_11_BITS__ = 'dut.fdiv.lut_pd_2048[10:0]',
__FDIV_LUT_ENABLE__ = 'dut.fdiv.lut_pd_2048_en',
)
curiosity_dut_cov_obj.gen_coverage()
## Call the main ##
if __name__ == '__main__':
main()
//File Name: curiosity_wb_fcov_cg.sv
//##################################################################################################################
//
// Copyright (C) VerifSudha Technologies Pvt. Ltd. - All Rights Reserved 2017
// Unauthorized copying of this file, via any medium is strictly prohibited
// Proprietary and confidential
// Written by curiosity ,
//
// Generated file - Donot edit manually. It will be overwritten !
//
// File generated with the command:
// ./curiosity -ips curiosity_ex_pentium_bug_lut_cov.py --html
//
//##################################################################################################################
covergroup lut_2048_addr_cov() @(dut.clk);
option.comment = "SRT FDIV LUT organized as 128x16 matrix coverage";
option.name = "lut_2048_addr_cov";
option.per_instance = 1;
// Cover points
cp_sig_val_lut_2048_addr_cov_1 : coverpoint dut.fdiv.lut_pd_2048[10:0] iff (dut.fdiv.lut_pd_2048_en){
bins bin_1100000_1111_value_1551 = {1551};
bins bin_1100000_1110_value_1550 = {1550};
bins bin_1100000_1101_value_1549 = {1549};
bins bin_1100000_1100_value_1548 = {1548};
bins bin_1100000_1011_value_1547 = {1547};
bins bin_1100000_1010_value_1546 = {1546};
bins bin_1100000_1001_value_1545 = {1545};
bins bin_1100000_1000_value_1544 = {1544};
bins bin_1100000_0111_value_1543 = {1543};
bins bin_1100001_1111_value_1567 = {1567};
bins bin_1100001_1110_value_1566 = {1566};
bins bin_1100001_1101_value_1565 = {1565};
bins bin_1100001_1100_value_1564 = {1564};
bins bin_1100001_1011_value_1563 = {1563};
bins bin_1100001_1010_value_1562 = {1562};
bins bin_1100001_1001_value_1561 = {1561};
bins bin_1100001_1000_value_1560 = {1560};
bins bin_1100001_0111_value_1559 = {1559};
bins bin_1100001_0110_value_1558 = {1558};
bins bin_1011001_1111_value_1439 = {1439};
bins bin_1011001_1110_value_1438 = {1438};
bins bin_1011001_1101_value_1437 = {1437};
bins bin_1011001_1100_value_1436 = {1436};
bins bin_1011001_1011_value_1435 = {1435};
bins bin_1011000_1111_value_1423 = {1423};
bins bin_1011000_1110_value_1422 = {1422};
bins bin_1011000_1101_value_1421 = {1421};
bins bin_0000000_1111_value_15 = {15};
bins bin_0000000_1110_value_14 = {14};
bins bin_0000000_1101_value_13 = {13};
bins bin_0000000_1100_value_12 = {12};
bins bin_0000000_1011_value_11 = {11};
bins bin_0000000_1010_value_10 = {10};
bins bin_0000000_1001_value_9 = {9};
bins bin_0000000_1000_value_8 = {8};
bins bin_0000000_0111_value_7 = {7};
bins bin_0000000_0110_value_6 = {6};
bins bin_0000000_0101_value_5 = {5};
bins bin_0000000_0100_value_4 = {4};
bins bin_0000000_0011_value_3 = {3};
bins bin_0000000_0010_value_2 = {2};
bins bin_0000000_0001_value_1 = {1};
bins bin_0000000_0000_value_0 = {0};
bins bin_0000001_1111_value_31 = {31};
bins bin_0000001_1110_value_30 = {30};
bins bin_0000001_1101_value_29 = {29};
bins bin_0000001_1100_value_28 = {28};
bins bin_0000001_1011_value_27 = {27};
bins bin_0000001_1010_value_26 = {26};
bins bin_0000001_1001_value_25 = {25};
bins bin_0000001_1000_value_24 = {24};
bins bin_0000001_0111_value_23 = {23};
bins bin_0000001_0110_value_22 = {22};
bins bin_0000001_0101_value_21 = {21};
bins bin_0000001_0100_value_20 = {20};
bins bin_0000001_0011_value_19 = {19};
bins bin_0000001_0010_value_18 = {18};
bins bin_0000001_0001_value_17 = {17};
bins bin_0000001_0000_value_16 = {16};
bins bin_0101011_1111_value_703 = {703};
bins bin_0101010_1111_value_687 = {687};
bins bin_0101010_1110_value_686 = {686};
bins bin_1111110_1111_value_2031 = {2031};
bins bin_1111110_1110_value_2030 = {2030};
bins bin_1111110_1101_value_2029 = {2029};
bins bin_1111110_1100_value_2028 = {2028};
bins bin_1111110_1011_value_2027 = {2027};
bins bin_1111110_1010_value_2026 = {2026};
bins bin_1111110_1001_value_2025 = {2025};
bins bin_1111110_1000_value_2024 = {2024};
bins bin_1111110_0111_value_2023 = {2023};
bins bin_1111110_0110_value_2022 = {2022};
bins bin_1111110_0101_value_2021 = {2021};
bins bin_1111110_0100_value_2020 = {2020};
bins bin_1111110_0011_value_2019 = {2019};
bins bin_1111110_0010_value_2018 = {2018};
bins bin_1111110_0001_value_2017 = {2017};
bins bin_1111110_0000_value_2016 = {2016};
bins bin_1111111_1111_value_2047 = {2047};
bins bin_1111111_1110_value_2046 = {2046};
bins bin_1111111_1101_value_2045 = {2045};
bins bin_1111111_1100_value_2044 = {2044};
bins bin_1111111_1011_value_2043 = {2043};
bins bin_1111111_1010_value_2042 = {2042};
bins bin_1111111_1001_value_2041 = {2041};
bins bin_1111111_1000_value_2040 = {2040};
bins bin_1111111_0111_value_2039 = {2039};
bins bin_1111111_0110_value_2038 = {2038};
bins bin_1111111_0101_value_2037 = {2037};
bins bin_1111111_0100_value_2036 = {2036};
bins bin_1111111_0011_value_2035 = {2035};
bins bin_1111111_0010_value_2034 = {2034};
bins bin_1111111_0001_value_2033 = {2033};
bins bin_1111111_0000_value_2032 = {2032};
bins bin_0010100_1111_value_335 = {335};
bins bin_0010100_1110_value_334 = {334};
bins bin_0010100_1101_value_333 = {333};
bins bin_0010100_1100_value_332 = {332};
bins bin_0010100_1011_value_331 = {331};
bins bin_0010100_1010_value_330 = {330};
bins bin_0010100_1001_value_329 = {329};
bins bin_0010100_1000_value_328 = {328};
bins bin_0010100_0111_value_327 = {327};
bins bin_0010100_0110_value_326 = {326};
bins bin_0010100_0101_value_325 = {325};
bins bin_0010100_0100_value_324 = {324};
bins bin_0010100_0011_value_323 = {323};
bins bin_0010100_0010_value_322 = {322};
bins bin_0010100_0001_value_321 = {321};
bins bin_0010100_0000_value_320 = {320};
bins bin_0010101_1111_value_351 = {351};
bins bin_0010101_1110_value_350 = {350};
bins bin_0010101_1101_value_349 = {349};
bins bin_0010101_1100_value_348 = {348};
bins bin_0010101_1011_value_347 = {347};
bins bin_0010101_1010_value_346 = {346};
bins bin_0010101_1001_value_345 = {345};
bins bin_0010101_1000_value_344 = {344};
bins bin_0010101_0111_value_343 = {343};
bins bin_0010101_0110_value_342 = {342};
bins bin_0010101_0101_value_341 = {341};
bins bin_0010101_0100_value_340 = {340};
bins bin_0010101_0011_value_339 = {339};
bins bin_0010101_0010_value_338 = {338};
bins bin_0010101_0001_value_337 = {337};
bins bin_0010101_0000_value_336 = {336};
bins bin_0001100_1111_value_207 = {207};
bins bin_0001100_1110_value_206 = {206};
bins bin_0001100_1101_value_205 = {205};
bins bin_0001100_1100_value_204 = {204};
bins bin_0001100_1011_value_203 = {203};
bins bin_0001100_1010_value_202 = {202};
bins bin_0001100_1001_value_201 = {201};
bins bin_0001100_1000_value_200 = {200};
bins bin_0001100_0111_value_199 = {199};
bins bin_0001100_0110_value_198 = {198};
bins bin_0001100_0101_value_197 = {197};
bins bin_0001100_0100_value_196 = {196};
bins bin_0001100_0011_value_195 = {195};
bins bin_0001100_0010_value_194 = {194};
bins bin_0001100_0001_value_193 = {193};
bins bin_0001100_0000_value_192 = {192};
bins bin_0001101_1111_value_223 = {223};
bins bin_0001101_1110_value_222 = {222};
bins bin_0001101_1101_value_221 = {221};
bins bin_0001101_1100_value_220 = {220};
bins bin_0001101_1011_value_219 = {219};
bins bin_0001101_1010_value_218 = {218};
bins bin_0001101_1001_value_217 = {217};
bins bin_0001101_1000_value_216 = {216};
bins bin_0001101_0111_value_215 = {215};
bins bin_0001101_0110_value_214 = {214};
bins bin_0001101_0101_value_213 = {213};
bins bin_0001101_0100_value_212 = {212};
bins bin_0001101_0011_value_211 = {211};
bins bin_0001101_0010_value_210 = {210};
bins bin_0001101_0001_value_209 = {209};
bins bin_0001101_0000_value_208 = {208};
bins bin_1100011_1111_value_1599 = {1599};
bins bin_1100011_1110_value_1598 = {1598};
bins bin_1100011_1101_value_1597 = {1597};
bins bin_1100011_1100_value_1596 = {1596};
bins bin_1100011_1011_value_1595 = {1595};
bins bin_1100011_1010_value_1594 = {1594};
bins bin_1100011_1001_value_1593 = {1593};
bins bin_1100011_1000_value_1592 = {1592};
bins bin_1100011_0111_value_1591 = {1591};
bins bin_1100011_0110_value_1590 = {1590};
bins bin_1100011_0101_value_1589 = {1589};
bins bin_1100010_1111_value_1583 = {1583};
bins bin_1100010_1110_value_1582 = {1582};
bins bin_1100010_1101_value_1581 = {1581};
bins bin_1100010_1100_value_1580 = {1580};
bins bin_1100010_1011_value_1579 = {1579};
bins bin_1100010_1010_value_1578 = {1578};
bins bin_1100010_1001_value_1577 = {1577};
bins bin_1100010_1000_value_1576 = {1576};
bins bin_1100010_0111_value_1575 = {1575};
bins bin_1100010_0110_value_1574 = {1574};
bins bin_1100010_0101_value_1573 = {1573};
bins bin_0100100_1111_value_591 = {591};
bins bin_0100100_1110_value_590 = {590};
bins bin_0100100_1101_value_589 = {589};
bins bin_0100100_1100_value_588 = {588};
bins bin_0100100_1011_value_587 = {587};
bins bin_0100100_1010_value_586 = {586};
bins bin_0100101_1111_value_607 = {607};
bins bin_0100101_1110_value_606 = {606};
bins bin_0100101_1101_value_605 = {605};
bins bin_0100101_1100_value_604 = {604};
bins bin_0100101_1011_value_603 = {603};
bins bin_0000011_1111_value_63 = {63};
bins bin_0000011_1110_value_62 = {62};
bins bin_0000011_1101_value_61 = {61};
bins bin_0000011_1100_value_60 = {60};
bins bin_0000011_1011_value_59 = {59};
bins bin_0000011_1010_value_58 = {58};
bins bin_0000011_1001_value_57 = {57};
bins bin_0000011_1000_value_56 = {56};
bins bin_0000011_0111_value_55 = {55};
bins bin_0000011_0110_value_54 = {54};
bins bin_0000011_0101_value_53 = {53};
bins bin_0000011_0100_value_52 = {52};
bins bin_0000011_0011_value_51 = {51};
bins bin_0000011_0010_value_50 = {50};
bins bin_0000011_0001_value_49 = {49};
bins bin_0000011_0000_value_48 = {48};
bins bin_0000010_1111_value_47 = {47};
bins bin_0000010_1110_value_46 = {46};
bins bin_0000010_1101_value_45 = {45};
bins bin_0000010_1100_value_44 = {44};
bins bin_0000010_1011_value_43 = {43};
bins bin_0000010_1010_value_42 = {42};
bins bin_0000010_1001_value_41 = {41};
bins bin_0000010_1000_value_40 = {40};
bins bin_0000010_0111_value_39 = {39};
bins bin_0000010_0110_value_38 = {38};
bins bin_0000010_0101_value_37 = {37};
bins bin_0000010_0100_value_36 = {36};
bins bin_0000010_0011_value_35 = {35};
bins bin_0000010_0010_value_34 = {34};
bins bin_0000010_0001_value_33 = {33};
bins bin_0000010_0000_value_32 = {32};
bins bin_1111101_1111_value_2015 = {2015};
bins bin_1111101_1110_value_2014 = {2014};
bins bin_1111101_1101_value_2013 = {2013};
bins bin_1111101_1100_value_2012 = {2012};
bins bin_1111101_1011_value_2011 = {2011};
bins bin_1111101_1010_value_2010 = {2010};
bins bin_1111101_1001_value_2009 = {2009};
bins bin_1111101_1000_value_2008 = {2008};
bins bin_1111101_0111_value_2007 = {2007};
bins bin_1111101_0110_value_2006 = {2006};
bins bin_1111101_0101_value_2005 = {2005};
bins bin_1111101_0100_value_2004 = {2004};
bins bin_1111101_0011_value_2003 = {2003};
bins bin_1111101_0010_value_2002 = {2002};
bins bin_1111101_0001_value_2001 = {2001};
bins bin_1111101_0000_value_2000 = {2000};
bins bin_1111100_1111_value_1999 = {1999};
bins bin_1111100_1110_value_1998 = {1998};
bins bin_1111100_1101_value_1997 = {1997};
bins bin_1111100_1100_value_1996 = {1996};
bins bin_1111100_1011_value_1995 = {1995};
bins bin_1111100_1010_value_1994 = {1994};
bins bin_1111100_1001_value_1993 = {1993};
bins bin_1111100_1000_value_1992 = {1992};
bins bin_1111100_0111_value_1991 = {1991};
bins bin_1111100_0110_value_1990 = {1990};
bins bin_1111100_0101_value_1989 = {1989};
bins bin_1111100_0100_value_1988 = {1988};
bins bin_1111100_0011_value_1987 = {1987};
bins bin_1111100_0010_value_1986 = {1986};
bins bin_1111100_0001_value_1985 = {1985};
bins bin_1111100_0000_value_1984 = {1984};
bins bin_0001111_1111_value_255 = {255};
bins bin_0001111_1110_value_254 = {254};
bins bin_0001111_1101_value_253 = {253};
bins bin_0001111_1100_value_252 = {252};
bins bin_0001111_1011_value_251 = {251};
bins bin_0001111_1010_value_250 = {250};
bins bin_0001111_1001_value_249 = {249};
bins bin_0001111_1000_value_248 = {248};
bins bin_0001111_0111_value_247 = {247};
bins bin_0001111_0110_value_246 = {246};
bins bin_0001111_0101_value_245 = {245};
bins bin_0001111_0100_value_244 = {244};
bins bin_0001111_0011_value_243 = {243};
bins bin_0001111_0010_value_242 = {242};
bins bin_0001111_0001_value_241 = {241};
bins bin_0001111_0000_value_240 = {240};
bins bin_0001110_1111_value_239 = {239};
bins bin_0001110_1110_value_238 = {238};
bins bin_0001110_1101_value_237 = {237};
bins bin_0001110_1100_value_236 = {236};
bins bin_0001110_1011_value_235 = {235};
bins bin_0001110_1010_value_234 = {234};
bins bin_0001110_1001_value_233 = {233};
bins bin_0001110_1000_value_232 = {232};
bins bin_0001110_0111_value_231 = {231};
bins bin_0001110_0110_value_230 = {230};
bins bin_0001110_0101_value_229 = {229};
bins bin_0001110_0100_value_228 = {228};
bins bin_0001110_0011_value_227 = {227};
bins bin_0001110_0010_value_226 = {226};
bins bin_0001110_0001_value_225 = {225};
bins bin_0001110_0000_value_224 = {224};
bins bin_0100111_1111_value_639 = {639};
bins bin_0100111_1110_value_638 = {638};
bins bin_0100111_1101_value_637 = {637};
bins bin_0100111_1100_value_636 = {636};
bins bin_0100110_1111_value_623 = {623};
bins bin_0100110_1110_value_622 = {622};
bins bin_0100110_1101_value_621 = {621};
bins bin_0100110_1100_value_620 = {620};
bins bin_0100110_1011_value_619 = {619};
bins bin_0010111_1111_value_383 = {383};
bins bin_0010111_1110_value_382 = {382};
bins bin_0010111_1101_value_381 = {381};
bins bin_0010111_1100_value_380 = {380};
bins bin_0010111_1011_value_379 = {379};
bins bin_0010111_1010_value_378 = {378};
bins bin_0010111_1001_value_377 = {377};
bins bin_0010111_1000_value_376 = {376};
bins bin_0010111_0111_value_375 = {375};
bins bin_0010111_0110_value_374 = {374};
bins bin_0010111_0101_value_373 = {373};
bins bin_0010111_0100_value_372 = {372};
bins bin_0010111_0011_value_371 = {371};
bins bin_0010111_0010_value_370 = {370};
bins bin_0010111_0001_value_369 = {369};
bins bin_0010111_0000_value_368 = {368};
bins bin_0010110_1111_value_367 = {367};
bins bin_0010110_1110_value_366 = {366};
bins bin_0010110_1101_value_365 = {365};
bins bin_0010110_1100_value_364 = {364};
bins bin_0010110_1011_value_363 = {363};
bins bin_0010110_1010_value_362 = {362};
bins bin_0010110_1001_value_361 = {361};
bins bin_0010110_1000_value_360 = {360};
bins bin_0010110_0111_value_359 = {359};
bins bin_0010110_0110_value_358 = {358};
bins bin_0010110_0101_value_357 = {357};
bins bin_0010110_0100_value_356 = {356};
bins bin_0010110_0011_value_355 = {355};
bins bin_0010110_0010_value_354 = {354};
bins bin_0010110_0001_value_353 = {353};
bins bin_0010110_0000_value_352 = {352};
bins bin_1101010_1111_value_1711 = {1711};
bins bin_1101010_1110_value_1710 = {1710};
bins bin_1101010_1101_value_1709 = {1709};
bins bin_1101010_1100_value_1708 = {1708};
bins bin_1101010_1011_value_1707 = {1707};
bins bin_1101010_1010_value_1706 = {1706};
bins bin_1101010_1001_value_1705 = {1705};
bins bin_1101010_1000_value_1704 = {1704};
bins bin_1101010_0111_value_1703 = {1703};
bins bin_1101010_0110_value_1702 = {1702};
bins bin_1101010_0101_value_1701 = {1701};
bins bin_1101010_0100_value_1700 = {1700};
bins bin_1101010_0011_value_1699 = {1699};
bins bin_1101010_0010_value_1698 = {1698};
bins bin_1101010_0001_value_1697 = {1697};
bins bin_1101010_0000_value_1696 = {1696};
bins bin_1101011_1111_value_1727 = {1727};
bins bin_1101011_1110_value_1726 = {1726};
bins bin_1101011_1101_value_1725 = {1725};
bins bin_1101011_1100_value_1724 = {1724};
bins bin_1101011_1011_value_1723 = {1723};
bins bin_1101011_1010_value_1722 = {1722};
bins bin_1101011_1001_value_1721 = {1721};
bins bin_1101011_1000_value_1720 = {1720};
bins bin_1101011_0111_value_1719 = {1719};
bins bin_1101011_0110_value_1718 = {1718};
bins bin_1101011_0101_value_1717 = {1717};
bins bin_1101011_0100_value_1716 = {1716};
bins bin_1101011_0011_value_1715 = {1715};
bins bin_1101011_0010_value_1714 = {1714};
bins bin_1101011_0001_value_1713 = {1713};
bins bin_1101011_0000_value_1712 = {1712};
bins bin_1011100_1111_value_1487 = {1487};
bins bin_1011100_1110_value_1486 = {1486};
bins bin_1011100_1101_value_1485 = {1485};
bins bin_1011100_1100_value_1484 = {1484};
bins bin_1011100_1011_value_1483 = {1483};
bins bin_1011100_1010_value_1482 = {1482};
bins bin_1011100_1001_value_1481 = {1481};
bins bin_1011101_1111_value_1503 = {1503};
bins bin_1011101_1110_value_1502 = {1502};
bins bin_1011101_1101_value_1501 = {1501};
bins bin_1011101_1100_value_1500 = {1500};
bins bin_1011101_1011_value_1499 = {1499};
bins bin_1011101_1010_value_1498 = {1498};
bins bin_1011101_1001_value_1497 = {1497};
bins bin_1011101_1000_value_1496 = {1496};
bins bin_0011110_1111_value_495 = {495};
bins bin_0011110_1110_value_494 = {494};
bins bin_0011110_1101_value_493 = {493};
bins bin_0011110_1100_value_492 = {492};
bins bin_0011110_1011_value_491 = {491};
bins bin_0011110_1010_value_490 = {490};
bins bin_0011110_1001_value_489 = {489};
bins bin_0011110_1000_value_488 = {488};
bins bin_0011110_0111_value_487 = {487};
bins bin_0011110_0110_value_486 = {486};
bins bin_0011110_0101_value_485 = {485};
bins bin_0011111_1111_value_511 = {511};
bins bin_0011111_1110_value_510 = {510};
bins bin_0011111_1101_value_509 = {509};
bins bin_0011111_1100_value_508 = {508};
bins bin_0011111_1011_value_507 = {507};
bins bin_0011111_1010_value_506 = {506};
bins bin_0011111_1001_value_505 = {505};
bins bin_0011111_1000_value_504 = {504};
bins bin_0011111_0111_value_503 = {503};
bins bin_0011111_0110_value_502 = {502};
bins bin_1101001_1111_value_1695 = {1695};
bins bin_1101001_1110_value_1694 = {1694};
bins bin_1101001_1101_value_1693 = {1693};
bins bin_1101001_1100_value_1692 = {1692};
bins bin_1101001_1011_value_1691 = {1691};
bins bin_1101001_1010_value_1690 = {1690};
bins bin_1101001_1001_value_1689 = {1689};
bins bin_1101001_1000_value_1688 = {1688};
bins bin_1101001_0111_value_1687 = {1687};
bins bin_1101001_0110_value_1686 = {1686};
bins bin_1101001_0101_value_1685 = {1685};
bins bin_1101001_0100_value_1684 = {1684};
bins bin_1101001_0011_value_1683 = {1683};
bins bin_1101001_0010_value_1682 = {1682};
bins bin_1101001_0001_value_1681 = {1681};
bins bin_1101001_0000_value_1680 = {1680};
bins bin_1101000_1111_value_1679 = {1679};
bins bin_1101000_1110_value_1678 = {1678};
bins bin_1101000_1101_value_1677 = {1677};
bins bin_1101000_1100_value_1676 = {1676};
bins bin_1101000_1011_value_1675 = {1675};
bins bin_1101000_1010_value_1674 = {1674};
bins bin_1101000_1001_value_1673 = {1673};
bins bin_1101000_1000_value_1672 = {1672};
bins bin_1101000_0111_value_1671 = {1671};
bins bin_1101000_0110_value_1670 = {1670};
bins bin_1101000_0101_value_1669 = {1669};
bins bin_1101000_0100_value_1668 = {1668};
bins bin_1101000_0011_value_1667 = {1667};
bins bin_1101000_0010_value_1666 = {1666};
bins bin_1101000_0001_value_1665 = {1665};
bins bin_1011110_1111_value_1519 = {1519};
bins bin_1011110_1110_value_1518 = {1518};
bins bin_1011110_1101_value_1517 = {1517};
bins bin_1011110_1100_value_1516 = {1516};
bins bin_1011110_1011_value_1515 = {1515};
bins bin_1011110_1010_value_1514 = {1514};
bins bin_1011110_1001_value_1513 = {1513};
bins bin_1011110_1000_value_1512 = {1512};
bins bin_1010110_1111_value_1391 = {1391};
bins bin_1010110_1110_value_1390 = {1390};
bins bin_1010111_1111_value_1407 = {1407};
bins bin_1010111_1110_value_1406 = {1406};
bins bin_1111000_1111_value_1935 = {1935};
bins bin_1111000_1110_value_1934 = {1934};
bins bin_1111000_1101_value_1933 = {1933};
bins bin_1111000_1100_value_1932 = {1932};
bins bin_1111000_1011_value_1931 = {1931};
bins bin_1111000_1010_value_1930 = {1930};
bins bin_1111000_1001_value_1929 = {1929};
bins bin_1111000_1000_value_1928 = {1928};
bins bin_1111000_0111_value_1927 = {1927};
bins bin_1111000_0110_value_1926 = {1926};
bins bin_1111000_0101_value_1925 = {1925};
bins bin_1111000_0100_value_1924 = {1924};
bins bin_1111000_0011_value_1923 = {1923};
bins bin_1111000_0010_value_1922 = {1922};
bins bin_1111000_0001_value_1921 = {1921};
bins bin_1111000_0000_value_1920 = {1920};
bins bin_1111001_1111_value_1951 = {1951};
bins bin_1111001_1110_value_1950 = {1950};
bins bin_1111001_1101_value_1949 = {1949};
bins bin_1111001_1100_value_1948 = {1948};
bins bin_1111001_1011_value_1947 = {1947};
bins bin_1111001_1010_value_1946 = {1946};
bins bin_1111001_1001_value_1945 = {1945};
bins bin_1111001_1000_value_1944 = {1944};
bins bin_1111001_0111_value_1943 = {1943};
bins bin_1111001_0110_value_1942 = {1942};
bins bin_1111001_0101_value_1941 = {1941};
bins bin_1111001_0100_value_1940 = {1940};
bins bin_1111001_0011_value_1939 = {1939};
bins bin_1111001_0010_value_1938 = {1938};
bins bin_1111001_0001_value_1937 = {1937};
bins bin_1111001_0000_value_1936 = {1936};
bins bin_1110001_1111_value_1823 = {1823};
bins bin_1110001_1110_value_1822 = {1822};
bins bin_1110001_1101_value_1821 = {1821};
bins bin_1110001_1100_value_1820 = {1820};
bins bin_1110001_1011_value_1819 = {1819};
bins bin_1110001_1010_value_1818 = {1818};
bins bin_1110001_1001_value_1817 = {1817};
bins bin_1110001_1000_value_1816 = {1816};
bins bin_1110001_0111_value_1815 = {1815};
bins bin_1110001_0110_value_1814 = {1814};
bins bin_1110001_0101_value_1813 = {1813};
bins bin_1110001_0100_value_1812 = {1812};
bins bin_1110001_0011_value_1811 = {1811};
bins bin_1110001_0010_value_1810 = {1810};
bins bin_1110001_0001_value_1809 = {1809};
bins bin_1110001_0000_value_1808 = {1808};
bins bin_1111011_1111_value_1983 = {1983};
bins bin_1111011_1110_value_1982 = {1982};
bins bin_1111011_1101_value_1981 = {1981};
bins bin_1111011_1100_value_1980 = {1980};
bins bin_1111011_1011_value_1979 = {1979};
bins bin_1111011_1010_value_1978 = {1978};
bins bin_1111011_1001_value_1977 = {1977};
bins bin_1111011_1000_value_1976 = {1976};
bins bin_1111011_0111_value_1975 = {1975};
bins bin_1111011_0110_value_1974 = {1974};
bins bin_1111011_0101_value_1973 = {1973};
bins bin_1111011_0100_value_1972 = {1972};
bins bin_1111011_0011_value_1971 = {1971};
bins bin_1111011_0010_value_1970 = {1970};
bins bin_1111011_0001_value_1969 = {1969};
bins bin_1111011_0000_value_1968 = {1968};
bins bin_1111010_1111_value_1967 = {1967};
bins bin_1111010_1110_value_1966 = {1966};
bins bin_1111010_1101_value_1965 = {1965};
bins bin_1111010_1100_value_1964 = {1964};
bins bin_1111010_1011_value_1963 = {1963};
bins bin_1111010_1010_value_1962 = {1962};
bins bin_1111010_1001_value_1961 = {1961};
bins bin_1111010_1000_value_1960 = {1960};
bins bin_1111010_0111_value_1959 = {1959};
bins bin_1111010_0110_value_1958 = {1958};
bins bin_1111010_0101_value_1957 = {1957};
bins bin_1111010_0100_value_1956 = {1956};
bins bin_1111010_0011_value_1955 = {1955};
bins bin_1111010_0010_value_1954 = {1954};
bins bin_1111010_0001_value_1953 = {1953};
bins bin_1111010_0000_value_1952 = {1952};
bins bin_1010101_1111_value_1375 = {1375};
bins bin_1110000_1111_value_1807 = {1807};
bins bin_1110000_1110_value_1806 = {1806};
bins bin_1110000_1101_value_1805 = {1805};
bins bin_1110000_1100_value_1804 = {1804};
bins bin_1110000_1011_value_1803 = {1803};
bins bin_1110000_1010_value_1802 = {1802};
bins bin_1110000_1001_value_1801 = {1801};
bins bin_1110000_1000_value_1800 = {1800};
bins bin_1110000_0111_value_1799 = {1799};
bins bin_1110000_0110_value_1798 = {1798};
bins bin_1110000_0101_value_1797 = {1797};
bins bin_1110000_0100_value_1796 = {1796};
bins bin_1110000_0011_value_1795 = {1795};
bins bin_1110000_0010_value_1794 = {1794};
bins bin_1110000_0001_value_1793 = {1793};
bins bin_1110000_0000_value_1792 = {1792};
bins bin_0000110_1111_value_111 = {111};
bins bin_0000110_1110_value_110 = {110};
bins bin_0000110_1101_value_109 = {109};
bins bin_0000110_1100_value_108 = {108};
bins bin_0000110_1011_value_107 = {107};
bins bin_0000110_1010_value_106 = {106};
bins bin_0000110_1001_value_105 = {105};
bins bin_0000110_1000_value_104 = {104};
bins bin_0000110_0111_value_103 = {103};
bins bin_0000110_0110_value_102 = {102};
bins bin_0000110_0101_value_101 = {101};
bins bin_0000110_0100_value_100 = {100};
bins bin_0000110_0011_value_99 = {99};
bins bin_0000110_0010_value_98 = {98};
bins bin_0000110_0001_value_97 = {97};
bins bin_0000110_0000_value_96 = {96};
bins bin_0000111_1111_value_127 = {127};
bins bin_0000111_1110_value_126 = {126};
bins bin_0000111_1101_value_125 = {125};
bins bin_0000111_1100_value_124 = {124};
bins bin_0000111_1011_value_123 = {123};
bins bin_0000111_1010_value_122 = {122};
bins bin_0000111_1001_value_121 = {121};
bins bin_0000111_1000_value_120 = {120};
bins bin_0000111_0111_value_119 = {119};
bins bin_0000111_0110_value_118 = {118};
bins bin_0000111_0101_value_117 = {117};
bins bin_0000111_0100_value_116 = {116};
bins bin_0000111_0011_value_115 = {115};
bins bin_0000111_0010_value_114 = {114};
bins bin_0000111_0001_value_113 = {113};
bins bin_0000111_0000_value_112 = {112};
bins bin_1100110_1111_value_1647 = {1647};
bins bin_1100110_1110_value_1646 = {1646};
bins bin_1100110_1101_value_1645 = {1645};
bins bin_1100110_1100_value_1644 = {1644};
bins bin_1100110_1011_value_1643 = {1643};
bins bin_1100110_1010_value_1642 = {1642};
bins bin_1100110_1001_value_1641 = {1641};
bins bin_1100110_1000_value_1640 = {1640};
bins bin_1100110_0111_value_1639 = {1639};
bins bin_1100110_0110_value_1638 = {1638};
bins bin_1100110_0101_value_1637 = {1637};
bins bin_1100110_0100_value_1636 = {1636};
bins bin_1100110_0011_value_1635 = {1635};
bins bin_1100110_0010_value_1634 = {1634};
bins bin_1100111_1111_value_1663 = {1663};
bins bin_1100111_1110_value_1662 = {1662};
bins bin_1100111_1101_value_1661 = {1661};
bins bin_1100111_1100_value_1660 = {1660};
bins bin_1100111_1011_value_1659 = {1659};
bins bin_1100111_1010_value_1658 = {1658};
bins bin_1100111_1001_value_1657 = {1657};
bins bin_1100111_1000_value_1656 = {1656};
bins bin_1100111_0111_value_1655 = {1655};
bins bin_1100111_0110_value_1654 = {1654};
bins bin_1100111_0101_value_1653 = {1653};
bins bin_1100111_0100_value_1652 = {1652};
bins bin_1100111_0011_value_1651 = {1651};
bins bin_1100111_0010_value_1650 = {1650};
bins bin_1101100_1111_value_1743 = {1743};
bins bin_1101100_1110_value_1742 = {1742};
bins bin_1101100_1101_value_1741 = {1741};
bins bin_1101100_1100_value_1740 = {1740};
bins bin_1101100_1011_value_1739 = {1739};
bins bin_1101100_1010_value_1738 = {1738};
bins bin_1101100_1001_value_1737 = {1737};
bins bin_1101100_1000_value_1736 = {1736};
bins bin_1101100_0111_value_1735 = {1735};
bins bin_1101100_0110_value_1734 = {1734};
bins bin_1101100_0101_value_1733 = {1733};
bins bin_1101100_0100_value_1732 = {1732};
bins bin_1101100_0011_value_1731 = {1731};
bins bin_1101100_0010_value_1730 = {1730};
bins bin_1101100_0001_value_1729 = {1729};
bins bin_1101100_0000_value_1728 = {1728};
bins bin_1101101_1111_value_1759 = {1759};
bins bin_1101101_1110_value_1758 = {1758};
bins bin_1101101_1101_value_1757 = {1757};
bins bin_1101101_1100_value_1756 = {1756};
bins bin_1101101_1011_value_1755 = {1755};
bins bin_1101101_1010_value_1754 = {1754};
bins bin_1101101_1001_value_1753 = {1753};
bins bin_1101101_1000_value_1752 = {1752};
bins bin_1101101_0111_value_1751 = {1751};
bins bin_1101101_0110_value_1750 = {1750};
bins bin_1101101_0101_value_1749 = {1749};
bins bin_1101101_0100_value_1748 = {1748};
bins bin_1101101_0011_value_1747 = {1747};
bins bin_1101101_0010_value_1746 = {1746};
bins bin_1101101_0001_value_1745 = {1745};
bins bin_1101101_0000_value_1744 = {1744};
bins bin_0011101_1111_value_479 = {479};
bins bin_0011101_1110_value_478 = {478};
bins bin_0011101_1101_value_477 = {477};
bins bin_0011101_1100_value_476 = {476};
bins bin_0011101_1011_value_475 = {475};
bins bin_0011101_1010_value_474 = {474};
bins bin_0011101_1001_value_473 = {473};
bins bin_0011101_1000_value_472 = {472};
bins bin_0011101_0111_value_471 = {471};
bins bin_0011101_0110_value_470 = {470};
bins bin_0011101_0101_value_469 = {469};
bins bin_0011100_1111_value_463 = {463};
bins bin_0011100_1110_value_462 = {462};
bins bin_0011100_1101_value_461 = {461};
bins bin_0011100_1100_value_460 = {460};
bins bin_0011100_1011_value_459 = {459};
bins bin_0011100_1010_value_458 = {458};
bins bin_0011100_1001_value_457 = {457};
bins bin_0011100_1000_value_456 = {456};
bins bin_0011100_0111_value_455 = {455};
bins bin_0011100_0110_value_454 = {454};
bins bin_0011100_0101_value_453 = {453};
bins bin_0011100_0100_value_452 = {452};
bins bin_0000101_1111_value_95 = {95};
bins bin_0000101_1110_value_94 = {94};
bins bin_0000101_1101_value_93 = {93};
bins bin_0000101_1100_value_92 = {92};
bins bin_0000101_1011_value_91 = {91};
bins bin_0000101_1010_value_90 = {90};
bins bin_0000101_1001_value_89 = {89};
bins bin_0000101_1000_value_88 = {88};
bins bin_0000101_0111_value_87 = {87};
bins bin_0000101_0110_value_86 = {86};
bins bin_0000101_0101_value_85 = {85};
bins bin_0000101_0100_value_84 = {84};
bins bin_0000101_0011_value_83 = {83};
bins bin_0000101_0010_value_82 = {82};
bins bin_0000101_0001_value_81 = {81};
bins bin_0000101_0000_value_80 = {80};
bins bin_0000100_1111_value_79 = {79};
bins bin_0000100_1110_value_78 = {78};
bins bin_0000100_1101_value_77 = {77};
bins bin_0000100_1100_value_76 = {76};
bins bin_0000100_1011_value_75 = {75};
bins bin_0000100_1010_value_74 = {74};
bins bin_0000100_1001_value_73 = {73};
bins bin_0000100_1000_value_72 = {72};
bins bin_0000100_0111_value_71 = {71};
bins bin_0000100_0110_value_70 = {70};
bins bin_0000100_0101_value_69 = {69};
bins bin_0000100_0100_value_68 = {68};
bins bin_0000100_0011_value_67 = {67};
bins bin_0000100_0010_value_66 = {66};
bins bin_0000100_0001_value_65 = {65};
bins bin_0000100_0000_value_64 = {64};
bins bin_0011000_1111_value_399 = {399};
bins bin_0011000_1110_value_398 = {398};
bins bin_0011000_1101_value_397 = {397};
bins bin_0011000_1100_value_396 = {396};
bins bin_0011000_1011_value_395 = {395};
bins bin_0011000_1010_value_394 = {394};
bins bin_0011000_1001_value_393 = {393};
bins bin_0011000_1000_value_392 = {392};
bins bin_0011000_0111_value_391 = {391};
bins bin_0011000_0110_value_390 = {390};
bins bin_0011000_0101_value_389 = {389};
bins bin_0011000_0100_value_388 = {388};
bins bin_0011000_0011_value_387 = {387};
bins bin_0011000_0010_value_386 = {386};
bins bin_0011000_0001_value_385 = {385};
bins bin_0011001_1111_value_415 = {415};
bins bin_0011001_1110_value_414 = {414};
bins bin_0011001_1101_value_413 = {413};
bins bin_0011001_1100_value_412 = {412};
bins bin_0011001_1011_value_411 = {411};
bins bin_0011001_1010_value_410 = {410};
bins bin_0011001_1001_value_409 = {409};
bins bin_0011001_1000_value_408 = {408};
bins bin_0011001_0111_value_407 = {407};
bins bin_0011001_0110_value_406 = {406};
bins bin_0011001_0101_value_405 = {405};
bins bin_0011001_0100_value_404 = {404};
bins bin_0011001_0011_value_403 = {403};
bins bin_0011001_0010_value_402 = {402};
bins bin_0010010_1111_value_303 = {303};
bins bin_0010010_1110_value_302 = {302};
bins bin_0010010_1101_value_301 = {301};
bins bin_0010010_1100_value_300 = {300};
bins bin_0010010_1011_value_299 = {299};
bins bin_0010010_1010_value_298 = {298};
bins bin_0010010_1001_value_297 = {297};
bins bin_0010010_1000_value_296 = {296};
bins bin_0010010_0111_value_295 = {295};
bins bin_0010010_0110_value_294 = {294};
bins bin_0010010_0101_value_293 = {293};
bins bin_0010010_0100_value_292 = {292};
bins bin_0010010_0011_value_291 = {291};
bins bin_0010010_0010_value_290 = {290};
bins bin_0010010_0001_value_289 = {289};
bins bin_0010010_0000_value_288 = {288};
bins bin_0010011_1111_value_319 = {319};
bins bin_0010011_1110_value_318 = {318};
bins bin_0010011_1101_value_317 = {317};
bins bin_0010011_1100_value_316 = {316};
bins bin_0010011_1011_value_315 = {315};
bins bin_0010011_1010_value_314 = {314};
bins bin_0010011_1001_value_313 = {313};
bins bin_0010011_1000_value_312 = {312};
bins bin_0010011_0111_value_311 = {311};
bins bin_0010011_0110_value_310 = {310};
bins bin_0010011_0101_value_309 = {309};
bins bin_0010011_0100_value_308 = {308};
bins bin_0010011_0011_value_307 = {307};
bins bin_0010011_0010_value_306 = {306};
bins bin_0010011_0001_value_305 = {305};
bins bin_0010011_0000_value_304 = {304};
bins bin_0001010_1111_value_175 = {175};
bins bin_0001010_1110_value_174 = {174};
bins bin_0001010_1101_value_173 = {173};
bins bin_0001010_1100_value_172 = {172};
bins bin_0001010_1011_value_171 = {171};
bins bin_0001010_1010_value_170 = {170};
bins bin_0001010_1001_value_169 = {169};
bins bin_0001010_1000_value_168 = {168};
bins bin_0001010_0111_value_167 = {167};
bins bin_0001010_0110_value_166 = {166};
bins bin_0001010_0101_value_165 = {165};
bins bin_0001010_0100_value_164 = {164};
bins bin_0001010_0011_value_163 = {163};
bins bin_0001010_0010_value_162 = {162};
bins bin_0001010_0001_value_161 = {161};
bins bin_0001010_0000_value_160 = {160};
bins bin_0001011_1111_value_191 = {191};
bins bin_0001011_1110_value_190 = {190};
bins bin_0001011_1101_value_189 = {189};
bins bin_0001011_1100_value_188 = {188};
bins bin_0001011_1011_value_187 = {187};
bins bin_0001011_1010_value_186 = {186};
bins bin_0001011_1001_value_185 = {185};
bins bin_0001011_1000_value_184 = {184};
bins bin_0001011_0111_value_183 = {183};
bins bin_0001011_0110_value_182 = {182};
bins bin_0001011_0101_value_181 = {181};
bins bin_0001011_0100_value_180 = {180};
bins bin_0001011_0011_value_179 = {179};
bins bin_0001011_0010_value_178 = {178};
bins bin_0001011_0001_value_177 = {177};
bins bin_0001011_0000_value_176 = {176};
bins bin_1100101_1111_value_1631 = {1631};
bins bin_1100101_1110_value_1630 = {1630};
bins bin_1100101_1101_value_1629 = {1629};
bins bin_1100101_1100_value_1628 = {1628};
bins bin_1100101_1011_value_1627 = {1627};
bins bin_1100101_1010_value_1626 = {1626};
bins bin_1100101_1001_value_1625 = {1625};
bins bin_1100101_1000_value_1624 = {1624};
bins bin_1100101_0111_value_1623 = {1623};
bins bin_1100101_0110_value_1622 = {1622};
bins bin_1100101_0101_value_1621 = {1621};
bins bin_1100101_0100_value_1620 = {1620};
bins bin_1100101_0011_value_1619 = {1619};
bins bin_1100100_1111_value_1615 = {1615};
bins bin_1100100_1110_value_1614 = {1614};
bins bin_1100100_1101_value_1613 = {1613};
bins bin_1100100_1100_value_1612 = {1612};
bins bin_1100100_1011_value_1611 = {1611};
bins bin_1100100_1010_value_1610 = {1610};
bins bin_1100100_1001_value_1609 = {1609};
bins bin_1100100_1000_value_1608 = {1608};
bins bin_1100100_0111_value_1607 = {1607};
bins bin_1100100_0110_value_1606 = {1606};
bins bin_1100100_0101_value_1605 = {1605};
bins bin_1100100_0100_value_1604 = {1604};
bins bin_0100010_1111_value_559 = {559};
bins bin_0100010_1110_value_558 = {558};
bins bin_0100010_1101_value_557 = {557};
bins bin_0100010_1100_value_556 = {556};
bins bin_0100010_1011_value_555 = {555};
bins bin_0100010_1010_value_554 = {554};
bins bin_0100010_1001_value_553 = {553};
bins bin_0100011_1111_value_575 = {575};
bins bin_0100011_1110_value_574 = {574};
bins bin_0100011_1101_value_573 = {573};
bins bin_0100011_1100_value_572 = {572};
bins bin_0100011_1011_value_571 = {571};
bins bin_0100011_1010_value_570 = {570};
bins bin_0100011_1001_value_569 = {569};
bins bin_1101111_1111_value_1791 = {1791};
bins bin_1101111_1110_value_1790 = {1790};
bins bin_1101111_1101_value_1789 = {1789};
bins bin_1101111_1100_value_1788 = {1788};
bins bin_1101111_1011_value_1787 = {1787};
bins bin_1101111_1010_value_1786 = {1786};
bins bin_1101111_1001_value_1785 = {1785};
bins bin_1101111_1000_value_1784 = {1784};
bins bin_1101111_0111_value_1783 = {1783};
bins bin_1101111_0110_value_1782 = {1782};
bins bin_1101111_0101_value_1781 = {1781};
bins bin_1101111_0100_value_1780 = {1780};
bins bin_1101111_0011_value_1779 = {1779};
bins bin_1101111_0010_value_1778 = {1778};
bins bin_1101111_0001_value_1777 = {1777};
bins bin_1101111_0000_value_1776 = {1776};
bins bin_1101110_1111_value_1775 = {1775};
bins bin_1101110_1110_value_1774 = {1774};
bins bin_1101110_1101_value_1773 = {1773};
bins bin_1101110_1100_value_1772 = {1772};
bins bin_1101110_1011_value_1771 = {1771};
bins bin_1101110_1010_value_1770 = {1770};
bins bin_1101110_1001_value_1769 = {1769};
bins bin_1101110_1000_value_1768 = {1768};
bins bin_1101110_0111_value_1767 = {1767};
bins bin_1101110_0110_value_1766 = {1766};
bins bin_1101110_0101_value_1765 = {1765};
bins bin_1101110_0100_value_1764 = {1764};
bins bin_1101110_0011_value_1763 = {1763};
bins bin_1101110_0010_value_1762 = {1762};
bins bin_1101110_0001_value_1761 = {1761};
bins bin_1101110_0000_value_1760 = {1760};
bins bin_1110010_1111_value_1839 = {1839};
bins bin_1110010_1110_value_1838 = {1838};
bins bin_1110010_1101_value_1837 = {1837};
bins bin_1110010_1100_value_1836 = {1836};
bins bin_1110010_1011_value_1835 = {1835};
bins bin_1110010_1010_value_1834 = {1834};
bins bin_1110010_1001_value_1833 = {1833};
bins bin_1110010_1000_value_1832 = {1832};
bins bin_1110010_0111_value_1831 = {1831};
bins bin_1110010_0110_value_1830 = {1830};
bins bin_1110010_0101_value_1829 = {1829};
bins bin_1110010_0100_value_1828 = {1828};
bins bin_1110010_0011_value_1827 = {1827};
bins bin_1110010_0010_value_1826 = {1826};
bins bin_1110010_0001_value_1825 = {1825};
bins bin_1110010_0000_value_1824 = {1824};
bins bin_1110011_1111_value_1855 = {1855};
bins bin_1110011_1110_value_1854 = {1854};
bins bin_1110011_1101_value_1853 = {1853};
bins bin_1110011_1100_value_1852 = {1852};
bins bin_1110011_1011_value_1851 = {1851};
bins bin_1110011_1010_value_1850 = {1850};
bins bin_1110011_1001_value_1849 = {1849};
bins bin_1110011_1000_value_1848 = {1848};
bins bin_1110011_0111_value_1847 = {1847};
bins bin_1110011_0110_value_1846 = {1846};
bins bin_1110011_0101_value_1845 = {1845};
bins bin_1110011_0100_value_1844 = {1844};
bins bin_1110011_0011_value_1843 = {1843};
bins bin_1110011_0010_value_1842 = {1842};
bins bin_1110011_0001_value_1841 = {1841};
bins bin_1110011_0000_value_1840 = {1840};
bins bin_1110100_1111_value_1871 = {1871};
bins bin_1110100_1110_value_1870 = {1870};
bins bin_1110100_1101_value_1869 = {1869};
bins bin_1110100_1100_value_1868 = {1868};
bins bin_1110100_1011_value_1867 = {1867};
bins bin_1110100_1010_value_1866 = {1866};
bins bin_1110100_1001_value_1865 = {1865};
bins bin_1110100_1000_value_1864 = {1864};
bins bin_1110100_0111_value_1863 = {1863};
bins bin_1110100_0110_value_1862 = {1862};
bins bin_1110100_0101_value_1861 = {1861};
bins bin_1110100_0100_value_1860 = {1860};
bins bin_1110100_0011_value_1859 = {1859};
bins bin_1110100_0010_value_1858 = {1858};
bins bin_1110100_0001_value_1857 = {1857};
bins bin_1110100_0000_value_1856 = {1856};
bins bin_1110101_1111_value_1887 = {1887};
bins bin_1110101_1110_value_1886 = {1886};
bins bin_1110101_1101_value_1885 = {1885};
bins bin_1110101_1100_value_1884 = {1884};
bins bin_1110101_1011_value_1883 = {1883};
bins bin_1110101_1010_value_1882 = {1882};
bins bin_1110101_1001_value_1881 = {1881};
bins bin_1110101_1000_value_1880 = {1880};
bins bin_1110101_0111_value_1879 = {1879};
bins bin_1110101_0110_value_1878 = {1878};
bins bin_1110101_0101_value_1877 = {1877};
bins bin_1110101_0100_value_1876 = {1876};
bins bin_1110101_0011_value_1875 = {1875};
bins bin_1110101_0010_value_1874 = {1874};
bins bin_1110101_0001_value_1873 = {1873};
bins bin_1110101_0000_value_1872 = {1872};
bins bin_0011011_1111_value_447 = {447};
bins bin_0011011_1110_value_446 = {446};
bins bin_0011011_1101_value_445 = {445};
bins bin_0011011_1100_value_444 = {444};
bins bin_0011011_1011_value_443 = {443};
bins bin_0011011_1010_value_442 = {442};
bins bin_0011011_1001_value_441 = {441};
bins bin_0011011_1000_value_440 = {440};
bins bin_0011011_0111_value_439 = {439};
bins bin_0011011_0110_value_438 = {438};
bins bin_0011011_0101_value_437 = {437};
bins bin_0011011_0100_value_436 = {436};
bins bin_0011011_0011_value_435 = {435};
bins bin_0011010_1111_value_431 = {431};
bins bin_0011010_1110_value_430 = {430};
bins bin_0011010_1101_value_429 = {429};
bins bin_0011010_1100_value_428 = {428};
bins bin_0011010_1011_value_427 = {427};
bins bin_0011010_1010_value_426 = {426};
bins bin_0011010_1001_value_425 = {425};
bins bin_0011010_1000_value_424 = {424};
bins bin_0011010_0111_value_423 = {423};
bins bin_0011010_0110_value_422 = {422};
bins bin_0011010_0101_value_421 = {421};
bins bin_0011010_0100_value_420 = {420};
bins bin_0011010_0011_value_419 = {419};
bins bin_0011010_0010_value_418 = {418};
bins bin_0010001_1111_value_287 = {287};
bins bin_0010001_1110_value_286 = {286};
bins bin_0010001_1101_value_285 = {285};
bins bin_0010001_1100_value_284 = {284};
bins bin_0010001_1011_value_283 = {283};
bins bin_0010001_1010_value_282 = {282};
bins bin_0010001_1001_value_281 = {281};
bins bin_0010001_1000_value_280 = {280};
bins bin_0010001_0111_value_279 = {279};
bins bin_0010001_0110_value_278 = {278};
bins bin_0010001_0101_value_277 = {277};
bins bin_0010001_0100_value_276 = {276};
bins bin_0010001_0011_value_275 = {275};
bins bin_0010001_0010_value_274 = {274};
bins bin_0010001_0001_value_273 = {273};
bins bin_0010001_0000_value_272 = {272};
bins bin_0010000_1111_value_271 = {271};
bins bin_0010000_1110_value_270 = {270};
bins bin_0010000_1101_value_269 = {269};
bins bin_0010000_1100_value_268 = {268};
bins bin_0010000_1011_value_267 = {267};
bins bin_0010000_1010_value_266 = {266};
bins bin_0010000_1001_value_265 = {265};
bins bin_0010000_1000_value_264 = {264};
bins bin_0010000_0111_value_263 = {263};
bins bin_0010000_0110_value_262 = {262};
bins bin_0010000_0101_value_261 = {261};
bins bin_0010000_0100_value_260 = {260};
bins bin_0010000_0011_value_259 = {259};
bins bin_0010000_0010_value_258 = {258};
bins bin_0010000_0001_value_257 = {257};
bins bin_0010000_0000_value_256 = {256};
bins bin_0001001_1111_value_159 = {159};
bins bin_0001001_1110_value_158 = {158};
bins bin_0001001_1101_value_157 = {157};
bins bin_0001001_1100_value_156 = {156};
bins bin_0001001_1011_value_155 = {155};
bins bin_0001001_1010_value_154 = {154};
bins bin_0001001_1001_value_153 = {153};
bins bin_0001001_1000_value_152 = {152};
bins bin_0001001_0111_value_151 = {151};
bins bin_0001001_0110_value_150 = {150};
bins bin_0001001_0101_value_149 = {149};
bins bin_0001001_0100_value_148 = {148};
bins bin_0001001_0011_value_147 = {147};
bins bin_0001001_0010_value_146 = {146};
bins bin_0001001_0001_value_145 = {145};
bins bin_0001001_0000_value_144 = {144};
bins bin_0001000_1111_value_143 = {143};
bins bin_0001000_1110_value_142 = {142};
bins bin_0001000_1101_value_141 = {141};
bins bin_0001000_1100_value_140 = {140};
bins bin_0001000_1011_value_139 = {139};
bins bin_0001000_1010_value_138 = {138};
bins bin_0001000_1001_value_137 = {137};
bins bin_0001000_1000_value_136 = {136};
bins bin_0001000_0111_value_135 = {135};
bins bin_0001000_0110_value_134 = {134};
bins bin_0001000_0101_value_133 = {133};
bins bin_0001000_0100_value_132 = {132};
bins bin_0001000_0011_value_131 = {131};
bins bin_0001000_0010_value_130 = {130};
bins bin_0001000_0001_value_129 = {129};
bins bin_0100001_1111_value_543 = {543};
bins bin_0100001_1110_value_542 = {542};
bins bin_0100001_1101_value_541 = {541};
bins bin_0100001_1100_value_540 = {540};
bins bin_0100001_1011_value_539 = {539};
bins bin_0100001_1010_value_538 = {538};
bins bin_0100001_1001_value_537 = {537};
bins bin_0100001_1000_value_536 = {536};
bins bin_0100000_1111_value_527 = {527};
bins bin_0100000_1110_value_526 = {526};
bins bin_0100000_1101_value_525 = {525};
bins bin_0100000_1100_value_524 = {524};
bins bin_0100000_1011_value_523 = {523};
bins bin_0100000_1010_value_522 = {522};
bins bin_0100000_1001_value_521 = {521};
bins bin_0100000_1000_value_520 = {520};
bins bin_0100000_0111_value_519 = {519};
bins bin_1011010_1111_value_1455 = {1455};
bins bin_1011010_1110_value_1454 = {1454};
bins bin_1011010_1101_value_1453 = {1453};
bins bin_1011010_1100_value_1452 = {1452};
bins bin_1011010_1011_value_1451 = {1451};
bins bin_1011011_1111_value_1471 = {1471};
bins bin_1011011_1110_value_1470 = {1470};
bins bin_1011011_1101_value_1469 = {1469};
bins bin_1011011_1100_value_1468 = {1468};
bins bin_1011011_1011_value_1467 = {1467};
bins bin_1011011_1010_value_1466 = {1466};
bins bin_0101000_1111_value_655 = {655};
bins bin_0101000_1110_value_654 = {654};
bins bin_0101000_1101_value_653 = {653};
bins bin_0101001_1111_value_671 = {671};
bins bin_0101001_1110_value_670 = {670};
bins bin_1110111_1111_value_1919 = {1919};
bins bin_1110111_1110_value_1918 = {1918};
bins bin_1110111_1101_value_1917 = {1917};
bins bin_1110111_1100_value_1916 = {1916};
bins bin_1110111_1011_value_1915 = {1915};
bins bin_1110111_1010_value_1914 = {1914};
bins bin_1110111_1001_value_1913 = {1913};
bins bin_1110111_1000_value_1912 = {1912};
bins bin_1110111_0111_value_1911 = {1911};
bins bin_1110111_0110_value_1910 = {1910};
bins bin_1110111_0101_value_1909 = {1909};
bins bin_1110111_0100_value_1908 = {1908};
bins bin_1110111_0011_value_1907 = {1907};
bins bin_1110111_0010_value_1906 = {1906};
bins bin_1110111_0001_value_1905 = {1905};
bins bin_1110111_0000_value_1904 = {1904};
bins bin_1110110_1111_value_1903 = {1903};
bins bin_1110110_1110_value_1902 = {1902};
bins bin_1110110_1101_value_1901 = {1901};
bins bin_1110110_1100_value_1900 = {1900};
bins bin_1110110_1011_value_1899 = {1899};
bins bin_1110110_1010_value_1898 = {1898};
bins bin_1110110_1001_value_1897 = {1897};
bins bin_1110110_1000_value_1896 = {1896};
bins bin_1110110_0111_value_1895 = {1895};
bins bin_1110110_0110_value_1894 = {1894};
bins bin_1110110_0101_value_1893 = {1893};
bins bin_1110110_0100_value_1892 = {1892};
bins bin_1110110_0011_value_1891 = {1891};
bins bin_1110110_0010_value_1890 = {1890};
bins bin_1110110_0001_value_1889 = {1889};
bins bin_1110110_0000_value_1888 = {1888};
}
// Cross coverage
endgroup : lut_2048_addr_cov
Out of these 1066 cells following 5 cells were left uninitialized in this famous bug. Row and columns of address of uninitialized cells were following. You can spot them in generated functional coverage code.
Tool curiosity can create an automatic covergroups for you based on your input in python. Tool can do much more than this. Check out our product page for more details.