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


审核编辑:黄飞

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

    关注

    447

    文章

    47804

    浏览量

    409180
  • 时钟
    +关注

    关注

    10

    文章

    1480

    浏览量

    130306
  • 函数
    +关注

    关注

    3

    文章

    3882

    浏览量

    61310
  • 时钟信号
    +关注

    关注

    4

    文章

    374

    浏览量

    28067
收藏 人收藏

    评论

    相关推荐

    FPGA固件开发- 测试平台的编写

    一个 PDIUSBD12,来实现仿真的目的。首先,在测试平台中需要产生一个虚拟的时钟信号,产生的方法就是使用 wait for 语句等待固定时间后将信号值翻转。
    发表于 11-28 15:22

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

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

    IC验证"UVM验证平台"组成(三)

    验证用于找出DUT中的bug,这个过程通常是把DUT放入一个验证平台中来实现的。一个验证平台要实现如下基本功能:
    发表于 12-02 15:21

    IC验证平台

    IC验证平台
    发表于 08-09 07:39

    验证方法简介

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

    Python硬件验证——摘要

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

    基于PCI接口的IP验证平台

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

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

    采用System Verilog语言设计了一种具有层次化结构的可重用验证平台,该平台能够产生各种随机、定向、错误测试向量,并提供功能覆盖率计算。将
    发表于 01-12 11:28 2419次阅读
    基于System Verilog的可重用<b class='flag-5'>验证</b><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 6130次阅读
    基于python的用于构建仿真及测试用例的lib库<b class='flag-5'>cocotb</b>

    cocotb中的基础语法

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

    怎么用脚本产生一个验证环境

    之前有朋友问我怎么用脚本产生一个验证环境,这个问题今天和大家介绍下两种做法。
    的头像 发表于 08-11 09:07 1108次阅读

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

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

    移动SoC的时钟验证

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

    时钟信号怎么产生

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