| #!/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() |