【SpinalHDL】1. Getting Started

1. Getting Started

1.1 SpinalHDL开发环境的搭建

开发环境的搭建参考SpinalHDL 开发环境搭建一步到位(图文版) - 极术社区 - 连接开发者与智能计算生态就可以了,so detail.

重点在于sbt切换为国内源,可以参考如下链接Windows上安装java8、scala2.11.12、sbt1.3.12和IntelliJ IDEA的SpinalHDL环境并跑通VexRiscv_45coding的博客-CSDN博客_scala 2.11.12 idea和
Windows上安装java8、scala2.11.12、sbt1.3.12和IntelliJ IDEA的SpinalHDL环境并跑通VexRiscv_45coding的博客-CSDN博客_scala 2.11.12 idea

重点说明下sbt切换国内源的问题:
(1)sbt安装目录/conf目录下sbtconfig.txt修改如下:

-Dsbt.log.format=true
-Dfile.encoding=UTF8
-Dsbt.override.build.repos=true

(2)在C:\Users\用户名\.sbt目录下添加repositories文件,并添加如下内容:

[repositories]localhuaweicloud-maven: https://repo.huaweicloud.com/repository/maven/maven-central: https://repo1.maven.org/maven2/sbt-releases-repo: https://repo.typesafe.com/typesafe/ivy-releases/,  [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]sbt-plugin-repo: https://repo.scala-sbt.org/scalasbt/sbt-plugin-releases, [organization]/[module]/(scala_[scalaVersion]/)(sbt_[sbtVersion]/)[revision]/[type]s/[artifact](-[classifier]).[ext]

主要实现huaweicloud作为国内源。

1.2 SpinalHDL的工程结构(基于sbt)

(1) build.sbt文件

scala工程采用sbt工具构建工程时,必须包含build.sbt文件。在spinalhdl工程中,build.sbt文件中增加spinalhdl库文件路径等内容,其典型文件内容举例如下:

name := "SpinalTemplateSbt"
ThisBuild / version := "1.0" 
ThisBuild / scalaVersion := "2.11.12"val spinalVersion = "1.8.0"
val spinalCore = "com.github.spinalhdl" %% "spinalhdl-core" % spinalVersion
val spinalLib = "com.github.spinalhdl" %% "spinalhdl-lib" % spinalVersion
val spinalIdslPlugin = compilerPlugin("com.github.spinalhdl" %% "spinalhdl-idsl-plugin" % spinalVersion)lazy val SpinalTemplateSbt = (project in file(".")).settings(name := "SpinalTemplateSbt",libraryDependencies ++= Seq(spinalCore, spinalLib, spinalIdslPlugin))fork := true

其中verision为build.sbt的版本号,一般不需要修改;
scalaVersion为2.11.12,目前SpinalHDL只支持2.13.x、2.12.x和2.11.x的Scala版本,暂不支持Scala3,推荐使用Scala 2.11.12
spinalVersion为1.10.1,目前SpinalHDL的最新版本。
fork := true,这句话是为了实现仿真所增加的内容,不使用仿真时该语句可不添加。
其中spinalVersion可以设置为latest.release,保证每次使用都采用最新版本。


当然也可以不指定版本,每次都使用最近的SpinalHDL版本,build.sbt可以做如下的修改。

  
name := "SpinalDemo"  version := "0.1.0"  scalaVersion := "2.11.12"  libraryDependencies ++= Seq(  "com.github.spinalhdl" % "spinalhdl-core_2.11" % "latest.release",  "com.github.spinalhdl" % "spinalhdl-lib_2.11" % "latest.release",  compilerPlugin("com.github.spinalhdl" % "spinalhdl-idsl-plugin_2.11" % "latest.release")  
)  fork := true
(2) SpinalHDL文件的工程结构

以一个简单的例子做说明吧。

// import spinalhdl core library  
import spinal.core._  // Component = module in verilog  
class Demo01 extends Component {  val a = Reg(UInt(8 bits))  
}  object Demo01 {  def main (args: Array[String]): Unit = {  SpinalVerilog(new Demo01)  SpinalConfig(genVhdlPkg = false).generateVhdl(new Demo01)  }  
}

上述例子中实现一个位宽为8 bit的寄存器的声明。
其中

import spinal.core._

