<?xml version="1.0" encoding="utf-8" ?><rss version="2.0"><channel><title><![CDATA[SummerXRT的博客]]></title><description><![CDATA[]]></description><link>https://blog.csdn.net/SummerXRT</link><language>zh-cn</language><generator>https://blog.csdn.net/</generator><copyright><![CDATA[Copyright &copy; SummerXRT]]></copyright><item><title><![CDATA[uvm_reg_bit_bash_seq 源码分析]]></title><link>https://blog.csdn.net/SummerXRT/article/details/122411652</link><guid>https://blog.csdn.net/SummerXRT/article/details/122411652</guid><author>SummerXRT</author><pubDate>Mon, 10 Jan 2022 15:36:03 +0800</pubDate><description><![CDATA[文章目录1.源码解析2. 知识点补充

有关 uvm_reg_hw_reset_seq 源码请看： uvm_reg_hw_reset_seq 源码 。

uvm_reg_bit_bash_seq 会对reg_model 中每个可以读写的寄存器域分别写入 0 、1，然后再读回，用于检查寄存器的每个bit的读写功能是否正常。
1.源码解析
1.先将reg_model 复位。

2.通过搜索 resource_db，判断哪些 reg_block 和 reg 不需要测试。然后对每个需要进行测试的reg 进行 sin]]></description><category></category></item><item><title><![CDATA[uvm_reg_hw_reset_seq 源码分析]]></title><link>https://blog.csdn.net/SummerXRT/article/details/122411192</link><guid>https://blog.csdn.net/SummerXRT/article/details/122411192</guid><author>SummerXRT</author><pubDate>Mon, 10 Jan 2022 15:21:54 +0800</pubDate><description><![CDATA[文章目录1.代码解析2.知识点补充设置reg不测试关于resource_db
uvm_reg_hw_reset_seq用于初期检查DUT中的寄存器硬件值是否与reg_model 中的复位值一致，防止设计在实现时弄错复位值。
1.代码解析
1.先reset reg_modle 。将reg_modle中的镜像值和期望值复位。

2.判断是否在外部设置了哪些 reg_block 不需要进行 reset 测试 。

3.判断是否有哪些 reg 不需要测试。

4.对所有需要进行测试的 reg 通过前门的方式读回DU]]></description><category></category></item><item><title><![CDATA[Arbiter的仲裁方案 — 数字IC验证]]></title><link>https://blog.csdn.net/SummerXRT/article/details/122131304</link><guid>https://blog.csdn.net/SummerXRT/article/details/122131304</guid><author>SummerXRT</author><pubDate>Fri, 24 Dec 2021 19:09:06 +0800</pubDate><description><![CDATA[    最近在做一个对同一个RAM访问的 Aribiter，由此想到了一些有关arbiter仲裁方案的思考。下面介绍几种方案，并分析其中的优劣。
方案一：固定优先级
    比如我有8个 port 同时向 Aribiter 发送请求，Arbiter的总裁波形有两种情况，如下：
情况一：

情况二：


考虑最 worse 的情况，根据上面冲裁方案（情况一），由于port8的优先级最低，最worse情况如下：

当前port1、…port7 同时request，进入仲裁后，下一拍 port8 request ]]></description><category></category></item><item><title><![CDATA[正则表达式]]></title><link>https://blog.csdn.net/SummerXRT/article/details/122099659</link><guid>https://blog.csdn.net/SummerXRT/article/details/122099659</guid><author>SummerXRT</author><pubDate>Thu, 23 Dec 2021 10:57:11 +0800</pubDate><description><![CDATA[????通过perl来介绍正则表达式。
快速入门
    先写一个最简单的正则表达式，查到是否有匹配的字符串，如下：
$_ = "little verifier";

if(/little/){ # 查找 little 字符
	print "find it!\n";
}else{
	print "cannot find it!\n";
}


    如上，我们可以用 / 斜杠符号作为开始匹配正则。用/ … /的方式，在其中写正则表达式。其实/ … / 的方式是 m 匹配的简写，你可以用m{ }、m( )、]]></description><category></category></item><item><title><![CDATA[Perl脚本 — 数字IC验证]]></title><link>https://blog.csdn.net/SummerXRT/article/details/122060733</link><guid>https://blog.csdn.net/SummerXRT/article/details/122060733</guid><author>SummerXRT</author><pubDate>Wed, 22 Dec 2021 18:10:33 +0800</pubDate><description><![CDATA[文章目录一、基本语法1.1 标量1.1.1 数字1.1.2 字符串1.1.3 标量的定义1.1.4 标量的赋值1.2 列表与数组1.2.1 定义列表与数组1.2.2 数组的索引1.2.3 关于 qw 的使用1.2.4 关于$_的使用1.2.5 数组的存取1.3 上下文1.4 子程序1.4.1 定义子程序1.4.2 传递参数1.4.3 静态变量二、输出2.1 读取文件2.2 输出文件三、哈希
