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
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值