导入SpinalHDL的核心库;
继承自Component组件的module_xxx类定义了一个类似verilog中module的模块,内部为module的具体的实现,这里暂时不做具体的阐述;

// Component = module in verilog  
class module_xxx extends Component {  val a = Reg(UInt(8 bits))  
} 

最后object对象定义的main函数为scala语言的入口函数,SpinalVerilog语句实现了将Scala语句转换为Verilog语句的功能。

object module_xxx {  def main (args: Array[String]): Unit = {  SpinalVerilog(new module_xxx)  }  
}

这样就可以使用SpinalHDL进行愉快的玩耍了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/672454.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

企业为什么选择SASE?香港电讯专家给你答案!

2019年,Gartner发布了全新的网络安全模型:安全访问服务边缘(Secure Access Service Edge, SASE),并预测到2025年80%的企业将使用SASE/SSE架构统一网络、云服务和私人应用程序的安全访问。那么企业为什么选择SASE&#…

Web课程学习笔记--CSS-Position学习

CSS Position学习 CSS Position有四个属性&#xff1a; relativeabsolutefixedstatic&#xff08;默认&#xff09; 样例 <div id"parent"><div id"sub1">sub1</div><div id"sub2">sub2</div> </div>su…

Git合并多个commit

git rebase -i commitId 假设想要合并最后3个commit&#xff0c; git log显示 commit id 1 commit id 2 commit id 3 commit id 4 则执行git rebase -i commitId4. 注意是4&#xff0c;不是3. 然后&#xff0c;pick最老的commit (commit id 3). https://blog.csdn.net/qiao…

企业计算机服务器中了mallox勒索病毒怎么办,mallox勒索病毒处理流程

由于网络技术的不断发展与应用&#xff0c;越来越多的企业开始依赖计算机技术来提高企业效率。然而&#xff0c;网络安全威胁无处不在&#xff0c;严重影响着企业计算机服务器中的数据安全。近期&#xff0c;云天数据恢复中心接到许多中大型企业的求助&#xff0c;企业的多台服…

Quicker读取浏览器的书签(包括firefox火狐)

从edge换了火狐&#xff0c;但是quicker不能读取本地的bookmarks文件了&#xff0c;就研究了一下。 方法1&#xff1a;读取本地Bookmarks文件&#xff08;仅谷歌内核浏览器&#xff09; 谷歌内核的浏览器本地会有Bookmarks文件&#xff0c;放了所有的书签数据&#xff0c;直接…

社群团购有没有销量,到底需要不需要做呢?

私域社群团购价值有多大&#xff1f; 私域社群团购渠道到底怎么样&#xff1f;发展前景如何呢&#xff1f; 社群团购有没有销量&#xff1f;需要不需要做呢&#xff1f; 对接合作社群团购平台麻不麻烦&#xff1f; 上面的问题&#xff0c;相信做社群团购平台可能都会遇上的…

(注解配置AOP)学习Spring的第十七天

