Проверка или визуализация графа узлов Chisel

Я хотел бы использовать Chisel для создания схем из деревьев операторов if-then, которые я иметь в формате XML (деревья решений PMML). Простые расщепления, такие как

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, 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 до y или от y до x1. Однако все эти вызовы возвращают пустой массив ArrayBuffers. Когда я запускаю аналогичные схемы в среде тестирования, она дает правильную оценку, поэтому, предположительно, среда тестирования вызывает некоторую функцию для построения графика, который еще не был вызван, когда я проверяю его в REPL (или ищу в неправильных полях). Что мне нужно сделать, чтобы увидеть данные графика?

Я мог бы спросить, есть ли какие-нибудь инструменты для создания схем из проводки Chisel или вывода Verilog. Однако я бы предпочел заполучить сами данные, чтобы сделать с ними больше (сгенерировать файлы SVG или, возможно, преобразовать их в GraphML и использовать принудительно управляемую программу просмотра графиков ...)


person Jim Pivarski    schedule 14.02.2014    source источник


Ответы (1)


Я считаю, что есть бэкэнд визуализации («--backend dot»), который будет генерировать pdf-файл со схемами проводов. Вы можете попробовать поработать с этим, чтобы увидеть, как он обрабатывает график, и, возможно, даже расширить его для собственных нужд.

Я не знаю, есть ли у Chisel то, что вы просите. Или, по крайней мере, может потребоваться много копаться в серверной части (начиная с hcl.scala). В списке TODO есть заставить Chisel выплюнуть IR, который затем можно будет анализировать и преобразовывать по желанию, но этого еще нет.

На краткосрочную перспективу я бы рекомендовал выплюнуть код Verilog и использовать ваш любимый инструмент для анализа полученного Verilog.

person Chris    schedule 14.02.2014