{"abstract":"A vector sample given as a single digit is dumped in scalar form without the b prefix.","category":"Digital logic simulation","checks":7,"contract":"Input [sigs, samples]: sigs are [name, id, width, initial]; samples are time-sorted [t, name, value] with values as 0/1/x/z strings, possibly shorter than the width or redundant. Output starts with '#0' and one line per signal's initial value. Afterwards only real value changes are written, each timestamp marker '#t' at most once and only when a change happens at t. Width-1 signals print value+id; vectors print 'b'+value+' '+id with leading zeros removed (at least one digit kept) and a run of leading x or z collapsed to one character.","contract_signature":"*args","evaluation_group":"w2-digital-logic-simulation-vcd-writer","failed_approach":"A width threshold still misformats narrow vectors.","family":"w2-digital-logic-simulation-vcd-writer-scalar-versus-vector-format","id":"FA-89151","implementations":{"attempt":{"sha256":"9de55ad5fcfa43213b5a6add782a8e35f497e7d92db58fcdd311f1c3b2231345","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    sigs, samples = args\n    cur = {name: init for name, _, _, init in sigs}\n    ids = {name: (i, w) for name, i, w, _ in sigs}\n    def fmt(name, v):\n        i, w = ids[name]\n        if len(v) == 1 and w < 4:\n            return v + i\n        s = v.lstrip('0') or '0'\n        if s[:1] in ('x', 'z'):\n            s = s[0] + s.lstrip(s[0])\n        return 'b' + s + ' ' + i\n    lines = ['#0'] + [fmt(name, init) for name, _, _, init in sigs]\n    last_t = 0\n    for t, name, v in samples:\n        if cur[name] == v:\n            continue\n        cur[name] = v\n        if t != last_t:\n            lines.append('#' + str(t))\n            last_t = t\n        lines.append(fmt(name, v))\n    return lines\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [11, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#11', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [8, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#8', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [5, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#5', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [10, 'clk', '1'], [10, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [3, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#3', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [4, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#4', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [7, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#7', 'bx %'])], [('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [12, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#12', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [9, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#9', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [6, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#6', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [11, 'clk', '1'], [11, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#11', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [4, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#4', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [5, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#5', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [8, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#8', 'bx %'])], [('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [13, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#13', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [10, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#10', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [7, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#7', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [12, 'clk', '1'], [12, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#12', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [5, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#5', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [6, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#6', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [9, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#9', 'bx %'])], [('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [14, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#14', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [11, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#11', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [8, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#8', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [13, 'clk', '1'], [13, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#13', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [6, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#6', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [7, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#7', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [10, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#10', 'bx %'])], [('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [15, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#15', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [12, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#12', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [9, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#9', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [14, 'clk', '1'], [14, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#14', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [7, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#7', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [8, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#8', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [11, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#11', 'bx %'])]]\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":"976179c2aa26c849cf9f5eba1d0f444c6bbcff3bc3fbfc85bcb7044627d2c1e1","source":"\"\"\"Failure Map reference implementation. Python standard library only.\"\"\"\nimport json\n\nN = 1\nobservations = []\ndef solve(*args):\n    sigs, samples = args\n    cur = {name: init for name, _, _, init in sigs}\n    ids = {name: (i, w) for name, i, w, _ in sigs}\n    def fmt(name, v):\n        i, w = ids[name]\n        if len(v) == 1:\n            return v + i\n        s = v.lstrip('0') or '0'\n        if s[:1] in ('x', 'z'):\n            s = s[0] + s.lstrip(s[0])\n        return 'b' + s + ' ' + i\n    lines = ['#0'] + [fmt(name, init) for name, _, _, init in sigs]\n    last_t = 0\n    for t, name, v in samples:\n        if cur[name] == v:\n            continue\n        cur[name] = v\n        if t != last_t:\n            lines.append('#' + str(t))\n            last_t = t\n        lines.append(fmt(name, v))\n    return lines\ndef check(label, actual, expected):\n    observations.append({\"check\": label, \"actual\": actual, \"expected\": expected, \"passed\": actual == expected})\nfixtures = [[('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [11, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#11', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [8, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#8', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [5, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#5', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [10, 'clk', '1'], [10, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [3, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#3', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [4, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#4', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [7, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#7', 'bx %'])], [('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [12, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#12', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [9, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#9', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [6, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#6', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [11, 'clk', '1'], [11, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#11', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [4, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#4', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [5, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#5', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [8, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#8', 'bx %'])], [('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [13, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#13', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [10, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#10', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [7, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#7', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [12, 'clk', '1'], [12, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#12', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [5, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#5', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [6, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#6', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [9, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#9', 'bx %'])], [('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [14, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#14', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [11, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#11', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [8, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#8', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [13, 'clk', '1'], [13, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#13', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [6, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#6', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [7, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#7', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [10, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#10', 'bx %'])], [('clock toggles', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'clk', '1'], [10, 'clk', '0'], [15, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#10', '0!', '#15', '1!']), ('redundant samples suppressed', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '0000'], [4, 'bus', '0011'], [6, 'clk', '0'], [12, 'clk', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'b11 \"', '#12', '1!']), ('return to initial value', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[2, 'clk', '1'], [9, 'clk', '0']]], ['#0', '0!', 'b0 \"', 'bx %', '#2', '1!', '#9', '0!']), ('redundant then real change at one time', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[5, 'bus', '0000'], [5, 'clk', '1'], [14, 'clk', '1'], [14, 'bus', '1000']]], ['#0', '0!', 'b0 \"', 'bx %', '#5', '1!', '#14', 'b1000 \"']), ('vector back to all zeros', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[1, 'bus', '0100'], [7, 'bus', '0000']]], ['#0', '0!', 'b0 \"', 'bx %', '#1', 'b100 \"', '#7', 'b0 \"']), ('short vector values', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[3, 'bus', '1'], [8, 'st', '1']]], ['#0', '0!', 'b0 \"', 'bx %', '#3', 'b1 \"', '#8', 'b1 %']), ('unknown left extension', [[['clk', '!', 1, '0'], ['bus', '\"', 4, '0000'], ['st', '%', 3, 'xxx']], [[4, 'st', 'xx1'], [5, 'st', 'zz0'], [11, 'st', 'xxx']]], ['#0', '0!', 'b0 \"', 'bx %', '#4', 'bx1 %', '#5', 'bz0 %', '#11', 'bx %'])]]\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-vcd-writer-scalar-versus-vector-format","generated_at":"2026-09-29T14:51:14.784040+00:00","license":"CC0-1.0","python":"3.12.14","seed":1,"split":"open-access"},"relevance":"Waveform dumps are how simulator results are inspected; missing, duplicated or mis-extended changes mislead debugging.","root_cause":"The scalar format is chosen from the sample's string length instead of the declared width.","sha256":"e2472c90ed0ff4f084cb86711f9e40cce8dd361b995f9d0d1426266188b9934e","title":"Short vector value printed as a scalar change · 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":42.756,"exit_code":1,"observations":[{"actual":["#0","0!","b0 \"","bx %","#5","1!","#10","0!","#11","1!"],"check":"clock toggles","expected":["#0","0!","b0 \"","bx %","#5","1!","#10","0!","#11","1!"],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#4","b11 \"","#8","1!"],"check":"redundant samples suppressed","expected":["#0","0!","b0 \"","bx %","#4","b11 \"","#8","1!"],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#2","1!","#5","0!"],"check":"return to initial value","expected":["#0","0!","b0 \"","bx %","#2","1!","#5","0!"],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#5","1!","#10","b1000 \""],"check":"redundant then real change at one time","expected":["#0","0!","b0 \"","bx %","#5","1!","#10","b1000 \""],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#1","b100 \"","#3","b0 \""],"check":"vector back to all zeros","expected":["#0","0!","b0 \"","bx %","#1","b100 \"","#3","b0 \""],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#3","b1 \"","#4","1%"],"check":"short vector values","expected":["#0","0!","b0 \"","bx %","#3","b1 \"","#4","b1 %"],"passed":false},{"actual":["#0","0!","b0 \"","bx %","#4","bx1 %","#5","bz0 %","#7","bx %"],"check":"unknown left extension","expected":["#0","0!","b0 \"","bx %","#4","bx1 %","#5","bz0 %","#7","bx %"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"clock toggles\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#5\", \"1!\", \"#10\", \"0!\", \"#11\", \"1!\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#5\", \"1!\", \"#10\", \"0!\", \"#11\", \"1!\"], \"passed\": true}, {\"check\": \"redundant samples suppressed\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#4\", \"b11 \\\"\", \"#8\", \"1!\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#4\", \"b11 \\\"\", \"#8\", \"1!\"], \"passed\": true}, {\"check\": \"return to initial value\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#2\", \"1!\", \"#5\", \"0!\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#2\", \"1!\", \"#5\", \"0!\"], \"passed\": true}, {\"check\": \"redundant then real change at one time\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#5\", \"1!\", \"#10\", \"b1000 \\\"\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#5\", \"1!\", \"#10\", \"b1000 \\\"\"], \"passed\": true}, {\"check\": \"vector back to all zeros\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#1\", \"b100 \\\"\", \"#3\", \"b0 \\\"\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#1\", \"b100 \\\"\", \"#3\", \"b0 \\\"\"], \"passed\": true}, {\"check\": \"short vector values\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#3\", \"b1 \\\"\", \"#4\", \"1%\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#3\", \"b1 \\\"\", \"#4\", \"b1 %\"], \"passed\": false}, {\"check\": \"unknown left extension\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#4\", \"bx1 %\", \"#5\", \"bz0 %\", \"#7\", \"bx %\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#4\", \"bx1 %\", \"#5\", \"bz0 %\", \"#7\", \"bx %\"], \"passed\": true}], \"passed\": false}\n"},"broken":{"elapsed_ms":42.733,"exit_code":1,"observations":[{"actual":["#0","0!","b0 \"","bx %","#5","1!","#10","0!","#11","1!"],"check":"clock toggles","expected":["#0","0!","b0 \"","bx %","#5","1!","#10","0!","#11","1!"],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#4","b11 \"","#8","1!"],"check":"redundant samples suppressed","expected":["#0","0!","b0 \"","bx %","#4","b11 \"","#8","1!"],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#2","1!","#5","0!"],"check":"return to initial value","expected":["#0","0!","b0 \"","bx %","#2","1!","#5","0!"],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#5","1!","#10","b1000 \""],"check":"redundant then real change at one time","expected":["#0","0!","b0 \"","bx %","#5","1!","#10","b1000 \""],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#1","b100 \"","#3","b0 \""],"check":"vector back to all zeros","expected":["#0","0!","b0 \"","bx %","#1","b100 \"","#3","b0 \""],"passed":true},{"actual":["#0","0!","b0 \"","bx %","#3","1\"","#4","1%"],"check":"short vector values","expected":["#0","0!","b0 \"","bx %","#3","b1 \"","#4","b1 %"],"passed":false},{"actual":["#0","0!","b0 \"","bx %","#4","bx1 %","#5","bz0 %","#7","bx %"],"check":"unknown left extension","expected":["#0","0!","b0 \"","bx %","#4","bx1 %","#5","bz0 %","#7","bx %"],"passed":true}],"passed":false,"stderr":"","stdout":"{\"observations\": [{\"check\": \"clock toggles\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#5\", \"1!\", \"#10\", \"0!\", \"#11\", \"1!\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#5\", \"1!\", \"#10\", \"0!\", \"#11\", \"1!\"], \"passed\": true}, {\"check\": \"redundant samples suppressed\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#4\", \"b11 \\\"\", \"#8\", \"1!\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#4\", \"b11 \\\"\", \"#8\", \"1!\"], \"passed\": true}, {\"check\": \"return to initial value\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#2\", \"1!\", \"#5\", \"0!\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#2\", \"1!\", \"#5\", \"0!\"], \"passed\": true}, {\"check\": \"redundant then real change at one time\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#5\", \"1!\", \"#10\", \"b1000 \\\"\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#5\", \"1!\", \"#10\", \"b1000 \\\"\"], \"passed\": true}, {\"check\": \"vector back to all zeros\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#1\", \"b100 \\\"\", \"#3\", \"b0 \\\"\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#1\", \"b100 \\\"\", \"#3\", \"b0 \\\"\"], \"passed\": true}, {\"check\": \"short vector values\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#3\", \"1\\\"\", \"#4\", \"1%\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#3\", \"b1 \\\"\", \"#4\", \"b1 %\"], \"passed\": false}, {\"check\": \"unknown left extension\", \"actual\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#4\", \"bx1 %\", \"#5\", \"bz0 %\", \"#7\", \"bx %\"], \"expected\": [\"#0\", \"0!\", \"b0 \\\"\", \"bx %\", \"#4\", \"bx1 %\", \"#5\", \"bz0 %\", \"#7\", \"bx %\"], \"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."}}