From 78d64f755888f6c89968342ded6128cc9943025f Mon Sep 17 00:00:00 2001 From: Jake Mercer Date: Sun, 6 Oct 2019 16:30:10 +0100 Subject: [PATCH] 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 --- fuzzers/100-dsp-mskpat/generate.py | 11 +++++++++++ fuzzers/100-dsp-mskpat/top.py | 19 +++++++++++++------ 2 files changed, 24 insertions(+), 6 deletions(-) diff --git a/fuzzers/100-dsp-mskpat/generate.py b/fuzzers/100-dsp-mskpat/generate.py index 133a71e2..2dfcc6d9 100644 --- a/fuzzers/100-dsp-mskpat/generate.py +++ b/fuzzers/100-dsp-mskpat/generate.py @@ -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']) diff --git a/fuzzers/100-dsp-mskpat/top.py b/fuzzers/100-dsp-mskpat/top.py index c32f978c..d536a91e 100644 --- a/fuzzers/100-dsp-mskpat/top.py +++ b/fuzzers/100-dsp-mskpat/top.py @@ -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)