# Copyright (C) 2020-2022 F4PGA Authors.
#
# Licensed under the Apache License, Version 2.0 (the "License");
# you may not use this file except in compliance with the License.
# You may obtain a copy of the License at
#
#     https://www.apache.org/licenses/LICENSE-2.0
#
# Unless required by applicable law or agreed to in writing, software
# distributed under the License is distributed on an "AS IS" BASIS,
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
# See the License for the specific language governing permissions and
# limitations under the License.
#
# SPDX-License-Identifier: Apache-2.0

name: xc7

channels:
  - litex-hub

dependencies:
  - litex-hub::prjxray-tools=0.1_3015_gae546d6b=20220708_203356
  - litex-hub::prjxray-db=0.0_257_g0a0adde=20220708_203356
  - litex-hub::vtr-optimized=8.0.0_5699_g25e723a24=20220708_203356
  - litex-hub::yosys=0.19_21_ga82eff2e2=20220720_081021_py37
  - litex-hub::symbiflow-yosys-plugins=1.0.0_7_1027_g52cdcc4=20220720_081021
  - make
  - lxml
  - git
  - pip
  - pip:
    - -r xc7_requirements.txt
