镜像站点 · 本页由第三方 GitHub 只读镜像提供,非 GitHub 官方站点,不接受任何登录或凭据输入。前往 github.com
Skip to content

can I generate verilog without sbt ? #143

Open

Description

@balanx

could someone help me to solve the error ? thanks first.

I don't like sbt very much, and try to transform *.scala to *.v as below:

  1. download 'chisel3_2.12-3.1.6.jar' from https://mvnrepository.com/artifact/edu.berkeley.cs/chisel3
  2. download scala-2.12.8
  3. add java/bin, scala/bin to PATH environment
  4. run shell command
    $ scalac -classpath lib/chisel3_2.12-3.1.6.jar -d classes GCD.scala

I got error.
src\intro\GCD.scala:23: error: value load is not a member of chisel3.Bundle when (io.load) { ^ src\intro\GCD.scala:24: error: value a is not a member of chisel3.Bundle x := io.a; y := io.b ^ src\intro\GCD.scala:24: error: value b is not a member of chisel3.Bundle x := io.a; y := io.b ^ src\intro\GCD.scala:33: error: value out is not a member of chisel3.Bundle io.out := x ^ src\intro\GCD.scala:34: error: value valid is not a member of chisel3.Bundle io.valid := y === 0.U ^

GCD.scala

// See LICENSE.txt for license details.
package examples

import chisel3._

class GCD extends Module {
  val io = IO(new Bundle {
    val a     = Input(UInt(16.W))
    val b     = Input(UInt(16.W))
    val load  = Input(Bool())
    val out   = Output(UInt(16.W))
    val valid = Output(Bool())
  })
  val x = Reg(UInt())
  val y = Reg(UInt())

  when (io.load) {
    x := io.a; y := io.b
  } .otherwise {
    when (x > y) {
      x := x - y
    } .elsewhen (x <= y) {
      y := y - x
    }
  }

  io.out := x
  io.valid := y === 0.U
}

Activity

  1. edwardcwang commented on Feb 4, 2019

    @edwardcwang
    Member

    Unfortunately, pulling the chisel3 JAR from Maven is not enough since it doesn't contain all the dependencies of Chisel. (Those JARs are referred to as 'fat jars'.)

    Thankfully there is another option to enable single-file Chisel designs without sbt, and you can check out the demo here: https://github.com/edwardcwang/chisel-single-file

    By default though we still recommend the full Chisel template as it provides a standardized structure for building and testing your designs.

  2. balanx commented on Feb 5, 2019

    @balanx
    Author

    @edwardcwang, thanks for your reply, it works.
    where is the downloading directory of jar files ? I can't find them in ~/..ammonite .

  3. edwardcwang commented on Feb 5, 2019

    @edwardcwang
    Member

    Many Scala tools including ammonite and sbt use ~/.ivy2/cache as a cache directory for downloaded JARs.

  4. balanx commented on Feb 6, 2019

    @balanx
    Author

    amm has downloaded dependency jar file from maven. I copy all .jar to ./lib and scalac again.
    scalac -classpath "\ ./lib/antlr-runtime-3.5.2-sources.jar;\ ./lib/antlr-runtime-3.5.2.jar;\ ./lib/antlr4-4.7.1-sources.jar;\ ./lib/antlr4-4.7.1.jar;\ ./lib/antlr4-runtime-4.7.1-sources.jar;\ ./lib/antlr4-runtime-4.7.1.jar;\ ./lib/chisel3_2.11-3.1.6-sources.jar;\ ./lib/chisel3_2.11-3.1.6.jar;\ ./lib/firrtl_2.11-1.1.6-sources.jar;\ ./lib/firrtl_2.11-1.1.6.jar;\ ./lib/icu4j-58.2-sources.jar;\ ./lib/icu4j-58.2.jar;\ ./lib/javax.json-1.0.4-sources.jar;\ ./lib/javax.json-1.0.4.jar;\ ./lib/joda-convert-1.2-sources.jar;\ ./lib/joda-convert-1.2.jar;\ ./lib/joda-time-2.9.4-sources.jar;\ ./lib/joda-time-2.9.4.jar;\ ./lib/json4s-ast_2.11-3.5.3-sources.jar;\ ./lib/json4s-ast_2.11-3.5.3.jar;\ ./lib/json4s-core_2.11-3.5.3-sources.jar;\ ./lib/json4s-core_2.11-3.5.3.jar;\ ./lib/json4s-native_2.11-3.5.3-sources.jar;\ ./lib/json4s-native_2.11-3.5.3.jar;\ ./lib/json4s-scalap_2.11-3.5.3-sources.jar;\ ./lib/json4s-scalap_2.11-3.5.3.jar;\ ./lib/logback-classic-1.2.3-sources.jar;\ ./lib/logback-classic-1.2.3.jar;\ ./lib/logback-core-1.2.3-sources.jar;\ ./lib/logback-core-1.2.3.jar;\ ./lib/moultingyaml_2.11-0.4.0-sources.jar;\ ./lib/moultingyaml_2.11-0.4.0.jar;\ ./lib/nscala-time_2.11-2.14.0-sources.jar;\ ./lib/nscala-time_2.11-2.14.0.jar;\ ./lib/org.abego.treelayout.core-1.0.3-sources.jar;\ ./lib/org.abego.treelayout.core-1.0.3.jar;\ ./lib/paranamer-2.8-sources.jar;\ ./lib/paranamer-2.8.jar;\ ./lib/scala-logging_2.11-3.7.2-sources.jar;\ ./lib/scala-logging_2.11-3.7.2.jar;\ ./lib/slf4j-api-1.7.25-sources.jar;\ ./lib/slf4j-api-1.7.25.jar;\ ./lib/snakeyaml-1.17-sources.jar;\ ./lib/snakeyaml-1.17.jar;\ ./lib/ST4-4.0.8-sources.jar;\ ./lib/ST4-4.0.8.jar;\ " -d classes src/intro/GCD.scala

    I got the same eror again :( :(
    can I have a simple way to generate verilog ?

  5. edwardcwang commented on Feb 6, 2019

    @edwardcwang
    Member

    Unfortunately for most real development projects, trying to collect all the non-fat JARs manually isn't very feasible, which is why tools like maven, sbt, and ammonite sprung up. See https://stackoverflow.com/questions/3589562/why-maven-what-are-the-benefits for an example of the sorts of issues involved.

  6. grebe commented on Feb 6, 2019

    @grebe
    Contributor

    This looks to me like the pesky -Xsource:2.11 issue. Scala 2.12 changed semantics for anonymous bundles (relied on structural types working in a more permissive way).

    In ammonite, the magic incantation is
    interp.configureCompiler(x => x.settings.source.value = scala.tools.nsc.settings.ScalaVersion("2.11.12")). In sbt, scalacOptions += "-Xsource:2.11" should work.

  7. jackkoenig commented on Feb 6, 2019

    @jackkoenig

    We could make a mill build.sc for the tutorial. Still a build tool but generally nicer to use than sbt.

  8. balanx commented on Feb 7, 2019

    @balanx
    Author

    thanks all for your reply.
    I used ammonite on os: windows 10 / cygwin-64 / java 1.8.151 / scala 2.12.8

    amm give me an error,

    java.io.IOException: Cannot run program "powershell.exe": CreateProcess error=2, The system cannot find the file specified
    Why can't amm use bash in cygwin ?

    then I add powershell to cygwin PATH var, amm run ok. I found

    default home directory,
    C:\Users\Administrator.ammonite

    all .jar file downloaded in the position,
    C:\Users\Administrator\AppData\Local\Coursier\cache

    they are different directory !!
    can I put the downloading .jar dir to other place specified by command option ?
    I've tried option '--home', it didn't work.

  9. grebe commented on Feb 7, 2019

    @grebe
    Contributor

    I'm not sure what's going on there as I am not a windows user. I think we generally advise windows users to use WSL- sometimes it is necessary to use verilator for simulations, and verilator on windows is tricky unless you use WSL. I suspect it would also resolve the issues you're seeing.

  10. balanx commented on Feb 14, 2019

    @balanx
    Author

    bad things ! we can't leave sbt.
    I feel Chisel is neither a library nor a new language now.
    long long way to go.

  11. chick commented on Feb 14, 2019

    @chick
    Contributor

    I'd suggest starting with chisel-bootcamp. The examples are newer and it is the primary place to learn chisel. It should get you going without any need to use sbt.

  12. balanx commented on Feb 21, 2019

    @balanx
    Author

    God blessing !
    It works OK when I degrade scala ftom 2.12 to 2.11.

    I create a repo on 'https://github.com/balanx/chisel-make'.
    GCD runs success with ~28MB jars only.
    thanks all

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions