image: tapasco variables: XILINXD_LICENSE_FILE: "/opt/cad/keys/xilinx" before_script: - uname -a - echo $SHELL - echo $PWD - source $PWD/setup.sh - source /root/.sdkman/bin/sdkman-init.sh - export SBT_OPTS="-Dsbt.global.base=$TAPASCO_HOME/.sbt/ -Dsbt.ivy.home=$TAPASCO_HOME/.ivy2/ -Divy.home=$TAPASCO_HOME/.ivy2/" stages: - toolchain-test - hls - import - compose - dse scala-test: stage: toolchain-test script: - sbt clean test .template: &template only: - "master" - "gitlab-ci" - /20\d\d\.\d/ sbt-prepare: <<: *template stage: toolchain-test cache: untracked: true key: "$CI_COMMIT_SHA-$CI_COMMIT_REF_NAME" policy: push script: - sbt assembly .hls-template: &hls-definition <<: *template stage: hls dependencies: - sbt-prepare cache: untracked: true key: "$CI_COMMIT_SHA-$CI_COMMIT_REF_NAME" policy: pull artifacts: when: always expire_in: 1 hours paths: - core script: - source /opt/cad/$VIVADO_OFFSET/settings64.sh - vivado -version - | if [ ! -d ".ivy2" ]; then echo "Cache not available" sbt assembly fi - tapasco -v hls arraysum, arrayinit -a $ARCHS -p $PLATFORMS .import-template: &import-definition <<: *template stage: import dependencies: - sbt-prepare cache: untracked: true key: "$CI_COMMIT_SHA-$CI_COMMIT_REF_NAME" policy: pull script: - source /opt/cad/$VIVADO_OFFSET/settings64.sh - | if [ ! -d ".ivy2" ]; then echo "Cache not available" sbt assembly fi - cd $TAPASCO_HOME/common/ip && zip -r precision_counter.zip precision_counter* - tapasco -v import $TAPASCO_HOME/common/ip/precision_counter.zip as 14 -a $ARCHS -p $PLATFORMS .compose-template: &compose-definition <<: *template stage: compose cache: untracked: true key: "$CI_COMMIT_SHA-$CI_COMMIT_REF_NAME" policy: pull script: - source /opt/cad/$VIVADO_OFFSET/settings64.sh - | if [ ! -d ".ivy2" ]; then echo "Cache not available" sbt assembly fi - tapasco -v --maxTasks 1 compose [arraysum x 1, arrayupdate x 1] @ 100 MHz -a $ARCHS -p $PLATFORMS --features "$FEATURES" hls-2017.4-axi4mm-pynq: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "pynq" <<: *hls-definition import-2017.4-axi4mm-pynq: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "pynq" <<: *import-definition compose-2017.4-axi4mm-pynq-Debug: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "pynq" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.4-axi4mm-pynq-LED: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "pynq" FEATURES: "\"LED\" { enabled: true }" <<: *compose-definition hls-2017.4-axi4mm-vc709: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "vc709" <<: *hls-definition import-2017.4-axi4mm-vc709: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "vc709" <<: *import-definition compose-2017.4-axi4mm-vc709-ATS-PRI: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"ATS-PRI\" { enabled: true }" <<: *compose-definition compose-2017.4-axi4mm-vc709-BlueDMA: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"BlueDMA\" { enabled: true }" <<: *compose-definition compose-2017.4-axi4mm-vc709-Cache: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"Cache\" { enabled: true }" <<: *compose-definition compose-2017.4-axi4mm-vc709-Debug: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.4-axi4mm-vc709-LED: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"LED\" { enabled: true }" <<: *compose-definition hls-2017.4-axi4mm-zc706: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "zc706" <<: *hls-definition import-2017.4-axi4mm-zc706: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "zc706" <<: *import-definition compose-2017.4-axi4mm-zc706-Debug: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "zc706" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.4-axi4mm-zc706-FanControl: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "zc706" FEATURES: "\"FanControl\" { enabled: true }" <<: *compose-definition hls-2017.4-axi4mm-zedboard: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "zedboard" <<: *hls-definition import-2017.4-axi4mm-zedboard: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "zedboard" <<: *import-definition compose-2017.4-axi4mm-zedboard-Debug: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "zedboard" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.4-axi4mm-zedboard-OLED: variables: VIVADO_VERSION: "2017.4" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.4/" ARCHS: "axi4mm" PLATFORMS: "zedboard" FEATURES: "\"OLED\" { enabled: true }" <<: *compose-definition hls-2017.3-axi4mm-pynq: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "pynq" <<: *hls-definition import-2017.3-axi4mm-pynq: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "pynq" <<: *import-definition compose-2017.3-axi4mm-pynq-Debug: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "pynq" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.3-axi4mm-pynq-LED: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "pynq" FEATURES: "\"LED\" { enabled: true }" <<: *compose-definition hls-2017.3-axi4mm-vc709: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "vc709" <<: *hls-definition import-2017.3-axi4mm-vc709: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "vc709" <<: *import-definition compose-2017.3-axi4mm-vc709-ATS-PRI: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"ATS-PRI\" { enabled: true }" <<: *compose-definition compose-2017.3-axi4mm-vc709-BlueDMA: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"BlueDMA\" { enabled: true }" <<: *compose-definition compose-2017.3-axi4mm-vc709-Cache: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"Cache\" { enabled: true }" <<: *compose-definition compose-2017.3-axi4mm-vc709-Debug: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.3-axi4mm-vc709-LED: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"LED\" { enabled: true }" <<: *compose-definition hls-2017.3-axi4mm-zc706: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "zc706" <<: *hls-definition import-2017.3-axi4mm-zc706: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "zc706" <<: *import-definition compose-2017.3-axi4mm-zc706-Debug: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "zc706" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.3-axi4mm-zc706-FanControl: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "zc706" FEATURES: "\"FanControl\" { enabled: true }" <<: *compose-definition hls-2017.3-axi4mm-zedboard: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "zedboard" <<: *hls-definition import-2017.3-axi4mm-zedboard: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "zedboard" <<: *import-definition compose-2017.3-axi4mm-zedboard-Debug: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "zedboard" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.3-axi4mm-zedboard-OLED: variables: VIVADO_VERSION: "2017.3" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.3/" ARCHS: "axi4mm" PLATFORMS: "zedboard" FEATURES: "\"OLED\" { enabled: true }" <<: *compose-definition hls-2017.2-axi4mm-pynq: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "pynq" <<: *hls-definition import-2017.2-axi4mm-pynq: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "pynq" <<: *import-definition compose-2017.2-axi4mm-pynq-Debug: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "pynq" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.2-axi4mm-pynq-LED: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "pynq" FEATURES: "\"LED\" { enabled: true }" <<: *compose-definition hls-2017.2-axi4mm-vc709: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "vc709" <<: *hls-definition import-2017.2-axi4mm-vc709: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "vc709" <<: *import-definition compose-2017.2-axi4mm-vc709-ATS-PRI: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"ATS-PRI\" { enabled: true }" <<: *compose-definition compose-2017.2-axi4mm-vc709-BlueDMA: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"BlueDMA\" { enabled: true }" <<: *compose-definition compose-2017.2-axi4mm-vc709-Cache: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"Cache\" { enabled: true }" <<: *compose-definition compose-2017.2-axi4mm-vc709-Debug: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.2-axi4mm-vc709-LED: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"LED\" { enabled: true }" <<: *compose-definition hls-2017.2-axi4mm-zc706: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "zc706" <<: *hls-definition import-2017.2-axi4mm-zc706: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "zc706" <<: *import-definition compose-2017.2-axi4mm-zc706-Debug: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "zc706" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.2-axi4mm-zc706-FanControl: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "zc706" FEATURES: "\"FanControl\" { enabled: true }" <<: *compose-definition hls-2017.2-axi4mm-zedboard: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "zedboard" <<: *hls-definition import-2017.2-axi4mm-zedboard: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "zedboard" <<: *import-definition compose-2017.2-axi4mm-zedboard-Debug: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "zedboard" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.2-axi4mm-zedboard-OLED: variables: VIVADO_VERSION: "2017.2" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.2/" ARCHS: "axi4mm" PLATFORMS: "zedboard" FEATURES: "\"OLED\" { enabled: true }" <<: *compose-definition hls-2017.1-axi4mm-pynq: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "pynq" <<: *hls-definition import-2017.1-axi4mm-pynq: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "pynq" <<: *import-definition compose-2017.1-axi4mm-pynq-Debug: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "pynq" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.1-axi4mm-pynq-LED: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "pynq" FEATURES: "\"LED\" { enabled: true }" <<: *compose-definition hls-2017.1-axi4mm-vc709: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "vc709" <<: *hls-definition import-2017.1-axi4mm-vc709: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "vc709" <<: *import-definition compose-2017.1-axi4mm-vc709-ATS-PRI: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"ATS-PRI\" { enabled: true }" <<: *compose-definition compose-2017.1-axi4mm-vc709-BlueDMA: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"BlueDMA\" { enabled: true }" <<: *compose-definition compose-2017.1-axi4mm-vc709-Cache: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"Cache\" { enabled: true }" <<: *compose-definition compose-2017.1-axi4mm-vc709-Debug: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.1-axi4mm-vc709-LED: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "vc709" FEATURES: "\"LED\" { enabled: true }" <<: *compose-definition hls-2017.1-axi4mm-zc706: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "zc706" <<: *hls-definition import-2017.1-axi4mm-zc706: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "zc706" <<: *import-definition compose-2017.1-axi4mm-zc706-Debug: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "zc706" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.1-axi4mm-zc706-FanControl: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "zc706" FEATURES: "\"FanControl\" { enabled: true }" <<: *compose-definition hls-2017.1-axi4mm-zedboard: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "zedboard" <<: *hls-definition import-2017.1-axi4mm-zedboard: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "zedboard" <<: *import-definition compose-2017.1-axi4mm-zedboard-Debug: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "zedboard" FEATURES: "\"Debug\" { enabled: true }" <<: *compose-definition compose-2017.1-axi4mm-zedboard-OLED: variables: VIVADO_VERSION: "2017.1" VIVADO_OFFSET: "xilinx/vivado/Vivado/2017.1/" ARCHS: "axi4mm" PLATFORMS: "zedboard" FEATURES: "\"OLED\" { enabled: true }" <<: *compose-definition