aboutsummaryrefslogtreecommitdiff
path: root/notes/frontend-notes.04.16.15.txt
blob: 7c571286c687410adcb8fe04e7df0dedddbced3a (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
======= Fixes to Jonathan's Front-end ======

== TODO ==
convert -> cvt
as-UInt -> asUInt
as-SInt -> asSInt
add-wrap -> addw
sub-wrap -> subw
bit-and -> and
bit-or -> or
bit-xor -> xor
on-reset -> onreset
reg now has reset and clock
cmem/smem now has clock
accessor -> infer accessor
"Clock" is now a type, so the following declares a clock port:
module Queue :
  input clk : Clock
  ...



Fixing chisel3 front-end bugs:
   LFSR16: "concat" -> "cat"
   MemorySearch: name collision with node done and output done
   Mul: shr/shl take one expression argument, and one int argument.
      node T_59 = UInt(2, 2)
      node T_60 = shl(x, T_59)
      ==>
      node T_60 = shl(x, 2)
   Outer: "instance" => "inst"
   Stack: bug in firrtl! thanks!

== Completed ==
Remove type from node emission

Currently, these are not equivalent because we will fail a type check:
output in { input x : UInt, input y : UInt}
=>
input in {x : UInt, y : UInt}

Switch "input" -> "flip" and "output" to "" within a bundle
Switch "add-mod" -> "add-wrap"
Switch "multiplex" -> "mux"
Switch "greater" -> "gt"