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