2017-05-03 63 views
3

我想从存储在scala变量中的spec中生成Module IO接口。从列表中生成凿子模块IO接口

我想产生这样的类定义:

class AddIfc extends Module { 
    val io = IO(new Bundle { 
    val a = Input(UInt(8.W)) 
    val b = Input(UInt(8.W)) 
    val o = Output(UInt(8.W)) 
    }) 
} 

从像元组的列表:

List(("a", "in", 8), ("b", "in", 8), ("o", "out", 8)) 

我可以想像建立一个AST,并使用评估它的一些反射能力在斯卡拉。有没有人这样做,有一个例子来说明?

回答

1

看看Record(Bundle的父类)。他们更高级一些,因为你必须实现元素(而不是在Bundle中为你进行反射),你必须实现cloneType。

有一个example in the Chisel tests