- 博客(23)
- 收藏
- 关注
原创 Questasim VRM的rmdb文件
这些元素外的空白通常是不重要的。例如,HTML将多个空白字符截断为一个空白字符,而XML不截断空白字符。在本例中,正确嵌套意味着由于元素<s>在<p>元素中开始,因此它必须在<p>元素中关闭。在VRM中用作字符串的元素的内容(data)(例如在命令或参数元素中)中的空白是重要的。第2行-描述文件的根元素。这个元素是其他元素的“父元素”。开始和结束标记以及它们所包围的数据构成了XML中所谓的元素。以斜杠(/)开头的标记称为结束标记,标志着命令文本的结束。请注意对大于(>)、小于(<)和&字符的特殊处理。
2023-08-16 17:30:08
167
原创 Questasim VRM (Verification Run Manager)简介
Verification Run Manager (VRM)为用户提供了一种机制来定义任意数量的回归任务,执行整个任务集,或者使用单个命令执行任务的任何子集。
2023-08-16 16:55:00
419
原创 UVM:观察者模式、uvm_subscriber
Observer Pattern:对象之间定义一个一对多的依赖关系,当一个对象改变的时候,所有依赖对象都会自动收到通知。每当monitor收集到新的transaction,自动调用write函数,将transaction广播出去。至于write函数如何实现,monitor并不关心,每个订阅者的write实现不同。UVM中内建了uvm_subscriber类,可以被当作观察者或者订阅者使用。覆盖率模块,参考模型,scoreboard都是订阅者。观察者模式将观察者和被观察者代码解耦。
2023-08-15 15:44:46
356
原创 UVM中的agent
UVM agents具有类型为uvm_active_passive_enum的变量,该变量定义agents是否是active (UVM_ACTIVE)或者passive(UVM_PASSIVE)。不生成激励,只能监视接口,这意味着在PASSIVE agent中将不会创建driver和sequencer。在environment类中创建agents时,可以使用**set_config_int()**进行更改。是可以在其操作的接口上生成激励,其包含driver和sequencer。
2023-08-14 17:12:28
281
原创 UVM Sequence
driver将sequence item解析,按物理接口协议驱动接口,并返回信号给sequencer,之后sequencer将信号返回sequence。sequence产生sequence item,也可以产生sequence,同时在sequence完成时序控制。driver和sequencer是uvm_component类型,两者通信依赖TLM。sequencer和sequence item是uvm_object类型。UVM要求都发生在sequence的body()任务中。
2023-08-14 16:54:11
98
原创 芯片验证学习之并发断言——序列sequence
并发断言使用关键字property…endproperty描述事件。并发断言基于时钟周期的,因而只有利用时钟周期采样的值才有效。并发断言属性有7种:sequence,negation,disjunction,conjunction,if...else...,implication、instantation.
2023-08-10 21:46:09
311
1
原创 芯片验证学习之断言——立即断言、并发断言
断言是对设计行为属性的描述。它使用描述性语言来描述了设计必须满足的属性。1.Verilog语言是一种过程性设计语言,在硬件设计过程中不能很好的描述时序行为。2.SVA是一种描述性语言,可以很好的描述和控制复杂设计的时序的相关问题。基于断言的验证方法(ABV)是对验证的增补,断言还可以对总线协议进行定义和验证(AHB/APB)。
2023-08-10 20:58:05
616
1
原创 基于UVM的APB slave RAM core的IC验证——1 协议、设计及时序
UVM 验证 APB slave SRAM verification IC验证
2023-08-10 20:32:19
268
1
原创 powershell学习——get-alias/get-command/where.exe/ (**).getType()/|gm/ Clear-Host
如:(1).getType(),"hello".getType(),(gal).getType()如:gal->get-alias;2. get-alias -definition **——获取原始**命令的别名。3. get-command **——获取命令**的本体exe文件名及位置。1. get-alias ** ——获取别名**命令的原始命令。4. where.exe **——获取文件**的位置。5. (**).getType()——获取变量类型。6. cmd|gm——获取命令的所有参数。
2023-08-09 17:48:25
71
原创 芯片验证:SV——代码覆盖率
行覆盖率(Line Coverage):RTL中的代码行; 状态机覆盖率(FSM Coverage):RTL代码中的有限状态机的状态和状态之间的转换; 路径覆盖率(Path Coverage):RTL代码中的路径分支(if-else语句); 翻转覆盖率(Toggle Coverage):RTL代码中的一个信号从0跳变到1,以及1跳变到0; 表达式覆盖率(Expression coverage):RTL代码中的条件表达式,例如if(a&b&c); 分支覆盖率(Branch cover
2023-08-09 11:20:04
382
原创 SV中的静态变量与动态变量
声明为automatic的变量,用完后收回内存,重新分配内存。1.声明为static的变量,只在运行前初始化一次;2. 定义拿出来后,动态变量只在刚开始分配一次内存。结果:123456789 123123123。结果:123456789 123456789。
2023-08-09 11:09:01
457
原创 SV的类型转换
父类句柄拷贝给子类对象,需要使用$cast检查句柄所指向的对象类型,一旦源对象跟目的对象是同一类型,就可以从父类句柄拷贝子类对象的地址给子类句柄。动态转换需要调用系统函数**$cast(tgt,src)**做转换,把src转换成tgt的类型。在需要转换的表达式前面加单引号。但这种方式不会对转换值做检查,如果转换失败,系统也不会报错。类句柄的向下转换:$cast()会检查句柄所指向的对象的类型,而不是检查句柄本身;子类句柄赋值给父类句柄(也就是将子类句柄拷贝成父类句柄),编译器认为合法。
2023-08-09 10:55:06
273
原创 SystemVerilog中local::与this的区别
/此时local::data是为Mcdf::data。//此时local::data表示任务传递进来的参数。
2023-06-26 11:13:58
657
1
原创 SystemVerilog之句柄转换——$cast
cast(子,父),只有父类指向子类或者子类扩展类的时候才能转换成功。且转换后的句柄只能指向父类的空间。如下代码及结果所示。
2023-06-16 17:19:30
309
2
转载 1. 公有与私有在SV中,所有成员默认都是 public 类型的,除非显式地使用关键字 local/protected 来声明。public修饰的变量或者方法都可以被外部调用或者类继承;lo
在SV中,可在类中创建静态变量。该变量被这个类的所有实例所共享,并且它的使用范围仅限于这个类。包含静态属性的类无需实例化即可直接使用静态属性,无需实例化分配内存,具有静态的声明周期;local 修饰的变量或方法只对该类的对象可见,扩展类以及类外不可见;protected修饰的变量或方法对该类以及扩展类可见,对类外不可见;SV中不允许静态方法读写非静态变量,因此静态方法中的变量均为静态变量;静态变量被所有的对象共享,可以认为静态变量保存在类中而非对象中;静态变量使用关键字 static 加以修饰;
2023-05-13 11:28:28
267
原创 SystemVerilog验证 测试平台编写指南 第四章学习笔记(一)
测试平台和设计的竞争问题的根源在于设计和测试平台的事件(event)混合在同一个时间片(time slot)内,即使在纯RTL程序中也会发生同样的问题。SV有四个输出消息的函数:$info,$warning,$error,$fatal,仅允许在断言内部使用,而不允许在过程代码中使用。例4.15 如何驱动接口中的logic和wire信号:logic信号可以直接被驱动,wire需要使用额外的代码。在SV中的program块中,可以使用initial块,但不可以使用always块。应该把它放到模块中。
2023-04-06 17:03:45
268
原创 SystemVerilog验证 测试平台编写指南 第三章学习笔记(一)
一般情况下,不带参数的子程序在定义或者调用时不需要带空括号()。*在SV子程序中,begin...end是可选的,task/endtask和function/endfunction已经足以定义子程序的边界。。例3.5 不带begin...end的简单任务。
2023-04-03 17:37:48
215
原创 什么是竞争和冒险,如何消除?
在组合电路中,信号经由不同的路径到达某一会合点的时间不一致的现象。由于竞争而引起电路输出发生瞬间错误,表现为输出端出现了理论上没有的窄脉冲。
2023-04-03 14:53:11
2623
原创 同步复位和异步复位的优缺点
a、最大的问题在于它属于异步逻辑,问题出现在复位释放时,而不是有效时,如果复位释放接近时钟有效沿,则触发器的输出可能进入亚稳态(此时 clk 检测到的 rst_n 的状态就会是一个亚稳态,即是0是1是不确定的),从而导致复位失败。b、由于大多数的逻辑器件的目标库内的 DFF 都只有异步复位端口,所以,倘若采用同步复位的话,综合器就会在寄存器的数据输入端口插入组合逻辑,这样就会一方面额外增加FPGA内部的逻辑资源,另一方面也增加了相应的组合逻辑门时延。为了防止复位信号撤除时,可能产生的亚稳态。
2023-03-30 17:04:11
192
原创 VCS、Verdi初入门学习
nWave窗口工具栏选择Waveform,之后设置analog signal(模拟信号),set radix(选择hexadecimal 16进制)。首先,在terminal里进入makefile脚本所在的目录,之后输入make vcs,make verdi,之后Verdi就回自己打开。要避免爱心信号丢失,可以在工具栏File那里进行信号保存,这样下次可以直接打开设置好的信号了。选中需要的信号(heart信号),拖拉至nWave窗口,即可查看信号波形。先打开Verdi,然后按下图设置。之后关闭Verdi。
2023-03-17 17:33:53
882
原创 CST2020 安装失败解决办法:Flex net Licensing error:-8,523
1.运行CST2020_Patch出现标红:failed to read+write;2.以管理者权限运行CST2020_Patch会将目录转到C:windows/win32下,导致运行失败;3.打开cst2020,输入主机名和端口号后出现Flex net Licensing error:-8,523报错。其问题是管理者权限的问题。1.与是否直接在C盘目录下无关。2.与主机名是否大小写无关。3.与目录是否有空格无关。解决办法:1.以记事本打开CST2020_Patch2.编辑里面所有的目录地址,定位到安装目
2022-06-16 22:51:43
6430
2
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人