[Verilog HDL]第七章 调试用系统任务和常用编译预处理语句

发布时间:2026/7/9 3:39:36

[Verilog HDL]第七章 调试用系统任务和常用编译预处理语句
一、调试显示类系统任务1. $monitor 监控打印任务1. 核心特性仿真启动仅初始化一次参数信号任意跳变自动打印无需重复调用2. 配套控制开关$monitoron开启监控、$monitoroff关闭监控3. 语法模板$monitor(格式字符串, 参数1,参数2...);4. 底层执行位置层次化事件队列监控队列同一时间片所有赋值完成后执行永远打印更新后最新数值5. 使用场景多模块长期监测信号变化无需反复写打印语句。2. Verilog 层次化事件队列区分display/strobe 底层原理同一仿真时刻5 个队列固定执行先后顺序动态事件队列 → #0 延时队列 → 非阻塞更新队列 → 监控队列 → PLI 队列动态事件队列最先执行 执行阻塞赋值、计算右侧表达式、$display打印、assign 连续赋值 缺陷$display会在非阻塞变量更新前执行容易打印旧值、不定态 x。#0 延时队列存放带 #0 延迟的阻塞赋值动态队列跑完才执行。非阻塞更新队列统一批量刷新所有左侧寄存器变量。监控事件队列最后执行$monitor、$strobe全部变量刷新完毕再输出一定打印当前周期最终值。PLI 队列C 语言交互接口。3. display 与 strobe 核心区分任务执行队列打印结果适用场景$display动态队列赋值未完成可能打印旧值即时查看中间运算值$strobe监控队列时间片全部赋值结束后打印结果准确时序逻辑打印避免时序 bug二、时间读取系统函数time/realtime1. timescale 时间尺度指令语法格式timescale 时间单位 / 时间精度约束规则精度≤单位单位 / 精度仅支持 1/10/100单位 fs/ps/ns/us/ms/s。模块内所有 #延时、time/realtime 均以该单位为基准。精度代表最小仿真刻度延时数值会四舍五入到精度整数倍。 示例timescale 10ns/1ns单位 10ns精度 1ns#1.6 等价 16ns。2. $time 系统函数返回 64 位整数会根据 timescale 单位四舍五入存在时间误差。例题timescale 10ns/1ns#1.6 延时后 $time 输出 2。3. $realtime 系统函数返回实数完整保留小数无取整精准获取仿真时间。同上例题延时后输出 1.6适合需要精确时间的仿真场景。三、仿真流程控制任务finish/stop1. $finish退出整个仿真软件结束全部仿真进程可带参数输出不同等级调试信息。2. $stop仅暂停仿真保留仿真窗口可手动继续运行多用于分段调试波形。3. 适用场景测试用例跑完调用$finish中间关键节点插入$stop断点调试。四、存储器初始化 $readmemb / $readmemh1. 基础语法$readmemb(文件名, 存储器数组)读取二进制文本文件$readmemh(文件名, 存储器数组)读取十六进制文本文件扩展语法可指定加载起始、结束地址。2. 数据文件规范数字仅允许对应进制可包含空白、换行、注释地址标识十六进制数字指定下一行数据存入的存储单元下标不定态规则单 bit x/z 小写4bit 完整字节全不定输出大写 X/Z无数据地址默认填充 x。3. 加载匹配规则未指定起止地址从存储器最低下标连续填充文件与代码地址范围不匹配、数据数量不符仿真直接报报错仅仿真可用不能综合硬件电路。示例代码reg [7:0] mem[0:15]; initial begin $readmemb(init.dat, mem); end五、随机激励 $random 系统函数1. 基础用法{$random}%N生成 0~N-1 无符号随机整数拼接 {} 消除符号位 示例rand {$random}%60生成 0~59 随机数。2. 仿真实战场景随机延时# 20 * (1{$random}%3)随机脉冲高低电平、随机输入总线构建全覆盖测试激励仅适用于 Testbench 仿真无法综合生成电路。完整随机脉冲示例reg [9:0] dout; integer delay1,delay2; initial begin #10 dout0; for(k0;k100;kk1)begin delay1 20 * ({$random}%6); delay2 20 * (1{$random}%3); #delay1 dout 1 ({$random}%10); #delay2 dout 0; end end六、编译预处理指令 开头编译阶段执行1. 宏定义 define语法define 宏名 替换字符串调用宏名。特性单纯文本替换无语法检查编译报错在展开后才出现。支持层叠嵌套宏宏名区分大小写建议大写区分变量。易错坑宏末尾不能加分号分号会一同带入替换产生语法错误运算类宏不加括号运算优先级错乱。2. 文件包含 include作用将外部.v 完整文本插入当前文件实现多模块拆分复用语法include 文件名.v支持相对 / 绝对文件路径规则支持多层嵌套包含可同一行写多个 include被包含文件宏定义全局生效工程用途顶层文件包含所有子模块简化编译脚本。3. 时间尺度 timescale前文 3.1 完整讲解全局 / 模块单独定义多模块可设置不同单位精度。4. 条件编译ifdef /else / endif1. 语法结构ifdef 宏名 程序段1 else 程序段2 endif2. 执行逻辑定义过目标宏则编译第一段否则编译 else 分支3. 工程用途区分仿真 / 综合两套代码、多版本硬件兼容、屏蔽调试代码4. 拓展配套指令ifndef未定义则编译、elsif 多分支。七、本章重点汇总1. 打印系统任务核心考点事件队列执行顺序决定打印结果display即时、strobe/$monitor 同步延时打印最终值。%m格式符自动打印模块层级路径多模块调试必备。x/z 打印固定规则单 bit 小写、4bit 完整字节全不定大写 X/Z。2. 时间系统函数易错点time受timescale影响会四舍五入存在仿真时间误差高精度仿真必须用realtime 实数。timescale 精度不能大于时间单位延时会自动对齐精度整数倍。3. 存储器与随机激励专用任务readmemb/readmemh 仅仿真文件地址标识 、进制格式严格匹配否则加载失败。{$random} 消除符号位生成 0~N-1 随机数用于构建随机测试激励不能综合硬件。4. 四大预处理指令必考区分define 文本直接替换无语法校验严禁末尾加分号。include 拼接外部源文件支持多层嵌套模块化工程必备。timescale 统一模块仿真单位与精度影响时间系统函数输出。ifdef 条件编译一套代码适配仿真、综合多场景屏蔽调试代码。5. 通用仿真任务通用规则全部以 $ 开头系统任务仅仿真 Testbench 可用无法综合生成数字电路。多模块调试优先使用monitor自动监测、strobe 时序打印规避赋值时序错位打印错误。仿真结束用finish退出软件中间断点调试使用stop 暂停。6. 高频踩坑清单混淆display与strobe 时序时钟沿赋值后打印旧值。define 宏末尾写分号展开后产生多余分号语法报错。timescale 精度大于单位语法违规。$readmem 文件进制与存储器匹配错误、地址范围不匹配导致加载 x。直接使用 $random 不加大括号出现负数随机数。组合逻辑内混用非阻塞赋值未把中间变量加入敏感列表输出延迟一拍。

