- 博客(74)
- 收藏
- 关注
原创 PCIE-TLP中的域及其涉及的小知识点
(3)PCRC(Plaintext CRC,纯文本 CRC):是 IDE TLP 中的概念,在大多数方面,PCRC的计算方法与ECRC相同,并且CRC多项式是相同的。在NFM中,32位的ECRC值被放置在TLP的末尾的TLP Digest field字段中。用于检测两个连接的设备之间的链路上的错误,这些错误一般是由于物理层的信号质量问题引起的。间的数据传递的时候并没有序的要求,虽然发送的时候是把传送数据的存储器写的。12. 哪些操作是通过地址进行路由的,那些操作是通过ID进行路由的?
2024-10-22 23:34:50
916
原创 PCIE-变量及参数总结
该变量限制了从本状态跳转至 Recovery 状态的尝试次数,从而避免了永久的无限循环。,并且执行一些更新(这些更新包含:1. 用收到的连续的8个EQ TS2去更新更新tx的preset值,也就是Lane Equalization Control Register Entry寄存器中的域,2.用收到的连续的8个EQ TS2去更新8.0GT/s的Lane Equalization Control Register Entry中的Receiver Preset Hint fields);
2024-10-20 22:55:47
1368
1
原创 PCIE-message
当MEM tlp的地址成功匹配+tlp的type field是IATU_REGION_CTRL_1_OFF_OUTBOUND_I,此时message code会从IATU_REGION_CTRL_2_OFF_OUTBOUND_I寄存器中获取,长度为0的mem wr转变为msg,非0的转变为msgd。通过设置MISC_CONTROL_1_OFF中的DISABLE_AUTO_LTR_CLR_MSG为1,自动产生LTR clear message的机制可以被关闭。应该是区分device设备,可能存在这两种设备。
2024-10-09 00:09:31
948
1
原创 PCIE-TLP路由
上行端口转发到下行端口后,所有下行端口都会在此执行两次检查,也就是一次检查是不是属于自己,另一次检查是否属于从属总线范围。复制一份,并向它的所有下行端口都转发;下行端口不能接收一个隐式路由的广播。(2)端口转发到其他端口;的事务,它将会被转发至下行的另一个端口上,而不是之前接收这个。的上行端口,在这种情况下,这个数据包可能是一个。的上行端口并不会从外界接受一个隐式路由目的地为。将会向上行移动,会将其认为是一个。转发给上行端口,因为路由元件知道。上行端口可以合法的接收一个广播。下游端口向上游端口传递的过程。
2024-08-30 11:22:59
1064
原创 PCIE-校验和纠错
用于检测两个连接的设备之间的链路上的错误,这些错误一般是由于物理层的信号质量问题引起的。,向前纠错):基于字典将要传输的内容重新编码,接收者再根据接收内容、字典、发出一个不可修正的错误信息通知系统处理,没有重传机制,系统处理需要软件参与。报文给发送端,要求对端重发,重传过程不需要软件参与。中的概念,在大多数方面,计算过程中都需要被认定为。之间的路径是否有损坏,
2024-08-30 11:16:07
1044
原创 PCIE-Nullified TLP、Data Poisoning
通常不能转发,因为不知道真正的目的地,因此转发可能会导致一些其他情况,比如数据损坏、系统故障等;无论所报告的错误的严重程度如何,所报告的错误必须作为不可纠正的错误处理(最终可能导致请求的发起者重新发出请求,针对在读取操作或采取其他操作的情况。)错误转发不会导致数据链路层重试,只有当链路上存在由数据链路层的。路由这些请求的方式必须与没有中毒的请求路由相同(除非请求的目标是。流出,那么除非存在更高优先级的错误,否则端口必须将该。错误检测机制确定的传输错误时,错误的。,接收方的行为没有明确的指定。
2024-08-30 10:52:52
1036
原创 pcie-rx处理过程
另外需要指出,如果单个读请求的所有内存读完成都具有成功的完成状态,那么它们的有效负载之和必须等于请求的大小,需要指出的是,对于设备不支持的。来响应配置请求,例如,通过设备的软件驱动写入设备特定的复位位。的结合指示的一个未定义的字段,或者说是对应的设备不支持的。返回的数据的第一个启用字节的字节地址的下一位。条件,或者如果函数的状态寄存器中的立即就绪位被设置时,一起返回的第一个启用的数据字节的字节地址的下一位。的数据字节,包括那些未定义的内容,都包括在所有的。)对于配置的过程中的请求消息,如果设备不支持。
2024-08-30 10:41:16
1178
原创 PCIE-链接记录
复位 ---------------------------------------------------------------------------------------------------------------------------------TL层:
2024-08-28 10:19:03
483
原创 PCIE-flit mode retry
最大的unack的flit的数目,和buffer size有关。,注意是指下个期望收到的有效的、最近一次收到的有效的ack。下一个即将发送的ack。
2024-08-22 18:17:35
638
1
原创 PCIE-framing error
Framing Token 是 PCIe Gen3 出现的概念,Framing Token 中的 STP、SDP、EDB、IDL 在 Gen1/2 时候以特殊符号(K Code)的形式存在。Gen3+ 时,有序集的同步头为 01b,在 Orderer Sets Block 中发送,有序集的 Symbol 0 来指示当前有序集的类型。rx需要计算frame crc和frame parity(tlp length域),crc或者parity错误 -> frame error;
2024-08-22 16:10:49
1549
原创 UCIE-PHY
也就是降低速率但是不减小位宽的情况下的带宽是大于速率不变但是。状态下使用,主要目的是在于找到眼图的中心位置。使用的状态:MBTRAIN.VALVREF。数量减小一半的位宽时,执行降低速率;指的是 双方能够协商的最低的速率。状态下发现错误大于临界值,会主动。状态下发现错误大于临界值,会主动。,也就是不满足上述条件,直接进入。)如果错误的数量不可以通过。)如果错误的数量不可以通过。寄存器中没有检测到错误,如果小于等于一半数量的。以保证采集最大的眼图。以保证采集最大的眼图。的评估结果来进行判断。
2024-08-21 11:55:21
1295
原创 UCIE-Memory Access Protocol
Requestresponse1.supportUCIe2.orderingUCIeUCIe3.status:UCIeegegnot DWORDs。
2024-08-21 11:33:43
324
原创 ucie-Management Transport
chipletchiplets•1UCIe•2Routing•3•4•5ChipletIDChipletchipletone(1)Link is up(2)(3)ChipletChipletchiplet(1)
2024-08-21 11:32:01
928
原创 PCIE-EQ
一般模式,从低到高依次EQ 8,16,32,64G,特殊模式1,从最高NRZ support(比如32G);如果均衡成功但是工作不稳定,下行端口可以调整速率到低速率并在该速率下均衡,特殊模式2,从最高速率开始;DS port 发送EC=10b 进入phase2,调整DS port的发送参数,误码率达到10-12。调整US port的发送参数,误码率达到10-12。速率调整到目标速率前,双方握手需要进行速率变更,需要进行EQ操作;速率调整到目标速率前,双方握手需要进行速率变更,需要进行EQ操作;
2024-08-21 11:23:20
1316
原创 PCIE-TS1/TS2
1.标准TS1/TS22.EQ TS1/TS23.Modified TS1/TS2Modified TS1/TS2 是什么?Modify了什么?为什么要Modify?非 PCIe 协议运行在 PCIe PHY 上或发送 TS Message 时,在 LTSSM 部分子状态采用 Modified TS1/TS2。允许发送 Modified TS1/TS2 的 LTSSM 子状态有 Cfg.Lanenum.Wait、Cfg.Lanenum.Accept、Cfg.Complete。在此之前的,必须在
2024-08-21 11:07:30
2311
原创 PCIE链路训练-状态机描述recovery
如果是在128/130b的模式下,收到的TLP/DLP遵循128b/130b解码规则。a:如果当前状态是从recovery.equalization状态进入的,在发送的TS1中,dsp必须要设置pre-cursor,cursor,post-cursor域,注意如果在recovery.equalization状态下收到的最后一个请求是含有preset的request,那么tx必须在将Transmitter Preset bits设为收到的request中的preset值。本节的内容并不适用于更低速的速率。
2023-11-27 01:25:15
2075
1
原创 PCIE链路训练-状态机描述3
满足a、b两种条件之一,那么The equalization_done_8GT_data_rate, equalization_done_16GT_data_rate,equalization_done_32GT_data_rate,equalization_done_64GT_data_rate variables 设为1,64.0 GT/s Status Register中的No Equalization Needed Received bit设为1;
2023-11-27 01:22:45
750
原创 PCIE链路训练-状态机描述2
9.Flit_Mode_Enabled为1+ LinkUp=0b的情况下,如果tx发出的TS2中的Link Upconfigure/ L0p Capability (Symbol 4 bit 6)域设置为 1b,并且接收到 8 个连续的 TS2 序列,TS2在该比特上的设置同样为1,那么L0p_capable变量设为1,Device Status 3 Register中的Remote L0p Supported bit设为1;否则,该变量清除为 0。,链路编号为相同有效的数值,并且通道编号也不为填充符号。
2023-11-23 23:55:15
1297
原创 PCIE链路训练-状态机描述config
在此之后,任意一个lane在收到两个连续的TS1,其中link num为具体数值,lane为pad,随后dsp转变为usp(为了根据timeout机制决定谁才是真正的dsp,如果 DSP 接收到的第一批 TS1 中,链路编号就已经不是填充符号了,那么 DSP 通过这种现象就意识到存在交叉链路(Crosslink),链路对端设备此时也是 DSP。,只不过此时该通道将变成面向上游的通道)。在所有剩余的通道中,如果检测到对端接收方,但是没有接收到有效链路编号的通道,将继续发送链路编号和通道编号采用填充符号的。
2023-11-23 00:15:00
2081
1
原创 PCIE链路训练-状态机跳转
一旦dsp收到了usp发送的必须数量的TS1(至少两个连续的TS1),明确了链路宽度之后,DSP 会更新一些必须的内部状态,发送通道编号不为填充字符的TS1,并立刻转为 Configuration.Lanenum.Wait 状态,等待 USP 确认通道编号分配。如果一个链路可以由多个link num和非pad TS1的通道合并组成,并且它们接收到两个连续 TS1,其中链路编号相等,通道编号非pad,那么usp应该在可行的情况下,发送通道编号相同的TS1表示接受分配,或者在必要的时候回应不同的编号值提议。
2023-11-23 00:12:19
1657
2
原创 PCIE-Malformed tlp,UR,UC,CA
另外原子操作的请求必须以规定的方式字节对齐,如果没有按照规定的方式字节对齐,接收者将认为这个。(对于请求和建议来说,如果不遵循的话那么必须认为是。是无效的,所以大概率是针对这个请求的处理是把他作为。(对于请求和建议来说,如果不遵循的话那么必须认为是。能对应上,但是其他域对不上,也是把他认为是。功能支持的话,如果收到了一个不支持的。的话,对于请求来说,建议将其认为是。的话,对于请求来说,建议将其认为是。,也可以不做任何处理,但是如果是。对于原子操作来说,接收者收到的。,也可以不回,但是如果回的回的。
2023-10-26 23:52:00
2165
原创 关于DDR协议的一些操作的理解4
图中的page size表示的就是一行所存储的内容,以64MB*16格式为例,一行一共有10列,每一列存储16bit,也就是2Byte吗,所以一个page size所总共包含的大小是2KB大小空间。可以发现bank地址+行地址是一起的,而随后的读写命令和列地址是一起的,而列地址实际是没有和AP和BC复用的,也就是说auto precharge/burst chop是和读写操作是并行的。等效速率:考虑上下数据沿都采样的问题,是IO速率的两倍(我理解应该是总线上对应的速率,总线都是单时钟沿)
2023-09-26 00:23:06
909
原创 DDR3.0管脚介绍
3.cs,片选,低电平有效,选中memory颗粒,选中不同的颗粒的化,比如选中4个颗粒,至少需要四个片选信号,一个rank往往对应多个颗粒,也就是选中多片,而一般一个cs信号只对应一片。A10可用于auto precharge(自动关闭这个bank) ,一般来说,这个信号线是和读写一起进行的,也就是读写操作的时候,如果A10是高的情况下,会在读写操作只会自动将这一个bank关闭,或者把这个bank所对应的行关闭。12.这个信号和DQM复用一个信号线,需要通过寄存器来配置,一般不用,用的较多的是DQM。
2023-09-25 00:19:08
1518
原创 uvm源码解读-sequence,sequencer,driver三者之间的握手关系1
(6)注意这里有几个变量,第一个变量是lock_arb_size,第二个变量是m_lock_arb_size变量,m_lock_arb_size这个变量在每次进行m_update_lists()任务的时候会加一次,在一开始的时候会将这两个值相当,随后去等执行m_update_lists()任务。其中m_num_last_reqs这个变量是通过set_num_last_reqs任务实现的,也就是说m_last_req_buffer的buf含量最大是1024个。
2023-09-20 00:59:38
1268
1
原创 SV中的随机化约束
通过调整权重,然后进行永久循环随机,通过find_index with找到5,并且总的数组含量大于5的情况下在退出随机,否则就一直进行随机。(3)数组随机,在使用sum函数的时候一定要注意,为了避免上面两种情况,一定要县约束每个变量大致范围,在使用sum函数进行约束。拆分,需要随机的内容包含:(1)变量取值范围(2)变量和的范围(3)变量个数(4)数组中5的个数不超过10个。(1)后来的约束覆盖前者约束(2)子类约束覆盖父类约束(3)外部约束覆盖内部约束。(1)~(3)都可以设定一个变量,通过变量来约束。
2023-09-06 23:34:00
836
原创 随心记录0816
注意uvm_re_match中的正则表达的用法,以及 uvm_glob_to_re的用法。下面这张图☞的都是uvm_hdl_force和uvm_hdi_deposit。2.post randomize函数的使用方法。5.uvm_re_match的用法。1. foce相关方法。
2023-09-06 20:50:29
236
原创 DDR PHY
(5)可以完成PHY的初始化,training(比如,automatic DQS gate training,delay line calibrations,VT compensation,write leaving, write read data bit deskew, DQ/DQS eye training),控制的逻辑。(2)数据位宽是以8bit逐渐递增的(这样做的目的是因为可能支持16/32/64bit的总线位宽)(1)不支持SDRAM的DLL off mode。1.ddr phy架构。
2023-08-26 21:47:21
4998
原创 随心记录-20230613
1. 在进行随机化约束的时候,不能把一个随机变量直接付给另一个随机变量,必须通过一个非随机的中间面料进行传递。那么xx不能是rand属性,如果想要将一个随机变量给到另一个,可以中间定义一个非随机的属性,进行传递。
2023-06-13 23:26:44
291
原创 memory control模块设计及验证3
验证计划:(1)对于apb模块寄存器的测试,包括复位值、写入读回的一致性、对非法地址进行写入、写入非法数据不会影响设计正常工作等;(2)数据的写入和读回,读写的single传输(len为0),读写的burst传输,多个读写的burst传输,读写数据长度、首地址不一致;(3)w通道的FIFO的验证,在w通道的256-64FIFO为满的情况下继续往w通道发送数据,设计能正常工作;(4)一次burst传输过程w通道的数据不连续,设计能正常工作;(5)r通道FIFO的验证,r通道的64-256FIFO为满的情况下a
2022-12-03 14:53:03
535
原创 memory control模块设计及验证2
3.1 function description此模块实现了array的read/write/refresh的控制,其接口完成了内部frame向array interface之间的转化。3.2 feature list(1)支持array接口的时序参数可配置;(2)支持刷新周期可配置;3.3 block diagram 3.4 interface descriptionsignal namewidthDirectionDescriptionglobal signalclk1inputclkrst_n1inp
2022-12-03 14:51:12
597
原创 memory control模块设计及验证1
1.1 function descriptionmemory controller实现了对array 读、写、刷新的控制,完成了axi接口到array接口之间的转换。1.2 feature list (1)支持array时序、刷新周期可配置 (2)支持读写优先级的配置 (3)支持axi burst传输中的自动跨行1.3 block diagram 1.4 interface descriptionsignal namewidthdirectiondescriptionglobal sig
2022-12-03 14:45:33
1401
1
原创 关于DDR协议的一些操作的理解2
一些操作命令:1.precharge:由于SDRAM的寻址具体独占性,所以在进行完读写操作后,如果要对同一L-Bank的另一行进行寻址,就要将原来有效(工作)的行关闭,重新发送行/列地址。L-Bank关闭现有工作行,准备打开新行的操作就是预充电(Precharge)。预充电可以通过命令控制,也可以通过辅助设定让芯片在每次读写操作之后自动进行预充电。实际上,预充电是一种对工作行中所有存储体进行数据重写,并对行地址进行复位,之所以称为DRAM,就是因为它要不断进行刷新(Refresh)才能保留住数据,因此它是D
2022-12-03 14:27:34
6646
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人