检查或可视化Chisel节点的图形

时间:2014-02-14 08:05:02

标签: chisel

我想使用Chisel从我以XML格式(PMML decision trees)的if-then语句树生成电路。像

这样简单的分裂
class Mod extends Module {
  val io = new Bundle {
    val x1 = UInt(INPUT, 8)
    val x2 = UInt(INPUT, 8)
    val choice = UInt(INPUT, 1)
    val y = UInt(OUTPUT, 8)
  }
  when (io.choice === UInt(0)) {
    io.y := io.x1
  } otherwise {
    io.y := io.x2
  }
}

是人类可读的,任何复杂的表达式都可以使用测试套件中的特定值进行评估。但是,由于我将以编程方式从大XML文件生成嵌套分割,如果我可以检查Chisel生成的导线树,确保它具有相同的结构,这将有所帮助。

我原以为我可以通过Node的{​​{1}}和inputs字段检查图表。使用上面的例子,我会想到

consumers

会向我展示代表val mod = new Mod println(mod.io.x1.inputs, mod.io.x1.consumers) println(mod.io.y.inputs, mod.io.y.consumers) 分割和when ... otherwise连接的中间节点,我可以从:=x1或从yy。但是,所有这些调用都返回空ArrayBuffers。当我在测试框架中运行类似的电路时,它会评估正确的东西,所以测试框架可能会调用一些函数来构建当我在REPL中检查时尚未调用的图形(或者我正在寻找在错误的领域)。如何查看图表数据需要做什么?

我本可以询问是否有任何工具可以用Chisel接线或Verilog输出生成原理图。但是,我更喜欢亲自处理数据本身,以便我可以用它做更多的事情(生成SVG文件,或者将其转换为GraphML并使用强制导向的图形查看器......)

1 个答案:

答案 0 :(得分:0)

我相信有一个可视化后端(“--backend dot”),它将生成一个有线电路原理图的pdf。您可以尝试使用它来查看它如何处理图形,甚至可以扩展它以供您自己使用。

我不知道Chisel目前有你要求的东西。或者至少,它可能需要在后端进行大量探测(从hcl.scala开始)。在TODO列表上是让Chisel吐出一个IR,然后可以根据需要进行分析和转换,但那还没有。

从短期来看,我建议吐出Verilog代码并使用您喜欢的工具来分析生成的Verilog。