| #!/usr/bin/env python3 | |
| # -*- coding: utf-8 -*- | |
| # | |
| # Copyright (C) 2017-2020 The Project X-Ray Authors. | |
| # | |
| # Use of this source code is governed by a ISC-style | |
| # license that can be found in the LICENSE file or at | |
| # https://opensource.org/licenses/ISC | |
| # | |
| # SPDX-License-Identifier: ISC | |
| import os | |
| from prjxray.util import get_part_information, get_part_resources, get_fabric_for_part | |
| def get_environment_variables(): | |
| """ | |
| This function returns a dict of environment settings for a given part. | |
| It requires a basic setup of the prjxray environment that contains | |
| information about the databse directory location, the FPGA part, etc. | |
| One of the settings must be sourced, to set up the basic environment. | |
| """ | |
| environment = dict() | |
| # Get base environment variables and resources' paths | |
| part = os.environ['XRAY_PART'] | |
| database = os.environ['XRAY_DATABASE'] | |
| database_dir = os.environ['XRAY_DATABASE_DIR'] | |
| xray_root = os.environ['XRAY_DIR'] | |
| db_root = os.path.join(database_dir, database) | |
| res_path = os.path.join(xray_root, 'settings', database) | |
| # Get device information | |
| part_info = get_part_information(db_root, part) | |
| fabric = get_fabric_for_part(db_root, part) | |
| resources = get_part_resources(res_path, os.environ['XRAY_PART']) | |
| environment['XRAY_DEVICE'] = part_info['device'] | |
| environment['XRAY_PACKAGE'] = part_info['package'] | |
| environment['XRAY_SPEED_GRADE'] = part_info['speedgrade'] | |
| environment['XRAY_FABRIC'] = fabric | |
| for number, pin in resources['pins'].items(): | |
| environment['XRAY_PIN_{:02d}'.format(number)] = pin | |
| return environment | |
| def main(): | |
| # Only dump the environment when the resource.yaml file for the family | |
| # exists to prevent errors during the creation on the stdout. | |
| # SKIP_ENV in the environment turns off the environment dump for updating | |
| # all parts and resources, which will create the resource.yaml file. | |
| if 'SKIP_ENV' in os.environ: | |
| return | |
| environment = get_environment_variables() | |
| for key, value in environment.items(): | |
| print("export {}={}".format(key, value)) | |
| if __name__ == "__main__": | |
| main() |