2021-01-20 11:27:34 +01:00
|
|
|
#!/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():
|
2021-03-18 21:41:49 +01:00
|
|
|
# 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
|
|
|
|
|
|
2021-01-20 11:27:34 +01:00
|
|
|
environment = get_environment_variables()
|
|
|
|
|
|
|
|
|
|
for key, value in environment.items():
|
|
|
|
|
print("export {}={}".format(key, value))
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
if __name__ == "__main__":
|
|
|
|
|
main()
|