https://mp.weixin.qq.com/s/gssjiiPW6zUzKwCFZdNduw

 
1. 使用Intellij IDEA创建Scala项目
 
Chisel项目,就是构建Scala项目。Intellij IDEA支持使用Maven等多种方式构建Scala项目:
 
 
 
这里选择Maven和IDEA,都可以很方便的构建项目。尤其是使用IDEA构建项目,不需要额外的下载,直接编写Scala代码,即可完成编译运行。
 
很遗憾的是,Chisel3的库对sbt有依赖(比如依赖sbt生成的BuildInfo信息),无法使用其他构建方式。
 
创建一个使用sbt构建的Scala项目的步骤如下:
 
 
 
需要注意的是Chisel3的库在Scala 2.12+版本上会出问题,所以这里我们选择2.11的最后一个版本2.11.12.
 
点击Finish之后,项目创建即完成,等待Intellij IDEA同步完成即可。(可能下载需要的库,需要耐心等待)
 
 
 
2. sbt shell窗口
 
点击下方的sbt shell按钮,即可打开sbt窗口。通过这个窗口可以下sbt命令。
 
初次打开窗口,如同执行sbt命令,加载系统以及当前项目的设置,下载需要的库之后,进入等待状态。等待用户执行构建命令。
 
可以通过左侧的命令按钮重启和关闭sbt shell。
 
执行tasks,显示可以执行的命令:
 
这里简单介绍,其他可以自行搜索。
 
3. 添加chisel3库依赖
 
打开build.sbt,添加如下行:
libraryDependencies += "edu.berkeley.cs" %% "chisel3" % "3.1.2"
 
如下:
 
之后,Intellij IDEA右下角会提示,是否引入修改:
引入修改的意思是检查修改,应用修改后的配置。这次修改就是要下载需要的库,即chisel3-3.1.2.jar
 
可以选择Import Changes单次引入修改,也可以选择Enable Auto-Import以后每次修改build.sbt都自动引入修改。选择之后会自动下载所依赖的库。
 
 
PS. 猜想:也可以不理会这两个选项,直接在sbt shell中,执行update命令,或者重启sbt shell,都可以引入修改并下载所需要的库。但亲试不可行,不明就里,这里不再深究。
 
4. 添加FullAdder.scala
 
从chisel-tutorial中拷贝FullAdder.scala到src/main/scala目录下,
 
 
打开Structure窗口可以看到类结构:Class FullAdder,有5个Variable成员。
 
5. 测试Intellij IDEA直接构建
 
可以直接在FullAdder中添加一个Main object定义main函数,
 
点击三角符号执行:
 
预期是能成功。但是我这边执行出错,
 
暂时不予理会。
 
6. 使用sbt shell构建
 
compile:
 
run:
 
成功了。
 
看来Intellij IDEA对sbt的整合,还有一些小问题。好在提供了sbt shell供使用。
 
此时再次使用三角执行符号直接执行,又能成功:
 
 
可能是因为sbt shell做了一个packaging的动作。
 
7. 使用Chisel3 Driver
 
Chisel3 Driver类提供了很多功能供使用,如转换成firrtl, verilog等。
 
 
看下execute函数的签名:
其中args是String数组,执行时的参数。dut的类型为函数:() => RawModule,即没有参数,返回RawModule的函数。
 
这里我们直接把参数执行main函数时提供的参数,传递给execute函数。这样可以直接改变执行时的参数。
 
通过sbt shell执行run --help
 
其中-X即--compiler参数默认为verilog,即生成Verilog代码。如果选择sverilog,则生成SystemVerilog代码。
 
各项参数可以自行阅读。
 
执行 --target-dir generated --compiler verilog:
 
可以看到,已经生成了Verilog代码:
 
8. 附录:代码如下
(略)

