- 博客(32)
- 收藏
- 关注
原创 UVM寄存器模型:W1C类型寄存器的update行为
对一个RW类型寄存器中的W1C类型的域段进行set 0 -> update操作,理论上exp = mir = 0,不会有写操作发生,但实际发现update自动对W1C类型的寄存器写了1。#遇到一个比较奇葩的现象,先记录一下。
2025-01-14 15:36:27
226
原创 UVM_REG_MODEL BACKDOOR 常见问题
sol:VCS权限不够,elab选项改为-debug_access+all,即可解决问题;1.权限不够,无法后门force值。
2025-01-09 20:14:22
138
原创 VERDI常用便捷操作
sol1:选中信号 -> 右键bus_operation -> expand as sub-bus -> defines -> ok。req1:将一根多bit信号拆分成多个等宽信号.#一些便捷的verdi操作。1.1 信号等宽拆分。
2024-12-23 16:43:58
271
原创 IC验证——perl脚本file_assistant——批量修改文件
具体解决方式为:将rfdig_m33_tc017目录下的.v代码中的iopad_p10/01/02==’d1修改为BUCK_BACKUP==‘d10/1/2,将该目录下的.c代码中的IOMUX_REGS[gpio_ret_pd_aon_p10/01/02_config]修改为PMU_REGS[ana_buck_act_cfg1] = (10/1/2 & ana_buck_act_cfg1_buck_backup_mask)
2024-01-13 15:33:13
1179
原创 Cadence Vmanager (一)—— Regression操作指南
Cadence的Vmanager工具采用vsif类型的文件作为regression的输入文件,采用vplanx/csv类型的文件作为vplan的输入文件,vplanx、vsif文件采用标准的嵌套文本格式(NTF),NTF是一种元格式,类似于XML,本文有关于Vmanager采用的NTF格式的介绍
2023-11-26 18:49:26
3081
原创 UVM自学笔记:项目之五——完善agent(driver、monitor、sequencr)
1.我们将driver的所有信号都完善,并且在reset_phase执行reset_do()命令,对所有信号进行上电复位的初始化。完善好的driver代码如下:2.monitor代码编写:在编写monitor的时候,采用了和编写driver不同的方式,这种方式实现起来相对简单一些,具体思路就是控制好每个时钟上升沿是否检测地址、控制信号以及数据信号,如果检测到了,就将数据打包入m_trans内,然后打印到控制台上。由于比较简单,就不多赘述了。直接上代码.
2021-09-14 11:46:00
5458
22
原创 UVM自学笔记:项目之四(重难点)——具有AHB二级流水特性的高适用性driver的编写(考虑到hready为低情况)
1. driver写功能编写,为了验证driver的功能我们同时需要完善sequence、sequence_item、env、testcase以及模拟DUT行为的Slave_module1.1 interface的编写:interface如下,在driver,monitor和slave_module的clocking_block中声明好各自信号的方向。1.2 driver写功能编写:1.2.1 初始main_phase代码:Driver 通过79行代码get到seq传来的r...
2021-09-09 12:16:16
6557
10
原创 UVM自学笔记3——项目之三——从零开始搭建ahb_sramc验证平台
创建如下所示的目录结构:2.在tb的文件下:顶层的testbench如下:在tb中,第24行的代码将uvm宏相关的内容include进来,第26行的代码把uvm_pkg包导入进来,然后将agent相关的包(ahb_pkg/sram_pkg),testcase相关的包(uvm_ahb_sram_test_pkg)以及env相关的包(uvm_ahb_sram_env_pkg)都导入进来,在第38行和39行将接口以virtual interface的形式配置给ahb_agent和sramc_agent下
2021-09-04 14:43:09
8968
15
原创 UVM项目之二:验证计划的编写
AHB_SRAMC验证计划1.文档信息1.1版本 版本 日期 描述 作者 V1.0 2021/8/14 从sramc_top层直接验证 Zhangshuhuai V2.0 2021/8/24 内部模块ahb_slave_if的验证 Zhangshuhuai
2021-08-25 20:31:12
10061
1
原创 UVM项目自学笔记之一:阅读design specification
目录一、IC验证流程二、design specification一、IC验证流程在此次UVM项目中,笔者将使用UVM的平台架构和编码风格实现AHB—SRAMC的验证工作。将IC验证的整个流程划分为如下阶段,并按照流程完成整个项目:1.阅读design specification,目的:(1)学习设计的架构:包括整个soc架构,待验的IP架构(2)掌握设计功能:对功能的理解和把握至关重要,这影响了我们整个验证的正确性(3)数据流向:掌握接口的数据流向,了解该使用什么...
2021-08-25 20:04:57
4171
2
原创 SV项目笔记之一——重难点:验证平台的搭建的底层逻辑和核心思想(来啃一啃这块硬骨头——如何理清AHB的复杂时序关系)
作为一个验证工程师,掌握随机化的验证手段是十分必要的,相比于只通过定向测试的方法,随机化的验证手段可以提高验证的效率,也可以发现定向测试意想不到的bug,但采用随机化的验证手段的一个重要的前提就是验证平台的搭建,在项目的前期,搭建验证平台的工作往往是最耗时的,但带来的收益却是显著的。一个完整的验证平台是层次鲜明的,关于验证平台的结构和层次,详见我的另一篇博客:这一部分是重点也是难点,初学项目时,笔者试着自己写这一部分的代码,但总是遇到各种各样的错误,源于对AMBA—AHB总线协议的模糊以及slave
2021-07-02 19:43:46
2720
3
原创 从SOC架构到SRAMC架构——如何读懂design specification(System Verilog自学笔记之一——项目的初始:阅读design specification)
作为一个新手,刚开始接触项目时,需要掌握如下的目标:AHB-SOC芯片架构,熟悉数据流向 掌握片上内存控制器AHB-SRAMC的主要作用 熟悉AHB-SRAMC的设计架构 熟悉AHB-slave接口的基本功能 熟悉SRAM-memory的接口时序 SRAMC的设计需求 AMBA总线的AHB总线协议相关1.AHB-SOC芯片架构图:其中Bootloader初始化程序负责系统上电复位后的程序初始化。System controller通过使用中断程序协调各个模块的工作。AMB
2021-06-29 20:17:34
3073
3
原创 (基于matlab的)应变传感器数据处理方法(电阻-应变)
该方法适用于将应变传感器置于电阻检测和应变检测同时进行时,两者数据长度不相等的数据自动处理化方法。并提供了两种方式,请读者根据需要自行选择,运行前先将数据置于excel表格中,起名规范化,处理后的数据需要读者自行拷贝到origin等作图软件中作图处理。代码如下:使用方法如下:首先,将所有excel文件放入一个文件夹内,确定好文件地址,以及在excel中要处理数据位于哪列。图中所示地址为C:\Users\12099\Desktop\baobei xiangguan\数据处理\,文件名则根据拉.
2021-06-26 17:33:18
3034
1
原创 带七段式数码显示管的自动售卖机设计(verilog自学笔记之有限状态机的设计)
采用三段式的方法写一个自动售卖机,功能如下:共有三种纸币入口,分别支持10元,20元,50元。货物售价80元。需要支持找钱功能(注意,找钱有两种情况,90元和100元;110元和120元的情况不符合实际应用场景,所以不存在找钱的情况。)带有用七段式数码显示管显示当前总金额的功能。七段数码管原理图如下:七段数码显示管代码:简单模块通过case实现,无需多言。FSM状态转换关系如下:摩尔型状态机设计思想:采用三段式,第一段同步时序逻辑,描述状态转换关系。第二段采用
2021-06-24 18:29:49
711
原创 AHB-SRAM项目之2.5代码改造优化补充(sv自学笔记2.5)
在优化OOP的代码过程中,要紧紧结合OOP的三大特点:封装、继承和多态。采用local定义局部变量。将只有driver中才能用到的中间变量封装在class内。可以在ahb_trans中新定义各种变量,非常容易维护。使用time类型定义时间类型的变量:start_time end_time在ahb_trans里面定义一个function—print,调用时可以将所有信息打印出来。将function放在class外面的方法:在class内部声明一个function,此时不要定义;再在cl
2021-06-21 18:20:40
714
1
原创 AHB—SRAM项目之5 reference_model与scoreboard(SV自学笔记)
这一部分的内容是重难点所在。开始该部分之前应该至少掌握sram的基本架构和reference model与scoreboard的数据流向。Reference model用于模拟DUT的功能,对DUT的行为做一个预测,来看看DUT的行为是否正确,并且把结果送入scoreboard与DUT的结果进行一个比较。首先因为要将driver和sb连起来,所以mailbox用于通信,在两者中均声明一个mailbox传递相同类型的参数,并起同样的名字。在本例中,在两者之外实例化mailbox,即在env中实例化
2021-06-21 14:43:21
3595
原创 AHB-SRAM项目之并发进程与进程通信(SystemVerilog笔记之4)
在开始该模块之前,应该了解的内容如下:Fork_join三兄弟,automatic的task和function和静态的有何区别?开始:首先将program改成automatic类型,这样在program里写task和function时,就会让task和function编程automatic类型的。之后用fork join实现generator和driver的启动。虽然用fork_join将其包起来了,但目前仍旧存在一定的问题,比如:但现在代码看起来不够简洁,比如u_ahb_mas
2021-06-21 12:50:32
711
原创 AHB-sram关于受约束的随机化(sv项目笔记之3)
在这一部分中,了解随机化验证策略的重要性,为什么要使用随机化的验证策略?基于对象的随机包括哪三个步骤?定义随机变量rand、randc。 指定约束条件constraint range{[][]} 调用randomize()方法若没有定义rand,编译不会报错,但仿真会报错。这一部分由于只是在generator中做出修改,所以我们需要针对generator进行修改,新定义一个产生随机变量的方法。在env_top中进行调用时调用随机化的方法即可:在trans中还要指..
2021-06-21 11:40:41
596
原创 ahb_sramc代码的OOP改造(sv项目自学笔记2)
目前所有功能都揉在ahb_tb中,因此可以将其拆开来分成ahb_tb,interface,env_top和sramc_top几个部分。ahb_tb将会实现:将外部时钟信号、复位信号传递进来。 实例化一个interface,实例化一个env_top,实例化一个sramc_top,并且将env_top与sramc_top通过interface连接起来。env_top的program块包含:激励信号的产生通过组件类:class generator的方法gen_one_sim实现,方法的返回值..
2021-06-21 11:19:52
1390
1
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人