-
2026年回归博客
续写我的个人博客2026年10月24日,上海张江台风大作,没有出门,在家刷推。我偶然翻看回自己的GitHub仓库,不小心找到我四年前的这个博客仓库。 我以前的博文还是非常技术的,和我当时读研的科研工作紧密相关。内容主要是当时我所掌握的主要技术栈,Scala的一些基础内容,SpinalHDL的一些技巧性文章,使用Innovus做布局布线工具的一些经验教训。 博客的最后发布时间竟然是四年前,20... -
Hello World
Welcome to Hexo! This is your very first post. Check documentation for more info. If you get any problems when using Hexo, you can find the answer in troubleshooting or you can ask me on GitHub.
Quick Start
Create a new post
-
Spinal Utilities
OverviewSpinalHDL存在大量的零碎的feature,很不起眼但是非常有用。 core 模块和 lib 模块均包含有 util ,这里略微总结不在官方文档内的比较有用的功能。 隐式转换从Scalal原生类型隐式转换到Spinal的硬件类型,并提供硬件描述相关功能。抑或是对一些原有类型的扩展。 Seq到Vecimport spinal.lib._ class Traversabl... -
Spinal 仿真相关
toBoolean() 函数waitUntil(cond), cond不能是函数的返回值的toBoolean 1234waitUntil(axi4.aw.fire.toBoolean) // Wrong//Exception in thread "main" java.util.NoSuchElementException: next on empty iteratorw... -
Spinal 时钟域
时钟域的例化和管理通常发生在top level,时钟信号和复位信号的互联在顶层或者次顶层。 Spinal中提供了ClockDomain类来建模和管理不同的时钟域。 一个系统如下: 系统内部包含一个外部时钟和三个内部时钟域。外部时钟域,即时钟源在片外,比如片外晶振,其产生的时钟信号通过IO pad连入chip,作为片内PLL的时钟输入,或者直接用。内部时钟域则是时钟源在片内产生的,比如PLL... -
Spinal Netlist API相关介绍
OverviewInstance从DSL层面,一个component内包含两种语句statement, Declaration:声明,对应于出现的各个Data Assignment:赋值,除了声明Data、子模块外的,所有语句均作为表达式的容器 ExpressionContainer 逻辑计算 连接 模块端口连接 寄存器连接 Tree:控制流 When Switch 断言: ... -
Spinal Stream协议
OverviewStream实现了valid-ready握手协议,用于blocking传输。基于Stream,SpinalHDL提供了大量的方法,以及相关的building blocks。 小逻辑块以下介绍9大类与Stream相关的常用硬件电路实现,它们均作为Stream的成员方法提供,往往不会单独成为一个Module。这些方法的特点是其返回值往往就是被驱动的下游,因此可以好几种方法级联使用... -
Spinal Flow协议
Overview用于Non-blocking传输的协议,由valid标志表示当前payload的有效性。相比于存在握手规则约束的Stream,其使用更加简单,更加方便,因此相关的方法也更少,更简单。 Stream转换将Flow转换为Stream的函数 toStream(overflow: Bool, fifoSize: Int, overflowOccupancyAt: Int): Str... -
Scala 字符串匹配
正则匹配判断是否匹配123// <string>.matches(<regex_str>)if("123".matches("""\d+""")) println("yes")if("t0".matches("""\w+...