mirror of https://github.com/openXC7/prjxray.git
FUZZER - DSP - Add AUTORESET_PATDET Attribute Fuzzing
Added fuzzing for the AUTORESET_PATDET attribute of the DSP48 block. Values are RESET_MATCH, NO_RESET, and RESET_NOT_MATCH; so this can be represented by 2 bits. Signed-off-by: Jake Mercer <jmercer04@qub.ac.uk>
This commit is contained in:
parent
c575adf8a0
commit
78d64f7558
|
|
@ -20,6 +20,17 @@ with open('params.csv', 'r') as f:
|
|||
d['site'], "%s.B_INPUT[0]" % (dsp),
|
||||
(1 if b_input == "DIRECT" else 0))
|
||||
|
||||
autoreset_patdet = str(d['autoreset_patdet'])
|
||||
if autoreset_patdet == "RESET_MATCH":
|
||||
segmk.add_site_tag(d['site'], "%s.AUTO_RESET_PATDET[0]" % (dsp), 0)
|
||||
segmk.add_site_tag(d['site'], "%s.AUTO_RESET_PATDET[1]" % (dsp), 0)
|
||||
elif autoreset_patdet == "NO_RESET":
|
||||
segmk.add_site_tag(d['site'], "%s.AUTO_RESET_PATDET[0]" % (dsp), 0)
|
||||
segmk.add_site_tag(d['site'], "%s.AUTO_RESET_PATDET[1]" % (dsp), 1)
|
||||
elif autoreset_patdet == "RESET_NOT_MATCH":
|
||||
segmk.add_site_tag(d['site'], "%s.AUTO_RESET_PATDET[0]" % (dsp), 1)
|
||||
segmk.add_site_tag(d['site'], "%s.AUTO_RESET_PATDET[1]" % (dsp), 0)
|
||||
|
||||
mask = int(d['mask'])
|
||||
pattern = int(d['pattern'])
|
||||
|
||||
|
|
|
|||
|
|
@ -18,12 +18,13 @@ def gen_sites():
|
|||
|
||||
|
||||
def write_params(lines):
|
||||
pinstr = 'tile,site,a_input,b_input,mask,pattern\n'
|
||||
for tile, site, a_input, b_input, mask, pattern in lines:
|
||||
pinstr = 'tile,site,a_input,b_input,autoreset_patdet,mask,pattern\n'
|
||||
for tile, site, a_input, b_input, autoreset_patdet, mask, pattern in lines:
|
||||
pinstr += '%s,' % (tile)
|
||||
pinstr += '%s,' % (site)
|
||||
pinstr += '%s,' % (a_input)
|
||||
pinstr += '%s,' % (b_input)
|
||||
pinstr += '%s,' % (autoreset_patdet)
|
||||
pinstr += '%s,' % (mask)
|
||||
pinstr += '%s\n' % (pattern)
|
||||
|
||||
|
|
@ -43,7 +44,12 @@ module top();
|
|||
pattern = random.randint(0, 2**48 - 1)
|
||||
a_input = random.choice(('DIRECT', 'CASCADE'))
|
||||
b_input = random.choice(('DIRECT', 'CASCADE'))
|
||||
lines.append((tile_name, site_name, a_input, b_input, mask, pattern))
|
||||
autoreset_patdet = random.choice(
|
||||
('NO_RESET', 'RESET_MATCH', 'RESET_NOT_MATCH'))
|
||||
lines.append(
|
||||
(
|
||||
tile_name, site_name, a_input, b_input, autoreset_patdet, mask,
|
||||
pattern))
|
||||
|
||||
print(
|
||||
'''
|
||||
|
|
@ -51,11 +57,12 @@ module top();
|
|||
DSP48E1 #(
|
||||
.A_INPUT("{1}"),
|
||||
.B_INPUT("{2}"),
|
||||
.MASK(48'h{3:x}),
|
||||
.PATTERN(48'h{4:x})
|
||||
.AUTORESET_PATDET("{3}"),
|
||||
.MASK(48'h{4:x}),
|
||||
.PATTERN(48'h{5:x})
|
||||
) dsp_{0} (
|
||||
);
|
||||
'''.format(site_name, a_input, b_input, mask, pattern))
|
||||
'''.format(site_name, a_input, b_input, autoreset_patdet, mask, pattern))
|
||||
|
||||
print("endmodule")
|
||||
write_params(lines)
|
||||
|
|
|
|||
Loading…
Reference in New Issue