SV——Clocking block的应用

在system verilog中,clocking block是一种简化时钟域信号同步和采样的机制。可以帮助验证工程师简化复杂时序问题,尤其是在测试平台中,既要对信号进行驱动,又要对信号进行采样。

clocking block块一般有以下应用场景:

(1)Driver:用于将激励信号驱动到DUT;

(2)Monitor:用于从DUT采样信号并传递给环境中的其他组件;

举例:

假设我们有一组APB接口,包含时钟pclk,复位信号presetn,输入信号(站在DUT的角度)psel、penable、pwrite、paddr、pwdata,输出信号(站在DUT的角度)prdata、pready、pslverr;

则可以定义如下的clocking_block来供driver和monitor使用;

interface apb_if (input bit pclk, input bit presetn);logic        psel    ;logic        penable ;logic        pwrite  ;logic [31:0] paddr   ;logic [31:0] pwdata  ;logic        pready  ;logic [31:0] prdata  ;logic        pslverr ;// 定义用于 Driver 的 clocking blockclocking drv_cb @(posedge clk);default input #1step output #1;// 默认输入延迟1步,输出延迟1时间单位output psel    ;               // 驱动 psel   (站在drv视角)output penable ;               // 驱动 penable(站在drv视角)output pwrite  ;               // 驱动 pwrite (站在drv视角)output paddr   ;               // 驱动 paddr  (站在drv视角)output pwdata  ;               // 驱动 pwdata (站在drv视角)input  pready  ;               // 采样 pready  (站在drv视角)input  prdata  ;               // 采样 prdata  (站在drv视角)input  pslverr ;               // 采样 pslverr (站在drv视角)endclocking// 定义用于 Monitor 的 clocking blockclocking mon_cb @(posedge clk);default input #1step;input  psel    ;               // 采样 psel   (站在mon视角)input  penable ;               // 采样 penable(站在mon视角)input  pwrite  ;               // 采样 pwrite (站在mon视角)input  paddr   ;               // 采样 paddr  (站在mon视角)input  pwdata  ;               // 采样 pwdata (站在mon视角)input  pready  ;               // 采样 pready  (站在mon视角)input  prdata  ;               // 采样 prdata  (站在mon视角)input  pslverr ;               // 采样 pslverr (站在mon视角)endclocking
endinterface

注意:

(1)实际应用clocking block时,我们往往会通过波形发现,对于采样信号,环境中使用的clocking_block块的值 = 时钟上升沿后的值,这是因为clocking_block块中的信号采用(阻塞赋值=)的方式,信号值的变化在active区域执行,因此从波形上观察,仿佛是时钟沿后的值有效一样,在下例中,pslverr为1的时刻是567ns,正是这一现象;

但如果查看的是接口的logic信号,而不是mon_cb内的信号,则无此困扰,如下:

因此建议,环境中引用mon_cb中的信号,但查看波形时,观察interface中的logic信号;

相关新闻

FloodFill 算法(典型算法思想)—— OJ例题算法解析思路

FloodFill 算法(典型算法思想)—— OJ例题算法解析思路

目录 一、733. 图像渲染 - 力扣(LeetCode) 算法代码: ​代码思路 ​问题描述 ​算法选择 ​代码结构 ​代码详解 ​1. 成员变量 ​2. floodFill 函数 ​参数: ​逻辑: ​3. dfs 函数 ​参数: …

2026/7/12 18:02:33 阅读更多 →
【MySQL】(2) 库的操作

【MySQL】(2) 库的操作

SQL 关键字,大小写不敏感。 一、查询数据库 show databases; 注意加分号,才算一句结束。 二、创建数据库 {} 表示必选项,[] 表示可选项,| 表示任选其一。 示例:建议加上 if not exists 选项。 三、字符集编码和排序…

2026/7/17 5:59:29 阅读更多 →
紧致性准则(Compactness Criterion)与维数灾难(Curse of Dimensionality)——模式识别中对特征的要求

紧致性准则(Compactness Criterion)与维数灾难(Curse of Dimensionality)——模式识别中对特征的要求

紧致性准则(Compactness Criterion)是模式识别和机器学习中用于评估样本集内类别可分性的一个重要概念。它主要关注的是同类样本在特征空间中的聚集程度以及不同类样本之间的分离情况。 在特征空间中,属于同一类别的样本应该尽可能地靠近彼此…

2026/7/16 12:20:19 阅读更多 →
Java Set接口详解:特性、实现类与最佳实践

Java Set接口详解:特性、实现类与最佳实践

1. Set接口基础概念 Set是Java集合框架中一个非常重要的接口,它继承自Collection接口,代表一组不允许重复元素的集合。数学上,Set对应着集合的概念——一组无序且唯一的元素。 Set的核心特性可以概括为: 元素唯一性:…

2026/7/19 21:01:48 阅读更多 →
Unity碰撞系统全解析:从基础原理到性能优化的实战指南

Unity碰撞系统全解析:从基础原理到性能优化的实战指南

1. 碰撞系统:从“穿模”到真实交互的核心在Unity里捣鼓了这么多年,我敢说,碰撞检测是每个开发者从“玩具Demo”迈向“可玩项目”必须跨过的第一道硬门槛。你肯定见过那种角色直接穿过墙壁、子弹打中敌人毫无反应的尴尬场面,业内戏…

2026/7/19 21:01:48 阅读更多 →
MMORPG 大规模战斗场景海量特效优化

MMORPG 大规模战斗场景海量特效优化

