예제 #1
0
def get_config(tp):

    chip = tp.get_child_str('chip')

    config = js.import_config({'includes': ["defaults.json"]})

    config.merge(Config(config=system_gen.get_config(tp)).get_js_config())

    config.merge(
        js.import_config({'includes2': ["chips/%s/defaults.json" % (chip)]}))

    return config
예제 #2
0
파일: top_gen.py 프로젝트: mfkiwl/gap_sdk
def get_config(tp):

    chip = tp.get_child_str('chip')

    config = js.import_config({'@includes@': ["defaults.json"]},
                              interpret=True)

    config.merge(
        Config(config=system_gen.get_config(tp)).get_js_config(expand=True))

    config.merge(
        js.import_config({'@includes2@': ["chips/%s/defaults.json" % (chip)]},
                         interpret=True))

    return config
예제 #3
0
def gen_config(args, config):

    full_config = js.import_config(config.get_dict(), interpret=True, gen=True)

    gvsoc_config = full_config.get('gvsoc')

    debug_mode = gvsoc_config.get_bool('debug-mode') or \
        gvsoc_config.get_bool('traces/enabled') or \
        gvsoc_config.get_bool('events/enabled') or \
        len(gvsoc_config.get('traces/include_regex')) != 0 or \
        len(gvsoc_config.get('events/include_regex')) != 0

    gvsoc_config.set("debug-mode", debug_mode)

    if debug_mode:
        debug_binaries = []

        if args.binary is not None:
            debug_binaries.append(args.binary)

        rom_binary = full_config.get_str('**/soc/rom/config/binary')

        if rom_binary is not None:

            if os.path.exists(rom_binary):
                debug_binaries.append(rom_binary)

        for binary in debug_binaries:
            full_config.set('**/debug_binaries', binary + '.debugInfo')
            full_config.set('**/binaries', binary)

    gvsoc_config_path = os.path.join(config.get_str('gapy/work_dir'),
                                     'gvsoc_config.json')

    return full_config, gvsoc_config_path
예제 #4
0
    def __init__(self,
                 name=None,
                 config_path=None,
                 config_string=None,
                 config=None,
                 args=None):
        self.name = name

        if config_path is not None:
            with open(config_path, 'r') as fd:
                config = json.load(fd, object_pairs_hook=OrderedDict)

        if config_string is not None:
            config = json.loads(config_string, object_pairs_hook=OrderedDict)

        try:
            if args is not None:
                for arg in args.split(':'):
                    key, value = arg.split('=')
                    config2 = js.import_config(config)
                    config2.set(key, value)
                    config = config2.get_dict()
        except:
            pass

        self.top = Top_template(config=config)
예제 #5
0
    def __init__(self,
                 name=None,
                 config_path=None,
                 config_string=None,
                 config=None,
                 props=None,
                 args=None):
        self.name = name
        self.config_args = []

        if config_path is not None:
            with open(config_path, 'r') as fd:
                config = json.load(fd, object_pairs_hook=OrderedDict)

        if config_string is not None:
            config = json.loads(config_string, object_pairs_hook=OrderedDict)

        args_objects = []
        arg_list = {}

        try:
            js_config = js.import_config(config)

            if args is not None:

                for name2 in args.split(':'):
                    for name in name2.split(' '):
                        arg = Arg(name)
                        arg_list[arg.name] = arg

                extra_args = []
                for arg in arg_list.values():
                    extra_args += self.preprocess_arg(js_config, arg, arg_list)

                for extra_arg in extra_args:
                    arg = Arg(extra_arg)
                    arg_list[arg.name] = arg

                for arg in arg_list.values():
                    args_objects += self.handle_arg(js_config, arg, arg_list)

            if props is not None:
                for arg in props.split(':'):
                    key, value = arg.split('=')
                    js_config.set(key, value)

            config = js_config.get_dict()

        except:
            pass

        if args_objects is not None:
            for arg_object in args_objects:
                self.config_args += arg_object.process(js_config, arg_list)

        self.top = Top_template(config=config)