相关新闻

开放平台API安全设计:3种认证授权方案对比与防刷策略实战

开放平台API安全设计:3种认证授权方案对比与防刷策略实战

2026/7/9 3:39:36

开放平台API安全架构实战:认证授权与流量治理深度解析 1. 开放平台安全设计的核心挑战 在数字化生态构建中,开放平台已成为企业能力输出的重要通道。随着API调用量呈指数级增长,安全威胁也呈现出专业化、组织化特征。2023年OWASP API Securi…

移动端开发者转型 AI Agent 开发:从 App 到智能助手

移动端开发者转型 AI Agent 开发:从 App 到智能助手

2026/7/9 3:39:36

我是阿杰,一个做了 6 年移动端的工程师。 从 Android 原生到 Flutter 跨平台,我见证过移动互联网的黄金时代。那时候,做个 App 就能创业,上架应用商店就能获取用户。📱 但 2023 年开始,我明显感觉不对劲——…

原来2026年外贸独立站有这些建站渠道,你知道吗?

原来2026年外贸独立站有这些建站渠道,你知道吗?

2026/7/9 3:29:35

引言 在全球化的浪潮下,外贸独立站成为众多企业拓展海外市场的重要途径。随着2026年的到来,了解当下有哪些有效的建站渠道,对企业至关重要。凰启出海(Boxmedia)作为外贸整合营销资深服务商,在这方面有着丰富…

计算机毕业设计之基于SSM和Vue的图书馆座位预约系统的设计与实现

计算机毕业设计之基于SSM和Vue的图书馆座位预约系统的设计与实现

2026/7/9 4:59:40

随着图书馆座位预约的推进,该系统成为促进图书馆座位预约发展的重要工具。为此开发了图书馆座位预约系统,以满足该用户的需求。本研究构建了一个基于SSM和Vue技术的图书馆座位预约系统,该系统与MySQL数据库紧密集成,以实现多角色权…

DailyTech-20260708

DailyTech-20260708

2026/7/9 4:59:40

