mirror of https://github.com/openXC7/prjxray.git
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:
parent
5598d39d6d
commit
c575adf8a0
|
|
@ -10,6 +10,16 @@ with open('params.csv', 'r') as f:
|
||||||
for d in csv.DictReader(f):
|
for d in csv.DictReader(f):
|
||||||
dsp = "DSP_0" if d['site'][-1] in "02468" else "DSP_1"
|
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'])
|
mask = int(d['mask'])
|
||||||
pattern = int(d['pattern'])
|
pattern = int(d['pattern'])
|
||||||
|
|
||||||
|
|
|
||||||
|
|
@ -18,9 +18,14 @@ def gen_sites():
|
||||||
|
|
||||||
|
|
||||||
def write_params(lines):
|
def write_params(lines):
|
||||||
pinstr = 'tile,site,mask,pattern\n'
|
pinstr = 'tile,site,a_input,b_input,mask,pattern\n'
|
||||||
for tile, site, mask, pattern in lines:
|
for tile, site, a_input, b_input, mask, pattern in lines:
|
||||||
pinstr += '%s,%s,%s,%s\n' % (tile, site, mask, pattern)
|
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)
|
open('params.csv', 'w').write(pinstr)
|
||||||
|
|
||||||
|
|
@ -36,17 +41,21 @@ module top();
|
||||||
for (tile_name, site_name) in sites:
|
for (tile_name, site_name) in sites:
|
||||||
mask = random.randint(0, 2**48 - 1)
|
mask = random.randint(0, 2**48 - 1)
|
||||||
pattern = 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(
|
print(
|
||||||
'''
|
'''
|
||||||
(* KEEP, DONT_TOUCH, LOC = "{0}" *)
|
(* KEEP, DONT_TOUCH, LOC = "{0}" *)
|
||||||
DSP48E1 #(
|
DSP48E1 #(
|
||||||
.MASK(48'h{1:x}),
|
.A_INPUT("{1}"),
|
||||||
.PATTERN(48'h{2:x})
|
.B_INPUT("{2}"),
|
||||||
|
.MASK(48'h{3:x}),
|
||||||
|
.PATTERN(48'h{4:x})
|
||||||
) dsp_{0} (
|
) dsp_{0} (
|
||||||
);
|
);
|
||||||
'''.format(site_name, mask, pattern))
|
'''.format(site_name, a_input, b_input, mask, pattern))
|
||||||
|
|
||||||
print("endmodule")
|
print("endmodule")
|
||||||
write_params(lines)
|
write_params(lines)
|
||||||
|
|
|
||||||
Loading…
Reference in New Issue