- 博客(26)
- 收藏
- 关注
原创 system verilog的流操作符
再有一个用于大小端转换的场景,将大位宽数据,按byte分块,按照<<符号,从右向左摆放,则将大位宽数据分割为’h11、'h22、'h33、…'h11、'h22,从右往左摆放数据,形成一个新的数据,'h2211ffeeddccbbaa_8877665544332211。流操作符,有分为操作对象是一整个数组和单独的数据两种,例如bit [7:0] a[4]和bit [31:0] b,前者操作对象是数组,后者是单独一个较大位宽的数。,按照<<,将数据从索引0开始,从右往左摆放。数组打包成一个大位宽数据的场景,
2025-02-23 20:52:55
248
原创 媒体冗余协议MRP
以太类型字段在以太网帧结构中,处于源 MAC 地址和数据部分之间(如果报文包含 VLAN 标签,那就在 VLAN 标签之后)。该字段长度为 2 字节,其作用是标识以太网帧所承载的上层协议类型。
2025-02-09 23:59:52
923
原创 uvm中的重载
在基类中使用virtual和不适用virtual声明的方法,在继承类中被重写。virtual声明的方法根据指针实际指向的对象来选择对应的方法。没有用virtual声明的方法根据指针类型选择方法。使用基类指针指向基类对象和继承类对象。
2025-01-05 22:50:56
130
原创 寄存器模型中的两个路径配置
uvm_reg_block库文件里有configure函数指定的hdl_path和set_hdl_path_root,两个函数共同指定了后门访问的寄存器路径。在uvm_reg.svh库里的configure也指定了一个路径。这三个参数应该共同指定了寄存器的rtl代码路径。
2025-01-04 17:43:46
172
原创 build_phase中type_id::create
从env和agent的build_phase函数执行时间可以看出,build过程是从根到叶子节点,在执行type_id::create函数时,已经创建了一个agent对象,所以可以给agent的成员变量赋值,但是创建完agent对象后,并没有对它进行注册。type_id::create创建了一个实例,并进行注册,只有注册过后,才能使用factory机制。agent的build函数。env的build函数。
2024-11-12 23:49:20
224
原创 uvm_config_db
下面是set方法的源码:实现将cntxt.get_full_name() . inst_name这个对象中的value传入到对端,field_name作为传递的令牌。如果cntxt是null,会赋值为top,作为最顶层。最后将cntxt和inst_name合成为一个实例名。value作为要发送的值的变量和接受的值要保存的变量。field_name作为1个双方协定好的标志。get方法也是同理。
2024-11-10 21:59:14
199
原创 ubuntu vcs运行问题记录
问题2.提示/usr/bin/ld: /home/synopsys/vcs/xxxxx/libvcsnew.so:undefined reference to的问题,需要VCS添加-LDFLAGS -Wl,–no-as-needed选项。问题1.提示找不到编译器,需要向VCS命令添加-full64的选项。
2024-11-10 18:57:52
261
原创 system verilog中的虚接口
在SystemVerilog中,虚接口(virtual interface)与非虚接口(non-virtual interface)的主要区别在于它们的使用场景和作用方式。在类内定义接口,必须要定义为虚的,个人理解是因为类有创建new和释放等操作,而非virtual的接口是静态的,无法实现创建和释放。总结来说,虚接口主要用于动态对象的连接和测试平台的编写,可以实现设计和验证平台的分离。只有类里的接口、new传入的参数接口和定义的接口句柄都是虚的,才能完成动态的创建。采用非虚接口数组的方式,无法定义。
2024-11-03 16:34:34
378
原创 cover property作用
测量 sb.write_ena 在时钟上升沿等于1的事件发生频率:@(posedge sb.clock) sb.write_ena == 1 定义了一个序列,表示在 sb.clock 的上升沿,sb.write_ena 等于1的情况。记录事件的发生:当 @(posedge sb.clock) sb.write_ena == 1 这个条件满足时,write_event 会被触发并记录下来,从而帮助分析设计中 write_ena 等于1的事件发生的频率和分布情况。
2024-11-02 12:26:09
298
原创 system verilog类函数的参数
在函数内部利用传入的句柄进行操作时,如果只是读取对象的值,是可以的,但如果尝试修改对象的值,则不会影响到原始对象,例如如下类的copy函数试图修传入的类句柄to。这意味着函数内部操作的是这个句柄,而不是对象。向类的方法传入的input句柄参数不被修改是有一个作用域的,如果是类里的两个方法之间互相调用,那么句柄参数以及其指向的对象是可以被修改的,但是一旦类方法调用结束,句柄参数仍依旧不会被修改。以上内容仅限于通过声明创建一个类,对于类内的函数之间的引用,是会直接修改句柄指向对象的值的,类似于存在一个作用域。
2024-10-27 20:06:34
378
原创 system verilog中的automaitc问题
在使用fork join创建线程或使用fork join_none,使用循环创建并发线程调用任务时,务必使用自动变量保存索引数值,将program设置为automatic或者使用静态变量都无法正常创建并执行。
2024-10-19 19:03:27
310
原创 VMM基础
有三种最基本的属性:stream_id, scenario_id, data_id, data_id是事物transaction在场景scenario中的标号,scenario_id是场景scenario在流stream中的标号,stream_id是不同流的标号。此外,如果从组件继承来的类有同名约束,那么父类中的同名约束将被覆盖掉,例如,下面b类中reasonable的约束将基类a中的约束覆盖掉。
2024-10-13 00:13:07
971
原创 systemverilog中并发的执行顺序
在fork join_none语句中,如果fork join_none后语句和并行语句都没有延时,这个时候执行顺序是:join_none后的语句先执行,fork……join_none内的并行语句后执行。结果如下,在repeat执行完之后,在进行fork并行分支执行。
2024-10-07 19:19:16
319
原创 时钟块连接的DUT和TEST
在DUT的输出端,即使信号grant的变化发生在时钟的变化沿,也会立刻体现出来,但是对于使用时钟块的TEST,使用时钟块采样grant,只会采样时钟沿前一时刻的值。
2024-09-17 16:34:37
143
原创 verilog if条件判断减法问题出错
对于下面这段代码,addr - pre_addr = 6’h10,这个执行结果没问题,但是条件判断这里,会判断为addr-pre_addr > 62,执行结果如下。
2024-09-04 23:09:06
379
原创 DDR4的读写时序
最理想的情况下,时钟信号CK_t与数据有效信号DQS_t的上升沿是对齐的,DQS_t的变化沿与DQ信号的中心对齐,对于现实情况下,肯定无法做到完全的对齐,CK_t上升沿可以出现在DQS_t上升沿之前或之后一段时间,这段时间叫做t。最理想的情况是,DQS_t的上升沿与CK_t的上升沿相对其,但是在实际中,DQS_t的上升沿可以在CK_t之前,也可以在CK_t之后,但是需要满足t。都是有一定差异的,差的不多,但是有差异,因此每个DQ信号有效的时间段也是有差异的,这段DQ信号有效时间是t。
2024-05-18 16:44:53
2958
原创 Tcl脚本编程基础
Tcl是一种解释型脚本语言(类似于Python),有一个解释器,负责将每条语句按顺序进行解释。类似于python,Tcl也提供了一个解释的Shell。在Tcl语言中,一切都是字符串。
2024-04-14 13:14:44
1423
1
原创 光纤通信系统中常见类型的损伤和均衡方法
100Gbit/s的相干光系统就是采用偏分复用技术,偏分复用系统主要就是基于正交的线偏振光在传输过程中可以一直保持正交特性的这一原理,从而可以在两个正交的线偏振光上调制独立的信号,达到信道加倍的效果。不同于PMD和RSOP都是由光纤的双折射现象所引起的,PDL损伤多是来源于光学器件,主要是由于在两个正交的偏振态上,高速光器件对应的损耗不同,造成两个正交偏振态的光信号功率衰减不同,从而在相同噪声水平下,两个偏振态的信号质量也不同。光信号的各种频率分量在光纤中传输的群速度不同所导致的脉冲展开。
2024-01-02 22:46:22
2823
转载 光纤中的快轴和慢轴
从保偏光纤中的快慢轴,我们希望推广到一个随机双折射的普通光纤中,是否也有这种正交轴的概念。当输入任意偏振态的光时,它可以分解为两个正交的主态在光纤中传播,慢主态传播慢于快主态,反应为偏振模色散。我们常说的保偏光纤快慢轴中传播的两个线偏振态,就是快慢主态的特例。保偏光纤的快慢轴是稳定不变的,而电信光纤只能抽象成多个保偏光纤小段组成的。由于快轴的偏振光和慢轴的偏振光的传播速度不同,所以随着传播距离的增加,两偏振光的相位差会周期性的变化。,造成这种差异的原因是,普通光纤中的双折射没有这么明显,保偏光纤中的。
2024-01-01 13:29:44
1699
原创 深入浅出通信原理
需要注意的是:引入复信号只是为了便于描述和处理信号,实际通信系统中都是并行传输两路实信号,并没有传输复数j。复信号本质上是并行传输两路实信号,只是这两路信号刚好可以用复数形式来表示而已。是两路并行传输的实信号,这两路实信号用一个复信号表示就是。
2023-12-30 05:52:57
989
原创 VIVADO+FPGA调试记录
此头文件是在vitis内部创建的,并不包含axi接口解决方法:在应用工程上右键单击,单击properties。找到C/C++ General --> Paths and Symbols,在右边的Includes选项卡上点击Add按钮:点击Workspace按钮,选择包含头文件的文件夹即可编译成功。
2023-11-15 22:59:25
1363
原创 使用FSMC驱动TFTLCD,LCD屏不会显示的问题
关于区域选择:需要根据lcd屏幕所选择的是哪个扩展区域来选择BANK1~BANK4中的哪一个。存储器模式 :cd接口类型寄存器选择位:需要根据是哪一位是lcd上的命令数据位来设置。**扩展模式 **: 当写操作和读操作的时序不一样,需要勾选,设置自己显示屏的地址建立时间、数据建立时间和总线翻转的时间等前提,你要保证自己的代码完全没问题,那就需要考虑一下魔术棒里的的配置,将GNU的扩展选项勾选上。......
2022-06-16 13:45:38
1401
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人