SV : Clocking Block

Clocking Block

  默认情况下,Module ports 和 interfaces不指定任何时序要求或信号之间的同步方案。clocking块完全做到了这一点。它是特定时钟下同步信号的集合,有助于指定时钟与信号之间的时序要求。
这将使测试人员能够更多地关注事务,而不用担心信号什么时候会与时钟交互。一个 testbench 可以有许多时钟块,但是每个时钟只有一个时钟块。

语法

[default]clocking[identifier_name] @ [event_or_identifier]
	default input #[delay_or_edge] output #[delay_or_edge]
	[list of signals]
endclocking

  delay_value表示一个信号被采样或驱动时距离时钟事件有多少个时间单位的倾斜。如果没有指定默认偏离,那么在指定的事件之后,所有的输入信号将#1step采样 ,输出信号在0ns驱动。

clocking ckb @ (posedge clk);
	default input #1step output negedge;
	input ...;
	output ...;
endclocking

clocking ck1 @ (posedge clk);
	default input #5ns output #2ns;
	input data, valid, ready = top.ele.ready;
	output negedge grant;
	input #1step addr;
endclocking

  • 名为ck1的时钟块被创建,它将在clk的上升缘处于活动状态
  • 默认情况下,该时钟块内的所有输入信号将在时钟上升沿之前5ns采样,该时钟块内的所有输出信号将在时钟上升沿之后2ns进行驱动
  • Data, valid和ready为块的输入,因此在CLK的posedge之前5ns被采样
  • grant 是一个有自己时序要求的输出信号。在这里,grant 将clk的 negedge 被驱动,而不是默认的posedge。

在interface中使用

简而言之,一个时钟块封装了一堆共享一个公共时钟的信号。 因此,在接口内声明时钟块有助于节省连接到测试平台所需的代码量,并有助于节省开发时间。
时钟块内的信号方向是相对于testbench 而不是 DUT 的。

input and output skew

Clocking block允许在指定的 clock event 对输入进行取样和驱动输出。

  • input skew,块中的所有input信号都将在 clock event 之前的时间偏斜单位进行采样。
  • output skew,块中的所有output信号将在相应的 clock event 之后时间偏斜单位驱动。

A skew is specified as a constant expression or as a parameter. If only a number is used, then the skew is interpreted to follow the active timescale in the given scope.

skew为常量表达式参数。如果是一个数字,则偏差被解释为遵循给定范围内的活动timescale 。

clocking cb @(clk);
    input  #1ps req;
    output #2 	gnt;
    input  #1 output #3 sig;
endclocking

在上面给出的例子中,名为 cb 的时钟块。req被指定为有1ps 的倾斜,将在时钟边缘之前 1ps 采样。输出信号 gnt 具有2个时间单位的输出倾斜,因此将跟随当前范围内的时间刻度。如果我们有一个1ns/1ps 的时间刻度,那么 # 2代表2ns,因此将在时钟边缘后驱动2ns。sig是 inout 类型,将在时钟边缘1ns 前采样和 时钟边缘3纳秒后的驱动。

输入偏移1step 表示信号应该在前一个 time step的末尾取样,或者换句话说,在上升沿之前采样。

clocking cb @(posedge clk)
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
提供的源码资源涵盖了安卓应用、小程序、Python应用和Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值