Constraints describe a set of legal assignments. The solver picks one member of that set. Everything in this topic follows from separating those two jobs: the standard fixes the set, and each tool picks from it in its own way.
The earlier topics taught each operator. This one goes under them, and every lesson puts the standard's answer beside what Verilator 5.048 measured, because the two differ more often here than anywhere else in the course.
Lesson | What it adds | Builds on |
|---|---|---|
Tuple counting, why a uniform pick is not uniform per field, and what joins one solve. | ||
What pushes back, where push-back stops at a function call, and three fixes for a starved field. | ||
Constrained cycles, covering pairs, randc beside rand, and history windows. | ||
Costly shapes, measuring before fixing, and three rewrites that stay legal. | Everything above | |
What is portable, the measured differences in one table, and portable checks. |
randomize() call?Only that the result is one of the twelve. The standard asks for a uniform pick, but tools only approximate it, so checks assert legality and compare shares with a band.