aboutsummaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorazidar2015-08-19 11:11:51 -0700
committerazidar2015-08-19 11:12:27 -0700
commit4d4d18a6f358a7d0a227dcd999525eb57432eba0 (patch)
tree1d76e3c1540f2b984584bdf90afbbf77ec67519d /test
parent51411657aee01568519811659afd0316b6db346f (diff)
Fixed width inference bug where constraints were propagating backwards.
Updated tests to match. #29.
Diffstat (limited to 'test')
-rw-r--r--test/passes/infer-types/bundle.fir4
-rw-r--r--test/passes/to-verilog/shr.fir30
2 files changed, 32 insertions, 2 deletions
diff --git a/test/passes/infer-types/bundle.fir b/test/passes/infer-types/bundle.fir
index 98e48c0c..c24419b9 100644
--- a/test/passes/infer-types/bundle.fir
+++ b/test/passes/infer-types/bundle.fir
@@ -20,10 +20,10 @@ circuit top :
a[8] := UInt(1)
a[9] := UInt(1)
node b = a[2] ;CHECK: node b = a@<t:UInt<3>[10]@<t:UInt>>[2]@<t:UInt>
- read accessor c = a[UInt(3)] ;CHECK: read accessor c = a@<t:UInt<3>[10]@<t:UInt>>[UInt("h3")]
+ read accessor c = a[UInt(3)] ;CHECK: read accessor c = a@<t:UInt<3>[10]@<t:UInt>>[UInt("h3")@<t:UInt>]
; CHECK: Finished Infer Types
; CHECK: Resolve Genders
-; CHECK: read accessor c = a@<t:UInt<3>[10]@<t:UInt>>[UInt("h3")]
+; CHECK: read accessor c = a@<t:UInt<3>[10]@<t:UInt>>[UInt("h3")@<t:UInt>]
; CHECK: Finished Resolve Genders
diff --git a/test/passes/to-verilog/shr.fir b/test/passes/to-verilog/shr.fir
new file mode 100644
index 00000000..f710dc51
--- /dev/null
+++ b/test/passes/to-verilog/shr.fir
@@ -0,0 +1,30 @@
+; RUN: firrtl -i %s -o %s.v -X verilog -p cTd 2>&1 | tee %s.out | FileCheck %s
+
+;CHECK: Infer Widths
+;CHECK: node s1_addr = cat(dtlb<t:{ resp$ppn : UInt<20><t:UInt<20>>}>.resp$ppn<t:UInt<20>>, bits(s1_req$addr<t:UInt<40>>, 11, 0)<t:UInt<12>>)<t:UInt<32>>
+;CHECK: Finished Infer Widths
+
+circuit HellaCache :
+ module TLB_60 :
+ output resp : {ppn : UInt<20>}
+ resp.ppn := UInt<1>("h00")
+
+ module HellaCache :
+ input clock : Clock
+ input reset : UInt<1>
+
+ inst dtlb of TLB_60
+ reg s1_req : {addr : UInt<40>}, clock, reset
+ reg s2_req : {addr : UInt<40>}, clock, reset
+ reg s1_clk_en : UInt<1>, clock, reset
+
+ node T_928 = bits(s1_req.addr, 11, 0)
+ node s1_addr = cat(dtlb.resp.ppn, T_928)
+ when s1_clk_en :
+ s2_req.addr := s1_addr
+
+ s1_req.addr := UInt<?>(0)
+ s1_clk_en := UInt<?>(0)
+
+ wire foo : UInt<28>
+ foo := shr(s1_addr, 3)