aboutsummaryrefslogtreecommitdiff
path: root/src/main
AgeCommit message (Collapse)Author
2016-08-04Added RemoveEmpty.scala, which removes Empty and nested Blocks (#218)Adam Izraelevitz
* Added RemoveEmpty.scala, which removes Empty and nested Blocks * Reused squashEmpty from ExpandWhens by moving it to Utils * Squash EmptyStmts in ExpandWhens correctly
2016-08-04Addd check: bits, tail, head arg widthazidar
2016-08-04Bugfix: recursing stmts to remove unknown widthsazidar
2016-08-03fixes small mistakes in serialize (#216)Donggyu
2016-08-02Merge pull request #215 from ucb-bar/new-serializeAdam Izraelevitz
Change serialize to abstract method on FirrtlNode
2016-08-02Merge pull request #203 from ucb-bar/fix_mem_inferAdam Izraelevitz
Fix mem infer
2016-08-02make infer readwrite ports optionalDonggyu Kim
turned on with '--inferRW <circuit name>'
2016-08-02Change serialize to abstract method on FirrtlNodeJack Koenig
2016-08-02Merge pull request #214 from ucb-bar/fix-thread-unsafetyAdam Izraelevitz
Fix use of global state in instance loop checking
2016-08-02Merge pull request #213 from ucb-bar/default-to-warnAdam Izraelevitz
Change default log level to warn
2016-08-02Merge pull request #211 from ucb-bar/fix-subaccessAdam Izraelevitz
Refactor RemoveAccesses and fix bug #210.
2016-08-02Fix use of global state in instance loop checkingjackkoenig
Also increase sensitivity of thread safety checking Fixes #159
2016-08-01Added minor cosmetic changes to RemoveAccessesazidar
2016-08-01Change default log level to warnJack Koenig
2016-08-01Refactor RemoveAccesses and fix bug #210.azidar
Added corresponding unit test.
2016-07-29remove ConstProp in HighFirrtlToMiddleFirrtlDonggyu Kim
ConstProp before width padding causes errors for SIntLiteral
2016-07-28InferWidths now only fixes declaration widthsazidar
Then calls InferTypes to propagate inferred widths to expressions. Required upgrading InferTypes to do simple width propagation. Fixes #206 and #200.
2016-07-27infer readwrite ports for backward compatibilityDonggyu Kim
2016-07-27fix read port enables in RemoveCHIRRTLDonggyu Kim
read ports are declared outside when clauses and used multiple times, so their enables should be inserted when being replaced
2016-07-27Forgot to add Annotations.scalaAdam Izraelevitz
2016-07-27Reworked annotation system. Added tenacity and permissibilityAdam Izraelevitz
Conflicts: src/main/scala/firrtl/Compiler.scala src/main/scala/firrtl/LoweringCompilers.scala src/main/scala/firrtl/passes/Inline.scala src/test/scala/firrtlTests/AnnotationTests.scala src/test/scala/firrtlTests/InlineInstancesTests.scala
2016-07-27Merge pull request #198 from ucb-bar/add-chirrtl-checkAdam Izraelevitz
Added a Chirrtl check for undeclared wires, etc.
2016-07-25Changed InferTypes to update types if UnknownType or has an UnknownWidthazidar
Removed InferWidths after ExpandWhens
2016-07-25Detects and flags cyclic module loopschick
2016-07-21Added a Chirrtl check for undeclared wires, etc.azidar
2016-07-21Indentation support for the ANTLR parser (as discussed in #192) (#194)Kamyar Mohajerani
Indentation support for the ANTLR parser - some clean-up of the parser code (TODO: file input could be improved, more clean-up) - get rid of Translator and specify all syntactic rules in antlr4 grammer - support for else-when shorthand in the grammar - rename Begin to Block which makes more sense
2016-07-07Guard register randomization with RANDOMIZE, rather than SYNTHESISAndrew Waterman
Randomization should be controllable separately. Verilator, for example, already does this if it is passed --x-assign unique; doing it redundantly reduces simulation performance.
2016-07-07Re-run constant propagation after pad widthsAndrew Waterman
2016-07-07Generalize and clean up constant propagation passAndrew Waterman
2016-07-06Emit correct Verilog for SIntLiteralAndrew Waterman
2016-07-06Only assign garbage to Mem reads for non-power-of-2 depthsAndrew Waterman
2016-07-06Avoid width warnings on Mem garbage assignmentAndrew Waterman
2016-07-06Rely on $fatal vs. $finish, rather than stderr, for stop codesAndrew Waterman
This approach uses the normal Unix mechanisms, rather than log grepping.
2016-07-04printf: support '%c' for printing charactersWesley W. Terpstra
2016-06-27Optionally guard stop with `STOP_COND macroAndrew Waterman
This allows for testbench handling of pipelined reset, independently of `PRINTF_COND.
2016-06-23Emit more useful code for stopAndrew Waterman
- Based upon stop value, use $fatal instead of $finish. This causes the Verilog simulator to signal an error to the OS as appropriate. - Don't guard stop with `PRINTF_COND (only not-`SYNTHESIS).
2016-06-10Change BoolType from method to valJack Koenig
2016-06-10API Cleanup - ASTJack
trait AST -> abstract class FirrtlNode Move all IR to new package ir Add import of firrtl.ir._
2016-06-10API Cleanup - PrimOp & PrimOpsJack
Add simple documentation trait PrimOp -> abstract class PrimOp Move PrimOp case objects to object PrimOps Rename PrimOp case objects to match concrete syntax Overrwrite toString for more canonical serialization Update some PrimOps utility functions
2016-06-10API Cleanup - ExpressionJack
trait Expression -> abstract class Expression Ref -> Reference abbrev. exp -> expr Add abstract class Literal UIntValue -> UIntLiteral extends Literal SIntValue -> SIntLiteral extends Literal
2016-06-10API Cleanup - StatementJack
trait Stmt -> abstract class Statement (to match Expression) abbrev. exp -> expr BulkConnect -> PartialConnect camelCase things that were snake_case case class Empty() -> case object EmptyStmt Change >120 character Statements to multiline
2016-06-10API Cleanup - WidthJack
Add simple documentation trait Width -> abstract class Width case class UnknownWidth -> case object UnknownWidth
2016-06-10API Cleanup - Field & FlipJack
Add simple documentation Flip -> Orientation trait Orientation -> abstract class Orientation Orientation case objects to upper camel case REVERSE -> Flip
2016-06-10API Cleanup - TypeJack
trait Type -> abstract class Type case class ClockType() -> case object ClockType case class UnknownType() -> case object UnknownType Add GroundType and AggregateType ClockType has width of IntWidth(1)
2016-06-10API Cleanup - Port & DirectionJack
Add simple documentation Change Direction case objects to upper camel case
2016-06-10API Cleanup - ModuleJack
trait Module -> abstract class DefModule InModule -> Module (match concrete syntax) ExModule -> ExtModule (match concrete syntax) Add simple scaladoc for each one
2016-06-10Avoid exponential growth in reg code emissionAndrew Waterman
In 7afe9f6180a53fd9f024c67d78289689a601c8b7, I reintroduced a performance pathology when recursing through Mux trees. This patch prevents redundantly expanding the same Mux more than a constant number of times, preserving linear runtime but still resulting in acceptable QoR.
2016-06-10Fix Verilog codegen for regAndrew Waterman
Previously, we emitted if-else sequences for reg updates. Recent improvements to FIRRTL resulted in the emission of explicit mux networks instead. While equivalent, doing so reduces QoR, presumably because ECAD tools are tuned to the habits of manual Verilog coders. This seems to be a result of WRefs appearing between the regs and muxes. Chasing down the sources of the WRefs corrects the code generation. This patch reduces the Rocket pipeline area by about 2% and improves rocket-chip's Verilator performance by about 8%.
2016-06-09Initializes register addresses. (#189)Adam Izraelevitz
Fixes #187.
2016-06-09Merge branch 'master' into fix-warningAdam Izraelevitz