一、基本语法
1.1 标量
    Perl中两个最基本的变量，即标量和列表。标量可以是数字和字符串。
1.1.1 数]]></description><category></category></item><item><title><![CDATA[typedef class 的使用 — SystemVerilog,sv]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121990399</link><guid>https://blog.csdn.net/SummerXRT/article/details/121990399</guid><author>SummerXRT</author><pubDate>Tue, 21 Dec 2021 11:33:09 +0800</pubDate><description><![CDATA[    在同一个文件中有好多的类，如果两个类之间都需要另一个类的句柄。，当编译器在处理第一类声明的过程中，编译器遇到对第二个类C2的句柄声明，此时对第二个类的引用还未定义，编译器这时会一个未定义的错误。如下所示：

    这时我们就可以使用typedef class的方式，将第二个类提前声明。此外，诸如 sequencer 中我们一般不做特别的处理，所以我们可以使用如下的方式，可以避免去再写一个sequencer 的类。
typedef uvm_sequencer#(my_transaction) my_]]></description><category></category></item><item><title><![CDATA[VCS的ralgen命令产生UVM寄存器模型]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121970295</link><guid>https://blog.csdn.net/SummerXRT/article/details/121970295</guid><author>SummerXRT</author><pubDate>Thu, 16 Dec 2021 17:05:06 +0800</pubDate><description><![CDATA[文章目录前言一、寄存器描述表格二、生成 .ralf 寄存器文件2.1 field2.2 register2.3 register block2.4 system三、产生UVM寄存器模型
前言
    在验证时，寄存器模型是必不可少的一个环境，且在项目中可能面临着需要不断更新迭代的需求。那么如何快速建立 UVM寄存器模型 呢？采用VCS ralgen脚本的主要步骤如下：

中心化的寄存器描述文件，如 ods、CSV、XML等；
根据寄存器描述文件产生ralgen需要的 .ralf 格式的寄存器文件；
vcs的]]></description><category></category></item><item><title><![CDATA[以太网交换机的通识]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121855571</link><guid>https://blog.csdn.net/SummerXRT/article/details/121855571</guid><author>SummerXRT</author><pubDate>Tue, 14 Dec 2021 16:53:40 +0800</pubDate><description><![CDATA[前言
在介绍交换机之前，首先要了解的 OSI 七层网络模型。
1.OSI 七层网络模型




序号
名称
描述




一层
物理层（PHY）
负责驱动网络上信号的收发器，发送和接受位 。


二层
数据链路层（MAC）
负责创建在网络上传送的帧，包含mac地址的帧。


三层
网络层（IP）
负责创建在网络上传送的包，包含IP地址的包。


四层
传输层层（TCP/UDP）
负责不同主机上的应用程序之间建立连接。


五层
会话层



六层
表示层



七层
应用层
应用层是一组需要网络通信的应用程]]></description><category></category></item><item><title><![CDATA[计算机网络笔记]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121866020</link><guid>https://blog.csdn.net/SummerXRT/article/details/121866020</guid><author>SummerXRT</author><pubDate>Mon, 13 Dec 2021 11:44:16 +0800</pubDate><description><![CDATA[文章目录一、基本概念1.1 计算机网络的分类1.2 计算机网络的性能指标1.3 OSI参考模型
一、基本概念
    计算机网络是互联的、自治的计算机集合，是为了实现数据通信、资源共享、分布式处理等功能，其主要由硬件（光纤、路由器、交换机等）、软件（QQ、微信等）、协议组成。
1.1 计算机网络的分类
按照不同角度分，如下：

按照分布范围分：广域网WAN（使用交换技术）、城域网MAN、局域网WNA（使用广播技术）、个人局域网PAN ；
按使用者分：公用网（如电信、移动）、专用网（如军队银行、铁路系统网路）]]></description><category></category></item><item><title><![CDATA[减少仿真时的内存占用-- systemverilog,UVM]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121795745</link><guid>https://blog.csdn.net/SummerXRT/article/details/121795745</guid><author>SummerXRT</author><pubDate>Wed, 08 Dec 2021 17:55:09 +0800</pubDate><description><![CDATA[????此篇文章会随着工作年限的增加，持续更新…
文章目录1. transaction 的例化方案一方案二方案二小结
1. transaction 的例化
你是不是习惯性的在 monitor 的 forever 循环中不停的例化 transaction 对象，如下：
my_transaction trans;
task my_monitor::main_phase();
	forever begin
		... // wait sample condition
		trans = new("trans");]]></description><category></category></item><item><title><![CDATA[UVM寄存器模型的作用和优势？]]></title><link>https://blog.csdn.net/SummerXRT/article/details/120301933</link><guid>https://blog.csdn.net/SummerXRT/article/details/120301933</guid><author>SummerXRT</author><pubDate>Tue, 30 Nov 2021 10:55:50 +0800</pubDate><description><![CDATA[文章目录一、对寄存器模型的配置怎么反映到总线上？二、怎么保证寄存器模型与寄存器保持一致 ？三、寄存器模型的优势？

