| #!/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 os |
| import random |
| random.seed(int(os.getenv("SEED"), 16)) |
| from prjxray import util |
| from prjxray import verilog |
| from prjxray.verilog import vrandbit, vrandbits |
| import sys |
| import json |
| |
| |
| def gen_sites(): |
| for _tile_name, site_name, _site_type in sorted(util.get_roi().gen_sites( |
| ["XADC"])): |
| yield site_name |
| |
| |
| sites = list(gen_sites()) |
| DUTN = len(sites) |
| DIN_N = DUTN * 8 |
| DOUT_N = DUTN * 8 |
| |
| verilog.top_harness(DIN_N, DOUT_N) |
| |
| f = open('params.jl', 'w') |
| f.write('module,loc,params\n') |
| print( |
| 'module roi(input clk, input [%d:0] din, output [%d:0] dout);' % |
| (DIN_N - 1, DOUT_N - 1)) |
| |
| for loci, site in enumerate(sites): |
| |
| ports = { |
| 'clk': 'clk', |
| 'din': 'din[ %d +: 8]' % (8 * loci, ), |
| 'dout': 'dout[ %d +: 8]' % (8 * loci, ), |
| } |
| |
| params = { |
| "INIT_43": random.randint(0x000, 0xFFFF), |
| } |
| |
| modname = "my_XADC" |
| verilog.instance(modname, "inst_%u" % loci, ports, params=params) |
| # LOC isn't support |
| params["LOC"] = verilog.quote(site) |
| |
| j = {'module': modname, 'i': loci, 'params': params} |
| f.write('%s\n' % (json.dumps(j))) |
| print('') |
| |
| f.close() |
| print( |
| '''endmodule |
| |
| // --------------------------------------------------------------------- |
| |
| ''') |
| |
| print( |
| ''' |
| module my_XADC (input clk, input [7:0] din, output [7:0] dout); |
| parameter INIT_43 = 16'h0000; |
| |
| (* KEEP, DONT_TOUCH *) |
| XADC #( |
| .INIT_43(INIT_43) |
| ) dut ( |
| .BUSY(), |
| .DRDY(), |
| .EOC(), |
| .EOS(), |
| .JTAGBUSY(), |
| .JTAGLOCKED(), |
| .JTAGMODIFIED(), |
| .OT(), |
| .DO(), |
| .ALM(), |
| .CHANNEL(), |
| .MUXADDR(), |
| .CONVST(), |
| .CONVSTCLK(clk), |
| .DCLK(clk), |
| .DEN(), |
| .DWE(), |
| .RESET(), |
| .VN(), |
| .VP(), |
| .DI(), |
| .VAUXN(), |
| .VAUXP(), |
| .DADDR()); |
| endmodule |
| ''') |