예제 #6
0
def importConfig(parser):
    argsCli = sys.argv[1:]
    if '-h' in argsCli:
        argsCli.remove('-h')
    parser.parse_known_args(argsCli)
    args, _ = parser.parse_known_args(argsCli)

    if args.py_target is not None:
        class_name, module_name = args.py_target.split('@')

        module = importlib.import_module(module_name)

        if not callable(getattr(module, class_name, None)):
            raise RuntimeError(
                'Unable to find target class (method: %s, filepath: %s)' %
                (class_name, module_name))

        runner = Runner(None,
                        'top',
                        options=args.config_items,
                        target_class=getattr(module, class_name, None))

        return (js.import_config(runner.get_config()), runner)

    elif args.target is not None:
        jsonPath = os.path.join(targetsDir, args.target + '.json')
        ini_configs = args.ini_configs

        if os.environ.get('GAPY_CONFIGS_INI') is not None:
            ini_configs += os.environ.get('GAPY_CONFIGS_INI').split()

        return (js.import_config_from_file(jsonPath,
                                           find=True,
                                           interpret=True,
                                           paths=gapyJsonPath,
                                           ini_configs=ini_configs,
                                           config_items=args.config_items),
                None)
    else:
        return (None, None)
예제 #7
0
    def __init__(self, args, config):
        super(Runner, self).__init__(args, config)

        self.__process_args()

        try:
            gv.gvsoc.process_args(args, config)
        except:
            pass

        self.areas = []
        self.cmd_args = self.config.get('rtl/args').get_dict()

        self.plt_args = []
        self.env = {}
        self.platform_path = None
        self.platform_tool = self.config.get_str('rtl/simulator')

        if os.environ.get('GAPY_RTL_SIMULATOR') is not None:
            self.platform_tool = os.environ.get('GAPY_RTL_SIMULATOR')

        self.plt_config = self.config.get('rtl/' + self.platform_tool)
        self.plt_profile_config = self.plt_config.get('profiles/rtl')

        if self.config.get('**/runner/peripherals') is not None:
            self.set_arg('-gCONFIG_FILE=rtl_config.json')

            if os.environ.get('INSTALL_DIR') is not None:
                dpi_path = '%s/lib/libpulpdpi' % (
                    os.environ.get('INSTALL_DIR'))
                if not os.path.exists(dpi_path + '.so'):
                    raise FatalError('Did no find DPI models: ' + dpi_path +
                                     '.so')

                self.set_arg('-sv_lib %s' % dpi_path)

        #
        # Co-simulation with GVSOC
        #
        if self.config.get_bool('**/runner/gvsoc_dpi/enabled'):
            dpi_path = '%s/lib/libgvsocdpi' % (os.environ.get('INSTALL_DIR'))

            if not os.path.exists(dpi_path + '.so'):
                raise FatalError('Did no find DPI models: ' + dpi_path + '.so')

            if self.platform_tool == 'vsim':
                self.set_arg('-sv_lib %s' % dpi_path)
            else:
                self.set_cmd_arg('-sv_lib %s' % dpi_path)

            full_config, gvsoc_config_path = gv.gvsoc.gen_config(
                args, self.config)
            gv.gvsoc.prepare_exec(self.config, full_config)
            gv.gvsoc.dump_config(full_config, gvsoc_config_path)

            if self.platform_tool == 'vsim':
                self.set_arg('+DPI_CONFIG_FILE=%s' % gvsoc_config_path)
            else:
                self.set_cmd_arg('+DPI_CONFIG_FILE=%s' % gvsoc_config_path)

        else:
            if os.environ.get('TARGET_CHIP') == 'GAP9_V2':
                dpi_path = os.path.join(self.__get_platform_path(),
                                        'ips_inputs/dpi/libchipwrapper')

                if self.platform_tool == 'vsim':
                    self.set_arg('-sv_lib %s' % dpi_path)
                else:
                    self.set_cmd_arg('-sv_lib %s' % dpi_path)

        if self.args.cov or os.environ.get('GAPY_RTL_COVERAGE') is not None:
            test_name = os.environ.get('PLPTEST_NAME')
            if test_name is None:
                test_name = 'test'
            test_name = test_name.replace(':', '.').replace('/', '.')

            self.set_cmd_arg(
                '-covoverwrite -covworkdir %s/cov_work -covtest %s' %
                (os.environ.get('XCSIM_PATH'), test_name))

        self.full_config = js.import_config(self.config.get_dict(),
                                            interpret=True,
                                            gen=True)
예제 #8
0
 def get_js_config(self, configs=None, expand=False):
     result = js.import_config(self.gen(), interpret=expand)
     return result
예제 #9
0
def get_config_from_string(name, config_string, interpret=False, **kwargs):

    return create_config(name,
                         js.import_config(config_string),
                         interpret=interpret)
