You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Describe the bug
Hash collisions among data points are causing fewer data points being reported than specified in samples.textproto.
The timing characterization client relies on hashing the sample specs to determine which sample's data point will be collected [1]. However, for the generated hashes, the element count and result element count of array ops are not taken into account [2]. This causes a problem that, if the samples of two arrays are the same except for the element counts, the result of one of them will be overwritten by the other.
Currently, the bug affects the data point generation of kArrayIndex, in which the sample [3] and sample [4] produce the same hash. Both have the same result widths and input operand widths, while the element counts are different. As a result, only one of the samples is being written to the data points output file.
Note that, the DataPoint proto will be translated to SampleSpec proto before the timing information is collected. The translation function [5] does not take into account the element counts and the result element counts as well. Note that the Operand proto does not have the result element count field [6].
I believe a fix for this would involve changing Operand proto.
To Reproduce
Follow the procedure for generating data points for any of the PDKs.
Expected behavior
[3] and [4] should be two distinct data points.
Describe the bug
Hash collisions among data points are causing fewer data points being reported than specified in samples.textproto.
The timing characterization client relies on hashing the sample specs to determine which sample's data point will be collected [1]. However, for the generated hashes, the element count and result element count of array ops are not taken into account [2]. This causes a problem that, if the samples of two arrays are the same except for the element counts, the result of one of them will be overwritten by the other.
Currently, the bug affects the data point generation of
kArrayIndex
, in which the sample [3] and sample [4] produce the same hash. Both have the same result widths and input operand widths, while the element counts are different. As a result, only one of the samples is being written to the data points output file.Note that, the DataPoint proto will be translated to SampleSpec proto before the timing information is collected. The translation function [5] does not take into account the element counts and the result element counts as well. Note that the Operand proto does not have the result element count field [6].
I believe a fix for this would involve changing Operand proto.
To Reproduce
Follow the procedure for generating data points for any of the PDKs.
Expected behavior
[3] and [4] should be two distinct data points.
Additional context
[1]
xls/xls/synthesis/timing_characterization_client.py
Line 330 in 35ccaa5
[2]
xls/xls/delay_model/delay_model_utils.py
Lines 51 to 58 in 35ccaa5
[3]
xls/xls/delay_model/samples.textproto
Lines 1230 to 1237 in 35ccaa5
[4]
xls/xls/delay_model/samples.textproto
Lines 1285 to 1295 in 35ccaa5
[5]
xls/xls/delay_model/delay_model_utils.py
Lines 61 to 74 in 35ccaa5
[6]
xls/xls/delay_model/delay_model.proto
Lines 48 to 78 in 35ccaa5
The text was updated successfully, but these errors were encountered: