Есть простой пример того, как сгенерировать verilog из модуля Chisel3?

Я ищу простой способ конвертировать простой модуль Chisel3 в Verilog.

Я беру исходный код Gcd, приведенный на официальной странице chisel.

  import chisel3._

  class GCD extends Module {
    val io = IO(new Bundle {
      val a  = Input(UInt(32.W))
      val b  = Input(UInt(32.W))
      val e  = Input(Bool())
      val z  = Output(UInt(32.W))
      val v  = Output(Bool())
    })
    val x = Reg(UInt(32.W))
    val y = Reg(UInt(32.W))
    when (x > y) {
      x := x -% y
    }.otherwise {
      y := y -% x
    }
    when (io.e) {
      x := io.a
      y := io.b
    }
    io.z := x
    io.v := y === 0.U
  }

Я не могу найти, как написать build.sbt и экземпляр класса для его преобразования в Verilog.


person FabienM    schedule 07.11.2016    source источник


Ответы (1)


Спасибо за проявленный интерес к Chisel! Обычно мы рекомендуем людям использовать репозиторий chisel-template в качестве отправной точки для проектов Chisel3: https://github.com/ucb-bar/chisel-template

Если вы хотите делать максимально простые вещи. Создайте этот build.sbt и поместите его в корневой каталог вашего проекта.

scalaVersion := "2.12.12"

libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.4.1"

Поместите указанный выше исходный код GCD в GCD.scala и добавьте в файл следующее:

import chisel3.stage.ChiselStage

object GCDDriver extends App {
  (new ChiselStage).emitVerilog(new GCD)
}

Затем вы можете сгенерировать Verilog, запустив: sbt "runMain GCDDriver". Каталог вывода по умолчанию - это текущий каталог.

Вы можете увидеть, какие параметры командной строки доступны, запустив sbt "runMain GCDDriver --help". Например, --target-dir позволит вам изменить целевой каталог.

person Jack Koenig    schedule 07.11.2016
comment
Спасибо, jkoenig. Да, я видел репозиторий шаблонов, но мне нужен быстрый пример, чтобы увидеть, как создается Verilog. - person FabienM; 08.11.2016
comment
Я попытался использовать тот же код для генерации кода Verilog, но получаю java.lang.ClassNotFoundException - person Matt; 31.05.2017
comment
Не могли бы вы подробнее рассказать об ошибке? Какой класс он говорит, что не может найти? - person Jack Koenig; 31.05.2017
comment
Извините за мой очень поздний ответ. Я только что увидел, что забыл ответить на ваш вопрос. Мне просто пришлось запустить sbt run, чтобы сгенерировать код Verilog. - person Matt; 19.07.2017