????寄存器模型的基础知识可以看：UVM寄存器模型

寄存器模型是根据寄存器描述文档所建立，是真实硬件寄存器在软件世界的模型。在验证的过程中，只有先保证寄存器的功能正确，才能使寄存器模型能够准确反映硬件的状态。那么怎么通过寄存器模型完成对寄存器的访问？寄存器模型又具有什么样的优势呢？
一、对寄存器模型的配置怎么反映到总线上？
这其中关键的一环就是adapter的事务级转换 和 map 提供寄]]></description><category></category></item><item><title><![CDATA[UVM仿真时@事件无效]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121475303</link><guid>https://blog.csdn.net/SummerXRT/article/details/121475303</guid><author>SummerXRT</author><pubDate>Mon, 22 Nov 2021 16:57:21 +0800</pubDate><description><![CDATA[这两天出现了一个很让我费解的bug，暂时还没有找到具体的原因。如下：
BUG:  @(vif.mon_cb) 时钟事件没有等待一个clk。
source：有可能相邻的时钟事件被合并。
​	代码如下：

​	仿真log如下：

solution：
方案一：不要用 clocking 的方式

方案二：如果非要用 clocking ，可以加一个很小的 delay。


...]]></description><category></category></item><item><title><![CDATA[UVM中sequence的启动方式]]></title><link>https://blog.csdn.net/SummerXRT/article/details/120124336</link><guid>https://blog.csdn.net/SummerXRT/article/details/120124336</guid><author>SummerXRT</author><pubDate>Mon, 22 Nov 2021 16:48:13 +0800</pubDate><description><![CDATA[你是否在面试或笔试中被问到了sequence有哪些启动的方式？今天就来梳理一下sequence的启动到底有哪些。

]]></description><category></category></item><item><title><![CDATA[域的自动化—UVM]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121394175</link><guid>https://blog.csdn.net/SummerXRT/article/details/121394175</guid><author>SummerXRT</author><pubDate>Thu, 18 Nov 2021 13:44:09 +0800</pubDate><description><![CDATA[????最近在写代码时，常常忽略了field automation机制带来的便利性，这里做一个全面的总结。下面我将分为 object 和 component 类型的对象中做域的自动化。首先，常用的宏包括:

uvm_field_int(arg,FLAG)  ，需要传递：变量+ 标志位
uvm_field_enum(T,arg,FLAG)  ，需要传递：类型+ 变量+ 标志位
uvm_field_object(arg,FLAG)
uvm_field_string(arg,FLAG)
uvm_field_arr]]></description><category></category></item><item><title><![CDATA[dump fsdb波形文件]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121221323</link><guid>https://blog.csdn.net/SummerXRT/article/details/121221323</guid><author>SummerXRT</author><pubDate>Tue, 09 Nov 2021 10:40:12 +0800</pubDate><description><![CDATA[前言
dump fsdb文件主要有两种方法：

在Verilog的TB中调用系统函数；
使用 ucli / tcl的命令行；

一、调用系统函数
在TB里面直接调用系统函数，操作是比较简单，但是受限比较明显，其实不推荐使用。
1.tb调用系统函数
可以直接在TB中加入这样一段Verilog代码，
initial begin
	if($test$plusargs("DUMP_FSDB")) begin #仿真时添加条件判断是否需要dump fsdb 
		$fsdbDumpfile("TEST.fsdb");]]></description><category></category></item><item><title><![CDATA[Makefile脚本启动VCS+Verdi]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121158192</link><guid>https://blog.csdn.net/SummerXRT/article/details/121158192</guid><author>SummerXRT</author><pubDate>Mon, 08 Nov 2021 19:36:56 +0800</pubDate><description><![CDATA[文章目录一、快速入门二、Makefile的语法1.语法格式2.命令执行3.变量三、VCS仿真1.VCS常用命令

注：主要侧重于VCS仿真时的Makefile入门介绍。

一、快速入门
Makefile带来的好处就是自动化编译和仿真，只需要一个 make 命令。make是Linux下的二进制程序，在shell命令行键入make命令时，将自动寻找名称为“Makefile”的文件作为编译文件。

格式：make [option] [target] …

二、Makefile的语法
1.语法格式
形式一:
tar]]></description><category></category></item><item><title><![CDATA[Python的脚本（二）]]></title><link>https://blog.csdn.net/SummerXRT/article/details/121120782</link><guid>https://blog.csdn.net/SummerXRT/article/details/121120782</guid><author>SummerXRT</author><pubDate>Thu, 04 Nov 2021 17:58:38 +0800</pubDate><description><![CDATA[下面关于一些Python处理文件的脚本。
一、解析CSV文件产生Systemverilog代码
csv库中常用的方法，包括：




