mirror of https://github.com/openXC7/prjxray.git
57 lines
1.3 KiB
Python
57 lines
1.3 KiB
Python
import os
|
|
import random
|
|
random.seed(int(os.getenv("SEED"), 16))
|
|
from prjxray import util
|
|
from prjxray.db import Database
|
|
|
|
|
|
def gen_sites():
|
|
db = Database(util.get_db_root())
|
|
grid = db.grid()
|
|
for tile_name in sorted(grid.tiles()):
|
|
loc = grid.loc_of_tilename(tile_name)
|
|
gridinfo = grid.gridinfo_at_loc(loc)
|
|
if gridinfo.tile_type in ['DSP_L', 'DSP_R']:
|
|
for site in sorted(gridinfo.sites.keys()):
|
|
if gridinfo.sites[site] == 'DSP48E1':
|
|
yield tile_name, site
|
|
|
|
|
|
def write_params(lines):
|
|
pinstr = 'tile,site,mask,pattern\n'
|
|
for tile, site, mask, pattern in lines:
|
|
pinstr += '%s,%s,%s,%s\n' % (tile, site, mask, pattern)
|
|
|
|
open('params.csv', 'w').write(pinstr)
|
|
|
|
|
|
def run():
|
|
print('''
|
|
module top();
|
|
''')
|
|
|
|
lines = []
|
|
|
|
sites = list(gen_sites())
|
|
for (tile_name, site_name) in sites:
|
|
mask = random.randint(0, 2**48 - 1)
|
|
pattern = random.randint(0, 2**48 - 1)
|
|
lines.append((tile_name, site_name, mask, pattern))
|
|
|
|
print(
|
|
'''
|
|
(* KEEP, DONT_TOUCH, LOC = "{0}" *)
|
|
DSP48E1 #(
|
|
.MASK(48'h{1:x}),
|
|
.PATTERN(48'h{2:x})
|
|
) dsp_{0} (
|
|
);
|
|
'''.format(site_name, mask, pattern))
|
|
|
|
print("endmodule")
|
|
write_params(lines)
|
|
|
|
|
|
if __name__ == '__main__':
|
|
run()
|