{"abstract":"With enable 'x' the selected line reads 1.","category":"Digital logic simulation","checks":9,"contract":"Input [kind, sel, data]: sel is MSB-first over 0/1/x/z; an x or z select bit makes both values of that bit candidates. mux: the output is the common value of all candidate data inputs if they agree and are 0 or 1, else 'x'. dec: data[0] is the enable; enable 0 gives all '0'; otherwise candidate lines are '1' only when there is a single candidate and the enable is 1, else 'x'; non-candidate lines are '0'.","contract_signature":"*args","evaluation_group":"w2-digital-logic-simulation-xsel-mux-decoder","failed_approach":"Handling only a floating enable still treats 'x' as asserted.","family":"w2-digital-logic-simulation-xsel-mux-decoder-decoder-unknown-enable","id":"FA-89241","implementations":{"attempt":{"sha256":"6f556d354bf321ff863fa7383ab882092e4d954d22cc23b6a62793154dda03e5","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    kind, sel, data = args\n    cands = [0]\n    for s in sel:\n        if s in '01':\n            cands = [c * 2 + int(s) for c in cands]\n        else:\n            cands = [c * 2 + b for c in cands for b in (0, 1)]\n    if kind == 'mux':\n        vals = sorted({data[c] for c in cands})\n        return vals[0] if len(vals) == 1 and vals[0] in '01' else 'x'\n    en = data[0]\n    out = []\n    for i in range(2 ** len(sel)):\n        if en == '0':\n            out.append('0')\n        elif i in cands and (len(cands) > 1 or en == 'z'):\n            out.append('x')\n        elif i in cands:\n            out.append('1')\n        else:\n            out.append('0')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x1', ['0', '1', '0', '1']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '10', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '01', ['x']], ['0', 'x', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])], [('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x0', ['1', '0', '1', '0']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '01', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '00', ['x']], ['x', '0', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])], [('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x1', ['0', '1', '0', '1']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '10', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '01', ['x']], ['0', 'x', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])], [('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x0', ['1', '0', '1', '0']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '01', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '00', ['x']], ['x', '0', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])], [('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x1', ['0', '1', '0', '1']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '10', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '01', ['x']], ['0', 'x', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])]]\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":"0a7bd7ff279c6f8ed27d9e0b040c947c5a91d1314619142d74bcc1600542e580","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    kind, sel, data = args\n    cands = [0]\n    for s in sel:\n        if s in '01':\n            cands = [c * 2 + int(s) for c in cands]\n        else:\n            cands = [c * 2 + b for c in cands for b in (0, 1)]\n    if kind == 'mux':\n        vals = sorted({data[c] for c in cands})\n        return vals[0] if len(vals) == 1 and vals[0] in '01' else 'x'\n    en = data[0]\n    out = []\n    for i in range(2 ** len(sel)):\n        if en == '0':\n            out.append('0')\n        elif i in cands and (len(cands) > 1):\n            out.append('x')\n        elif i in cands:\n            out.append('1')\n        else:\n            out.append('0')\n    return out\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x1', ['0', '1', '0', '1']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '10', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '01', ['x']], ['0', 'x', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])], [('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x0', ['1', '0', '1', '0']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '01', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '00', ['x']], ['x', '0', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])], [('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x1', ['0', '1', '0', '1']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '10', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '01', ['x']], ['0', 'x', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])], [('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x0', ['1', '0', '1', '0']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '01', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '00', ['x']], ['x', '0', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])], [('mux unknown select differing data', ['mux', 'x', ['0', '1']], 'x'), ('mux unknown select agreeing data', ['mux', 'x', ['1', '1']], '1'), ('mux4 unknown low select bit', ['mux', '1x', ['0', '1', '1', '1']], '1'), ('mux4 unknown high select bit', ['mux', 'x1', ['0', '1', '0', '1']], '1'), ('mux unknown select floating data', ['mux', 'z', ['z', 'z']], 'x'), ('mux4 known select', ['mux', '10', ['0', '1', '1', '0']], '1'), ('decoder unknown select bit', ['dec', '1x', ['1']], ['0', '0', 'x', 'x']), ('decoder unknown enable', ['dec', '01', ['x']], ['0', 'x', '0', '0']), ('decoder enabled', ['dec', '10', ['1']], ['0', '0', '1', '0'])]]\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-xsel-mux-decoder-decoder-unknown-enable","generated_at":"2026-09-29T14:51:15.551955+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Unknown-select pessimism rules in RTL simulation decide whether X on a control input corrupts datapath outputs.","root_cause":"An unknown enable is not distinguished from an asserted one.","sha256":"155b41feac39a45ce8ed71b5d07ea26a80298c35b6076facd2407b9288c69ec7","title":"Unknown decoder enable treated as asserted · case 01","variant":1,"variant_policy":"Five numbered records share a model and may reuse boundary fixtures.","verified":true,"visibility":"public","verification":{"attempt":{"elapsed_ms":40.01,"exit_code":1,"observations":[{"actual":"x","check":"mux unknown select differing data","expected":"x","passed":true},{"actual":"1","check":"mux unknown select agreeing data","expected":"1","passed":true},{"actual":"1","check":"mux4 unknown low select bit","expected":"1","passed":true},{"actual":"1","check":"mux4 unknown high select bit","expected":"1","passed":true},{"actual":"x","check":"mux unknown select floating data","expected":"x","passed":true},{"actual":"1","check":"mux4 known select","expected":"1","passed":true},{"actual":["0","0","x","x"],"check":"decoder unknown select bit","expected":["0","0","x","x"],"passed":true},{"actual":["0","1","0","0"],"check":"decoder unknown enable","expected":["0","x","0","0"],"passed":false},{"actual":["0","0","1","0"],"check":"decoder enabled","expected":["0","0","1","0"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mux unknown select differing data\", \"actual\": \"x\", \"expected\": \"x\", \"passed\": true}, {\"check\": \"mux unknown select agreeing data\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"mux4 unknown low select bit\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"mux4 unknown high select bit\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"mux unknown select floating data\", \"actual\": \"x\", \"expected\": \"x\", \"passed\": true}, {\"check\": \"mux4 known select\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"decoder unknown select bit\", \"actual\": [\"0\", \"0\", \"x\", \"x\"], \"expected\": [\"0\", \"0\", \"x\", \"x\"], \"passed\": true}, {\"check\": \"decoder unknown enable\", \"actual\": [\"0\", \"1\", \"0\", \"0\"], \"expected\": [\"0\", \"x\", \"0\", \"0\"], \"passed\": false}, {\"check\": \"decoder enabled\", \"actual\": [\"0\", \"0\", \"1\", \"0\"], \"expected\": [\"0\", \"0\", \"1\", \"0\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":39.348,"exit_code":1,"observations":[{"actual":"x","check":"mux unknown select differing data","expected":"x","passed":true},{"actual":"1","check":"mux unknown select agreeing data","expected":"1","passed":true},{"actual":"1","check":"mux4 unknown low select bit","expected":"1","passed":true},{"actual":"1","check":"mux4 unknown high select bit","expected":"1","passed":true},{"actual":"x","check":"mux unknown select floating data","expected":"x","passed":true},{"actual":"1","check":"mux4 known select","expected":"1","passed":true},{"actual":["0","0","x","x"],"check":"decoder unknown select bit","expected":["0","0","x","x"],"passed":true},{"actual":["0","1","0","0"],"check":"decoder unknown enable","expected":["0","x","0","0"],"passed":false},{"actual":["0","0","1","0"],"check":"decoder enabled","expected":["0","0","1","0"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"mux unknown select differing data\", \"actual\": \"x\", \"expected\": \"x\", \"passed\": true}, {\"check\": \"mux unknown select agreeing data\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"mux4 unknown low select bit\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"mux4 unknown high select bit\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"mux unknown select floating data\", \"actual\": \"x\", \"expected\": \"x\", \"passed\": true}, {\"check\": \"mux4 known select\", \"actual\": \"1\", \"expected\": \"1\", \"passed\": true}, {\"check\": \"decoder unknown select bit\", \"actual\": [\"0\", \"0\", \"x\", \"x\"], \"expected\": [\"0\", \"0\", \"x\", \"x\"], \"passed\": true}, {\"check\": \"decoder unknown enable\", \"actual\": [\"0\", \"1\", \"0\", \"0\"], \"expected\": [\"0\", \"x\", \"0\", \"0\"], \"passed\": false}, {\"check\": \"decoder enabled\", \"actual\": [\"0\", \"0\", \"1\", \"0\"], \"expected\": [\"0\", \"0\", \"1\", \"0\"], \"passed\": true}], \"passed\": false}\n"}},"member_only":{"stages":["fixed"],"fields":["implementations.fixed","verification.fixed","harness","repair"],"note":"The verified repair, its recorded checks, the repair description, and the scoring harness are available to members."}}