- 博客(33)
- 收藏
- 关注
原创 CHI Hazard condition —— CHI (9)
的操作是按顺序发生的,并且该顺序对于所有组件来说都是相同的。可以按任何顺序选择下一个请求,但当两个请求。响应发送的数据相同或为更新的数据。时,处理顺序必须与到达顺序相匹配。发出多个未完成的事务,协议还允许。请求属性需要,则必须将缓存数据与。请求,在这种情况下,数据响应携带。请求后的缓存行状态,而不是发送。这种情况是可能的,因为。,并且必须将相应数据设置为。需要,则必须将缓存数据或。中包含数据,则它必须与随。之后,必须尽快给出响应。响应一起返回,或转发给。响应一起返回,或转发给。请求的响应之前收到多个。
2024-11-14 17:30:36
807
原创 CHI 协议层 Retry —— CHI(8)
1)对于Request transaction。通常在没有资源和没有足够存储空间来存放当前的。3)对于Completer。TxnID可以与原始的TxnID。自己定义,例如可以表示传输类型。完成并释放资源了,就可以发送。Requester 再次发送。Requester 发送。的来源,也需要决定和记录。有资源后,它必须发送通过。响应允许二次发送命令。Completer返回。当Completer。来说没有相应的响应。之前或者之后的都可以。
2024-11-14 17:06:15
1166
原创 CHI 网络层Network Layer —— CHI(7)
系统中的每个组件都被分配一个唯一的Node ID。CHI使用SAM)将物理地址转换为目标Node ID为了能够确定发出请求的目标Node ID,每个RN和HN都必须具有SAM图中,事件的顺序如下:1.地址为的事务通过节点0中的RN SAM。2. RN SAM确定目标为节点5。3.事务路由到节点5的HN。4. HN接收到事务。5. HN通过其HN SAM传递地址,并确定目标为节点2。6.事务被路由到节点2的SN。
2024-11-14 16:39:26
675
原创 CHI atomics 传输——CHI(6)
原子事务,指的是此事务就像原子一样是不可分割的,要么所有操作全部完成,要么全部不执行,不存在执行部分操作的情况。1. Request 为AtomicStore。2. Request 为AtomicLoad、,或返回CompDBIDResp。TxnData:与原子请求一起发送的数据。内,因此由他们执行原子操作。可以将地址的原始数据返回给。Requester 发送。AddrData:当前。Atomic操作有2种。如果WriteData。
2024-11-14 16:20:50
413
原创 Credit协议
但是,这种协议如果只使用Credit来管控的话,性能会比较差,因为Credit维护必须根据Response FIFO的Pop来对Credit数目增加,而不能是Response FIFO的Push,因此在Request FIFO和Response FIFO深度都为N的情况下,Credit只能设为N,这样无法掩盖完整通路Latency。在上面的简单操作中,这两个处理方式区别不大,但是在一些复杂的设计中,Master可以根据自己当前Credit情况选择更多的发送方式来实现更加复杂的设计意图;
2024-11-14 11:38:21
829
原创 CHI write 传输——CHI(5)
b. This request will complete before any snoop(保序)返回Comp,表示其他requester。上篇介绍了dataless的操作类型,本篇我们来介绍一下write。(6)Tag Match,由于涉及内容过多,我们在链接层单独介绍。来提高系统性能,因为可以减少使用数据时的内存访问延迟。:一种投机行为,通过在其未来的使用点附近分配一个。之间,不能收到任何的同地址的。其中,WriteNoSnp。,也可以将它们合并,只发送。若写操作被取消,则发送。的原因是下文提及的“
2024-09-30 18:00:03
1375
1
原创 warm reset 和 cold reset 区别
cold reset = complete removal of power and restart.warm reset = forcing a restart via a reboot with out powering down.
2023-09-21 17:33:41
876
原创 低功耗设计(low power design)和UPF介绍(含代码示例)
使用upf来实现低功耗芯片设计 low power design
2023-04-26 20:00:19
10714
2
原创 Verilog权重轮询仲裁器设计——Weighted Round Robin Arbiter
Verilog权重轮询仲裁器设计 Weighted Round Robin 含代码
2023-04-12 20:08:52
4715
15
原创 Verilog轮询仲裁器设计——Round Robin Arbiter
当N个source同时发出请求时,默认source 0的优先级最高,当source 0 被响应后,它的优先级变为最低,source 1的优先级转为最高,以此类推。在固定优先级仲裁器的那一篇,讲了指定最高优先级的固定优先级仲裁器的实现方法。即初始情况下,最高优先级为source 0,然后是source 1、source 2、……直到source N。轮询仲裁就是在固定优先级仲裁器的基础上,所有的request轮流当最高优先级。上篇讲了固定优先级仲裁器的设计,并给出了指定最高优先级的实现方法。
2023-03-20 17:07:39
6037
10
原创 有符号小数的表示、扩展和计算
目录一、有符号数和无符号数的表示方法二、小数的表示方法三、数的扩展四、有符号小数的计算一、有符号数和无符号数的表示方法对于n bit有符号数,其表示方法为:对于n bit无符号数,其表示方法为:例如,对于一个4bit数 4‘b1011,如果它是一个有符号数,其值为如果它是一个无符号数,其值为二、小数的表示方法对于一个有符号数,假设数据总位宽为m,小数位宽为n,则可表示为mQn例如10Q8,表示总位宽为10,小数位宽为8三、数的扩展1、整..
2022-02-24 17:31:32
3011
4
原创 一拍找出数组中的多数元素
给定一个大小为 n 的数组,找到其中的多数元素。多数元素是指在数组中出现次数 大于 ⌊ n/2 ⌋ 的元素。假设数据位宽为m构建如图所示矩阵,每一行为数组中的一个数,从左到右依次为数据的高bit到底bit计算时,将每一列的数相加,得到的值如果大于n/2,则多数元素的该bit为1,否则为0例如,当m=4,n=5时,结果如下图所示数组中共有5个元素,值分别为3、7、3、3、7每一列的和的值为2、2、5、5n/2=2当和为2时,不满足>2,所以该bit为0
2022-02-23 15:03:46
250
原创 对booth乘法器面积与功耗的优化
对booth乘法器的介绍见上篇:booth乘法器的原理与verilog实现_weixin_42330305的博客-优快云博客1、部分积编码的优化上文中编码用了一个八选一的选择器,面积较大,我们对它进行进一步的优化。如图所示,对于Radix-4编码,以第二层部分积为例,其值取决于b[3:1]、a即a*(-2*b[3]+b[2]+b[1])不难看出Neg = b[3]two = (!(b[2]^b[1]))^b[3]One = b[2]^b[1]对于第一层部..
2022-02-11 17:39:43
1390
2
原创 booth乘法器的原理与verilog实现
一、乘法原理如图所示,二进制乘法和十进制乘法类似,都是单bit相乘,移位后相加如a(4bit)*b(4bit)将上图中所有数相加时,我们会用到阵列乘法器其中,HA表示半加器,FA表示全加器,虚线表示进位链上图红色和紫色线表示最长路径,代表了组合逻辑深度,我们对其进行优化优化后,进位链变短由此我们可以得出,乘法运算由2部分组成:生成部分积、通过加法树对数据压缩二、部分积生成如图所示,红框中的数即为部分积我们知道,01110 = 10000 - 00010因此,上
2022-02-10 20:40:13
21753
18
原创 用小位宽乘法器实现大位宽乘法
我们在使用大位宽乘法器时,有时受到工艺的限制,乘法器位宽太大,时序收不下来,这时候需要将其拆为若干个小位宽乘法再相加,并在其中插入寄存器,即可解决以上问题。其核心原理是乘法交换律。我们以两个16bit无符号数相乘为例。a[15:0] * b[15:0]a[15:0] = a[15:8]<<8 + a[7:0]b[15:0] = b[15:8]<<8 + b[7:0]a[15:0] * b[15:0] = (a[15:8]<<8 + a[7:0])
2022-01-29 15:27:38
1799
2
原创 rtl低功耗方法总结
功耗来源=动态功耗+静态功耗低功耗设计技术:时钟门控、电源关断、多电压供电、多电压阈值、动态调压调频/自适应调压一、Clock Gating时钟门控:1、模块级时钟门控对模块整体进行门控,通过例化门控单元,将空闲模块的时钟关断或者降低时钟工作的频率2、电路级门控工具根据rtl自动综合出时钟门控电路always @ (posedge clk or negedge rst_n) begin if(!rst_n) q <= 32'b0; else...
2022-01-25 20:17:58
4161
原创 CRC原理及rtl高效实现方法
CRC 算法的基本思想是将传输的数据当做一个位数很长的数。将这个数除以另一个数。得到的余数作为校验数据附加到原数据后面。CRC算法中,将二进制数据流作为多项式的系数,然后进行的是多项式的乘除法。如:除法其实做的是异或运算,可以更简便的用表格表示,假设生成项为10011转化为电路:数据从低位输入,若最高位数据为0则寄存器移位,若最高位数据为1则生成项与寄存器中的值异或后寄存器移位。因此,在生成项为10011时,待测数据移位一次结果如图所示:但是这种方法每次只能计算1..
2022-01-25 14:24:36
1104
原创 Chisel Module/RawModule/MultiIOModule
Module最常用的是Module,常用于时序逻辑,不用特意用声明clock和reset,默认会自动生成,且Module内只能声明一个IOclass add extend RawModule { val io = IO(new Bundle { val a = Input(UInt(1.W)) val b = Input(UInt(1.W)) val c = Output(UInt(2.W))}) io.c := io.a + io
2022-01-24 14:42:21
605
原创 chisel编码初体验
本文记录了初次使用chisel编码时遇到的一些问题及解决办法,希望对以后的工作有所帮助。1、内部信号赋值1.1 单bit数信号定义 单bit使能需要定义为Bool型,在io端口定义如下val pipe_en = Input(Bool())注意:"Bool"后需要加"()"1.2 寄存器打拍 Chisel中支持的Reg类型有RegNext、RegInit、RegEnable、ShiftRegister,具体的差别和使用方法可参考Chisel中的几种常见的寄存器_C...
2022-01-11 17:10:59
788
原创 rtl高效定位问题的方法——verilog加打印
我们定位rtl问题一般都是通过看波形,可是当pipe line 太长,或者是数据量太多,拉波形定位定位问题就会带来一种把眼瞅瞎的感觉。如果能将中间值打印到文件中,使rtl的打印结果和rm的打印结果自动比对,则能快速精准定位问题。verilog的打印方法:`define PRINT U_PRINT_TOP.U_PRINT_ALGO.U_PRINT_OUT_0 //定义打印信号所在的层级reg [8*100-1:0] file_name_p = "p_out.txt"integer p_
2022-01-11 16:56:17
1146
原创 TRIZ(一级)
TRIZ:发明问题的解决理论。由前苏联发明家根里奇·阿奇舒勒所提出,通过对250万件世界高水平发明专利的分析研究,提出了有关发明问题的基本理论。TRIZ理论成功地揭示了创造发明的内在规律和原理,着力于澄清和强调系统中存在的矛盾,其目标是完全解决矛盾,获得最终的理想解。它不是采取折中或者妥协的做法,而且它是基于技术的发展演化规律研究整个设计与开发过程,而不再是随机的行为。TRIZ发明问题解决流程问题调研客户声音、最终理想解、根因分析、资源、九宫格1、什么是系统提供的最重要的功能?(设计的最
2022-01-07 15:58:46
2914
3
原创 scala学习笔记
Chisel(Constructing Hardware In a Scala Embedded Language)是UC Berkeley开发的一种开源硬件构造语言。它是建构在Scala语言之上的领域专用语言(DSL),支持高度参数化的硬件生成器。原本以为在了解了chisel基本语法之后,在运用chisel的大道上就可以畅通无阻了。没想到在chisel的高阶应用中一脸懵逼。看来学习一下scala是十分必要的。本文为《快学scala》的学习笔记,和chisel相同部分不再记录,仅记录笔者认为对chi
2021-12-16 10:45:57
190
特斯拉Dojo FP8、FP16数据规格
2022-09-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人