- 博客(30)
- 收藏
- 关注
原创 python
python内置dir函数可以查找模块内定义的名称,返回字符串列表,例如dir(sys),名称里包括变量、模块、函数。dir(sys)
2025-12-10 23:28:30
298
原创 git 常用命令
由于远程库是空的,我们第一次推送master分支时,加上了-u参数,Git不但会把本地的master分支内容推送的远程新的master分支,还会把本地的master分支和远程的master分支关联起来,在以后的推送或者拉取时就可以简化命令。分支作用就是,你创建了一个属于你自己的分支,别人看不到,还继续在原来的分支上正常工作,而你在自己的分支上干活,想提交就提交,直到开发完毕后,再一次性合并到原来的分支上,这样,既安全,又不影响别人工作。在这里,版本号没必要写全,前几位就可以了,Git会自动去找。
2025-11-30 18:54:47
1053
1
转载 verilog的竞争冒险
执行结果如下,但不同仿真器可能有不同的结果,仿真器可能在执行了a=0的赋值后立刻执行被调度的assign连续赋值,再返回initial结构执行显示语句,也可能继续执行下面的显示语句,再去执行被调度的assign连续赋值。在改变了一个全组合逻辑的电路的输入后,紧接着显示输出,可能无法得到更新后的输出。display前,连续赋值已经执行完毕,因为不同时间的语句执行是不会产生竞争的。语句一定的延时,这样就能确保在执行。
2025-11-10 22:09:45
36
原创 linux 三剑客命令学习
Grep 是一个命令行工具,用于在文本文件中搜索打印匹配指定模式的行。它的名称来自于 “Global Regular Expression Print”(全局正则表达式打印),它最初是由 Unix 系统上的一种工具实现的。Grep 工具在 Linux 和其他类 Unix 系统中广泛使用,它提供了强大的文本搜索功能。
2025-05-11 15:26:18
733
原创 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
660
原创 媒体冗余协议MRP
以太类型字段在以太网帧结构中,处于源 MAC 地址和数据部分之间(如果报文包含 VLAN 标签,那就在 VLAN 标签之后)。该字段长度为 2 字节,其作用是标识以太网帧所承载的上层协议类型。
2025-02-09 23:59:52
1283
原创 uvm中的重载
在基类中使用virtual和不适用virtual声明的方法,在继承类中被重写。virtual声明的方法根据指针实际指向的对象来选择对应的方法。没有用virtual声明的方法根据指针类型选择方法。使用基类指针指向基类对象和继承类对象。
2025-01-05 22:50:56
167
原创 寄存器模型中的两个路径配置
uvm_reg_block库文件里有configure函数指定的hdl_path和set_hdl_path_root,两个函数共同指定了后门访问的寄存器路径。在uvm_reg.svh库里的configure也指定了一个路径。这三个参数应该共同指定了寄存器的rtl代码路径。
2025-01-04 17:43:46
335
原创 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
367
原创 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
232
原创 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
353
原创 system verilog中的虚接口
在SystemVerilog中,虚接口(virtual interface)与非虚接口(non-virtual interface)的主要区别在于它们的使用场景和作用方式。在类内定义接口,必须要定义为虚的,个人理解是因为类有创建new和释放等操作,而非virtual的接口是静态的,无法实现创建和释放。总结来说,虚接口主要用于动态对象的连接和测试平台的编写,可以实现设计和验证平台的分离。只有类里的接口、new传入的参数接口和定义的接口句柄都是虚的,才能完成动态的创建。采用非虚接口数组的方式,无法定义。
2024-11-03 16:34:34
490
原创 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
627
原创 system verilog类函数的参数
在函数内部利用传入的句柄进行操作时,如果只是读取对象的值,是可以的,但如果尝试修改对象的值,则不会影响到原始对象,例如如下类的copy函数试图修传入的类句柄to。这意味着函数内部操作的是这个句柄,而不是对象。向类的方法传入的input句柄参数不被修改是有一个作用域的,如果是类里的两个方法之间互相调用,那么句柄参数以及其指向的对象是可以被修改的,但是一旦类方法调用结束,句柄参数仍依旧不会被修改。以上内容仅限于通过声明创建一个类,对于类内的函数之间的引用,是会直接修改句柄指向对象的值的,类似于存在一个作用域。
2024-10-27 20:06:34
508
原创 system verilog中的automaitc问题
在使用fork join创建线程或使用fork join_none,使用循环创建并发线程调用任务时,务必使用自动变量保存索引数值,将program设置为automatic或者使用静态变量都无法正常创建并执行。
2024-10-19 19:03:27
513
原创 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
1235
原创 systemverilog中并发的执行顺序
在fork join_none语句中,如果fork join_none后语句和并行语句都没有延时,这个时候执行顺序是:join_none后的语句先执行,fork……join_none内的并行语句后执行。结果如下,在repeat执行完之后,在进行fork并行分支执行。
2024-10-07 19:19:16
485
原创 时钟块连接的DUT和TEST
在DUT的输出端,即使信号grant的变化发生在时钟的变化沿,也会立刻体现出来,但是对于使用时钟块的TEST,使用时钟块采样grant,只会采样时钟沿前一时刻的值。
2024-09-17 16:34:37
190
原创 verilog if条件判断减法问题出错
对于下面这段代码,addr - pre_addr = 6’h10,这个执行结果没问题,但是条件判断这里,会判断为addr-pre_addr > 62,执行结果如下。
2024-09-04 23:09:06
433
原创 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
3991
原创 Tcl脚本编程基础
Tcl是一种解释型脚本语言(类似于Python),有一个解释器,负责将每条语句按顺序进行解释。类似于python,Tcl也提供了一个解释的Shell。在Tcl语言中,一切都是字符串。
2024-04-14 13:14:44
1868
1
原创 光纤通信系统中常见类型的损伤和均衡方法
100Gbit/s的相干光系统就是采用偏分复用技术,偏分复用系统主要就是基于正交的线偏振光在传输过程中可以一直保持正交特性的这一原理,从而可以在两个正交的线偏振光上调制独立的信号,达到信道加倍的效果。不同于PMD和RSOP都是由光纤的双折射现象所引起的,PDL损伤多是来源于光学器件,主要是由于在两个正交的偏振态上,高速光器件对应的损耗不同,造成两个正交偏振态的光信号功率衰减不同,从而在相同噪声水平下,两个偏振态的信号质量也不同。光信号的各种频率分量在光纤中传输的群速度不同所导致的脉冲展开。
2024-01-02 22:46:22
3612
转载 光纤中的快轴和慢轴
从保偏光纤中的快慢轴,我们希望推广到一个随机双折射的普通光纤中,是否也有这种正交轴的概念。当输入任意偏振态的光时,它可以分解为两个正交的主态在光纤中传播,慢主态传播慢于快主态,反应为偏振模色散。我们常说的保偏光纤快慢轴中传播的两个线偏振态,就是快慢主态的特例。保偏光纤的快慢轴是稳定不变的,而电信光纤只能抽象成多个保偏光纤小段组成的。由于快轴的偏振光和慢轴的偏振光的传播速度不同,所以随着传播距离的增加,两偏振光的相位差会周期性的变化。,造成这种差异的原因是,普通光纤中的双折射没有这么明显,保偏光纤中的。
2024-01-01 13:29:44
2711
原创 深入浅出通信原理
需要注意的是:引入复信号只是为了便于描述和处理信号,实际通信系统中都是并行传输两路实信号,并没有传输复数j。复信号本质上是并行传输两路实信号,只是这两路信号刚好可以用复数形式来表示而已。是两路并行传输的实信号,这两路实信号用一个复信号表示就是。
2023-12-30 05:52:57
1290
原创 VIVADO+FPGA调试记录
此头文件是在vitis内部创建的,并不包含axi接口解决方法:在应用工程上右键单击,单击properties。找到C/C++ General --> Paths and Symbols,在右边的Includes选项卡上点击Add按钮:点击Workspace按钮,选择包含头文件的文件夹即可编译成功。
2023-11-15 22:59:25
1901
原创 使用FSMC驱动TFTLCD,LCD屏不会显示的问题
关于区域选择:需要根据lcd屏幕所选择的是哪个扩展区域来选择BANK1~BANK4中的哪一个。存储器模式 :cd接口类型寄存器选择位:需要根据是哪一位是lcd上的命令数据位来设置。**扩展模式 **: 当写操作和读操作的时序不一样,需要勾选,设置自己显示屏的地址建立时间、数据建立时间和总线翻转的时间等前提,你要保证自己的代码完全没问题,那就需要考虑一下魔术棒里的的配置,将GNU的扩展选项勾选上。......
2022-06-16 13:45:38
1595
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