#!/usr/bin/env python3 # -*- coding: utf-8 -*- # # Copyright (C) 2017-2020 The Project X-Ray Authors. # # Use of this source code is governed by a ISC-style # license that can be found in the LICENSE file or at # https://opensource.org/licenses/ISC # # SPDX-License-Identifier: ISC import json from prjxray.segmaker import Segmaker BITS_PER_PARAM = 256 NUM_INITP_PARAMS = 8 NUM_INIT_PARAMS = 0x40 BITS_PER_SITE = BITS_PER_PARAM * (NUM_INITP_PARAMS + NUM_INIT_PARAMS) def main(): segmk = Segmaker("design.bits") segmk.set_def_bt('BLOCK_RAM') print("Loading tags") ''' ''' with open('params.json') as f: params = json.load(f) for param in params: for initp in range(NUM_INITP_PARAMS): p = 'INITP_{:02X}'.format(initp) val = param[p] for bit in range(BITS_PER_PARAM): segmk.add_site_tag( param['site'], "{p}[{bit:03d}]".format( p=p, bit=bit, ), val & (1 << bit) != 0) for init in range(NUM_INIT_PARAMS): p = 'INIT_{:02X}'.format(init) val = param[p] for bit in range(BITS_PER_PARAM): segmk.add_site_tag( param['site'], "{p}[{bit:03d}]".format( p=p, bit=bit, ), val & (1 << bit) != 0) segmk.compile() segmk.write() if __name__ == "__main__": main()