From 39688725dc04c2eb0bcc22db3bd8be0ee9cffde1 Mon Sep 17 00:00:00 2001 From: Alessandro Comodi Date: Wed, 10 Feb 2021 18:51:27 +0100 Subject: [PATCH] 030-iob: increase fuzzer efficiency Signed-off-by: Alessandro Comodi --- fuzzers/030-iob/Makefile | 2 +- fuzzers/030-iob/top.py | 40 +++++++++++++++++++++++++++++++++------- 2 files changed, 34 insertions(+), 8 deletions(-) diff --git a/fuzzers/030-iob/Makefile b/fuzzers/030-iob/Makefile index cc889e04..851673b6 100644 --- a/fuzzers/030-iob/Makefile +++ b/fuzzers/030-iob/Makefile @@ -5,7 +5,7 @@ # https://opensource.org/licenses/ISC # # SPDX-License-Identifier: ISC -N := 50 +N := 20 SPECIMENS_DEPS := build/iobanks.txt include ../fuzzer.mk diff --git a/fuzzers/030-iob/top.py b/fuzzers/030-iob/top.py index 2871a72a..5ef2701a 100644 --- a/fuzzers/030-iob/top.py +++ b/fuzzers/030-iob/top.py @@ -50,9 +50,7 @@ def write_params(params): def run(): - tile_types = [ - 'IBUF', 'OBUF', 'IOBUF_INTERMDISABLE', None, None, None, None, None - ] + tile_types = ['IBUF', 'OBUF', 'IOBUF_INTERMDISABLE', None, None] i_idx = 0 o_idx = 0 @@ -112,12 +110,22 @@ def run(): } with open(os.path.join(os.getenv('FUZDIR'), 'build', 'iobanks.txt')) as f: - iobanks = [int(l.strip().split(',')[1]) for l in f] + iobanks = set() + iob_sites = dict() + for l in f: + fields = l.split(',') + iob_site = fields[0] + iobank = fields[1].rstrip() + + iobanks.add(iobank) + iob_sites[iob_site] = iobank params['iobanks'] = iobanks - if iostandard in ['SSTL135', 'SSTL15']: - for iobank in iobanks: + iostandard_map = dict() + for iobank in iobanks: + iostandard = random.choice(iostandards) + if iostandard in ['SSTL135', 'SSTL15']: params['INTERNAL_VREF'][iobank] = random.choice( ( .600, @@ -126,10 +134,28 @@ def run(): .90, )) + iostandard_map[iobank] = iostandard + + params['iobanks'] = list(iobanks) + any_idelay = False for tile, sites in gen_sites(): + iostandard = None + site_bels = {} - for site_type in sites: + for site_type, site_name in sites.items(): + iobank = iob_sites[site_name] + iostandard = iostandard_map[iobank] + + if iostandard in ['LVTTL', 'LVCMOS18']: + drives = [4, 8, 12, 16, 24] + elif iostandard in ['LVCMOS12']: + drives = [4, 8, 12] + elif iostandard in ['SSTL135', 'SSTL15', 'LVDS', 'LVDS_25']: + drives = None + else: + drives = [4, 8, 12, 16] + if site_type.endswith('M'): if iostandard in diff_map: site_bels[site_type] = random.choice(