| Age | Commit message (Collapse) | Author |
|
|
|
|
|
|
|
|
|
This approach uses the normal Unix mechanisms, rather than log grepping.
|
|
|
|
This allows for testbench handling of pipelined reset,
independently of `PRINTF_COND.
|
|
- 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).
|
|
|
|
trait AST -> abstract class FirrtlNode
Move all IR to new package ir
Add import of firrtl.ir._
|
|
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
|
|
trait Expression -> abstract class Expression
Ref -> Reference
abbrev. exp -> expr
Add abstract class Literal
UIntValue -> UIntLiteral extends Literal
SIntValue -> SIntLiteral extends Literal
|
|
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
|
|
Add simple documentation
trait Width -> abstract class Width
case class UnknownWidth -> case object UnknownWidth
|
|
Add simple documentation
Flip -> Orientation
trait Orientation -> abstract class Orientation
Orientation case objects to upper camel case
REVERSE -> Flip
|
|
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)
|
|
Add simple documentation
Change Direction case objects to upper camel case
|
|
trait Module -> abstract class DefModule
InModule -> Module (match concrete syntax)
ExModule -> ExtModule (match concrete syntax)
Add simple scaladoc for each one
|
|
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.
|
|
|
|
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%.
|
|
Fixes #187.
|
|
|
|
Addresses #184
Problem was that the width inferencer must assume a minimal width
for self-referencing widths contained in a MaxWidth. Otherwise, it
cannot solve the constraint.
|
|
Fix bug in FIRRTL width inference, refactor associated functions
|
|
Update check high form
|
|
Guard mem read ports with random data if read addr is out of range
|
|
|
|
When folding over lists for MinWidth and MaxWidth, would assume 0 as a start
value. 0 persists through MinWidth resulting in under-constraining
The functions were also refactored to be more readable and aligned with scala
style/best practices.
|
|
Add function for diff assignments for sim and synthesis to VerilogEmitter
Fixes #155
|
|
|
|
Made obsolete by #120
|
|
Canonicalizes catching/throwing PassExceptions.
|
|
also check for it int unittest
|
|
|
|
Fixes #147
|
|
|
|
Transforms are new unit of modularity within the compiler.
|
|
|
|
|
|
Add unit tests for splitting expressions and padding widths
|
|
|
|
RemoveValidIf, SplitExpressions, and PadWidths
|
|
This is to start moving stuff out of Emitter and into separate passes
|
|
|
|
|
|
|
|
Changed initialization to assign the correct number of random bits.
|
|
Fixes #133
|
|
|