diff --git a/fuzzers/100-dsp-mskpat/generate.py b/fuzzers/100-dsp-mskpat/generate.py index ead33cd5..133a71e2 100644 --- a/fuzzers/100-dsp-mskpat/generate.py +++ b/fuzzers/100-dsp-mskpat/generate.py @@ -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']) diff --git a/fuzzers/100-dsp-mskpat/top.py b/fuzzers/100-dsp-mskpat/top.py index a64915cb..c32f978c 100644 --- a/fuzzers/100-dsp-mskpat/top.py +++ b/fuzzers/100-dsp-mskpat/top.py @@ -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)