Mix-in that lets an Annotation serialize itself to a file separate from the output annotation file.
Mix-in that lets an Annotation serialize itself to a file separate from the output annotation file.
This can be used as a mechanism to serialize an Unserializable annotation or to write ancillary collateral used by downstream tooling, e.g., a TCL script or an FPGA constraints file. Any annotations using this mix-in will be serialized by the WriteOutputAnnotations phase. This is one of the last phases common to all Stages and should not have to be called/included manually.
Note: from the perspective of transforms generating annotations that mix-in this trait, the serialized files are not expected to be available to downstream transforms. Communication of information between transforms must occur through the annotations that will eventually be serialized to files.
Mixin that defines dependencies between TransformLikes (hereafter referred to as "transforms")
Mixin that defines dependencies between TransformLikes (hereafter referred to as "transforms")
This trait forms the basis of the Dependency API of the Chisel/FIRRTL Hardware Compiler Framework. Dependencies are defined in terms of prerequisistes, optional prerequisites, optional prerequisites of, and invalidates. A prerequisite is a transform that must run before this transform. An optional prerequisites is transform that should run before this transform if the other transform is a target (or the prerequisite of a target). An optional prerequisite of is an optional prerequisite injected into another transform. Finally, invalidates define the set of transforms whose effects this transform undos/invalidates. (Invalidation then implies that a transform that is invalidated by this transform and needed by another transform will need to be re-run.)
This Dependency API only defines dependencies. A concrete DependencyManager is expected to be used to statically resolve a linear ordering of transforms that satisfies dependency requirements.
some transform
A TransformLike that resolves a linear ordering of dependencies based on requirements.
A TransformLike that resolves a linear ordering of dependencies based on requirements.
the type over which this transforms
the type of the TransformLike
An exception arising from an in a DependencyManager
OptionParser mixin that causes the OptionParser to not call exit (call sys.exit
) if the --help
option is
passed
A modified OptionParser with mutable termination and additional checks
OptionParser mixin that converts to OptionsException
OptionParser mixin that converts to OptionsException
Scopt, by default, will print errors to stderr, e.g., invalid arguments will do this. However, a Stage uses StageUtils.dramaticError. By converting this to an OptionsException, a Stage can then catch the error an convert it to an OptionsException that a Stage can get at.
The supertype of all exit codes
An ExitCode indicative of failure.
An ExitCode indicative of failure. This must be non-zero and should not conflict with a reserved exit code.
Indicates that this class/object includes options (but does not add these as a registered class)
Mix-in that makes a TransformLike guaranteed to be an identity function on some type.
Mix-in that makes a TransformLike guaranteed to be an identity function on some type.
the transformed type
Holds a filename containing one or more annotations.Annotation to be read
Holds a filename containing one or more annotations.Annotation to be read
-faf/--annotation-file
Indicate an error related to a bad Annotation or it's command line option equivalent.
Indicate an error related to a bad Annotation or it's command line option equivalent. This exception is always caught and converted to an error message by a Stage. Do not use this for communicating generic exception information.
Type class defining a "view" of an AnnotationSeq
Type class defining a "view" of an AnnotationSeq
the type to which this viewer converts an AnnotationSeq to
An explicit output _annotation_ file to write to
An explicit output _annotation_ file to write to
-foaf/--output-annotation-file
A mathematical transformation of an AnnotationSeq.
A mathematical transformation of an AnnotationSeq.
A Phase forms one unit in the Chisel/FIRRTL Hardware Compiler Framework (HCF). The HCF is built from a sequence of Phases applied to an AnnotationSeq. Note that a Phase may consist of multiple phases internally.
Indicate a generic error in a Phase
A Phase that will ensure that some other Phases and their prerequisites are executed.
A Phase that will ensure that some other Phases and their prerequisites are executed.
This tries to determine a phase ordering such that an AnnotationSeq output is produced that has had all of the requested Phase target transforms run without having them be invalidated.
Indicates that a Phase is missing some mandatory information.
Indicates that a Phase is missing some mandatory information. This likely occurs either if a user ran something out of order or if the compiler did not run things in the correct order.
Additional arguments
Additional arguments
A class that includes options that should be exposed as a group at the top level.
A class that includes options that should be exposed as a group at the top level.
To complete registration, include an entry in src/main/resources/META-INF/services/firrtl.options.RegisteredLibrary
A Transform that includes an option that should be exposed at the top level.
A Transform that includes an option that should be exposed at the top level.
To complete registration, include an entry in src/main/resources/META-INF/services/firrtl.options.RegisteredTransform
A utility for working with command line options
Contains information about a Shell command line option
A Stage represents one stage in the FIRRTL hardware compiler framework.
A Stage represents one stage in the FIRRTL hardware compiler framework. A Stage is, conceptually, a Phase that includes a command line interface.
The FIRRTL compiler is a stage as well as any frontend or backend that runs before/after FIRRTL. Concretely, Chisel is a Stage as is FIRRTL's Verilog emitter. Each stage performs a mathematical transformation on an AnnotationSeq where some input annotations are processed to produce different annotations. Command line options may be pulled in if available.
Indicates that a Stage or Phase has run into a situation where it cannot continue.
Provides a main method for a Stage
Options that every stage shares
Holds the name of the target directory
Holds the name of the target directory
-td/--target-dir
A polymorphic mathematical transform
A polymorphic mathematical transform
the transformed type
A TransformLike that internally translates the input type to some other type, transforms the internal type, and converts back to the original type.
A TransformLike that internally translates the input type to some other type, transforms the internal type, and converts back to the original type.
This is intended to be used to insert a TransformLike parameterized by type B
into a sequence of TransformLikes parameterized by type A
.
the type of the TransformLike
the internal type
An annotation that should not be serialized automatically WriteOutputAnnotations.
An annotation that should not be serialized automatically WriteOutputAnnotations. This usually means that this is an annotation that is used only internally to a Stage.
A trait indicating that no invalidations occur, i.e., all previous transforms are preserved
A trait indicating that no invalidations occur, i.e., all previous transforms are preserved
some TransformLike
(Since version FIRRTL 1.4) Use an explicit override def invalidates
returning false. This will be removed in FIRRTL 1.5.
ExitCode indicating success
An exit code indicating a general, non-specific error
Utilities related to working with a Stage
A shim to manage multiple "views" of an AnnotationSeq
If this Annotation exists in an AnnotationSeq, then a WriteOutputAnnotations will include DeletedAnnotations when it writes to a file.
If this Annotation exists in an AnnotationSeq, then a WriteOutputAnnotations will include DeletedAnnotations when it writes to a file.