| #!/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() |