{"abstract":"Data transitions near falling clock edges are reported as violations.","category":"Digital logic simulation","checks":7,"contract":"Input [c0, clock, data, setup, hold]: c0 is the initial clock level, clock is time-sorted [t, v] transitions (possibly redundant), data is a list of data transition times. Rising edges are 0->1 changes only. For every data time t and every rising edge e: e-setup < t < e is a 'setup' violation, e <= t < e+hold is a 'hold' violation. Return all [e, t, kind] sorted by edge, then time.","evaluation_group":"w2-digital-logic-simulation-setup-hold-check","failed_approach":"Accepting every transition to 1 counts redundant high-to-high records as edges.","family":"w2-digital-logic-simulation-setup-hold-check-rising-edge-extraction","id":"FA-88951","implementations":{"attempt":{"sha256":"4fe3a83ad5a293468ee70d55530f3e98d4e60842798b969000ca9f9b8f31ffa3","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    c0, clock, data, s, h = args\n    edges = []\n    prev = c0\n    for t, v in clock:\n        if v == 1:\n            edges.append(t)\n        prev = v\n    out = []\n    for t in data:\n        for e in edges:\n            if e - s < t < e:\n                out.append([e, t, 'setup'])\n            elif e <= t < e + h:\n                out.append([e, t, 'hold'])\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 18, 27], 3, 2], [[10, 8, 'setup'], [20, 18, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 29], 3, 2], [[20, 20, 'hold'], [30, 29, 'setup']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 25], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [21, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [13, 1]], [3, 5, 11], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 6], 2, 2], [[4, 3, 'setup']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 19, 27], 3, 2], [[10, 8, 'setup'], [20, 19, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 30], 3, 2], [[20, 20, 'hold'], [30, 30, 'hold']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 26], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [22, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [14, 1]], [3, 5, 12], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 5], 2, 2], [[4, 3, 'setup'], [4, 5, 'hold']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 17, 27], 3, 2], [[10, 8, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 29], 3, 2], [[20, 20, 'hold'], [30, 29, 'setup']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 25], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [23, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [15, 1]], [3, 5, 13], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 6], 2, 2], [[4, 3, 'setup']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 18, 27], 3, 2], [[10, 8, 'setup'], [20, 18, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 30], 3, 2], [[20, 20, 'hold'], [30, 30, 'hold']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 26], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [24, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [16, 1]], [3, 5, 14], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 5], 2, 2], [[4, 3, 'setup'], [4, 5, 'hold']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 19, 27], 3, 2], [[10, 8, 'setup'], [20, 19, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 29], 3, 2], [[20, 20, 'hold'], [30, 29, 'setup']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 25], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [25, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [17, 1]], [3, 5, 15], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 6], 2, 2], [[4, 3, 'setup']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"broken":{"sha256":"8186ba58d816a0817639dc3de9a40e382fdb086cba8a250fb822e69d3276e7b0","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    c0, clock, data, s, h = args\n    edges = []\n    prev = c0\n    for t, v in clock:\n        if v != prev:\n            edges.append(t)\n        prev = v\n    out = []\n    for t in data:\n        for e in edges:\n            if e - s < t < e:\n                out.append([e, t, 'setup'])\n            elif e <= t < e + h:\n                out.append([e, t, 'hold'])\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 18, 27], 3, 2], [[10, 8, 'setup'], [20, 18, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 29], 3, 2], [[20, 20, 'hold'], [30, 29, 'setup']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 25], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [21, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [13, 1]], [3, 5, 11], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 6], 2, 2], [[4, 3, 'setup']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 19, 27], 3, 2], [[10, 8, 'setup'], [20, 19, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 30], 3, 2], [[20, 20, 'hold'], [30, 30, 'hold']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 26], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [22, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [14, 1]], [3, 5, 12], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 5], 2, 2], [[4, 3, 'setup'], [4, 5, 'hold']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 17, 27], 3, 2], [[10, 8, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 29], 3, 2], [[20, 20, 'hold'], [30, 29, 'setup']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 25], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [23, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [15, 1]], [3, 5, 13], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 6], 2, 2], [[4, 3, 'setup']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 18, 27], 3, 2], [[10, 8, 'setup'], [20, 18, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 30], 3, 2], [[20, 20, 'hold'], [30, 30, 'hold']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 26], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [24, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [16, 1]], [3, 5, 14], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 5], 2, 2], [[4, 3, 'setup'], [4, 5, 'hold']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 19, 27], 3, 2], [[10, 8, 'setup'], [20, 19, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 29], 3, 2], [[20, 20, 'hold'], [30, 29, 'setup']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 25], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [25, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [17, 1]], [3, 5, 15], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 6], 2, 2], [[4, 3, 'setup']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"},"fixed":{"sha256":"47ac5ea1d87b401fe3f1327ff41a585799ca5c68825a6481ccae85fa37e750d9","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    c0, clock, data, s, h = args\n    edges = []\n    prev = c0\n    for t, v in clock:\n        if prev == 0 and v == 1:\n            edges.append(t)\n        prev = v\n    out = []\n    for t in data:\n        for e in edges:\n            if e - s < t < e:\n                out.append([e, t, 'setup'])\n            elif e <= t < e + h:\n                out.append([e, t, 'hold'])\n    return sorted(out)\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 18, 27], 3, 2], [[10, 8, 'setup'], [20, 18, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 29], 3, 2], [[20, 20, 'hold'], [30, 29, 'setup']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 25], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [21, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [13, 1]], [3, 5, 11], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 6], 2, 2], [[4, 3, 'setup']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 19, 27], 3, 2], [[10, 8, 'setup'], [20, 19, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 30], 3, 2], [[20, 20, 'hold'], [30, 30, 'hold']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 26], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [22, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [14, 1]], [3, 5, 12], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 5], 2, 2], [[4, 3, 'setup'], [4, 5, 'hold']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 17, 27], 3, 2], [[10, 8, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 29], 3, 2], [[20, 20, 'hold'], [30, 29, 'setup']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 25], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [23, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [15, 1]], [3, 5, 13], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 6], 2, 2], [[4, 3, 'setup']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 18, 27], 3, 2], [[10, 8, 'setup'], [20, 18, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 30], 3, 2], [[20, 20, 'hold'], [30, 30, 'hold']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 26], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [24, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [16, 1]], [3, 5, 14], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 5], 2, 2], [[4, 3, 'setup'], [4, 5, 'hold']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])], [('setup window boundaries', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [7, 8, 19, 27], 3, 2], [[10, 8, 'setup'], [20, 19, 'setup']]), ('transition exactly at the clock edge', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [20, 22, 29], 3, 2], [[20, 20, 'hold'], [30, 29, 'setup']]), ('falling clock edges are not checked', [0, [[10, 1], [15, 0], [20, 1], [25, 0], [30, 1]], [16, 25], 3, 2], []), ('redundant high transition is not an edge', [0, [[5, 1], [10, 1], [12, 0], [25, 1]], [9, 11], 3, 2], []), ('clock already high at start', [1, [[4, 1], [8, 0], [17, 1]], [3, 5, 15], 2, 2], []), ('clock low at start rises first', [0, [[4, 1], [8, 0], [12, 1]], [3, 6], 2, 2], [[4, 3, 'setup']]), ('overlapping windows reported by edge', [0, [[10, 1], [11, 0], [12, 1]], [11, 12], 3, 3], [[10, 11, 'hold'], [10, 12, 'hold'], [12, 11, 'setup'], [12, 12, 'hold']])]]\nfor label, args, expected in fixtures[N-1]:\n    check(label, solve(*args), expected)\nprint(json.dumps({\"observations\": observations, \"passed\": all(x[\"passed\"] for x in observations)}, ensure_ascii=False))\nraise SystemExit(0 if all(x[\"passed\"] for x in observations) else 1)\n"}},"limitations":"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.","method":"Deterministic executable model with adversarial boundary fixtures.","provenance":{"created_by":"Failure Map","dependencies":"Python standard library","family":"w2-digital-logic-simulation-setup-hold-check-rising-edge-extraction","generated_at":"2026-09-29T14:51:12.852332+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Timing checks in gate-level simulation decide which transitions corrupt a register; window boundaries and edge extraction are the classic bug sites.","repair":"Record an edge only when the previous level is 0 and the new level is 1.","root_cause":"Every clock change is treated as an edge instead of only 0-to-1 transitions.","sha256":"fb914ffc740f88e1f596b61e528958c5db490ecb589584ccd981d0d80ea628b8","title":"Falling clock edges treated as capture edges · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verification":{"attempt":{"elapsed_ms":43.398,"exit_code":1,"observations":[{"actual":[[10,8,"setup"],[20,18,"setup"]],"check":"setup window boundaries","expected":[[10,8,"setup"],[20,18,"setup"]],"passed":true},{"actual":[[20,20,"hold"],[30,29,"setup"]],"check":"transition exactly at the clock edge","expected":[[20,20,"hold"],[30,29,"setup"]],"passed":true},{"actual":[],"check":"falling clock edges are not checked","expected":[],"passed":true},{"actual":[[10,9,"setup"],[10,11,"hold"]],"check":"redundant high transition is not an edge","expected":[],"passed":false},{"actual":[[4,3,"setup"],[4,5,"hold"]],"check":"clock already high at start","expected":[],"passed":false},{"actual":[[4,3,"setup"]],"check":"clock low at start rises first","expected":[[4,3,"setup"]],"passed":true},{"actual":[[10,11,"hold"],[10,12,"hold"],[12,11,"setup"],[12,12,"hold"]],"check":"overlapping windows reported by edge","expected":[[10,11,"hold"],[10,12,"hold"],[12,11,"setup"],[12,12,"hold"]],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"setup window boundaries\", \"actual\": [[10, 8, \"setup\"], [20, 18, \"setup\"]], \"expected\": [[10, 8, \"setup\"], [20, 18, \"setup\"]], \"passed\": true}, {\"check\": \"transition exactly at the clock edge\", \"actual\": [[20, 20, \"hold\"], [30, 29, \"setup\"]], \"expected\": [[20, 20, \"hold\"], [30, 29, \"setup\"]], \"passed\": true}, {\"check\": \"falling clock edges are not checked\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"redundant high transition is not an edge\", \"actual\": [[10, 9, \"setup\"], [10, 11, \"hold\"]], \"expected\": [], \"passed\": false}, {\"check\": \"clock already high at start\", \"actual\": [[4, 3, \"setup\"], [4, 5, \"hold\"]], \"expected\": [], \"passed\": false}, {\"check\": \"clock low at start rises first\", \"actual\": [[4, 3, \"setup\"]], \"expected\": [[4, 3, \"setup\"]], \"passed\": true}, {\"check\": \"overlapping windows reported by edge\", \"actual\": [[10, 11, \"hold\"], [10, 12, \"hold\"], [12, 11, \"setup\"], [12, 12, \"hold\"]], \"expected\": [[10, 11, \"hold\"], [10, 12, \"hold\"], [12, 11, \"setup\"], [12, 12, \"hold\"]], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":41.095,"exit_code":1,"observations":[{"actual":[[10,8,"setup"],[20,18,"setup"]],"check":"setup window boundaries","expected":[[10,8,"setup"],[20,18,"setup"]],"passed":true},{"actual":[[20,20,"hold"],[30,29,"setup"]],"check":"transition exactly at the clock edge","expected":[[20,20,"hold"],[30,29,"setup"]],"passed":true},{"actual":[[15,16,"hold"],[25,25,"hold"]],"check":"falling clock edges are not checked","expected":[],"passed":false},{"actual":[[12,11,"setup"]],"check":"redundant high transition is not an edge","expected":[],"passed":false},{"actual":[],"check":"clock already high at start","expected":[],"passed":true},{"actual":[[4,3,"setup"]],"check":"clock low at start rises first","expected":[[4,3,"setup"]],"passed":true},{"actual":[[10,11,"hold"],[10,12,"hold"],[11,11,"hold"],[11,12,"hold"],[12,11,"setup"],[12,12,"hold"]],"check":"overlapping windows reported by edge","expected":[[10,11,"hold"],[10,12,"hold"],[12,11,"setup"],[12,12,"hold"]],"passed":false}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"setup window boundaries\", \"actual\": [[10, 8, \"setup\"], [20, 18, \"setup\"]], \"expected\": [[10, 8, \"setup\"], [20, 18, \"setup\"]], \"passed\": true}, {\"check\": \"transition exactly at the clock edge\", \"actual\": [[20, 20, \"hold\"], [30, 29, \"setup\"]], \"expected\": [[20, 20, \"hold\"], [30, 29, \"setup\"]], \"passed\": true}, {\"check\": \"falling clock edges are not checked\", \"actual\": [[15, 16, \"hold\"], [25, 25, \"hold\"]], \"expected\": [], \"passed\": false}, {\"check\": \"redundant high transition is not an edge\", \"actual\": [[12, 11, \"setup\"]], \"expected\": [], \"passed\": false}, {\"check\": \"clock already high at start\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"clock low at start rises first\", \"actual\": [[4, 3, \"setup\"]], \"expected\": [[4, 3, \"setup\"]], \"passed\": true}, {\"check\": \"overlapping windows reported by edge\", \"actual\": [[10, 11, \"hold\"], [10, 12, \"hold\"], [11, 11, \"hold\"], [11, 12, \"hold\"], [12, 11, \"setup\"], [12, 12, \"hold\"]], \"expected\": [[10, 11, \"hold\"], [10, 12, \"hold\"], [12, 11, \"setup\"], [12, 12, \"hold\"]], \"passed\": false}], \"passed\": false}\n"},"fixed":{"elapsed_ms":41.707,"exit_code":0,"observations":[{"actual":[[10,8,"setup"],[20,18,"setup"]],"check":"setup window boundaries","expected":[[10,8,"setup"],[20,18,"setup"]],"passed":true},{"actual":[[20,20,"hold"],[30,29,"setup"]],"check":"transition exactly at the clock edge","expected":[[20,20,"hold"],[30,29,"setup"]],"passed":true},{"actual":[],"check":"falling clock edges are not checked","expected":[],"passed":true},{"actual":[],"check":"redundant high transition is not an edge","expected":[],"passed":true},{"actual":[],"check":"clock already high at start","expected":[],"passed":true},{"actual":[[4,3,"setup"]],"check":"clock low at start rises first","expected":[[4,3,"setup"]],"passed":true},{"actual":[[10,11,"hold"],[10,12,"hold"],[12,11,"setup"],[12,12,"hold"]],"check":"overlapping windows reported by edge","expected":[[10,11,"hold"],[10,12,"hold"],[12,11,"setup"],[12,12,"hold"]],"passed":true}],"passed":true,"stderr":"","stdout":"{\"observations\": [{\"check\": \"setup window boundaries\", \"actual\": [[10, 8, \"setup\"], [20, 18, \"setup\"]], \"expected\": [[10, 8, \"setup\"], [20, 18, \"setup\"]], \"passed\": true}, {\"check\": \"transition exactly at the clock edge\", \"actual\": [[20, 20, \"hold\"], [30, 29, \"setup\"]], \"expected\": [[20, 20, \"hold\"], [30, 29, \"setup\"]], \"passed\": true}, {\"check\": \"falling clock edges are not checked\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"redundant high transition is not an edge\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"clock already high at start\", \"actual\": [], \"expected\": [], \"passed\": true}, {\"check\": \"clock low at start rises first\", \"actual\": [[4, 3, \"setup\"]], \"expected\": [[4, 3, \"setup\"]], \"passed\": true}, {\"check\": \"overlapping windows reported by edge\", \"actual\": [[10, 11, \"hold\"], [10, 12, \"hold\"], [12, 11, \"setup\"], [12, 12, \"hold\"]], \"expected\": [[10, 11, \"hold\"], [10, 12, \"hold\"], [12, 11, \"setup\"], [12, 12, \"hold\"]], \"passed\": true}], \"passed\": true}\n"}},"verified":true,"visibility":"public"}