diff options
| author | Adam Izraelevitz | 2016-10-17 15:10:12 -0700 |
|---|---|---|
| committer | GitHub | 2016-10-17 15:10:12 -0700 |
| commit | 7d08b9a1486fef0459481f6e542464a29fbe1db5 (patch) | |
| tree | e8b2289ac5cbecbd59d58cab8bd503287818ec5d /src/main/scala/firrtl/passes/CheckChirrtl.scala | |
| parent | 2848d87721df110d0425114283cb5fa7e6c2ee03 (diff) | |
Add fixed point type (#322)
* WIP: Adding FixedType to Firrtl proper
Got simple example running through width inference
Checks should be ok
Need to look into FixedLiteral more
* Added simple test for fixed types
* Added asFixedPoint to primops
* Added tail case for FixedType
* Added ConvertFixedToSInt.scala
Added pass to MiddleToLowerFirrtl transform
* Replace AsFixedType with AsSInt in fixed removal
* Bugfix: constant from asFixed not deleted
* Added unit test for bulk connect
* Fixed partial connect bug #241
* Fixed missing case for FixedPoint in legalizeConnect
* Add FixedMathSpec that demonstrates some problems with FixedPointMath
* Fixed test and ConvertToSInt to pass.
Negative binary points not easily supported, needs much more time to
implement.
* Refactored checking neg widths
Make checking for negative binary points easier
* Added tests for inferring many FixedType ops
shl, shr, cat, bits, head, tail, setbp, shiftbp
* Handle bpshl, bpshr, bpset in ConvertFixedToSInt
Changed name from shiftbp -> bpshl, bpshr
Change name from setbp -> bpset
Added more tests
* Added set binary point test that fails
* Added simple test for zero binary point
* gitignore fixes for antlr intermediate dir and intellij dir
* removed unused imports
retool the fixed point with zero binary point test
* simplified example of inability to set binary point to zero
* Temporary fix for zero-width binary point
This fix allows for all widths to be zero, but since this is a feature I
am working on next, I'm not going to bother with a more stringent check.
* change version for dsp tools
* Removed extra temporary file
* Fixed merge bug
* Fixed another merge bug
* Removed commented out/unrelated files
* Removed snake case
Diffstat (limited to 'src/main/scala/firrtl/passes/CheckChirrtl.scala')
| -rw-r--r-- | src/main/scala/firrtl/passes/CheckChirrtl.scala | 13 |
1 files changed, 6 insertions, 7 deletions
diff --git a/src/main/scala/firrtl/passes/CheckChirrtl.scala b/src/main/scala/firrtl/passes/CheckChirrtl.scala index 17e228eb..504702b5 100644 --- a/src/main/scala/firrtl/passes/CheckChirrtl.scala +++ b/src/main/scala/firrtl/passes/CheckChirrtl.scala @@ -68,22 +68,21 @@ object CheckChirrtl extends Pass { errors append new InvalidLOCException(info, mname) case _ => // Do Nothing } - def checkChirrtlW(info: Info, mname: String)(w: Width): Width = w match { - case w: IntWidth if w.width <= 0 => - errors append new NegWidthException(info, mname) + case w: IntWidth if (w.width < BigInt(0)) => + errors.append(new NegWidthException(info, mname)) w case _ => w } - def checkChirrtlT(info: Info, mname: String)(t: Type): Type = { + def checkChirrtlT(info: Info, mname: String)(t: Type): Type = t map checkChirrtlT(info, mname) match { case t: VectorType if t.size < 0 => errors append new NegVecSizeException(info, mname) - case _ => // Do nothing + t map checkChirrtlW(info, mname) + //case FixedType(width, point) => FixedType(checkChirrtlW(width), point) + case _ => t map checkChirrtlW(info, mname) } - t map checkChirrtlW(info, mname) map checkChirrtlT(info, mname) - } def validSubexp(info: Info, mname: String)(e: Expression): Expression = { e match { |
