FAILURE MAP
← Case archive

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.

Verified by executionVariant 1 · 6 checks per implementationDownload source bundle ↓JSON ↗

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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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 fixtureActualExpectedOutcome
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