FA-89306 / Digital logic simulation / Open access
Gated clock edges counted as high samples · case 01
A gated pulse spanning several samples is counted several times.
ROOT CAUSE
The edge count sums high samples instead of counting 0-to-1 transitions.
VERIFIED REPAIR
Count only low-to-high transitions of the gated clock.
Unsuccessful approach: Counting every transition includes falling edges.
Case contract
Input [samples] of [clk, en, te]. The enable latch starts at 0 and is transparent while clk is 0 (q = en or te), holding while clk is 1. The gated clock is clk and q. Return [gated clock per sample, number of gated rising edges counting from an initial low].
Why this case matters
Integrated clock gating cells rely on a low-transparent latch to avoid glitches; simulation models that skip the latch show clock pulses that silicon never produces.
1 / The failure
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(samples):
q = 0
g = []
for clk, en, te in samples:
if clk == 0:
q = int(en or te)
g.append(int(clk == 1 and q == 1))
edges = sum(g)
return [g, edges]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1], 2]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [1, 0, 0]]], [[0, 0, 1, 0, 0], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1], 2])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1], 3]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 1], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1], 3])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1], 4]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [1, 0, 0]]], [[0, 0, 1, 0, 0], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1, 0, 1], 4])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 5]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 1], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 5])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 6]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [1, 0, 0]]], [[0, 0, 1, 0, 0], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 6])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| enable drops while clock high | [[0, 1, 1, 0, 0], 2] | [[0, 1, 1, 0, 0], 1] | Failed |
| enable rises while clock high | [[0, 0, 0, 0, 1, 0, 1], 2] | [[0, 0, 0, 0, 1, 0, 1], 2] | Passed |
| test enable forces clock | [[0, 1, 0, 0], 1] | [[0, 1, 0, 0], 1] | Passed |
| starts with clock high | [[0, 0, 1, 0, 0], 1] | [[0, 0, 1, 0, 0], 1] | Passed |
| test enable drops mid pulse | [[0, 1, 1, 0], 2] | [[0, 1, 1, 0], 1] | Failed |
| steady enable | [[0, 1, 0, 1], 2] | [[0, 1, 0, 1], 2] | Passed |
SHA-256 / 3aa76e785eeff10f9326629fdada2c3042ef38f977719a04b2532d9ef6ce5477
2 / The unsuccessful fix
Exit 1"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(samples):
q = 0
g = []
for clk, en, te in samples:
if clk == 0:
q = int(en or te)
g.append(int(clk == 1 and q == 1))
edges = sum(1 for a, b in zip([0] + g, g) if a != b)
return [g, edges]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1], 2]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [1, 0, 0]]], [[0, 0, 1, 0, 0], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1], 2])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1], 3]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 1], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1], 3])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1], 4]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [1, 0, 0]]], [[0, 0, 1, 0, 0], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1, 0, 1], 4])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 5]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 1], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 5])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 6]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [1, 0, 0]]], [[0, 0, 1, 0, 0], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 6])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| enable drops while clock high | [[0, 1, 1, 0, 0], 2] | [[0, 1, 1, 0, 0], 1] | Failed |
| enable rises while clock high | [[0, 0, 0, 0, 1, 0, 1], 3] | [[0, 0, 0, 0, 1, 0, 1], 2] | Failed |
| test enable forces clock | [[0, 1, 0, 0], 2] | [[0, 1, 0, 0], 1] | Failed |
| starts with clock high | [[0, 0, 1, 0, 0], 2] | [[0, 0, 1, 0, 0], 1] | Failed |
| test enable drops mid pulse | [[0, 1, 1, 0], 2] | [[0, 1, 1, 0], 1] | Failed |
| steady enable | [[0, 1, 0, 1], 3] | [[0, 1, 0, 1], 2] | Failed |
SHA-256 / f80c32a80c4753ad24104a53b86b13d5f62d2990c1a0f3f19bfad785a7447f06
3 / The verified repair
Exit 0"""Failure Map reference implementation. Python standard library only."""
import json
N = 1
observations = []
def solve(samples):
q = 0
g = []
for clk, en, te in samples:
if clk == 0:
q = int(en or te)
g.append(int(clk == 1 and q == 1))
edges = sum(1 for a, b in zip([0] + g, g) if a == 0 and b == 1)
return [g, edges]
def check(label, actual, expected):
observations.append({"check": label, "actual": actual, "expected": expected, "passed": actual == expected})
fixtures = [[('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1], 2]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [1, 0, 0]]], [[0, 0, 1, 0, 0], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1], 2])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1], 3]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 1], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1], 3])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1], 4]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [1, 0, 0]]], [[0, 0, 1, 0, 0], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1, 0, 1], 4])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 5]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 1], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 5])], [('enable drops while clock high', [[[0, 1, 0], [1, 1, 0], [1, 0, 0], [0, 0, 0], [1, 0, 0]]], [[0, 1, 1, 0, 0], 1]), ('enable rises while clock high', [[[0, 0, 0], [1, 0, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 0, 0, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 6]), ('test enable forces clock', [[[0, 0, 1], [1, 0, 1], [0, 0, 0], [1, 0, 0]]], [[0, 1, 0, 0], 1]), ('starts with clock high', [[[1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 0, 0], [1, 0, 0]]], [[0, 0, 1, 0, 0], 1]), ('test enable drops mid pulse', [[[0, 0, 1], [1, 0, 1], [1, 0, 0], [0, 0, 0]]], [[0, 1, 1, 0], 1]), ('steady enable', [[[0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0], [0, 1, 0], [1, 1, 0]]], [[0, 1, 0, 1, 0, 1, 0, 1, 0, 1, 0, 1], 6])]]
for label, args, expected in fixtures[N-1]:
check(label, solve(*args), expected)
print(json.dumps({"observations": observations, "passed": all(x["passed"] for x in observations)}, ensure_ascii=False))
raise SystemExit(0 if all(x["passed"] for x in observations) else 1)
| Boundary fixture | Actual | Expected | Outcome |
|---|---|---|---|
| enable drops while clock high | [[0, 1, 1, 0, 0], 1] | [[0, 1, 1, 0, 0], 1] | Passed |
| enable rises while clock high | [[0, 0, 0, 0, 1, 0, 1], 2] | [[0, 0, 0, 0, 1, 0, 1], 2] | Passed |
| test enable forces clock | [[0, 1, 0, 0], 1] | [[0, 1, 0, 0], 1] | Passed |
| starts with clock high | [[0, 0, 1, 0, 0], 1] | [[0, 0, 1, 0, 0], 1] | Passed |
| test enable drops mid pulse | [[0, 1, 1, 0], 1] | [[0, 1, 1, 0], 1] | Passed |
| steady enable | [[0, 1, 0, 1], 2] | [[0, 1, 0, 1], 2] | Passed |
SHA-256 / 03b1a55108301674aefcb1b623e6680ee4c0668fe34be4ca7eda92e9cae0997c
Verification & scope
A deterministic bounded teaching model of one simulator rule set; the contract is stipulated and is not a claim of conformance to any HDL standard or commercial simulator. This reproducer isolates one failure mechanism. Results cover the supplied fixtures. Variants within a family share a test contract and should remain grouped when constructing evaluation splits. Related mechanisms with a shared evaluation_group must also remain together; these controlled models are not independent production incidents.
Observations recorded using Python 3.12.14 at 2026-09-29T14:51:16.161919+00:00.
Case digest / 8462cd9a80be8161b79c814c352d65bde4e8474dbef3ba86452cd6c39a56e397