方法
描述




reader( )
返回一个列表对象，逐行读csv文件。默认每一行读取一个字符串组成的列表


csv.DictReader( )
返回一个字典对象，逐行读取文件。以第一行为每一列的key值，


对象.write( )
向文件中写入


从一个最简单的解析csv文件的脚本开始。
import csv #导入Python标准库

sourceFile = ]]></description><category></category></item><item><title><![CDATA[Python学习（一）]]></title><link>https://blog.csdn.net/SummerXRT/article/details/120986548</link><guid>https://blog.csdn.net/SummerXRT/article/details/120986548</guid><author>SummerXRT</author><pubDate>Thu, 04 Nov 2021 17:27:52 +0800</pubDate><description><![CDATA[快速入门
1.Linux系统中是可以直接使用Python进行编程，具体如下：

进入Python：在linux的Terminal中输入 Python ，进入Python的命令行；
退出Python：在linux的Terminal中输入quit() 或 exit() 或 ctrl +d ，再回车，退出Python的命令行。

2.python的源程序就是一个特殊格式的文本文件，可以使用任意文本编辑软件做Python的开发。
3.Python程序的文件扩展名通常都是 .py。
4.执行Python程序的方式：在]]></description><category></category></item><item><title><![CDATA[从材料到芯片验证，是逃难还是人生的机遇？]]></title><link>https://blog.csdn.net/SummerXRT/article/details/120816123</link><guid>https://blog.csdn.net/SummerXRT/article/details/120816123</guid><author>SummerXRT</author><pubDate>Sun, 17 Oct 2021 21:18:02 +0800</pubDate><description><![CDATA[  大家好，我是小小verifier。22届秋招进入尾声，一直想写这一篇转行经验贴，分享我的转行历程，并给即将要转行IC验证的同学一点小小的建议。
  我是材料双非本、211硕，因为遇到神仙课题组，彻底地断了我想读博的念头。近三四年来，课题组每届超过70%以上延期拿学位甚至拿不到学位。本来就身处四大天坑，外加没有学位，找工作的时候连乞丐都不如。无能狂怒之后的无奈，心里着实咽不下这口气，我开始尝试各种转行的可能。2020年2月份，疫情爆发让我有幸在家自学了4个月的java，然后因为种种原因放弃了转Java的打]]></description><category></category></item><item><title><![CDATA[AXI协议]]></title><link>https://blog.csdn.net/SummerXRT/article/details/120189268</link><guid>https://blog.csdn.net/SummerXRT/article/details/120189268</guid><author>SummerXRT</author><pubDate>Mon, 13 Sep 2021 23:08:07 +0800</pubDate><description><![CDATA[前言
AXI是一个并行总线，其主要特点包括：

读写通道分离；
支持多次对数据操作的请求（multiple outstanding address），一般支持8、16、32个outstanding；
写地址和数据之间不是严格的先地址再数据，有些可能是先数据再地址；
支持不对齐的数据传输；
支持乱序访问；
burst传输时不需要像AHB那样每笔传输都指定它的burst类型和地址，只需要指定首地址和对应的属性；

channel signals
AXI 有5个通道，包括Write Address Channel]]></description><category></category></item></channel></rss>