【IC设计】Windows下基于IDEA的Chisel环境安装教程(图文并茂)
Chisel环境安装教程
- 第一步 安装jdk,配置环境变量
- 第二步 安装sbt,不用配置环境变量
- 第三步 安装idea社区版
- 第四步 离线安装scala的idea插件
- 第五步 配置sbt换源
- 1.切换目录
- 2.创建repositories文件
- 3.配置sbtconfig.txt文件
- 第六步 使用chisel-tutorial工程运行AdderTests测试
- 1.打开chisel-tutorial项目
- 2.配置项目的sbt和scala
- 3.测试AdderTests.scala
- failed to create lock file 解决办法
- 参考资料
传统数字芯片的RTL设计采用Verilog语言为主,Chisel语言的全称是Constructing Harward in Scala Embeded Language,即在Scala语言中导入Chisel3库,即可使用Chisel语言。其特点是面向对象编程,可以方便地参数化定制硬件电路,加快设计流程。目前在RISC-V生态中应用较多,中科院计算所主持的培育下一代处理器设计人才的“一生一芯”项目也在极力推进该语言。
涉及到的所有安装包已经放入百度网盘,请全部下载,然后开始阅读这个教程。
链接:https://pan.baidu.com/s/1ZOkbCxoLxrpJQQqVQfa-3w?pwd=hduv
提取码:hduv
–来自百度网盘超级会员V5的分享

第一步 安装jdk,配置环境变量
如果电脑里还没有java环境,请先下载网盘链接中的jdk压缩包并解压,然后参照我的这篇文章配置环境。
第二步 安装sbt,不用配置环境变量
双击sbt-1.9.8.msi 下一步下一步安装就好了,环境变量会自动配置好,无需手动配置。
第三步 安装idea社区版
开发Chisel主要是基于Scala,我们这里只需要安装idea社区版即可,就是图中的ideaIC开头的压缩包,是免安装版,只需要解压即可。解压后进入bin目录,找到idea64并打开

第四步 离线安装scala的idea插件
打开idea64后点击plugins-设置齿轮按钮-install plugin from disk
离线安装我们的scala插件,选中网盘中提供的scala-intellij-bin-2023.3.19即可。

第五步 配置sbt换源
1.切换目录
在第二步中我们已经装好了sbt,但sbt默认的下载源在国外,下载速度非常慢,我们需要进行换源。
首先,我们进入【C盘】-【用户】,找到【当前登录的用户】,这里我是panych,如图所示:

2.创建repositories文件
创建目录【.sbt】并进入,然后创建文件【repositories】,无需扩展名,内容如下:
[repositories]localhuaweicloud-ivy: https://repo.huaweicloud.com/repository/ivy/, [organization]/[module]/(scala[scalaVersion]/)(sbt[sbtVersion]/)[revision]/[type]s/artifact.[ext],allowInsecureProtocolhuaweicloud-maven: https://repo.huaweicloud.com/repository/maven/,allowInsecureProtocol
3.配置sbtconfig.txt文件
在**<sbt安装目录>/conf/sbtconfig.txt**文件中添加如下内容:
-Dsbt.override.build.repos=true
第六步 使用chisel-tutorial工程运行AdderTests测试
1.打开chisel-tutorial项目
解压网盘中给出的chisel-tutorial工程,然后使用idea选中chisel-tutorial下的build.sbt打开。
2.配置项目的sbt和scala
在【File】-【Settings】中找到sbt并配置为本地sbt中的sbt-launch.jar,按照图中进行配置,然后点【OK】

在【File】-【Project Structure】中选择【Global Libraries】,点击【+】,添加【Scala SDK】,
选择网盘中给出的Scala解压后的目录即可。

3.测试AdderTests.scala
打开AdderTests.scala,点击17行左侧的运行按钮,【Run ‘AdderTests’】,得到测试通过的提示就ok了。


failed to create lock file 解决办法
如果遇到报错:【failed to create lock file】,请需要前往对应目录赋权,如图所示:

