defpackage firrtl/custom-compiler : import core import verse import firrtl/ir-utils import firrtl/ir2 import firrtl/passes import firrtl/errors import firrtl/verilog import firrtl/custom-passes public defstruct InstrumentedVerilog <: Compiler : with-output: (() -> False) -> False with: (as-method => true) args: List public defmethod passes (c:InstrumentedVerilog) -> List : to-list $ [ WhenCoverage(args(c)[0],args(c)[1]) RemoveSpecialChars() RemoveScopes() CheckHighForm() TempElimination() ToWorkingIR() ;; MakeExplicitReset() ResolveKinds() CheckKinds() InferTypes() CheckTypes() ResolveGenders() CheckGenders() ExpandAccessors() LowerToGround() InlineIndexed() InferTypes() CheckGenders() ExpandWhens() InferWidths() ;Pad() ConstProp() SplitExp() ToRealIR() ;RemoveSpecialChars() CheckHighForm() CheckLowForm() CheckInitialization() Verilog(with-output(c)) ]