0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

Cocotb验证平台时钟的产生代码

星星科技指导员 来源:eetop 作者:eetop 2024-01-08 16:26 次阅读

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

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

1611928209387594.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())

产生的效果如下:

1611929705388769.png

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

1611929848478897.png

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

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

1611930874942098.png

1611930499664154.png

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

1611930846826794.png

1611930642571052.png

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

1611930801909873.png

1611930754168102.png

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

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

1611931447585104.png

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

1611931502467345.png


审核编辑:黄飞

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 芯片
    +关注

    关注

    454

    文章

    50430

    浏览量

    421894
  • 时钟
    +关注

    关注

    10

    文章

    1720

    浏览量

    131371
  • 函数
    +关注

    关注

    3

    文章

    4307

    浏览量

    62434
  • 时钟信号
    +关注

    关注

    4

    文章

    445

    浏览量

    28511
收藏 人收藏

    评论

    相关推荐

    SoC验证平台的FPGA综合怎么实现?

    先进的设计与仿真验证方法成为SoC设计成功的关键。一个简单可行的SoC验证平台,可以加快SoC系统的开发与验证过程。FPGA器件的主要开发供应商都针对自己的产品推出了SoC系统的开发
    发表于 10-11 07:07

    验证方法简介

    使用,使其成为现有的唯一适合追求高质量代码和低错误率的设计和验证工程师的 SystemVerilog 测试框架。 用于验证工程师的 SVUnit 在用于子系统或芯片/产品级测试平台之前
    发表于 02-13 17:03

    Python硬件验证——摘要

    - 为什么选择 Python?如何使用 Python 进行验证(测试平台)? Cocotb -(CO-routine 和 CO-simulation 的Testbench)可能是事实上的 标准Python
    发表于 11-03 13:07

    基于FPGA的NoC验证平台的构建

    针对基于软件仿真片上网络NoC(Network on Chip)效率低的问题,提出基于FPGA的NoC验证平台构建方案。该平台集成可重用的流量产生器TG(Traffic Generat
    发表于 01-04 16:24 12次下载

    基于PCI接口的IP验证平台

    IP核验证平台采用6层板PCB设计,使用独立的外部时钟同步芯片,可以为PCI及其它接口提供稳定的零延迟时钟系统电路,满足PCI总线的时钟要求
    发表于 01-17 14:02 1816次阅读
    基于PCI接口的IP<b class='flag-5'>验证</b><b class='flag-5'>平台</b>

    基于System Verilog的可重用验证平台设计及验证结果分析

    采用System Verilog语言设计了一种具有层次化结构的可重用验证平台,该平台能够产生各种随机、定向、错误测试向量,并提供功能覆盖率计算。将
    发表于 01-12 11:28 2639次阅读
    基于System Verilog的可重用<b class='flag-5'>验证</b><b class='flag-5'>平台</b>设计及<b class='flag-5'>验证</b>结果分析

    超低抖动时钟产生与分配

    超低抖动时钟产生与分配
    发表于 04-18 14:13 8次下载
    超低抖动<b class='flag-5'>时钟</b>的<b class='flag-5'>产生</b>与分配

    PLL设计和时钟频率产生

    PLL设计和时钟频率产生机理免费下载。
    发表于 06-07 14:36 22次下载

    基于python的用于构建仿真及测试用例的lib库cocotb

           对于从事ASIC行业及FPGA行业的小伙伴来说,仿真是一件必不可少的事情。或许有人是验证大拿,UVM高手,但相较于软件丰富的验证框架,对于各种各样的场景单纯的SV构建测试用例是否便捷
    的头像 发表于 10-13 17:01 6674次阅读
    基于python的用于构建仿真及测试用例的lib库<b class='flag-5'>cocotb</b>

    cocotb中的基础语法

    cocotb的出现使得我们能够在做RTL仿真验证时依托Python来进行测试用例的构建,当我们习惯了用Verilog、SystemVerilog来构建测试用例时,切换到cocotb后最直观的方式便是我们能够建立
    的头像 发表于 07-21 09:18 2326次阅读

    cocotb的安装、python tb文件的写法

    设置默认仿真器为cadence xcellium,RTL语言选verilog,指定RTL顶层模块名字(就是dut的名字),testbench的名字为tb,最后include一个cocotb共用的makefile。
    的头像 发表于 09-21 11:33 3391次阅读

    基于Simulink代码生成的FPGA信号处理系统仿真验证平台

    时,仍然需要手动编写代码搭建仿真平台[2],生成仿真激励,效率较低。信号处理系统往往包含大量复杂的算法[3],对于验证人员编写代码的经验及技能要求较高。
    的头像 发表于 11-04 16:24 2217次阅读

    移动SoC的时钟验证

    些更低的几何尺寸下设计和验证时钟带来了越来越多的复杂性和验证挑战。在这种快速发展的形势下,必须重新评估当前的时钟验证方法,以确保最佳的
    的头像 发表于 07-17 10:12 730次阅读
    移动SoC的<b class='flag-5'>时钟</b><b class='flag-5'>验证</b>

    时钟信号怎么产生

    时钟信号怎么产生时钟信号是一种重要的信号,它在电子设备中广泛应用。时钟信号的产生与传输是现代电子设备中不可或缺的基础技术之一。
    的头像 发表于 09-15 16:28 2441次阅读

    用python写验证环境cocotb

    本文介绍了cocotb的安装、python tb文件的写法、用xrun仿真cocotb的脚本等,我们来看看体验如何。
    的头像 发表于 07-24 09:38 472次阅读
    用python写<b class='flag-5'>验证</b>环境<b class='flag-5'>cocotb</b>