有这样一个场景。 先配置寄存器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-…
报错内容如下:安装的WordPress需要访问您网页服务器的权限。 请输入您的FTP登录凭据以继续。 如果您忘记了您的登录凭据(如用户名、密码),请联系您的主机提供商。 解决方法:第一步:在 wp-config.php 文件最后添加以下三行: define("FS_METHOD", "direct"); define("FS_CHMOD_DIR",…
我一台1核1G内存的VPS,最近总是出现CPU满载的情况,重启后恢复正常,过几个小时后又会满载,导致在上面运行的一些自动任务执行失败。 使用top命令查看,发现是kswaod0进程占用了大量CPU资源。这个进程是和虚拟内存相关的,在网上查到的资料: kswapd0占用过高是因为物理内存不足,使用swap分区与内存换页操作交换数据,导致CPU占用过高…
1丶 环境准备 在开始之前,确保你具备以下条件: 一台可以访问互联网的服务器(Linux 环境,如 Ubuntu/CentOS)。 Root 权限或 sudo 权限。 一个已解析的域名(本文以 example.com 为例)。 2丶什么是 Let’s Encrypt? Let’s Encr…
1丶购买域名 在NameSilo购买域名。 1.1挑选域名 在搜索框中搜索中意的域名。 1.2确认订单 取消自动续费。 1.3支付订单 选择支付宝支付订单。 2丶解析 2.1编辑DNS 在Cloudflare管理域名的DNS。 注:不要开启代理,如若开启,后续设置梯子会有问题。 2.2获取Cloudflare名称服务器 添加完DNS后,自动生成Cl…