当前位置: 首页 > news >正文

4. 示例:创建带约束的随机地址生成器(范围0x1000-0xFFFF)

文章目录

  • 前言
  • 代码示例:
  • 运行方法:
  • 查看结果:
  • 关键功能说明:
  • 扩展功能建议:


前言

以下是一个完整的SystemVerilog测试平台示例,包含约束随机地址生成、日志输出和波形生成功能:


代码示例:

// filename: addr_gen_tb.sv
`timescale 1ns/1psmodule addr_gen_tb;// 声明时钟信号logic clk;// 声明随机地址生成类class RandomAddress;rand bit [15:0] addr;// 地址范围约束:0x1000 - 0xFFFFconstraint valid_range {addr inside {[16'h1000:16'hffff]};}endclass// 测试平台变量bit [15:0] current_addr;RandomAddress addr_gen = new();int error_count = 0;// 生成时钟(50MHz)initial beginclk = 0;forever #10 clk = ~clk;end// 波形记录初始化initial begin$dumpfile("waves.fsdb");$dumpvars(0, addr_gen_tb);end// 主测试程序initial begin$display("=== Starting Test ===");repeat (20) begin@(negedge clk);if (!addr_gen.randomize()) begin$error("Randomization failed!");error_count++;endelse begincurrent_addr = addr_gen.addr;$display("[%0t] Generated address: 0x%h", $time, current_addr);// 验证地址范围if (!(current_addr >= 16'h1000 && current_addr <= 16'hffff)) begin$error("Address out of range: 0x%h", current_addr);error_count++;endend#5; // 添加少量延迟用于波形观察end$display("\n=== Test Summary ===");$display("Total errors: %0d", error_count);if (error_count == 0) $display("TEST PASSED");else $display("TEST FAILED");$finish;end
endmodule

运行方法:

  1. 使用Synopsys VCS:
vcs -sverilog addr_gen_tb.sv
./simv
  1. 使用Cadence Xcelium:
xrun -sv addr_gen_tb.sv

查看结果:

  1. 日志输出示例:
=== Starting Test ===Generated address: 0x3a7bGenerated address: 0xf42cGenerated address: 0x8d01
...
=== Test Summary ===
Total errors: 0
TEST PASSED
  1. 查看波形(以VCS为例):
verdi -wave waves.fsdb &

关键功能说明:

  1. 随机约束类 RandomAddress

    • 使用rand关键字声明随机变量
    • inside约束确保地址在0x1000-0xFFFF之间
  2. 测试平台特性:

    • 自动生成时钟信号(50MHz)
    • 每次生成地址后自动验证范围
    • 错误计数和最终测试结果统计
    • 详细的时序日志输出(包含时间戳)
  3. 波形生成:

    • 使用$dumpfile$dumpvars生成VCD格式波形
    • 记录所有层次信号(参数0表示记录所有层次)
  4. 验证机制:

    • 自动检查随机化成功状态
    • 二次验证地址范围
    • 错误计数器自动累加

这个示例可以:

  • 生成符合要求的随机地址
  • 自动验证地址有效性
  • 输出带时间戳的详细日志
  • 生成可用于调试的波形文件
  • 提供清晰的测试结果总结

扩展功能建议:

添加覆盖率收集:

xcovergroup addr_cg;xcoverpoint gen.addr {xbins low  = {[16'h1000:16'h7FFF]};xbins high = {[16'h8000:16'hFFFF]};}
xendgroup

在类中实例化覆盖率对象

多约束组合:

constraint even_addr {addr % 2 == 0;  // 生成偶数地址[4](@ref)
}

相关文章:

4. 示例:创建带约束的随机地址生成器(范围0x1000-0xFFFF)

文章目录 前言代码示例&#xff1a;运行方法&#xff1a;查看结果&#xff1a;关键功能说明&#xff1a;扩展功能建议&#xff1a; 前言 以下是一个完整的SystemVerilog测试平台示例&#xff0c;包含约束随机地址生成、日志输出和波形生成功能&#xff1a; 代码示例&#xff1…...

VSCode轻松调试运行C#控制台程序

1.背景 我一直都是用VS来开发C#项目的&#xff0c;用的比较顺手&#xff0c;也习惯了。看其他技术文章有介绍VS Code更轻量&#xff0c;更方便。所以我专门花时间来使用VS Code&#xff0c;看看它是如何调试代码、如何运行C#控制台。这篇文章是一个记录的过程。 2.操作 2.1 V…...

内容中台是什么?内容管理平台解析

内容中台的核心价值 现代企业数字化转型进程中&#xff0c;内容中台作为中枢系统&#xff0c;通过构建统一化的内容管理平台实现数据资产的高效整合与智能调度。其核心价值体现在打破传统信息孤岛&#xff0c;将分散于CRM、ERP等系统的文档、知识库、产品资料进行标准化归集&a…...

sqlmap:自动SQL注入和数据库接管工具

SQL 注入攻击是 Web 安全领域最常见的漏洞之一&#xff0c;今天给大家介绍一个自动化 SQL 注入和数据库接管工具&#xff1a;sqlmap。sqlmap 作为一款开源渗透测试工具&#xff0c;能帮助安全测试人员快速发现并利用 SQL 注入漏洞接管数据库服务器。 功能特性 sqlmap 使用 Pyt…...

Python设置阿里云镜像源教程:解决PIP安装依赖包下载速度慢的问题

在 Python 中&#xff0c;你可以通过修改 pip 的配置文件来设置阿里云镜像源&#xff0c;以加速包的安装。以下是具体步骤&#xff1a; 1. 临时使用阿里云镜像源 你可以在使用 pip 安装包时&#xff0c;通过 -i 参数临时指定阿里云镜像源&#xff1a; pip install <packa…...

基于专利合作地址匹配的数据构建区域协同矩阵

文章目录 地区地址提取完成的处理代码 在专利合作申请表中&#xff0c;有多家公司合作申请。在专利权人地址中&#xff0c; 有多个公司的地址信息。故想利用这里多个地址。想用这里的地址来代表区域之间的专利合作情况代表区域之间的协同、协作情况。 下图是专利合作表的一部分…...

Java集合List快速实现重复判断的10种方法深度解析

文章目录 引言&#xff1a;为什么需要关注List重复判断&#xff1f;一、基础实现方法1.1 暴力双循环法1.2 HashSet法 二、进阶实现方案2.1 Stream API实现2.2 TreeSet排序法 三、高性能优化方案3.1 并行流处理3.2 BitSet位图法&#xff08;仅限整数&#xff09; 四、第三方库实…...

List的模拟实现(2)

前言 上一节我们讲解了list的基本功能&#xff0c;那么本节我们就结合底层代码来分析list是怎么实现的&#xff0c;那么废话不多说&#xff0c;我们正式进入今天的学习&#xff1a;&#xff09; List的底层结构 我们先来看一下list的底层基本结构&#xff1a; 这里比较奇怪的…...

如何使用SaltStack批量替换SSL证书方案

以下是借助 SaltStack 批量替换 SSL 证书的完整方案&#xff0c;该方案结合了自动化更新与回滚机制&#xff0c;以保障操作的高效性与安全性&#xff1a; 一、准备工作 目录结构搭建 在 Salt Master 的 /home/salt/ssl_update 目录下构建如下结构&#xff1a;ssl_update/ ├──…...

Golang快速上手01/Golang基础

最近有需求&#xff0c;需要使用go&#xff0c;这几天快速过一遍基础语法&#xff0c;这是今天的总结 项目结构 #mermaid-svg-qpF09pnIik9bqQ4E {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-qpF09pnIik9bqQ4E .e…...

[Web 安全] 反序列化漏洞 - 学习笔记

关注这个专栏的其他相关笔记&#xff1a;[Web 安全] Web 安全攻防 - 学习手册-CSDN博客 0x01&#xff1a;反序列化漏洞 — 漏洞介绍 反序列化漏洞是一种常见的安全漏洞&#xff0c;主要出现在应用程序将 序列化数据 重新转换为对象&#xff08;即反序列化&#xff09;的过程中…...

【学习笔记】Google的Lyra项目:基于神经网络的超低比特率语音编解码技术

一、引言&#xff1a;语音通信的带宽挑战与技术突破 在实时音视频通信占据全球数字化生活核心地位的今天&#xff0c;Google于2021年推出的Lyra编解码器标志着语音编码技术进入新的时代。这款基于机器学习的新型音频编解码器以3kbps的极低比特率实现接近原始音质的语音重建能力…...

Unity Dedicated Server 控制台 输出日志LOg 中文 乱码

现象: 中文乱码 原因: Unity打包出来的.exe文件&#xff0c;语言一栏是英文&#xff0c;VS控制台出来不一样 解决方案: 新建.bat文件 &#xff0c;并使用命令chcp 65001&#xff0c;运行时启动.bat&#xff0c;而不是.exe, 改不了exe属性&#xff0c;虽然有点奇怪&#xff…...

【Excel】 Power Query抓取多页数据导入到Excel

抓取多页数据想必大多数人都会&#xff0c;只要会点编程技项的人都不会是难事儿。那么&#xff0c;如果只是单纯的利用Excel软件&#xff0c;我还真的没弄过。昨天&#xff0c;我就因为这个在网上找了好久发好久。 1、在数据-》新建查询-》从其他源-》自网站 &#xff0c;如图 …...

去耦电容的作用详解

在霍尔元件的实际应用过程中&#xff0c;经常会用到去耦电容。去耦电容是电路中装设在元件的电源端的电容&#xff0c;其作用详解如下&#xff1a; 一、基本概念 去耦电容&#xff0c;也称退耦电容&#xff0c;是把输出信号的干扰作为滤除对象。它通常安装在集成电路&#xf…...

HTTPS 与 HTTP 的区别在哪?

HTTP与HTTPS作为互联网数据传输的核心协议&#xff0c;其通信机制与安全特性深刻影响着现代网络应用的可靠性与用户体验。本文将解析两者的通信流程、安全机制及核心差异。 一、HTTP的通信机制 先来看看HTTP是什么吧。 HTTP基于TCP/IP协议栈&#xff0c;采用经典客户端-服务…...

let、const【ES6】

‌“我唯一知道的就是我一无所知。” - 苏格拉底 目录 块级作用域&#xff1a;var、let、const的对比&#xff1a;Object.freeze()&#xff1a; 块级作用域&#xff1a; 块级作用域指由 {} 包围的代码块&#xff08;如 if、for、while、单独代码块等&#xff09;形成的独立作用…...

openharmony5.0中hdf框架中实现驱动程序的动态加载和管理的技术细节分析

在分析openharmony的hdf框架的设备驱动加载器(IDriverLoader)时发现在创建实例时会首先判断一下是否完成了驱动入口的构建(HdfDriverEntryConstruct)&#xff0c;如果没有构建会重新构建&#xff0c;这与我开始以为的不一致(我一直以为是采用的linux内核方式&#xff0c;只是由…...

TVS管学习记录

文章目录 前言一、TVS是什么&#xff1f;二、TVS关键参数1.反向截至电压**实际意义** 2.钳位电压**定义与作用****选择依据** **4. 实际应用示例****场景&#xff1a;通信端口的ESD保护** 3.反向截至电压和钳位电压的关联和区别**. 小结** 三、实际应用电路举例总结 前言 TVS管…...

数据库表的各种设计

本篇文章&#xff0c;主要讲解项目开发时&#xff0c;遇到不同的情况&#xff0c;要学会对数据库的表进行合理设计。 1、将表的某个字段&#xff0c;存到一张新表中 ①情况描述 ②操作步骤 第一步&#xff1a;创建role表 第二步&#xff1a;在user表中&#xff0c;删除role字…...

taotoken如何帮助ubuntu开发者应对大模型api的频繁更新与版本迭代

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 Taotoken如何帮助Ubuntu开发者应对大模型API的频繁更新与版本迭代 对于在Ubuntu环境下进行开发的工程师而言&#xff0c;大模型API…...

Unity项目DrawCall降不下来?试试用Mesh Baker合并贴图集,保姆级图文教程

Unity性能优化实战&#xff1a;用Mesh Baker合并贴图集降低DrawCall全流程解析当你的Unity项目帧率开始卡顿&#xff0c;Profiler里DrawCall数字居高不下时&#xff0c;合并贴图集往往是解决问题的关键一步。本文将以一个实际项目为例&#xff0c;带你从零开始使用Mesh Baker的…...

【2025】AWVS安装保姆级教程(最新25.1.2可用)

【2025】AWVS安装保姆级教程&#xff08;最新25.1.2可用&#xff09; 文章目录 工具下载Host 重定向AWVS安装AWVS查看安装失败原因 工具下载 点击下载即可 下载完的工具后缀格式为.apk&#xff0c;需要将其改为.zip&#xff0c;然后将其解压得到以下工具后续安装使用 Host 重…...

AhMyth位置跟踪:GPS定位与地理围栏技术深度解析

AhMyth位置跟踪&#xff1a;GPS定位与地理围栏技术深度解析 【免费下载链接】AhMyth Cross-Platform Android Remote Administration Tool | The only maintained version of AhMyth on github | A revival of the original repository at https://GitHub.com/AhMyth/AhMyth-An…...

不止于绘图:用GMT 6.4的`grdtrack`和`project`命令玩转地形剖面分析与可视化

不止于绘图&#xff1a;用GMT 6.4的grdtrack和project命令玩转地形剖面分析与可视化 当我们谈论地理空间分析时&#xff0c;很多人首先想到的是绘制精美的地图。但GMT&#xff08;Generic Mapping Tools&#xff09;的真正魅力在于它强大的地理计算能力。本文将带你超越基础绘图…...

基于KS距离度量交通流分布偏移:提升DRL交通信号控制鲁棒性的工程实践

1. 项目概述与核心挑战在智能交通系统&#xff08;ITS&#xff09;领域&#xff0c;基于深度强化学习&#xff08;DRL&#xff09;的交通信号控制&#xff08;Traffic Signal Control&#xff09;正从研究走向实际部署。作为一名长期关注AI落地应用的从业者&#xff0c;我见过太…...

从《王者荣耀》野怪巡逻到RTS单位集结:拆解Unity Navigation系统在实战中的4种高级用法

从《王者荣耀》野怪巡逻到RTS单位集结&#xff1a;拆解Unity Navigation系统在实战中的4种高级用法在MOBA游戏中&#xff0c;野怪沿着固定路线巡逻时突然转向追击玩家&#xff1b;RTS战场上&#xff0c;上百个单位向同一目标点移动却能保持整齐队形&#xff1b;潜行游戏中&…...

Unity中实现深度遮挡:LingBot-Depth实战接入与优化

1. 这不是“加个插件就完事”的AR效果——为什么LingBot-Depth在Unity里值得专门写一篇实战教程你肯定见过那种AR应用&#xff1a;虚拟椅子摆在真实地板上&#xff0c;但当你绕到椅子后面&#xff0c;它依然完整显示&#xff0c;完全无视身后那堵真实的墙&#xff1b;或者一只3…...

揭秘Midjourney云雾渲染失效真相:3大隐性提示词冲突、2类SDXL迁移兼容漏洞及实时雾浓度校准公式

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;揭秘Midjourney云雾渲染失效真相&#xff1a;3大隐性提示词冲突、2类SDXL迁移兼容漏洞及实时雾浓度校准公式 Midjourney V6 在启用云雾&#xff08;mist/fog/haze&#xff09;类视觉效果时&#xff0c;…...

独立开发者如何利用Taotoken的TokenPlan在项目初期有效控制AI实验成本

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 独立开发者如何利用Taotoken的TokenPlan在项目初期有效控制AI实验成本 对于独立开发者或学生而言&#xff0c;在构建AI应用原型时&…...