2016-11-07 7 views
4

Я ищу простой способ преобразования простого модуля Chisel3 в Verilog.Есть ли простой пример создания verilog из модуля Chisel3?

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

import chisel3._ 

    class GCD extends Module { 
    val io = IO(new Bundle { 
    val a = Input(UInt.width(32)) 
    val b = Input(UInt.width(32)) 
    val e = Input(Bool()) 
    val z = Output(UInt.width(32)) 
    val v = Output(Bool()) 
    }) 
    val x = Reg(UInt.width(32)) 
    val y = Reg(UInt.width(32)) 
    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.

ответ

9

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

Если вы хотите сделать все возможное, чтобы сделать все возможное. Создайте этот build.sbt и поместите его в корневой каталог для своего проекта.

scalaVersion := "2.11.12" 

resolvers ++= Seq(
    Resolver.sonatypeRepo("snapshots"), 
    Resolver.sonatypeRepo("releases") 
) 

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

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

object GCDDriver extends App { 
    chisel3.Driver.execute(args,() => new GCD) 
} 

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

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

+0

Благодаря jkoenig. Да, я видел шаблон repo, но мне нужен быстрый пример, чтобы увидеть, как был создан verilog. – FabienM

+0

Я попытался использовать тот же код для генерации верилога, но я получаю 'java.lang.ClassNotFoundException' – Mahdi

+0

Можете ли вы предоставить больше сообщения об ошибке? Какой класс говорит, что он не может найти? – jkoenig