Rocket - util - AsyncQueue】的更多相关文章

https://mp.weixin.qq.com/s/6McbqOKM4fu4J5vdpZvxKw   简单介绍异步队列(AsyncQueue)的实现.   ​​ 0. 异步队列   异步队列的两端分属不同的时钟域,拥有各自的复位逻辑. 异步队列用于存值的一端为上游端(source),用于取值的一端为下游端(sink).   1. AsyncQueueParams   ​​ 异步队列的参数,包含如下几项: a. depth   队列深度,表示队列可以存储几个元素:   b. sync   表示流…
https://mp.weixin.qq.com/s/7C8ZmPpwAqFqyKjL9K40Fg   介绍util中定义的注解(Annotations).   ​​   1. Annotation   注解提供一些信息,供后续阶段使用. 之前在使用chisel生成verilog的时候,会同时生成后缀为".anno.json"的文件,里面存放的即是注释信息.   2. SRAMAnnotation   ​​ 注释SRAM的信息,包括:地址宽度.名称.数据宽度.深度.描述信息.写掩码颗粒…
https://mp.weixin.qq.com/s/Z4JJhZ_jL1lqF1nf_orq9A   简单介绍Timer的实现.   ​​   1. 基本功能   实现定时器的功能.   2. Timer   实现一个静态装入的定时器: ​​ 1) initCount   定时器的初始值,静态配置,不可动态改变.   2) maxInfligh   定时器事件的种类.   3) io   ​​ a. start:某个定时器事件需要启动定时器,io.start.bits为这个定时器事件的ID:…
https://mp.weixin.qq.com/s/zCP7wPuxgQ-r94Tr6BV5iw   简单介绍Replacement的实现.   ​​   1. 基本介绍   用于实现Cache替换相关的功能. ​​ From: Cache Replacement Policies, Prof. Mikko H. Lipasti, University of Wisconsin-Madison, ECE/CS 752 Spring 2016   2. ReplacementPolicy   代…
https://mp.weixin.qq.com/s/gbR5fuDbE_nUFVxw-p4rsA   简单介绍ReduceOthers的实现.   ​​   1. 基本介绍   输入一组Bool元素,把其他位置元素逐个相与的结果,作为当前位置的值输出.   2. helper   helper实现ReduceOthers的核心功能: ​​   1) 输入参数   x是输入的一组Bool类型的元素.   2) 返回值   返回一个元组:(Seq[Bool], Bool) a. Seq[Bool]…
https://mp.weixin.qq.com/s/xyEq3DgYuf2QuNjssv8pkA   简单介绍Repeater的实现.   ​​   1. 基本功能   A Repeater passes it's input to it's output, unless repeat is asserted. When repeat is asserted, the Repeater copies the input and repeats it next cycle.   2. 实现  …
https://mp.weixin.qq.com/s/G2vLP-ncoJzSOgxGGEJkfA   简单介绍PrefixSum的实现.   ​​   1. 基本介绍   ​​ 把一个序列从前向后逐个执行迭代(assocOp),每针对一个元素执行一遍迭代,针对一整行执行一次迭代(layerOp).   2. PrefixSum   ​​ a. layers:抽象方法,返回层数,等于layerOp执行的次数: b. idLayer: 默认的layerOp,即没有动作,把输入原样返回:   3.…
https://mp.weixin.qq.com/s/CUnrpyQN5LRBR5bxC5u86A   简单介绍MultiWidthFifo的实现.   ​​   1. 基本介绍   实现一个输入宽度为inW,输出宽度为outW,可存n个outW宽度元素的FIFO. a. 如果inW == outW,直接使用队列(Queue)实现: b. 如果inW > outW,则相当于每次输入多个元素,而输出只能有一个元素: c. 如果inW < outW,则相当于每次输出多个元素,而输入只能有一个元素:…
https://mp.weixin.qq.com/s/_aJqf1cFJDK5RVRBhxTWOw   介绍MaskGen的实现.   ​​   1. 基本介绍   给定总线宽度beatBytes,根据访问的地址(address)和访问的字节数(bytes = 2^lgSize),生成访问字节的掩码.   2. 实现   思路不复杂,写法很难懂.重构一下,提高可读性.   1) 首先忽略groupBy,清爽很多: ​​   2) 把addr_lo重命名为address,把lgSize重命名为si…
https://mp.weixin.qq.com/s/kf4FvAFye_bRdT49Yow7Hg   简单介绍Misc中各个辅助方法的用途和实现.   ​​   1. ParameterizedBundle   ​​ 包含一个隐式参数的Bundle.   2. DecoupledHelper   ​​ rvs:Ready/Valid们. a. fire():返回一个rvs是否全部为真的判断: b. fire(exclude, includes):从rvs中临时排除一个exclude,在临时增加…