Loading [MathJax]/jax/input/TeX/config.js
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >厌倦了sv/uvm?来看看用python写验证环境

厌倦了sv/uvm?来看看用python写验证环境

作者头像
ExASIC
发布于 2022-06-21 07:56:42
发布于 2022-06-21 07:56:42
2.3K01
代码可运行
举报
文章被收录于专栏:ExASICExASIC
运行总次数:1
代码可运行

本文介绍了cocotb的安装、python tb文件的写法、用xrun仿真cocotb的脚本等,我们来看看体验如何。

一、准备

  • centos7
  • python3.6+
  • yum install python3-devel
  • pip3 install --upgrade cocotb

二、写RTL

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
// top.sv
module top
  (
   input wire       clk,
   input wire       rst_n,
   input wire [7:0] din,
   output reg [7:0] dout
   );

  initial begin
    $fsdbDumpfile("top.fsdb");
    $fsdbDumpvars(0, top);
  end
 
  always@(posedge clk, negedge rst_n)
    if(!rst_n)
      dout <= 'd0;
    else
      dout <= din;
  
endmodule // top

三、写tb

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# tb.py

import cocotb
from cocotb.triggers import Timer, FallingEdge

async def gen_clk(dut):
    for cycle in range(100):
        dut.clk.value = 0
        await Timer(10, units="ns")
        dut.clk.value = 1
        await Timer(10, units="ns")

async def gen_rst(dut):
    dut.rst_n.value = 0
    await Timer(22, units="ns")
    dut.rst_n.value = 1
    print("Reset Done")

@cocotb.test()
async def tb(dut):

    await cocotb.start(gen_clk(dut))
    await cocotb.start(gen_rst(dut))

    test_data_list = range(0,50, 5)
    for test_data in test_data_list:
        await FallingEdge(dut.clk)
        dut.din.value = test_data
    
    await Timer(100, units="ns")

6~11行:定义了一个时钟,50MHz,100个周期。

13~17行:定义了一个复位信号,低电平有效。复位拉高打印“Reset Done”,方便看log。

19行:用@cocotb.test()装饰器指定了tb的顶层主函数。

22行:异步启动gen_clk

23行:异步启动gen_rst

25~28行:产生了一些测试数据,在时钟下降沿后驱动dut的din。

30行:等待100ns结束仿真

四、写仿真脚本Makefile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
SIM ?= xcelium
TOPLEVEL_LANG ?= verilog

VERILOG_SOURCES += ./top.sv
TOPLEVEL = top

MODULE = tb

include $(shell cocotb-config --makefiles)/Makefile.sim

设置默认仿真器为cadence xcellium,RTL语言选verilog,指定RTL顶层模块名字(就是dut的名字),testbench的名字为tb,最后include一个cocotb共用的makefile。

五、仿真和看波形

把top.sv、tb.py、Makefile放同一个目录下,敲linux命令:make。不出意外的话,仿真可以正确编译和仿真,如下图:

由于我们在RTL顶层加入了dump fsdb波形的代码,所以在log里可以看到有波形产生。280ns仿真结束,并显示“tb passed”,并打印出汇总信息。可见log还是很友好的。

用verdi打开fsdb,与预期一致:

用spinal生成了一个计数器

