摘要:
https://mp.weixin.qq.com/s/ohBVNAXZUA538qSxfBGMKA 简单介绍Broadcaster的实现。 1. Broadcaster 广播即是把输入口的输入转发到每个输出口输出。 Takes in data on one decoupled interfac 阅读全文
摘要:
https://mp.weixin.qq.com/s/6McbqOKM4fu4J5vdpZvxKw 简单介绍异步队列(AsyncQueue)的实现。 0. 异步队列 异步队列的两端分属不同的时钟域,拥有各自的复位逻辑。 异步队列用于存值的一端为上游端(source),用于取值的一端为下游端(s 阅读全文
摘要:
https://mp.weixin.qq.com/s/7C8ZmPpwAqFqyKjL9K40Fg 介绍util中定义的注解(Annotations)。 1. Annotation 注解提供一些信息,供后续阶段使用。 之前在使用chisel生成verilog的时候,会同时生成后缀为".anno 阅读全文
摘要:
https://mp.weixin.qq.com/s/UYVSO3XFJmhe5bUD_XbMLg 先介绍如何使用AddressAdjuster,然后分析UI参数的生成及使用。 1. AddressAdjuster的使用 a. 创建AddressAdjuster实例 注意usage()方 阅读全文
摘要:
https://mp.weixin.qq.com/s/X0s5CWN84GEiwpNR7tiRgA 基于AddressAdjuster介绍LazyModule的实现。 参考链接:https://github.com/freechipsproject/rocket-chip/blob/master/s 阅读全文
摘要:
https://mp.weixin.qq.com/s/UHGq74sEd9mcG5Q3f-g3mA 介绍AddressDecoder的实现。 1. 基本定义 每个Port包含多个地址集合(Seq[AddressSet]),需要确定输入的地址是属于哪一个Port。 AddressDecod 阅读全文
摘要:
https://mp.weixin.qq.com/s/ZsEVt1GslL7ufJdJlgpfNQ 介绍AddressSet的实现。 1. 基本定义 使用base/mask定义的一个地址集合,之所以用集合(Set)而不是范围(Range),因为范围一般情况下是指一个连续的范围,而base 阅读全文
摘要:
https://mp.weixin.qq.com/s/s3hr5JJX2_pwNgdu8WqV0Q 介绍enumerateMask的实现。(仅供理解,非严谨证明) 1. 基本定义 enumerateMask的意思是枚举掩码。其功能是把mask中为1的位的所有组合枚举出来。 enumerateM 阅读全文
摘要:
https://mp.weixin.qq.com/s/Sf0owQxWzxacVvykJZ5oTQ 介绍TransferSizes的实现。 1. 基本定义 从min到max的闭合区间:[min, max] 判断条件: a. min和max为2的幂; b. min <= max; c. min和 阅读全文
摘要:
https://mp.weixin.qq.com/s/KsZqe9W_DM6W6JecK_irvA 介绍AddressSet.enumerateBits方法的实现,主要是x & (-x)的意义。 1. 基本定义 enumerateBits的意思就是用于枚举比特,或者说罗列比特,即把mask中为 阅读全文