diff --git a/fuzzers/030-iob/generate.py b/fuzzers/030-iob/generate.py index 19c8576f..82ecd66b 100644 --- a/fuzzers/030-iob/generate.py +++ b/fuzzers/030-iob/generate.py @@ -85,6 +85,13 @@ def main(): site, '_'.join(STEPDOWN_IOSTANDARDS) + '.STEPDOWN', iostandard in STEPDOWN_IOSTANDARDS) + if 'IN_TERM' in d: + segmaker.add_site_group_zero( + segmk, site, 'IN_TERM.', [ + 'NONE', 'UNTUNED_SPLIT_40', 'UNTUNED_SPLIT_50', + 'UNTUNED_SPLIT_60' + ], 'NONE', d['IN_TERM']) + if d['type'] is None: segmk.add_site_tag(site, 'INOUT', 0) segmk.add_site_tag(site, '{}.IN_USE'.format(iostandard), 0) diff --git a/fuzzers/030-iob/generate.tcl b/fuzzers/030-iob/generate.tcl index f0776206..7d1c18d5 100644 --- a/fuzzers/030-iob/generate.tcl +++ b/fuzzers/030-iob/generate.tcl @@ -44,6 +44,7 @@ proc loc_pins {} { set drive [lindex $line 4] set slew [lindex $line 5] set pulltype [lindex $line 6] + set in_term [lindex $line 7] # Have: site # Want: pin for site @@ -69,6 +70,10 @@ proc loc_pins {} { lappend props SLEW $slew } + if {$in_term != "None"} { + lappend props IN_TERM $in_term + } + puts $props set_property -dict "$props" $port diff --git a/fuzzers/030-iob/top.py b/fuzzers/030-iob/top.py index b622fc78..e7c59238 100644 --- a/fuzzers/030-iob/top.py +++ b/fuzzers/030-iob/top.py @@ -62,6 +62,19 @@ def run(): "SSTL135": ["DIFF_SSTL135"], } + IN_TERM_ALLOWED = [ + 'SSTL15', + 'SSTL15_R', + 'SSTL18', + 'SSTL18_R', + 'SSTL135', + 'SSTL135_R', + 'HSTL_I' + 'HSTL_I_18' + 'HSTL_II', + 'HSTL_II_18', + ] + iostandard = random.choice(iostandards) if iostandard in ['LVTTL', 'LVCMOS18']: @@ -149,6 +162,15 @@ def run(): p['SLEW'] = None p['IBUF_LOW_PWR'] = random.randint(0, 1) + if iostandard in IN_TERM_ALLOWED: + p['IN_TERM'] = random.choice( + ( + 'NONE', + 'UNTUNED_SPLIT_40', + 'UNTUNED_SPLIT_50', + 'UNTUNED_SPLIT_60', + )) + i_idx += 1 elif p['type'] == 'IBUFDS': p['pad_wire'] = 'di[{}]'.format(i_idx) @@ -228,9 +250,15 @@ def run(): if p['type'] is not None: tile_params.append( ( - tile, site, p['pad_wire'], iostandard_site, p['DRIVE'], + tile, + site, + p['pad_wire'], + iostandard_site, + p['DRIVE'], verilog.unquote(p['SLEW']) if p['SLEW'] else None, - verilog.unquote(p['PULLTYPE']))) + verilog.unquote(p['PULLTYPE']), + p['IN_TERM'] if 'IN_TERM' in p else None, + )) params['tiles'].append(p) write_params(tile_params)