1. A system for iteratively selecting coverage assignments from a plurality of candidate coverage assignments, the system comprising: a plurality of memory cells; and a processor configured to: generate a candidate error-correction product code based on a selected coverage assignment and at least one input, encode data based on the generated candidate error-correction product code, compare a performance level of the encoded data to a desired performance level, and if the desired performance level is satisfied by the encoded data, store the selected coverage assignment in the plurality of memory cells and terminate the iterative selection of coverage assignments from the plurality of candidate coverage assignments.