When using the Ten Gigabit Ethernet PCS/PMA v2.5 core for 10GBASE-KR, the core can incorrectly set the training zero coefficient.
This will only occur if the c(-1) coefficient is set to 21..24 (which is actually -21..-24) while the c(+1) coefficient is set to 31..28 (actually -31..-28), respectively.
Since the zero coefficient min value is calculated from the equation c(0).min = (51 - |c(-1)| - |c(+1)|), when |c(-1)| goes above its correct max value of 20, and |c(+1)| is at or near its maximum, c(0).min can be negative, which results in a large positive number from the unsigned calculation in the core RTL.
For example, this can happen if c(+1) = 29 and c(-1) = (illegally!) 23, c(0).min = 51 - 29 - 23 = -1 = 127 in the 7-bit field that is used to hold the c(0).min value.
It can result in the zero coefficient being set to its max value instead of its min value.
This is scheduled to be fixed in v2.6 of the core.
Please note that setting the |c(-1)| coefficient to 21..24 will have no effect on the action of that coefficient.
It will behave as if it was set to 20.
Similarly, setting the c(0) coefficient to > 80 will behave exactly the same as if it was set to 80.