自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(32)
  • 收藏
  • 关注

原创 SV——Clocking block的应用

关于system verilog的clocking block块。

2025-02-26 18:05:29 326

原创 UVM_CALLBACK 应用举例

UVM_CALL_BACK机制的具体应用举例

2025-02-25 19:17:30 295

原创 UVM寄存器模型:W1C类型寄存器的update行为

对一个RW类型寄存器中的W1C类型的域段进行set 0 -> update操作,理论上exp = mir = 0,不会有写操作发生,但实际发现update自动对W1C类型的寄存器写了1。#遇到一个比较奇葩的现象,先记录一下。

2025-01-14 15:36:27 226

原创 SV fork join_none & for循环结合使用

fork join_none与循环联用常见问题解决方案

2025-01-13 11:35:08 370

原创 UVM run_phase和main_phase的混用

UVM run phase、main_phase混用解决方案,使用场景。

2025-01-12 20:10:11 329

原创 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

原创 Synopsys AXI VIP 使用记录

记录S家的AXI VIP使用时遇到的报错及解决方案。

2024-12-17 14:49:42 935

原创 System Verilog--$scanf应用举例

$scanf应用举例

2024-08-07 17:55:07 310

原创 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

原创 【IC验证】perl脚本——分析前/后仿用例回归情况

perl脚本——分析前/后仿用例回归情况

2023-12-09 18:00:23 1467

原创 Cadence Vmanager (一)—— Regression操作指南

Cadence的Vmanager工具采用vsif类型的文件作为regression的输入文件,采用vplanx/csv类型的文件作为vplan的输入文件,vplanx、vsif文件采用标准的嵌套文本格式(NTF),NTF是一种元格式,类似于XML,本文有关于Vmanager采用的NTF格式的介绍

2023-11-26 18:49:26 3081

原创 matlab 一些画图法总结(持续更新)

记录一些开发中常用的matlab画图指令,持续更新

2023-11-21 15:40:56 532

原创 Cadence Xrun Coverage file

使用cadence xrun收集覆盖率,有关覆盖率文件ccf的相关选项

2023-11-15 18:27:52 1383 1

原创 Cadence Xrun UVM Makefile

Cadence工具Xrun,基于UVM平台的makefile

2023-11-04 11:50:48 1159 2

原创 VCS与XRUN对语法支持的不同点(持续更新...)

但XRUN只支持如下写法,需要用。(带extern关键字)

2023-11-01 18:37:32 1042

原创 XRUN Cadence 常用命令(持续更新)

Cadence仿真工具xrun指令

2023-11-01 18:28:49 8532

原创 UVM:多级流水driver的实现方法——队列错位法

UVM:采用并发线程实现AHB二级流水driver,含代码

2023-01-12 20:04:42 1138 1

原创 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关注的人

提示
确定要删除当前文章?
取消 删除