MyHDL,体验一下“用python设计电路”

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-05-20,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 ExASIC 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
暂无评论
推荐阅读
编辑精选文章
换一批
拯救大龄码农:35-40 岁之后,软件开发工程师走进死胡同了?
---- 新智元报道   来源:reddit 编辑:Emil、小匀 【新智元导读】当程序员来到被称为瓶颈年龄的35岁,他们会怎么做?在reddit上,这个话题火了!无数「爷爷辈」工程师现身说法,叙述自己的年龄焦虑,但是大部分的他们,却并没打算放弃。 软件开发工程师的年龄天花板是什么? 当你50岁的时候,「从业经验超过25年」真的是最好的求职话术吗? 在reddit上,这样一则问题引起了无数大龄程序员围观。 大龄雇员对于公司而言意味着什么? 显而易见,年龄偏长的雇员几乎就与低性价比画上了等号。 在题目
新智元
2023/05/22
6400
拯救大龄码农:35-40 岁之后,软件开发工程师走进死胡同了?
我在 20 年的软件工程师生涯中学到的 20 件事
近日,新闻网站 Hacker News 一个帖子可谓火爆,该贴内容讲的是一位有 20 年软件经验的工程师,学到的 20 件事。
ConardLi
2021/11/23
3660
AI最先砸了程序员饭碗?90%码农认为找工作变难,大学生也要调整职业规划
由外媒Motherboard和Blind展开的一项有9388名工程师参与的调查显示,人工智能将导致程序员招聘人数减少。
新智元
2024/01/12
3380
AI最先砸了程序员饭碗?90%码农认为找工作变难,大学生也要调整职业规划
【谷歌I/O李飞飞】计算机视觉下一个突破在“Vision + X”,我要发明AI 杀手级应用
【新智元导读】北京时间今天凌晨,谷歌的 I/O 大会第三天的论坛《人工智能和机器学习的过去、现在和未来》由谷歌云负责人 Diane Greene 做主持,嘉宾包括刚加入谷歌不久,负责谷歌云 AI 团队的李飞飞教授;谷歌的 Francoise Beaufays;谷歌 Fernanda Viegas,以及 Coursera 联合创始人、现 Alphabet 旗下号称要“治愈衰老”的 Calio 部门首席计算家 Daphne Koller。几位语音、视觉的专家,她们从各自的角度,结合实际例子,分析了 AI 和 M
新智元
2018/03/28
7600
【谷歌I/O李飞飞】计算机视觉下一个突破在“Vision + X”,我要发明AI 杀手级应用
AI时代软件工程师职业还将存在多久?
现代软件工程师的职业,本质上是靠吃着冯诺依曼(von Neumann)架构的红利而存在(感谢祖师爷赏饭吃)。我们不过是计算机指令与数据的搬运工,通过写代码,把字节从二级存储搬到内存,然后又搬到寄存器,再搬到中央处理器,最后又把运算结果搬回去。后来有了网络,于是又多了把字节从这台计算机搬到那台计算机的工作。
Onegun
2023/12/27
4810
AI时代软件工程师职业还将存在多久?
开发者:请还我编程时间
文 | 白开水 出品 | OSC开源社区(ID:oschina2013) 软件工具公司 Retool 最新发布了一份针对 600 名软件工程师和经理的调查报告,就“软件工程师们实际上的时间分配、兴趣所在、认为构建过程中最令人沮丧的部分,以及真正花在编写代码上的时间”等方面进行了调研。 报告指出,工程师们在开源领域的投资和使用占比已经越来越多。“在 2022 年,绝大多数的软件工程师都在运行别人的代码。他们在开放源码库的基础上进行构建,或者从公司代码库的其他部分或在线教程中重复使用代码”。几乎 90% 的受
程序猿DD
2022/05/05
3340
开发者:请还我编程时间
Amazon 高级软件工程师给出 8 点职业建议
本篇译自:amazons-sr-software-engineer-at-27-8-important-lessons-i-ve-learned-so-far-in-my-career
掘金安东尼
2022/09/19
3710
【干货】谷歌软件工程技术实践总结:软件开发、管理和人员调配(20PDF)
【新智元导读】作者 Fergus Henderson已在Google工作了10年以上,拥有超过15年的商业类软件的行业经验。本文梳理并介绍了Google 软件开发中的关键步骤,并从工程设计的思路上阐述了这样做带来了什么好处。之前尚且没有一篇文章提供了Google整体软件开发实践的简要概述。 本文梳理并介绍了Google软件开发中的关键步骤。 作者介绍:作为软件工程师,Fergus Henderson已在Google工作了10年以上。1979年他刚开始编程时还是一个孩子,之后逐渐走上了编程语言设计和实现的学术
新智元
2018/03/27
2.5K0
【干货】谷歌软件工程技术实践总结:软件开发、管理和人员调配(20PDF)
软件开发者如何转战AI领域
在人工智能(AI)技术迅猛发展的当下,越来越多的软件工程师开始考虑转型进入AI领域。本文将探讨AI软件行业的现状、所需能力,以及普通软件工程师在转型过程中可以借助的技能和需要补充的知识。
用户2755790
2025/05/10
870
No.42 | 我们扒一扒新增的就业机会 @语音识别算法工程师(附技能图谱)
是磁带、光盘、录音笔、手机等录音工具,还是会议、访谈、沟通、演唱等场景?是键指如飞的神奇速录师,还是方便快捷的语音转文字AI小工具?
ShowMeAI
2021/10/25
7880
No.42 | 我们扒一扒新增的就业机会 @语音识别算法工程师(附技能图谱)
一个32岁入门的70后程序员给我的启示
一个32岁入门的70后程序员给我的启示 大家好,我是帅气小伙,今天为大家带来一个非常励志,让我反思的故事。今天为大家讲的是我父亲是如何用行动教会我成为程序员的。 岁月的锤炼 圆口接口的键盘,200
用户1289394
2018/02/27
8790
一个32岁入门的70后程序员给我的启示
机器学习VS 编程,二者的最大区别是什么?
有些人认为人工智能和机器学习的本质不过是大肆运用if语句,或者说编程知识罢了,建议说这话的人最好能拿出详细证据证明。本文将对比两个概念,并解释从事这两个领域的专业人员的区别:他们的身份是什么?软件工程师、软件开发人员、机器学习专家、数据科学家、程序员或码农……有些人甚至更夸张,称他们为忍者、大师或摇滚明星!他们实际上都是一类人吗?即便真的如此,机器学习和传统编程之间又是否存在界限呢?
商业新知
2019/05/27
1.6K0
机器学习VS 编程,二者的最大区别是什么?
语音控制:企业计算的下一个重大突破
如果说2007年 iPhone 的发布开启了近十年来消费者信息传达被屏幕和视觉统治的时代,那么,语音将成为继智能手机之后企业科技界下一个最大的颠覆。
人称T客
2018/09/29
4460
一个32岁入门的70后程序员给我的启示
岁月的锤炼 圆口接口的键盘,2003年的 有人问这个键盘难道没有擦过吗?不是的,是擦不掉的岁月痕迹。如果有注意到细节的朋友会发现,程序员什么键位用得最多。除了(ASDW,YUHJ,那是我小时候玩拳王留
用户1667431
2018/04/18
6330
一个32岁入门的70后程序员给我的启示
机器学习 VS 传统编程
机器学习只是一个描述数学+算法的新词吗?有时这样的简化看起来很有趣,但显然机器学习更复杂。
量化投资与机器学习微信公众号
2019/05/24
1.4K0
你还不是一个软件工程师
但是,只有“编写代码”多年后我才明白,称自己作为一个工程师是一个正确的,不是来自大学,但却必须要获得的东西。
哲洛不闹
2018/09/14
3730
你还不是一个软件工程师
昝涛博士:人工智能如何自动编程
知名风险投资人Marc Andreessen说过:”Software is eating the world.“,事实上现在确实如此。如今我们每个人的手机上少则安装了五六个,多则几十个App。这些App都是由软件工程师通过一行一行代码写出来的。而写代码涉及到大量繁琐的细节,或则说有很多重复性的工作,我们能否用人工智来优化和改进呢?
Fundebug
2018/10/22
7850
昝涛博士:人工智能如何自动编程
35,40 甚至 50 岁转行做软件开发晚吗?看这 10 个成功故事
企鹅号小编
2018/01/02
5.2K0
35,40 甚至 50 岁转行做软件开发晚吗?看这 10 个成功故事
软件开发的一些'心法'
从事软件开发也有好几年了,和一开始那个懵懵懂懂的小菜鸟相比,自己也感觉到了 一些变化. 也许是熟能生巧,趟过很多坑,但核心的绝不是这些细节的东西. 打个比方,如果说对某种语言的特性和技巧的掌握属于身法, 那么对应核心的东西, 就叫心法. 没有身法,心法难以实战;但是没有心法,身法再炫也不过是无谓的杂耍而已. 今天,就来讲讲多年浸淫软件开发所感悟的一些"心法”.
evilpan
2023/02/12
3180
未来编程:探索 langchain 如何重塑软件开发
GitHub 上的 langchain-ai/langchain 是一个非常有趣的项目,它代表了当今AI与编程语言处理技术结合的前沿。在这篇文章中,我们将深入探讨 langchain 能够做什么,它的潜力,如何影响未来的编程和软件开发,以及为何它对于软件架构师和系统架构师而言尤为重要。
运维开发王义杰
2024/03/18
2720
未来编程:探索 langchain 如何重塑软件开发
推荐阅读
相关推荐
拯救大龄码农:35-40 岁之后,软件开发工程师走进死胡同了?
更多 >
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
本文部分代码块支持一键运行,欢迎体验
本文部分代码块支持一键运行,欢迎体验