FUZZER - DSP - Add A & B Input Attributes

Adding `A_INPUT` and `B_INPUT` attribute fuzzing for the DSP48 tiles.

Signed-off-by: Jake Mercer <jmercer04@qub.ac.uk>
This commit is contained in:
Jake Mercer 2019-10-05 00:09:58 +01:00 committed by Jake Mercer
parent 5598d39d6d
commit c575adf8a0
2 changed files with 26 additions and 7 deletions

View File

@ -10,6 +10,16 @@ with open('params.csv', 'r') as f:
for d in csv.DictReader(f):
dsp = "DSP_0" if d['site'][-1] in "02468" else "DSP_1"
a_input = str(d['a_input'])
segmk.add_site_tag(
d['site'], "%s.A_INPUT[0]" % (dsp),
(1 if a_input == "DIRECT" else 0))
b_input = str(d['b_input'])
segmk.add_site_tag(
d['site'], "%s.B_INPUT[0]" % (dsp),
(1 if b_input == "DIRECT" else 0))
mask = int(d['mask'])
pattern = int(d['pattern'])

View File

@ -18,9 +18,14 @@ def gen_sites():
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)
pinstr = 'tile,site,a_input,b_input,mask,pattern\n'
for tile, site, a_input, b_input, mask, pattern in lines:
pinstr += '%s,' % (tile)
pinstr += '%s,' % (site)
pinstr += '%s,' % (a_input)
pinstr += '%s,' % (b_input)
pinstr += '%s,' % (mask)
pinstr += '%s\n' % (pattern)
open('params.csv', 'w').write(pinstr)
@ -36,17 +41,21 @@ module top();
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))
a_input = random.choice(('DIRECT', 'CASCADE'))
b_input = random.choice(('DIRECT', 'CASCADE'))
lines.append((tile_name, site_name, a_input, b_input, mask, pattern))
print(
'''
(* KEEP, DONT_TOUCH, LOC = "{0}" *)
DSP48E1 #(
.MASK(48'h{1:x}),
.PATTERN(48'h{2:x})
.A_INPUT("{1}"),
.B_INPUT("{2}"),
.MASK(48'h{3:x}),
.PATTERN(48'h{4:x})
) dsp_{0} (
);
'''.format(site_name, mask, pattern))
'''.format(site_name, a_input, b_input, mask, pattern))
print("endmodule")
write_params(lines)