参考资料
1.华为开源镜像站-SBT
2.中科院计算所一生一芯人才培养项目
相关文章:
【IC设计】Windows下基于IDEA的Chisel环境安装教程(图文并茂)
Chisel环境安装教程 第一步 安装jdk,配置环境变量第二步 安装sbt,不用配置环境变量第三步 安装idea社区版第四步 离线安装scala的idea插件第五步 配置sbt换源1.切换目录2.创建repositories文件3.配置sbtconfig.txt文件 第六步 使用chisel-tutorial工程运…...
IF=82.9!高分文献解读|吉西他滨联合顺铂化疗激活肿瘤免疫新机制
鼻咽癌(nasopharyngeal carcinoma, NPC)是一种发生于鼻咽部上皮细胞的恶性肿瘤,且高发于中国。吉西他滨联合顺铂(GP)化疗作为鼻咽癌的一种全球标准治疗方案,然而治疗的具体机制目前尚不清楚。中山大学肿瘤防…...
【QT+QGIS跨平台编译】之二十八:【Protobuf+Qt跨平台编译】(一套代码、一套框架,跨平台编译)
文章目录 一、Protobuf介绍二、文件下载三、文件分析四、pro文件4.1 libprotobuf4.2 libprotobuf-lite4.3 libprotoc4.4 protocApp五、编译实践一、Protobuf介绍 Protocol Buffers(简称 Protobuf)是由 Google 开发的一种数据序列化协议,就像 XML 或 JSON 一样,但是它更小、…...
代码解析:list.stream().filter(Objects::nonNull).collect(Collectors.toList())
这段Java代码是使用了Java 8引入的流(Stream) API来处理集合(比如List)。这个特定的例子展示了如何从一个列表中过滤掉所有的null值,并返回一个新的列表,其中不包含任何null元素。下面是对这段代码的逐步解析: 代码解…...
代驾应用系统(ssm)
登录首页 管理员界面 代驾司机界面 普通用户界面 前台页面 1、系统说明 (1) 框架:spring、springmvc、mybatis、mysql、jsp (2) 系统分为前台系统、后端管理系统 2、欢迎留言联系交流学习讨论:qq 97820625…...
技术栈面试综合整理
Git命令详解 设计模式看了又忘,忘了又看 Linux命令 Java集合Map Java基础 JVM面试题 JVM原理最全、清晰、通俗讲解,五天40小时吐血整理_小爷欣欣-CSDN博客_jvm原理 IO 计算机网络 计算机网络2 jsp 多线程 多线程2 大厂 JAVA 高频面试题 Ja…...
Java中的static关键字
静态变量(类变量)、静态方法(类方法):static声明的属性与方法。 静态变量/静态方法生命周期和类相同,在整个程序执行期间都有效。它有如下特点: 为该类的公用变量,属于类࿰…...
SpringBoot日志插件log4J和slf4J的使用和比较含完整示例
点击下载《SpringBoot日志插件log4J和slf4J的使用和比较含完整示例》 1. 前言 本文主要介绍了在 Spring Boot 框架中如何使用 Log4j 和 Slf4j,并通过对比分析它们的优缺点,帮助读者更好地选择合适的日志记录工具。文章中提供了完整的示例代码ÿ…...
我的世界Java版服务器如何搭建并实现与好友远程联机Minecarft教程
文章目录 1. 安装JAVA2. MCSManager安装3.局域网访问MCSM4.创建我的世界服务器5.局域网联机测试6.安装cpolar内网穿透7. 配置公网访问地址8.远程联机测试9. 配置固定远程联机端口地址9.1 保留一个固定tcp地址9.2 配置固定公网TCP地址9.3 使用固定公网地址远程联机 本教程主要介…...
如何进行游戏服务器的负载均衡和扩展性设计?
在进行游戏服务器的负载均衡和扩展性设计时,需要考虑多个方面,以确保服务器的稳定性和可扩展性。以下是一些关键的步骤和考虑因素: 负载均衡的需求分析 在进行负载均衡设计之前,需要深入了解游戏服务器的负载特性和需求。这包括…...
机器学习数学基础
机器学习基础 1、标量、向量、矩阵、张量2、概率函数、概率分布、概率密度、分布函数3、向量的线性相关性4、最大似然估计5、正态分布(高斯分布)6、向量的外积(叉积)7、向量的内积(点积)8、超平面(Hyperplane)9、广义线性模型(GLM)10、伯努利分布与二项分布11、凸函数…...
SpringBoot注解--04--01--注解@Mapper在IDEA中自动注入警告的解决方案
提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 问题原因 解决方案方法1:为 Autowired 注解设置required false方法2:用 Resource 替换 Autowired方法3:在Mapper接口上加上Repo…...
【Java八股面试系列】JVM-垃圾回收
目录 垃圾回收 堆空间的基本结构 内存分配和回收原则 分代收集机制 Minor GC 流程 空间分配担保 老年代 大对象直接进入老年代 长期存活的对象将进入老年代 GC的区域 对象存活判定算法 引用计数法 可达性分析算法 finalize() 字符串常量判活 类判活 垃圾回收算…...
Elasticsearch:集群故障排除和优化综合指南
Elasticsearch 是一个强大的搜索和分析引擎,是许多数据驱动应用程序和服务的核心。 它实时处理、分析和存储大量数据的能力使其成为当今快节奏的数字世界中不可或缺的工具。 然而,与任何复杂的系统一样,Elasticsearch 可能会遇到影响其性能和…...
初识C语言·编译与链接
1 翻译环境和运行环境 C语言标准ANSI C 实现C语言代码的时候 一般需要经过两种环境,一是翻译环境,二是运行环境,计算机能识别的是二进制的指令,人写完代码后通过翻译环境,使代码变成计算机能读懂的可执行的机器指令&a…...
堆与滑动窗口的结合(算法村第十六关黄金挑战)
滑动窗口最大值 239. 滑动窗口最大值 - 力扣(LeetCode) 给你一个整数数组 nums,有一个大小为 k 的滑动窗口从数组的最左侧移动到数组的最右侧。你只可以看到在滑动窗口内的 k 个数字。滑动窗口每次只向右移动一位。 返回 滑动窗口中的最大…...
ES6-let
一、基本语法 ES6 中的 let 关键字用于声明变量,并且具有块级作用域。 - 语法:let 标识符;let 标识符初始值; - 规则:1.不能重复声明let不允许在相同作用域内重复声明同一个变量2.不存在变量提升在同一作用域内,必须先声明才能试…...
如何发布自己的npm包:
1.创建一个打包组件或者库: 安装weback: 打开项目: 创建webpack.config.js,创建src目录 打包好了后发现两个js文件都被压缩了,我们想开发使用未压缩,生产使用压缩文件。 erserPlugin:(推荐使用…...
JavaSE——流程控制-跳转关键字(break、continue),小案例(随机数、猜数字)
目录 跳转关键字 小案例(随机数) Random 猜数字 跳转关键字 break:跳出并结束当前所在循环的执行。continue:用于跳出当前循环的当次执行,直接进入循环的下一次执行。 注意事项: break:只能…...
Java HashSet 重写 equals() 和 hashCode() 对象去重
Ailt Insert 选择 equals() 和 hashCode() package com.zhong.collection.set;import java.util.HashSet; import java.util.Objects;public class HashSetDeduplication {public static void main(String[] args) {// HashSet 对象去重HashSet<Student> students new …...
MySQL 隔离级别:脏读、幻读及不可重复读的原理与示例
一、MySQL 隔离级别 MySQL 提供了四种隔离级别,用于控制事务之间的并发访问以及数据的可见性,不同隔离级别对脏读、幻读、不可重复读这几种并发数据问题有着不同的处理方式,具体如下: 隔离级别脏读不可重复读幻读性能特点及锁机制读未提交(READ UNCOMMITTED)允许出现允许…...
Frozen-Flask :将 Flask 应用“冻结”为静态文件
Frozen-Flask 是一个用于将 Flask 应用“冻结”为静态文件的 Python 扩展。它的核心用途是:将一个 Flask Web 应用生成成纯静态 HTML 文件,从而可以部署到静态网站托管服务上,如 GitHub Pages、Netlify 或任何支持静态文件的网站服务器。 &am…...
Spring Boot面试题精选汇总
🤟致敬读者 🟩感谢阅读🟦笑口常开🟪生日快乐⬛早点睡觉 📘博主相关 🟧博主信息🟨博客首页🟫专栏推荐🟥活动信息 文章目录 Spring Boot面试题精选汇总⚙️ **一、核心概…...
GitHub 趋势日报 (2025年06月08日)
📊 由 TrendForge 系统生成 | 🌐 https://trendforge.devlive.org/ 🌐 本日报中的项目描述已自动翻译为中文 📈 今日获星趋势图 今日获星趋势图 884 cognee 566 dify 414 HumanSystemOptimization 414 omni-tools 321 note-gen …...
JDK 17 新特性
#JDK 17 新特性 /**************** 文本块 *****************/ python/scala中早就支持,不稀奇 String json “”" { “name”: “Java”, “version”: 17 } “”"; /**************** Switch 语句 -> 表达式 *****************/ 挺好的ÿ…...
自然语言处理——循环神经网络
自然语言处理——循环神经网络 循环神经网络应用到基于机器学习的自然语言处理任务序列到类别同步的序列到序列模式异步的序列到序列模式 参数学习和长程依赖问题基于门控的循环神经网络门控循环单元(GRU)长短期记忆神经网络(LSTM)…...
Pinocchio 库详解及其在足式机器人上的应用
Pinocchio 库详解及其在足式机器人上的应用 Pinocchio (Pinocchio is not only a nose) 是一个开源的 C 库,专门用于快速计算机器人模型的正向运动学、逆向运动学、雅可比矩阵、动力学和动力学导数。它主要关注效率和准确性,并提供了一个通用的框架&…...
基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
计算机基础知识解析:从应用到架构的全面拆解
目录 前言 1、 计算机的应用领域:无处不在的数字助手 2、 计算机的进化史:从算盘到量子计算 3、计算机的分类:不止 “台式机和笔记本” 4、计算机的组件:硬件与软件的协同 4.1 硬件:五大核心部件 4.2 软件&#…...
