PCI Express平台中主要有四种PCI Express设备:根复合体、交换开关、端点和桥。在PCI Express/PCI桥下的PCI总线上可挂传统的PCI设备。给出了一个PCIExpress系统拓扑的例子。 在根复合体中,存储器控制器用来挂接系统存储器,即主存;初始化模块、中断控制器和电源管理/热插拔控制器用来在CPU与PCI Expres…
下图是一个典型的PCIe体系的topology,图中有以下三类PCIe设备:位于CPU的PCIe Root Complex(包含Host Bridge, RCiEP和Root Port), PCIe Endpoint设备和PCIe Switch。 Root Complex: PCIe Root Complex(根联合体),包含一个Host…
一、简介 1、AXI 简介 AXI,全称Advanced Extensible Interface,高级可扩展接口,是ARM在AMBA3中推出的核心成员,是现代SOC中实现高带宽、低延迟设备互联的标准接口。AXI的核心设计理念是通道分离、地址/数据解耦、高效握手,能满足从简单寄存器配置到高速DDR存储的各类通信需求,其主要特点如下所示: 分离的地址…
分解测试点后,跟设计要芯片IDLE状态需要关注那些信息,列个表(仿真结束检查)?包括状态机,计数器,fifo等 是否考量反压测试,长反压(内部buffer满或者调度压满)、短反压、长短交替反压。 clock gating,分为两类,1.关闭部分时钟,不影响业务正常执行,我们验证下发关闭时钟的激励,验证环境无感,无其他特殊处理,仍正常产生期望数据包进…
有这样一个场景。 先配置寄存器A,然后配置寄存器B为A5后,A寄存器内容才生效。 我们按配置流程走,先配置寄存器A,再写寄存器B为A5,从业务输出上看到寄存器A的内容确实生效了。这时,我们可能会忽略一个问题,那就是寄存器A生效到底是,在写入寄存器A时就立马生效了,还是在写寄存器B为A5的时候才生效的。 所以,这块我们应该发散我们的思维,去反向思考;…
有这样一个场景。 我们下发一个访问包,当发送的访问包校验正确时,DUT会回复一个正常的响应包,当发送的访问包校验错误时,DUT会回复一个空响应包。 如果我们只发送一个错误访问包,DUT返回了一个空响应包,我们环境同样产生了一个空返回包,这样两个包比对成功,设计行为是符合预期的,看起来没有问题,但是很有可能泄露bug。 我们下发一个错误访问包,DUT…
现在有这样一个场景。 DUT内有一个计数器,计到阈值后,触发一个功能,然后计数器置0,重新开始计数;如此循环,不断触发相关功能。 例如,计数器阈值为200,当计数器计到100时,我们动态将计数器阈值改配为50,很可能计数器后续会一直计到最大值,然后回卷,当重新计到50时,才会触发相关功能。这样的处理逻辑显然是不可接受的。
我们封装公共函数时,是希望它通用性足够强,可以在多个应用场景中被调用; 说到增强通用性,参数化是最为常见的一种手段; 所以我们在Package打包公共函数时,引入参数类。 package comm_utils_pkg; /* * split bits into bit queue. */ class one_arg#(int arg0); stat…
1丶为什么这么做? 我们将一些公共函数封装进Package,方便我们重用,尤其是继承项目,好处尤为明显; 其次,这样做更符合高内聚,低耦合的编码要求。 2丶问题 package comm_utils_pkg; `include "uvm_macros.svh" import uvm_pkg::*; function void bits2byte(b…
使用zxcvos大神开发的Xray 管理脚本,搭建梯子,实现科学上网。 1丶获取脚本 wget --no-check-certificate -O ${HOME}/Xray-script.sh https://raw.githubusercontent.com/zxcvos/Xray-script/main/install.shwget --no-…