blob: e507e947599d8ceb18460c91a625979fd4c0c82e (
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
46
47
|
// See LICENSE for license details.
package firrtlTests
import firrtl._
import firrtl.ir.Circuit
import firrtl.Parser.IgnoreInfo
import firrtl.passes._
import firrtl.transforms._
class ReplaceAccessesSpec extends FirrtlFlatSpec {
val transforms = Seq(
ToWorkingIR,
ResolveKinds,
InferTypes,
ResolveGenders,
InferWidths,
ReplaceAccesses)
protected def exec(input: String) = {
transforms.foldLeft(CircuitState(parse(input), UnknownForm)) {
(c: CircuitState, t: Transform) => t.runTransform(c)
}.circuit.serialize
}
}
class ReplaceAccessesMultiDim extends ReplaceAccessesSpec {
"ReplacesAccesses" should "replace constant accesses with fixed indices" in {
val input =
"""circuit Top :
module Top :
input clock : Clock
output out : UInt<1>
reg r_vec : UInt<1>[4][2], clock
out <= r_vec[UInt<2>(2)][UInt<1>(1)]
"""
val check =
"""circuit Top :
module Top :
input clock : Clock
output out : UInt<1>
reg r_vec : UInt<1>[4][2], clock with :
reset => (UInt<1>(0), r_vec)
out <= r_vec[2][1]
"""
(parse(exec(input))) should be (parse(check))
}
}
|