Chisel3-Intellij IDEA中使用sbt构建Chisel项目的更多相关文章

  1. idea中使用sbt构建scala项目及依赖

    1.安装scala插件 http://www.cnblogs.com/yrqiang/p/5310700.html 2. 详细了解sbt: http://www.scala-sbt.org/0.13/ ...

  2. 利用Eclipse中的Maven构建Web项目(三)

    利用Eclipse中的Maven构建Web项目 1.将Maven Project转换成动态Web项目,鼠标右键项目,输入"Project Facets" 2.依据Dynamic W ...

  3. 利用Eclipse中的Maven构建Web项目报错(二)

    利用Eclipse中的Maven构建Web项目 1.错误描述 [INFO] Scanning for projects... [INFO] [INFO] Using the builder org.a ...

  4. 利用Eclipse中的Maven构建Web项目报错(一)

    利用Eclipse中的Maven构建Web项目 1.在进行上述操作时,pom.xml一直报错 <project xmlns="http://maven.apache.org/POM/4 ...

  5. 利用Eclipse中的Maven构建Web项目(二)

    利用Eclipse中的Maven构建Web项目 1.新建源文件夹,Java Resources鼠标右键,"New-->Source Folder" 2.新建src/main/ ...

  6. 利用Eclipse中的Maven构建Web项目(一)

    利用Eclipse中的Maven构建Web项目 1.新建一个Maven Project,"New-->Other..." 2.选择"Maven Project&qu ...

  7. 在IntelliJ IDEA中创建Maven多模块项目

    在IntelliJ IDEA中创建Maven多模块项目 1,创建多模块项目选择File>New>Project 出现New Project窗口左侧导航选择Maven,勾选右侧的Create ...

  8. 使用SBT构建Scala项目

    既然决定要在Scala上下功夫,那就要下的彻底.我们入乡随俗,学一下SBT.sbt使用ivy作为库管理工具.ivy默认把library repository建在user home下面. 安装SBT 在 ...

  9. IntelliJ IDEA 17和Maven构建javaWeb项目

    前言 电脑又断电了,眼看着写好的东西就没有了,这是第二次犯这个错误了.很难受呀!还是回到正题吧,我们来使用IDEA和Maven构建一个JavaWeb项目 软件环境: IDEA:2017.2.1 JDK ...

随机推荐

  1. 从excel表格加载数据返回DataSet

    添加命名空间:using System.Data.OleDb; /// <summary> /// 从excel表格加载数据返回DataSet /// </summary> / ...

  2. spring 事务管理配置

    本篇文章只涉及spring事务的配置,不进行事务的介绍. spring通过PlatformTransactionManager接口作为事务管理器来进行事务的管理,它本身并不进行事务的创建以及相关操作, ...

  3. Spring Boot 整合 Apache Dubbo

    Apache Dubbo是一款高性能.轻量级的开源 Java RPC 框架,它提供了三大核心能力:面向接口的远程方法调用,智能容错和负载均衡,以及服务自动注册和发现. 注意,是 Apache Dubb ...

  4. 《C程序设计语言》 练习2-3

    问题描述 < class="title-article"> 练习2-3 编写函数htoi(s),把由16进制数字组成的字符串(包含可选的前缀0X或0x)转换成与之等价的 ...

  5. 一分钟明白MySQL聚簇索引和非聚簇索引

    MySQL的InnoDB索引数据结构是B+树,主键索引叶子节点的值存储的就是MySQL的数据行,普通索引的叶子节点的值存储的是主键值,这是了解聚簇索引和非聚簇索引的前提 什么是聚簇索引? 很简单记住一 ...

  6. 简单服务发现协议(SSDP)编程指导

    本文主要讲解如何使用ssdp进行编程,不涉及过多关于ssdp的理论知识 1. 前言   网上对ssdp理论介绍的一大把,缺乏从编程角度的一个指导,这里不会长篇大论ssdp理论,只是根据实际编码经验对用 ...

  7. 一阶RC低通滤波器详解(仿真+matlab+C语言实现)

    文章目录 1 预备知识 2 simulink 仿真 3 simulink 运行结果 4 matlab实现 5 matlab运行结果 6 C语言实现 7 C语言运行结果 如果本文帮到了你,帮忙点个赞: ...

  8. 数据库连接池Druid的介绍,配置分析对比总结

    Druid的简介 Druid首先是一个数据库连接池.Druid是目前最好的数据库连接池,在功能.性能.扩展性方面,都超过其他数据库连接池,包括DBCP.C3P0.BoneCP.Proxool.JBos ...

  9. watch 和 计算属性

    作者:纵横链接:https://www.zhihu.com/question/55846720/answer/331760496来源:知乎著作权归作者所有.商业转载请联系作者获得授权,非商业转载请注明 ...

  10. .Net Core3.0 WebApi 项目框架搭建 五: 轻量型ORM+异步泛型仓储

    .Net Core3.0 WebApi 项目框架搭建:目录 SqlSugar介绍 SqlSugar是国人开发者开发的一款基于.NET的ORM框架,是可以运行在.NET 4.+ & .NET C ...