MMORPG 大规模战斗场景海量特效优化一、核心结论 MMORPG 特效 DC 高,90% 是材质不统一、贴图不合并、Shader 变体多、粒子系统乱分层、半透明打断合批。 优化方向就 5 条: 材质归一 → 图集合并 → 合批技术全开 → 粒子规范 → 相机/剔除/LOD二、特效 D…

2026/7/19 21:01:48 阅读更多 →
K-Prototypes混合聚类:数值与类别特征协同建模实战

K-Prototypes混合聚类:数值与类别特征协同建模实战

1. 项目概述:当数据里既有数字又有文字,K-Means 和 K-Modes 单打独斗就真不行了你手头有一份客户档案表:年龄、年消费额、所在城市、职业类别、是否开通会员、最近一次购买商品大类……一眼扫过去,数据类型五花八门——年龄和消费…

2026/7/19 21:01:47 阅读更多 →
Windows CE应用程序部署与自启动实战指南

Windows CE应用程序部署与自启动实战指南

1. Windows CE应用程序部署与自启动方案解析在工业控制、嵌入式设备和专用终端领域,Windows CE(简称WinCE)作为经典的实时操作系统仍保持着广泛应用。最近在调试某型号工业触摸屏时,需要实现定制应用程序的开机自启动功能&#xf…

2026/7/19 21:01:47 阅读更多 →
ZBrush2026.2.1免安装版全面解析:部署指南与性能优化

ZBrush2026.2.1免安装版全面解析:部署指南与性能优化

如果你是一名3D建模师或数字雕塑爱好者,一定对ZBrush这个名字不陌生。作为业界顶级的数字雕刻软件,ZBrush以其强大的笔刷系统和直观的雕刻体验,成为游戏、影视、动画行业不可或缺的工具。但传统安装过程的复杂性——激活失败、版本冲突、系统…

2026/7/19 20:59:46 阅读更多 →
鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析 前言 Emoji Idiom Guess 是一个基于鸿蒙 ArkTS 编写的单页互动应用,核心围绕 表情线索、答案输入、首字母提示和收藏关卡 展开。项目没有依赖复杂服务端,也没有把逻辑…

2026/7/19 0:00:03 阅读更多 →
Unity与Python本地通信:基于Flask的跨语言数据交换实战

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/19 0:00:04 阅读更多 →
科研课题设计全流程:从选题到成果落地的实战指南

科研课题设计全流程:从选题到成果落地的实战指南

1. 课题设计全流程解析:从选题到成果落地的实战指南课题设计是科研工作者、高校师生以及企业研发人员日常工作中的核心环节。一个优秀的课题设计不仅决定了研究的方向和质量,更直接影响最终成果的学术价值和应用前景。作为在科研一线摸爬滚打多年的从业者…

2026/7/19 0:00:04 阅读更多 →
鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析

鸿蒙 ArkTS 实战:Emoji Idiom Guess 从表情成语猜谜到交互闭环完整解析 前言 Emoji Idiom Guess 是一个基于鸿蒙 ArkTS 编写的单页互动应用,核心围绕 表情线索、答案输入、首字母提示和收藏关卡 展开。项目没有依赖复杂服务端,也没有把逻辑…

2026/7/19 0:00:03 阅读更多 →
Unity与Python本地通信:基于Flask的跨语言数据交换实战

Unity与Python本地通信:基于Flask的跨语言数据交换实战

1. 项目概述:为什么我们需要一个本地通信服务器?在游戏开发、数字孪生、仿真训练等众多领域,Unity作为强大的实时3D内容创作平台,其核心逻辑通常由C#驱动。然而,当我们需要进行复杂的数据分析、机器学习推理、科学计算…

2026/7/19 0:00:04 阅读更多 →
科研课题设计全流程:从选题到成果落地的实战指南

科研课题设计全流程:从选题到成果落地的实战指南

1. 课题设计全流程解析:从选题到成果落地的实战指南课题设计是科研工作者、高校师生以及企业研发人员日常工作中的核心环节。一个优秀的课题设计不仅决定了研究的方向和质量,更直接影响最终成果的学术价值和应用前景。作为在科研一线摸爬滚打多年的从业者…

2026/7/19 0:00:04 阅读更多 →
ai agent框架spring ai/alibaba 源码原理分析(六) agent和组件

ai agent框架spring ai/alibaba 源码原理分析(六) agent和组件

简介 saa是java的ai agent框架,本系列将深入剖析 Spring AI Alibaba 的源码实现与核心原理,不仅可以指导agent的开发,更可以改造框架,增加新特性 系列内容: 系列(一) 架构 完成 系列(三) 调用 I 工具 完成 II M…

2026/7/19 0:01:20 阅读更多 →
终极指南:如何用Steam-auto-crack实现Steam游戏自动破解

终极指南:如何用Steam-auto-crack实现Steam游戏自动破解

终极指南:如何用Steam-auto-crack实现Steam游戏自动破解 【免费下载链接】Steam-auto-crack Steam Game Automatic Cracker 项目地址: https://gitcode.com/gh_mirrors/st/Steam-auto-crack Steam-auto-crack是一款功能强大的Steam游戏自动破解工具&#xff…

2026/7/19 9:10:31 阅读更多 →
移动端游戏功耗测试实战:电流、功率、亮度和场景对比

移动端游戏功耗测试实战:电流、功率、亮度和场景对比

移动端游戏功耗测试:先控制变量,再比较优化是否真的省电 摘要:功耗测试最容易犯的错误,是拿两次不同温度、不同亮度、不同场景的平均功率直接比较。本文给出一套可复现的游戏功耗测试方法,覆盖引擎特性验证、版本回归和黑盒体验测试,并说明如何把功耗与帧率、温控、CPU/G…

2026/7/19 19:29:48 阅读更多 →