基于注解配置的AOP 来看注解式开发 : 先把目标与通知放到Spring里管理 : Service("userService") public class UserServiceImpl implements UserService {Overridepublic void show1() {System.out.println("show1......");}Overridepublic void show2…

SpringBoot 事务管理Transactional 数据回滚 数据一致性

介绍 SpringBoot当中的事物他保证了一致性&#xff0c;要么全部一起成功&#xff08;提交&#xff09;&#xff0c;要么一起失败&#xff0c;失败&#xff08;回滚&#xff09;后数据会回到当初的样子&#xff0c;是一组操作的集合。 事物类型 开启事物提交事物回滚事物 案…

安卓学习笔记之八:本地化的简单例子(kotlin版本)

本地化及多语言支持&#xff0c;是目前手机软件必须面对的问题&#xff0c;这里用一个简单的例子来说明在Android Studio下如何实现。 创建一个Empty Views Activity项目&#xff0c;语言选择Kotlin 实现一个简单的功能&#xff0c;一条欢迎&#xff0c;一个按钮&#xff0c;…

远程主机可能不符合glibc和libstdc++ VS Code服务器的先决条件

报错信息 VSCode无法连接远程服务器&#xff0c;终端一直提醒&#xff1a; [22:46:01.906] > Waiting for server log... [22:46:01.936] > Waiting for server log... [22:46:01.951] > [22:46:01.967] > Waiting for server log... [22:46:01.982] > [22:…

spring aop实现接口超时处理组件

文章目录 实现思路实现代码starter组件 实现思路 这里使用FutureTask&#xff0c;它通过get方法以阻塞的方式获取执行结果&#xff0c;并设定超时时间&#xff1a; public V get() throws InterruptedException, ExecutionException ;public V get(long timeout, TimeUnit un…

jQuery简介

简介 JSON&#xff0c;即JavaScript对象表示法&#xff0c;是一种用于共享数据的格式。顾名思义&#xff0c;JSON 源自 JavaScript 编程语言&#xff0c;但也可被许多其他语言使用&#xff0c;包括 Python、Ruby、PHP 和 Java。JSON 通常发音为“杰森”。 JSON 也具有可读性强…

多个总体均值的检验(二)

霍特林T方分布&#xff08;Hotellings T-square distribution&#xff09;是多元统计分析中的一种分布。它是由美国数学家哈罗德霍特林&#xff08;Harold Hotelling&#xff09;于1931年提出的&#xff0c;用于描述多个变量之间的关系。 霍特林T方分布是基于多元正态分布的推…

幻兽帕鲁怎么样?好玩? Mac版的玩《幻兽帕鲁》也很简单,只需三个步骤

幻兽帕鲁怎么样 幻兽帕鲁是一款集合了多种游戏元素的游戏&#xff0c;它巧妙地融合了《方舟:生存进化》的野外生存挑战、《荒野之息》的开放世界探索、《魔兽世界》的多元角色互动以及宝可梦的精灵捕捉与培养等经典游戏元素。游戏的核心系统是「帕鲁」捕获&#xff0c;你可以让…

【动态规划】【子序列除重】【C++算法】1987不同的好子序列数目

作者推荐 【动态规划】【状态压缩】【2次选择】【广度搜索】1494. 并行课程 II 本文涉及知识点 动态规划汇总 LeetCode1987:不同的好子序列数目 给你一个二进制字符串 binary 。 binary 的一个 子序列 如果是 非空 的且没有 前导 0 &#xff08;除非数字是 “0” 本身&…

机器学习-线性回归法

线性回归算法 解决回归问题思想简单&#xff0c;实现容易许多强大的非线性模型的基础结果具有很好的可解释性蕴含机器学习中的很多重要思想 样本特征只有一个&#xff0c;称为&#xff1a;简单线性回归 通过分析问题&#xff0c;确定问题的损失函数或者效用函数 通过最优化…

Linux死机排查方法——内存日志

一般情况下&#xff0c;Linux系统在死机时会产生一些dump信息&#xff0c;例如oops&#xff0c;通过分析oops信息就可以基本定位问题所在&#xff0c;但有些特殊情况下死机时&#xff0c;没有任何的打印的信息。如果直接使用printk等打印排查问题&#xff0c;有可能会因为print…

9.4 OpenGL帧缓冲:纹理和帧缓冲之间的反馈循环

纹理和帧缓冲之间的反馈循环 Feedback Loops Between Textures and the Framebuffer 当在图形编程中&#xff0c;特别是OpenGL这样的图形API中处理纹理&#xff08;Texture&#xff09;和帧缓冲区&#xff08;Framebuffer&#xff09;时&#xff0c;可能会出现一种称为“反馈循…

【数据库】详细说一下一条 MySQL 语句执行的步骤

&#x1f34e;个人博客&#xff1a;个人主页 &#x1f3c6;个人专栏&#xff1a;JAVA ⛳️ 功不唐捐&#xff0c;玉汝于成 目录 正文 Server 层按顺序执行 SQL 的步骤为&#xff1a; 我的其他博客 ​ 正文 Server 层按顺序执行 SQL 的步骤为&#xff1a; 客户端请求 -&g…

【C语言 - 哈希表 - 力扣 - 相交链表】

相交链表题目描述 给你两个单链表的头节点 headA 和 headB &#xff0c;请你找出并返回两个单链表相交的起始节点。如果两个链表不存在相交节点&#xff0c;返回 null 。 图示两个链表在节点 c1 开始相交&#xff1a; 题目数据 保证 整个链式结构中不存在环。 注意&#xff0…