예제 #10
0
def get_config(file,
               name="",
               config_name=None,
               ini_configs=[],
               ini_configs_dict={},
               config_opts=[],
               properties=[],
               interpret=False,
               **kwargs):

    template_properties = []
    config_properties = config_opts

    for prop in properties:
        if prop.find('config/') == 0:
            config_properties.append(prop.split('config/')[1])
        else:
            template_properties.append(prop)

    if file is not None and file.find('@') != -1:
        name, file = file.split('@')

    if file is not None and file.find('config_file') != -1:
        dummy, file = file.split('=', 1)

    opts = []

    if file.find(':'):
        opts = file.split(':')[1:]
        file = file.split(':')[0]

    config = js.import_config_from_file(file, find=True, interpret=interpret)

    for ini_config in ini_configs:
        parser = configparser.SafeConfigParser(
            ini_configs_dict, dict_type=collections.OrderedDict)
        parser.optionxform = str
        paths = parser.read(ini_config)
        if len(paths) == 0:
            raise Exception("Didn't manage to open file: %s" % (ini_config))

        user_config = collections.OrderedDict()
        for section in parser.sections():
            for item in parser.items(section):
                path = ('%s.%s' % (section, item[0])).split('.')
                config.set_from_list(path, item[1])

        for prop in template_properties:
            for key, value in prop.split('='):
                config.user_set(key, value)

        config = js.import_config(config.get_dict(), interpret=interpret)

    result = create_config(name,
                           config,
                           interpret=interpret,
                           config_name=config_name,
                           **kwargs)

    for config_opt in config_opts + opts:
        key, value = config_opt.split('=', 1)
        result.user_set(key, value)

    return result
예제 #11
0
파일: vp_core.py 프로젝트: stmach/gvsoc
 def get_json_config(self, config):
     return js.import_config(config.get_dict())
예제 #12
0
    def __init__(self, args, config):
        super(Runner, self).__init__(args, config)

        self.__process_args()

        try:
            gv.gvsoc.process_args(args, config)
        except:
            pass

        self.cmd_args = []
        self.plt_args = []
        self.env = {}
        self.platform_path = None
        self.platform_tool = self.config.get_str('rtl/simulator')

        if os.environ.get('GAPY_RTL_SIMULATOR') is not None:
            self.platform_tool = os.environ.get('GAPY_RTL_SIMULATOR')

        self.plt_config = self.config.get('rtl/' + self.platform_tool)
        self.plt_profile_config = self.plt_config.get('profiles/rtl')

        if self.config.get('**/runner/peripherals') is not None:
            self.set_arg('-gCONFIG_FILE=rtl_config.json')

            if os.environ.get('INSTALL_DIR') is not None:
                dpi_path = '%s/lib/libpulpdpi' % (
                    os.environ.get('INSTALL_DIR'))
                if not os.path.exists(dpi_path + '.so'):
                    raise FatalError('Did no find DPI models: ' + dpi_path +
                                     '.so')

                self.set_arg('-sv_lib %s' % dpi_path)

        #
        # Co-simulation with GVSOC
        #
        if self.config.get_bool('**/runner/gvsoc_dpi/enabled'):
            dpi_path = '%s/lib/libgvsocdpi' % (os.environ.get('INSTALL_DIR'))

            if not os.path.exists(dpi_path + '.so'):
                raise FatalError('Did no find DPI models: ' + dpi_path + '.so')

            if self.platform_tool == 'vsim':
                self.set_arg('-sv_lib %s' % dpi_path)
            else:
                self.set_cmd_arg('-sv_lib %s' % dpi_path)

            full_config, gvsoc_config_path = gv.gvsoc.gen_config(
                args, self.config)
            gv.gvsoc.prepare_exec(self.config, full_config)
            gv.gvsoc.dump_config(full_config, gvsoc_config_path)

            if self.platform_tool == 'vsim':
                self.set_arg('+DPI_CONFIG_FILE=%s' % gvsoc_config_path)
            else:
                self.set_cmd_arg('+DPI_CONFIG_FILE=%s' % gvsoc_config_path)

        else:
            if self.platform_tool == 'vsim':
                self.set_arg('-sv_lib %s/%s' %
                             (self.__get_platform_path(),
                              'ips_inputs/dpi/libchipwrapper'))
            else:
                self.set_cmd_arg('-sv_lib %s/%s' %
                                 (self.__get_platform_path(),
                                  'ips_inputs/dpi/libchipwrapper'))

        self.full_config = js.import_config(self.config.get_dict(),
                                            interpret=True,
                                            gen=True)
예제 #13
0
    def gen_stimuli(self, work_dir):
        runner = gap9_v2.Runner(None, js.import_config(self.get_config()),
                                None)

        runner.gen_efuse_stim(self.__get_efuse_path(work_dir))