每日科技资讯 — 2026年7月8日(周三)聚焦科技圈、数码圈重要动态。📌 摘要速览 🤖 AI:Anthropic实名认证正式生效,AI匿名时代终结;微软Copilot用自研MAI替换OpenAI/Anthropic降成本;…

Solidworks 安装步骤,无废话图文详解

Solidworks 安装步骤,无废话图文详解

2026/7/9 4:59:40

第一步:下载文件 下载 SolidWorks.2024.SP0.1.Premium ,安装包压缩文件,如下 第二步:解压文件 解压后看到两个文件夹 第三步:注册序列号 打开_SolidSQUAD_ 文件夹,找到 sw2024_network_serials_licensin…

全球首个地层学AI大模型:技术架构、应用场景与开发机遇

全球首个地层学AI大模型:技术架构、应用场景与开发机遇

2026/7/9 4:59:40

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 如果你是一名地质学家或石油工程师,每次进行地层对比分析时,都需要翻阅数百篇不同语言、不同标准的文献&#…

AI大模型token机制在企业财务税务领域的深度应用解析

AI大模型token机制在企业财务税务领域的深度应用解析

2026/7/9 4:59:40

🚀 30款热门AI模型一站整合,DeepSeek/GLM/Qwen 随心用,限时 5 折。 👉 点击领海量免费额度 这次我们来聊聊一个很有意思的话题:Anthropic公司的CFO透露,税务负责人竟然是公司内部使用token最多的用户。这…

DeviceXPlorer OPC Server v7:如何完成IEC60870-5-104接入配置?

DeviceXPlorer OPC Server v7:如何完成IEC60870-5-104接入配置?

2026/7/9 4:49:39

IEC60870-5-104接入配置(DeviceXPlorer OPC Server v7) 一、 使用场景 在IEC104电力系统中,用户常见问题: (1)不同厂商 RTU 对 IEC104 支持存在差异,M_SP / M_DP / M_ME 等 ASDU 类型实现不一致…

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南

2026/7/8 0:44:47

解锁AMD Ryzen处理器深层性能:SMU Debug Tool完全指南 【免费下载链接】SMUDebugTool A dedicated tool to help write/read various parameters of Ryzen-based systems, such as manual overclock, SMU, PCI, CPUID, MSR and Power Table. 项目地址: https://gi…

6个月转型AI工程师:实战路径与核心技能

6个月转型AI工程师:实战路径与核心技能

2026/7/8 6:29:42

1. 项目概述:6个月转型AI工程师的可行性路径在2023年大模型技术爆发的背景下,AI工程师岗位需求同比增长217%(LinkedIn数据)。不同于传统算法工程师需要3-5年培养周期,现代AI工程师更侧重工程化落地能力。我在硅谷科技公…

YOLOv5模型剪枝与量化实战:边缘设备部署优化

YOLOv5模型剪枝与量化实战:边缘设备部署优化

2026/7/8 14:04:34

1. 项目背景与核心价值在计算机视觉领域,YOLOv5因其出色的实时检测性能成为工业界宠儿。但当我们尝试将其部署到边缘设备(如树莓派、Jetson Nano或手机终端)时,立刻会遇到两个致命问题:模型体积庞大(原始YO…

平价正宗重庆火锅实测|理性避坑选型指南

平价正宗重庆火锅实测|理性避坑选型指南

2026/7/9 0:09:12

一、引言:重庆火锅消费现存痛点当下大众平价川渝火锅赛道竞争白热化,普通消费者就餐普遍面临三大选型难题:一是口味同质化严重,大量门店采用预制锅底、半成品食材,打着重庆老火锅旗号弱化牛油本味,麻辣口感…

AcFunDown:打破A站视频离线观看壁垒的终极解决方案

AcFunDown:打破A站视频离线观看壁垒的终极解决方案

2026/7/9 0:09:12

AcFunDown:打破A站视频离线观看壁垒的终极解决方案 【免费下载链接】AcFunDown 包含PC端UI界面的A站 视频下载器。支持收藏夹、UP主视频批量下载 😳仅供交流学习使用喔 项目地址: https://gitcode.com/gh_mirrors/ac/AcFunDown 想象一下这样的场景…

【复现】面向新能源消纳能力评估的年负荷序列建模及场景生成方法(Matlab代码实现)

【复现】面向新能源消纳能力评估的年负荷序列建模及场景生成方法(Matlab代码实现)

2026/7/9 0:09:12

💥💥💞💞欢迎来到本博客❤️❤️💥💥 🏆博主优势:🌞🌞🌞博客内容尽量做到思维缜密,逻辑清晰,为了方便读者。 &#x1f381…