aboutsummaryrefslogtreecommitdiff
path: root/src/main/scala/logger/phases/AddDefaults.scala
blob: 722b7c78447a32f4c6e01e1928444a09e8807de1 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
// SPDX-License-Identifier: Apache-2.0

package logger.phases

import firrtl.AnnotationSeq
import firrtl.options.Phase

import logger.{LogLevelAnnotation, LoggerOption}

/** Add default logger [[Annotation]]s */
private[logger] class AddDefaults extends Phase {

  override def prerequisites = Seq.empty
  override def optionalPrerequisiteOf = Seq.empty
  override def invalidates(a: Phase) = false

  /** Add missing default [[Logger]] [[Annotation]]s to an [[AnnotationSeq]]
    * @param annotations input annotations
    * @return output annotations with defaults
    */
  def transform(annotations: AnnotationSeq): AnnotationSeq = {
    var ll = true
    annotations.collect { case a: LoggerOption => a }.map {
      case _: LogLevelAnnotation => ll = false
      case _ =>
    }
    annotations ++
      (if (ll) Seq(LogLevelAnnotation()) else Seq())
  }

}