购买
下载掌阅APP,畅读海量书库
立即打开
畅读海量书库
扫码下载掌阅APP

2.3.18 时钟块在使用时需要注意哪些地方?

时钟块(clocking block)在验证环境的一侧时,可以在driver、monitor、coverage model等多处使用。在driver中使用时,既利用了时钟块的驱动延迟特性,也利用了时钟块的稳定采样特性。要注意的是,时钟块中的采样信号较接口中的原始信号晚1拍,这是由于时钟块本身就是基于时钟沿做了稳定采样后将信号的值保留下来的。因此在driver中,采用的接口中的信号和时钟块的信号之间有1拍的延迟。如果没有注意到这一点,那么在driver的时序实现过程中将会遇到麻烦,使用者会不清楚什么时候该使用时钟块的采样信号,什么时候又该直接使用接口中的信号。

采用时钟块在driver中做延迟驱动的目标是可以理解的,但有时为了能够及时捕捉到信号变化,在driver中会直接使用接口中的信号而不是时钟块的信号(因为时钟块的信号比接口中的相同信号要晚1拍)。这一顾虑,在monitor、covergrage model等其他组件中则没有那么明显,这是因为这些组件都属于passive角色,即本身不需要与接口信号互动(即从接收信号到反馈驱动),所以在这些组件中可以统一采用时钟块中的信号。由于这些信号是稳定采样的,如果全部使用它们来解析时序,那么相当于整体时序的分析比实际信号时序延迟了1拍,而这1拍的整体延迟对于绝大多数协议时序而言是可以接受的(当然,也可以推断出来实际的时序事件发生的时间点)。

关键词:

clocking block,driver,monitor,coverage model

避坑指南:

在driver或monitor中实现时序驱动或采样时,不一定要求每个时序事件都基于时钟沿。为了满足时序,有时也需要模拟出组合时序行为,即在某个时钟沿内需要利用wait、#、@等延时阻塞等待操作,去采样某些信号。这种实现方式当然也是可以的。验证环境中的组件在实现时序时,并不需要像设计代码那样去严格参考状态机的实现方式,而可以更为灵活。

阅读手记: CYHql1n+PN5ba2jUCh25YsuoY8U4AbI24pG1NvAJ7Mdtw/nAEl4js8rMVD9Xb0Jf

点击中间区域
呼出菜单
上一章
目录
下一章
×