| Age | Commit message (Collapse) | Author |
|
indices should be read ports
|
|
Address #297
|
|
* Spec features added: AnalogType and Attach
AnalogType(width: Width):
- Concrete syntax:
wire x: AnalogType<10>
- New groundtype, very restricted in use cases.
- Can only declare ports and wires with Analog type
- Analog types are never equivalent, thus if x and y have Analog
types: x <= y is never legal.
Attach(info: Info, source: Expression, exprs: Seq[Expression]):
- Concrete syntax:
attach x to (y, z)
- New statement
- Source can be any groundtyped expression (UInt, SInt, Analog, Clock)
- Exprs must have an Analog type reference an instance port
- Source and exprs must have identical widths
Included WDefInstanceConnector to enable emission of Verilog inout
Should be mostly feature complete.
Need to update spec if PR gets accepted.
* Fixed bug where invalidated ports aren't handled
* Bugfix for VerilogPrep
Intermediate wires for invalidated instance ports were not invalidated
* Bugfix: calling create_exp with name/tpe
Returns unknown gender, which was passing through
Caused temporary wire to not be declared
Because Verilog is dumb, undeclared wires are assumed to be 1bit signals
* Addressed donggyukim's style comments
* Reworked pass to only allow analog types in attach
Restrict source to be only wire or port kind
Much simpler implementation, almost identical functionality
Clearer semantics (i think?)
* Fixup bugs from pulling in new changes from master
* comments for type eqs and small style fixes
|
|
discussed with @azidar
|
|
|
|
example 1 s"${x}"
example 2 case blah => { ??? }
|
|
|
|
|
|
|
|
|
|
if methods has parens, then referencing without parens
is a method value, you don't need following underscore
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
refactoring
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Despite the fact that LinkedHashMaps preserve insertion order in traversal, it
appears that .keys and .keySet return Sets that do not provide the same
guarantee
|
|
|
|
|
|
* Addressed the fact that a node can be connected to itself (updating reg)
|
|
ceil(log(x) / log(2)) does not, in general, round to ceil(log2(x)).
I noticed this because of #297.
|
|
|
|
|
|
|
|
|
|
no vars for mname, info
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
Performing a pad on SInt literals results in linting warnings in Verilator.
This commit replaces pad operations on literal values with a literal of the
correct width.
|
|
Fixes #172
|
|
Bit selecting a literal resulted in invalid Verilog. Legalize now deals with
this by replacing any bits select of UInt or SInt literals with a new literal
composed of the selected bits. Legalize also is now run after PadWidths because
that pass introduces this issue.
Fixes #170
|
|
Legalize will wrap the rhs of a connect statement with a bit select primop if
the lhs is of smaller width than the rhs. This bit select is now wrapped in a
asSInt cast if the original rhs was an SInt so that is has the correct type.
Fixes #173
|
|
Fix bug where Legalize was generating a bit select for SInts without then
casting to SInt
Fixes #169
|
|
Match on GroundType instead of UIntType and SIntType
|
|
Changed code from match statements in Mappers.scala to methods on the various
IR classes. This allows custom IR nodes to implement the mapper functions and
thus work (ie. not match error) when map is called on them.
This also should have a marginal performance increase because of use of virtual
function calls rather than match statements.
|