#!/usr/bin/env python
#
# Encodes data like ARTIQ build_soc.py ReprogrammableIdentifier

import sys

if len(sys.argv) != 2:
    raise ValueError('argument missing')

identifier_str = sys.argv[1]
contents = list(identifier_str.encode())
l = len(contents)
if l > 255:
    raise ValueError("Identifier string must be 255 characters or less")
contents.insert(0, l)

f = sys.stdout
f.write("[\n");
for i in range(7):
    init = sum(1 << j if c & (1 << i) else 0 for j, c in enumerate(contents))
    f.write(
        '  {{ cell = "identifier_str{}"; init = "256\'h{:X}"; }}\n'.format(i, init)
    )
f.write("]\n");