- 博客(78)
- 收藏
- 关注
原创 spyglass中的sdc转变为sgdc
这里的sdc路径是对于prj的路径而言的。执行的结果会在 prj_name/current_design_name/cdc/cdc_current_goal(就是你在执行的目标)/sdc2sgdc目录下。举个例子,在spyglass下创建了uart.sgdc文件,里面写下内容,同时将uart.sdc放在spyglass文件夹里,在spyglass文件夹下创建一个xxx.sgdc的文件,里面写上内容。运行CDC的goal,那么就会实现sdc到sgdc的转换。同时在spyglass中勾选上。
2024-04-03 14:22:15 258
原创 UART中的奇偶校验和粘性奇偶校验(stick parity)
如果数据帧中1的个数为奇数,校验位被设置为0,使得整个数据帧中1的个数仍然为奇数。在粘性奇偶校验模式下,每个数据帧的奇偶校验位都会自动设置为与前一个数据帧的奇偶校验位相同的值。如果数据传输中的某个数据帧的奇偶校验位与前一个数据帧的奇偶校验位不一致,那么就说明数据传输中出现了错误。因此,数据帧2的奇偶校验位也被设置为0。总的来说,粘性奇偶校验位可以确保连续传输的数据帧具有相同的奇偶校验位,从而提高数据传输的可靠性。在粘性奇偶校验模式下,每个数据帧的奇偶校验位自动设置为与前一个数据帧的奇偶校验位相同的值。
2023-10-11 11:03:16 1154 3
原创 IC验证工程师工作一周年的体会
(1)这一年自己大部分的时间都和UVM打交道,从最开始的绿皮书到张强的UVM实战这本书,从开始非常疑惑为什么需要寄存器模型,到后来发现寄存器模型简直是神来之笔,当然我还没有体会到前门访问和后门访问的精髓,但是对于寄存器模型有了一定的理解。(3)对于scoreboard的队列的思想要深刻体会,还是数组的使用,我暂时常用的是数组和队列,初看SV重的数组和队列,完全没当回事,后来发现读写过程中数组可以用来产生随机数,而队列可以用来存储数据。服从领导的想法是职场必修课。一.要养成良好的工作习惯。
2023-06-09 15:31:30 1005 2
原创 makefile出现报错commands commence before first target. stop
报错:commands commence before first target. stop。一般makefile出现此错误,一定要检查是否有。,特别是末尾的的位置。
2023-05-18 08:59:53 475
原创 UVM实战--带有寄存器的加法器
这里将DUT换成加法器,可以理解为之前UVM加法器加上寄存器,这里总线的功能不做修改,目的看代码的移植那些部分需要修改。
2023-03-02 17:17:37 1142
原创 UVM实战(张强)-- UVM中的寄存器模型
如对于一个16位的寄存器,其中可能只使用了8位,那么这里要填写的是16,而不是8。一个uvm_reg_block中一定要定义一个uvm_reg_map,系统已经有一个声明好的default_map,只需要在build中将其实例化,这个实例化的过程并不是直接调用uvm_reg_map的new函数,而是通过调用uvm_reg_block的create_map来实现,create_map有众多的参数,(1)uvm_reg,uvm_reg_field,uvm_reg_block,uvm_reg_map四者的关系。
2023-02-22 14:24:39 1329
原创 UVM实战--加法器
这里以UVM实战(张强)第二章为基础修改原有的DUT,将DUT修改为加法器,从而修改代码以使得更加深入的了解各个组件的类型和使用。
2023-02-20 19:11:59 1211 3
原创 UVM实战(张强)--- UART实例代码详细注解
(1)DUT:待测平台,这里为uart串口功能(2)sequence:创建一个my_straction的实例m_trans,将其随机化,最终将其送给sequencer(3)sequencer:uvm_sequencer就如同一个管道,从这个管道中产生连续的激励事务,并最终通过TLM端口送至driver一侧(4)driver:该类会从uvm_sequencer中获取事务(transaction),经过转化进而在接口中对DUT进行时序激励(5)monitor:负责把transaction级别的数据转变为
2023-02-02 14:15:56 4172 1
原创 UVM入门和进阶实验0
如何搭建验证框架验证组件之间的连接和通信如何编写测试用例,继而完成复用和覆盖率的收敛懂得如何编译UVM代码。理解SV和UVM之间的关系。了解UVM验证顶层盒子与SV验证顶层盒子之间的联系。掌握启动UVM验证的必要步骤。
2022-12-27 16:06:30 908
原创 芯片漫游指南(5)-- UVM寄存器
对于硬件有了解的读者,都知道寄存器是模块之间互相交谈的窗口一方面可以通过读出寄存器的状态,获取硬件当前的状况,另外一方面也可以通过配置寄存器,使得寄存器工作在一定的模式下。在验证的过程中,寄存器的验证也排在了验证清单的前列,因为只有首先保证寄存器的功能正常,才会使得硬件与硬件之间的交谈是“语义一致”的。如果寄存器配置结果与寄存器配置内容不同,那么硬件无法工作在想要的模式下,同时寄存器也可能无法正确反映硬件的状态。
2022-12-27 11:08:33 1275 1
原创 芯片漫游指南(4) -- UVM序列
在UVM世界,利用其核心特性,在创建了组件和顶层环境,并且完成组件之间的TLM端口连接之后,接下来就可以使得整个环境开始运转了。在经过一番时间,掌握了组件之间的TLM通信方式,开辟了建筑之间的道路,桥梁和河道以后,就可以进入紧张繁忙的物流期了。运转的必要条件是组件之间需要有事务(transaction)传送,这就同管道连接好需要水流一样。如果城市没有交通,那么显然不会有多热闹。sequencesequencerdriver如果按照交通道路的车流来打比方,
2022-12-22 14:41:51 751 1
原创 芯片漫游指南(3)-- UVM通信
在芯片开发流程中,有两个地方对项目的助推起到了关键作用:系统原型芯片验证系统原型一般是通过硬件功能描述文档来模拟硬件行为,而行为要求不同于RTL模型。系统原型可以提供一个准确的硬件比特级别、按照地址断访问、不依赖与时钟周期的模型,该模型通常基于System C语言,而系统原型中各个模块通过TLM可以实现宽松时间范围内的数据包传输。芯片验证是在RTL模型初步建立后,通过验证语言和方法学例如SV/UVM来构建验证平台。
2022-12-12 17:18:39 650 2
原创 芯片漫游指南(2)-- UVM结构
这一章我们将介绍UVM的各个组件,读者可以对照之前SV中的各个组件,来看UVM和SV的组件它们相同的部分和不同的部分。对比的重点可以从各个组件的功能实现以及组件的创建连接入手。为什么UVM需要有sequencer这样的角色存在呢?在SV中,产生机理的组件被称为generator,那么为什么需要sequence和sequencer来共同扮演generator的角色,产生激励并且将激励发送给driver(即stimulator)呢?
2022-12-09 18:54:50 1196
原创 upf低功耗的一个简单的例子
upf低功耗,power domain, supply port,power switch ,port state,isloation
2022-11-02 14:28:32 1663
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人