hxc7206043的个人空间 https://blog.eetop.cn/andrew [收藏] [复制] [分享] [RSS]

空间首页 动态 记录 日志 相册 主题 分享 留言板 个人资料

日志

【Cocotb系列】四、Cocotb验证平台时钟的产生

已有 3082 次阅读| 2021-1-29 22:46 |系统分类:芯片设计| cocotb, python, 验证, python

时钟是芯片验证过程中最基本也是最重要的决定因素,一个精确的时钟产生对时钟敏感的电路来说至关重要。

Cocotb平台中内建了时钟产生的函数Clock()。Clock函数在官网上的描述如下:

image.png

Clock函数一共有三个形参,分别为:

signal:驱动的时钟信号,如dut.clk

period:时钟周期,必须为偶数个时间单位

units:时间单位,可以为“飞秒”、“皮秒”、“纳秒”、“微秒”、“毫秒”、“秒”等时间单位;同时支持“时间步”,此时则协同“COCOTB_HDL_TIMEPRECISION”来决定具体的时间单位。

Clock的构造实例如下:

方式一:c = Clock(dut.clk, 10, 'ns')

              cocotb.fork(c.start())

方式二:cocotb.fork(Clock(dut.clk, 10, units='ns').start())

产生的效果如下:

image.png

当时钟周期为奇数时则会报相关系统错误

image.png

当希望产生一个520.13MHz频率的时钟时,时钟周期为1.922596274008421ns,为了产生精度较高的520.13MHz时钟时,可以采用不同的时间单位来构造该时钟。

1、采用时间单位为“ns”,时钟周期四舍五入取值为2ns

image.png

image.png

2、采用时间单位为“ps”,时钟周期四舍五入取值为1923ps,周期要求偶数则取值为1924ps

image.png

image.png

3、采用时间单位为“fs”,时钟周期四舍五入取值为1922596fs

image.png

image.png

Clock函数采用不同的时间单位时需要确保与代码的timescale匹配,也就是说Clock函数的时间单位应大于等于timescale的时间单位。

以上产生的时钟均为占空比1:1的时钟,当用户需要产生占空比非1:1的时钟时,可以参考如下代码的实现:

image.png

当用户需要做时钟的动态调整时,可以参考如下的代码实现:

image.png

内容如有错误还请各位指正,欢迎各位读者交流经验。邮箱:xiaochuan7206043@163.com


点赞

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 注册

  • 关注TA
  • 加好友
  • 联系TA
  • 0

    周排名
  • 0

    月排名
  • 0

    总排名
  • 0

    关注
  • 8

    粉丝
  • 2

    好友
  • 3

    获赞
  • 7

    评论
  • 376

    访问数
关闭

站长推荐 上一条 /1 下一条

小黑屋| 关于我们| 联系我们| 在线咨询| 隐私声明| EETOP 创芯网
( 京ICP备:10050787号 京公网安备:11010502037710 )

GMT+8, 2024-5-4 15:16 , Processed in 0.016815 second(s), 14 queries , Gzip On, Redis On.

eetop公众号 创芯大讲堂 创芯人才网
返回顶部