defpackage firrtl/ir2 : import core import verse import bigint2 public defmulti info! (x:?) -> FileInfo public defmethod info! (x:?) : FileInfo() public val vector-expand-delin = `$ public val bundle-expand-delin = `$ public val module-expand-delin = `$ public val scope-delin = `_ public val inline-delin = `_ public val delin = `_ public definterface PortDirection public val INPUT = new PortDirection public val OUTPUT = new PortDirection public definterface Flip public val DEFAULT = new Flip public val REVERSE = new Flip public definterface AccDirection public val READ = new AccDirection public val WRITE = new AccDirection public val INFER = new AccDirection public val RDWR = new AccDirection public definterface Width public defstruct UnknownWidth <: Width public defn LongWidth (width:Int) : LongWidth(to-long(width)) public defstruct LongWidth <: Width : width: Long public definterface PrimOp public val ADD-OP = new PrimOp public val SUB-OP = new PrimOp public val MUL-OP = new PrimOp public val DIV-OP = new PrimOp public val MOD-OP = new PrimOp public val QUO-OP = new PrimOp public val REM-OP = new PrimOp public val ADD-WRAP-OP = new PrimOp public val SUB-WRAP-OP = new PrimOp public val LESS-OP = new PrimOp public val LESS-EQ-OP = new PrimOp public val GREATER-OP = new PrimOp public val GREATER-EQ-OP = new PrimOp public val NEQUAL-OP = new PrimOp public val EQUAL-OP = new PrimOp public val NEQUIV-OP = new PrimOp public val EQUIV-OP = new PrimOp public val MUX-OP = new PrimOp public val PAD-OP = new PrimOp public val AS-UINT-OP = new PrimOp public val AS-SINT-OP = new PrimOp public val DYN-SHIFT-LEFT-OP = new PrimOp public val DYN-SHIFT-RIGHT-OP = new PrimOp public val SHIFT-LEFT-OP = new PrimOp public val SHIFT-RIGHT-OP = new PrimOp public val NEG-OP = new PrimOp public val CONVERT-OP = new PrimOp public val BIT-NOT-OP = new PrimOp public val BIT-AND-OP = new PrimOp public val BIT-OR-OP = new PrimOp public val BIT-XOR-OP = new PrimOp public val CONCAT-OP = new PrimOp public val BIT-SELECT-OP = new PrimOp public val BITS-SELECT-OP = new PrimOp public val BIT-AND-REDUCE-OP = new PrimOp public val BIT-OR-REDUCE-OP = new PrimOp public val BIT-XOR-REDUCE-OP = new PrimOp public definterface Expression public defmulti type (e:Expression) -> Type public defstruct Ref <: Expression : name: Symbol type: Type with: (as-method => true) public defstruct Subfield <: Expression : exp: Expression name: Symbol type: Type with: (as-method => true) public defstruct Index <: Expression : exp: Expression value: Int type: Type with: (as-method => true) public defstruct UIntValue <: Expression : value: BigInt width: Width public defstruct SIntValue <: Expression : value: BigInt width: Width public defstruct DoPrim <: Expression : op: PrimOp args: List consts: List type: Type with: (as-method => true) public definterface Stmt public defmulti info (s:Stmt) -> FileInfo public defstruct DefWire <: Stmt : ;LOW info: FileInfo with: (as-method => true) name: Symbol type: Type public defstruct DefRegister <: Stmt : info: FileInfo with: (as-method => true) name: Symbol type: Type clock: Expression reset: Expression public defstruct DefInstance <: Stmt : ;LOW info: FileInfo with: (as-method => true) name: Symbol module: Expression public defstruct DefMemory <: Stmt : ;LOW info: FileInfo with: (as-method => true) name: Symbol type: Type seq?: True|False clock: Expression size: Int public defstruct DefNode <: Stmt : ;LOW info: FileInfo with: (as-method => true) name: Symbol value: Expression public defstruct DefAccessor <: Stmt : info: FileInfo with: (as-method => true) name: Symbol source: Expression index: Expression acc-dir: AccDirection public defstruct DefPoison <: Stmt : ;LOW info: FileInfo with: (as-method => true) name: Symbol type: Type public defstruct Conditionally <: Stmt : info: FileInfo with: (as-method => true) pred: Expression conseq: Stmt alt: Stmt public defstruct Begin <: Stmt : ;LOW body: List public defstruct OnReset <: Stmt : info: FileInfo with: (as-method => true) loc: Expression exp: Expression public defstruct BulkConnect <: Stmt : info: FileInfo with: (as-method => true) loc: Expression exp: Expression public defstruct Connect <: Stmt : ;LOW info: FileInfo with: (as-method => true) loc: Expression exp: Expression public defstruct EmptyStmt <: Stmt ;LOW public definterface Type public defstruct UIntType <: Type : width: Width public defstruct SIntType <: Type : width: Width public defstruct BundleType <: Type : fields: List public defstruct VectorType <: Type : type: Type size: Int public defstruct ClockType <: Type public defstruct UnknownType <: Type public defstruct Field : name: Symbol flip: Flip type: Type public defstruct Port : info: FileInfo name: Symbol direction: PortDirection type: Type public definterface Module public defmulti name (m:Module) -> Symbol public defmulti ports (m:Module) -> List public defmulti info (m:Module) -> FileInfo public defstruct InModule <: Module : info: FileInfo with: (as-method => true) name: Symbol with: (as-method => true) ports: List with: (as-method => true) body: Stmt public defstruct ExModule <: Module : info: FileInfo with: (as-method => true) name: Symbol with: (as-method => true) ports: List with: (as-method => true) public defstruct Circuit : info: FileInfo modules: List main: Symbol