cocotb value cocotb—基础语法对照篇
cocotb—基础语法对照篇

import cocotb
from cocotb.triggers import Timer
from adder_model import adder_model
from cocotb.clock import Clock
from cocotb.triggers import RisingEdge
import random@cocotb.test()
async def adder_basic_test(dut):"""Test for 5 + 10"""cocotb.fork(Clock(dut.clk, 10, units='ns').start())A = 5B = 10#dut.A <= A#dut.B <= B # 和下边两行等价dut.A.value =Adut.B.value =Bawait RisingEdge(dut.clk)await RisingEdge(dut.clk)assert dut.X.value == adder_model(A, B), "Adder result is incorrect: {} != 15".format(dut.X.value)@cocotb.test()
async def adder_randomised_test(dut):"""Test for adding 2 random numbers multiple times"""cocotb.fork(Clock(dut.clk, 5, units='ns').start())for i in range(10):A = random.randint(0, 15)B = random.randint(0, 15)#dut.A <= A#dut.B <= Bdut.A.value = Adut.B.value = Bawait RisingEdge(dut.clk)await RisingEdge(dut.clk)assert dut.X.value == adder_model(A, B), "Randomised test failed with: {A} + {B} = {X}".format(A=dut.A.value, B=dut.B.value, X=dut.X.value)
#adder_model.py
def adder_model(a: int, b: int) -> int:""" model of adder """return a + b
# Makefile
TOPLEVEL_LANG= verilog
PWD=$(shell pwd)VERILOG_SOURCES=./adder.vTOPLEVEL=adder
MODULE= test_adderSIM=icarusinclude $(shell cocotb-config --makefiles)/Makefile.sim
多文件tb, 多文件dut
# makefile templateVERILOG_SOURCES = $(PWD)/submodule.sv $(PWD)/my_design.sv
# TOPLEVEL is the name of the toplevel module in your Verilog or VHDL file:
TOPLEVEL=my_design
# MODULE is the name of the Python test file:
MODULE=test_my_designinclude $(shell cocotb-config --makefiles)/Makefile.sim
相关文章:
cocotb value cocotb—基础语法对照篇
cocotb—基础语法对照篇 import cocotb from cocotb.triggers import Timer from adder_model import adder_model from cocotb.clock import Clock from cocotb.triggers import RisingEdge import randomcocotb.test() async def adder_basic_test(dut):"""Te…...
001-SpringBoot整合日志
SpringBoot整合日志 一、引入依赖二、配置 application.yml三、配置文件 logback.xml四、配置文件 WebConfigurerAdapter五、配置常量文件六、配置拦截器七、效果展示一、引入依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId&…...
【Java基础面试题011】什么是Java中的自动装箱和拆箱?
相关知识补充:《Java从入门到精通(JDK17版)》_尚硅谷电子书.pdf Autism_Btkrsr/Blog_md_to_pdf - 码云 - 开源中国 (gitee.com) 回答重点 自动装箱:Java编译器自动将基本数据类型转换为包装类型 自动拆箱:Java编译器自动将包装类转换为基…...
ERROR in [eslint] Invalid Options ‘extensions‘ has been removed.
看着这个报错 感觉是版本不对引起的 ERROR in [eslint] Invalid Options: - Unknown options: extensions - extensions has been removed. ERROR in Error: Child compilation failed: [eslint] Invalid Options: - Unknown options: extensions - extensions has b…...
消息传递神经网络(Message Passing Neural Networks, MPNN)
消息传递神经网络(Message Passing Neural Networks, MPNN) 一、引言二、消息传递框架概述1.消息传递阶段(1)消息生成与传播-message(2)消息聚合-aggregate(3)消息更新-update&#…...
常用图像变换方法
伽马变换: void gamma_transform(cv::Mat &img, double gamma) {cv::Mat normalized;img.convertTo(normalized, CV_64F...
从被动响应到主动帮助,ProActive Agent开启人机交互新篇章
在人工智能领域,我们正见证着一场革命性的变革。传统的AI助手,如ChatGPT,需要明确的指令才能执行任务。但现在,清华大学联合面壁智能等团队提出了一种全新的主动式Agent交互范式——ProActive Agent,它能够主动观察环境…...
力扣hot100道【贪心算法后续解题方法心得】(三)
力扣hot100道【贪心算法后续解题方法心得】 十四、贪心算法关键解题思路1、买卖股票的最佳时机2、跳跃游戏3、跳跃游戏 | |4、划分字母区间 十五、动态规划什么是动态规划?关键解题思路和步骤1、打家劫舍2、01背包问题3、完全平方式4、零钱兑换5、单词拆分6、最长递…...
工业齐套管理虚拟现实仿真模拟软件
工业齐套管理虚拟现实仿真模拟软件是与法国最大的汽车制造商合作开发的一款虚拟现实仿真模拟软件,借助身临其境的虚拟现实环境,无需停止生产线,即可模拟仓库和提货区域。 工业齐套管理虚拟现实仿真模拟软件不仅适用于汽车工业,安全…...
ARP表、MAC表、路由表的区别和各自作用
文章目录 ARP表、MAC表、路由表的区别和各自作用同一网络内:ARP表request - 请求reply - 响应 MAC地址在同一网络内,交换机如何工作? 不同网络路由表不同网络通信流程PC1到路由器路由器到PC2流程图 简短总结 ARP表、MAC表、路由表的区别和各自作用 拓扑图如下: 同一网络内:…...
Android 使用OpenGLES + MediaPlayer 获取视频截图
概述 Android 获取视频缩略图的方法通常有: ContentResolver: 使用系统数据库MediaMetadataRetriever: 这个是android提供的类,用来获取本地和网络media相关文件的信息ThumbnailUtils: 是在android2.2(api8)之后新增的一个,该类为…...
浏览器的事件循环机制
浏览器和Node的事件循环机制 引言浏览器的事件循环机制 引言 由于JS是单线程的脚本语言,所以在同一时间只能做一件事情,当遇到多个任务时,我们不可能一直等待任务完成,这会造成巨大的资源浪费。为了协调时间,用户交互…...
Z2400032基于Java+Mysql+SSM的校园在线点餐系统的设计与实现 代码 论文
在线点餐系统 1.项目描述2. 技术栈3. 项目结构后端前端 4. 功能模块5. 项目实现步骤注意事项 6.界面展示7.源码获取 1.项目描述 本项目旨在开发一个校园在线点餐系统,通过前后端分离的方式,为在校学生提供便捷的餐厅点餐服务,同时方便餐厅和…...
k8s使用的nfs作为sc。
k8s使用的nfs作为sc。 当前出现一个问题: 1.有一个pod他是通过流进行文件解压并写入到nfs服务器对应的目录中。 2.一个大压缩包下有20多个压缩包,递归解压。解压完成后应该是20多个文件夹,文件夹下有.json文件。 3.pod中的程序解压后去找以.j…...
linux下Qt程序部署教程
文章目录 [toc]1、概述2、静态编译安装Qt1.1 安装依赖1.2 静态编译1.3 报错1.4 添加环境变量1.5 下载安装QtCreator 3、配置linuxdeployqt环境1.1 在线安装依赖1.2 使用linuxdeployqt提供的程序1.3 编译安装linuxdeployqt 4、使用linuxdeployqt打包依赖1.1 linuxdeployqt使用选…...
tp6 合成两个pdf文件(附加pdf或者替换pdf)
最近在做项目有个需求,项目中需要根据设置的html合同模板自动生成PDF合同供客户下载签署,并根据回传的已签署合同尾页来替换原来未签署合同的尾页,合成新的已签署合同文本。 读取两个PDF文件并合成的 具体代码记录如下: use set…...
工作:三菱PLC防止程序存储器爆满方法
工作:三菱PLC防止程序存储器爆满方法 一、防止程序存储器爆满方法1、编程时,添加行注释时,记得要选“外围”,这样不会占用PLC程序存储器内存;2、选择“外围”的注释,前面会有个*星号,方便检查 二…...
jmeter 获取唯一全局变量及多线程读写的问题
一、jmeter 获取唯一ID号全局变量 在JMeter中获取唯一ID号并设置为全局变量,可以通过以下几种方法实现: 使用JMeter内置的UUID函数: JMeter提供了一个内置的函数__UUID,可以生成一个随机的UUID,这个UUID是全局唯一的。…...
掌握 Spring Boot 中的缓存:技术和最佳实践
缓存是一种用于将经常访问的数据临时存储在更快的存储层(通常在内存中)中的技术,以便可以更快地满足未来对该数据的请求,从而提高应用程序的性能和效率。在 Spring Boot 中,缓存是一种简单而强大的方法,可以…...
动手学深度学习10.5. 多头注意力-笔记练习(PyTorch)
本节课程地址:多头注意力代码_哔哩哔哩_bilibili 本节教材地址:10.5. 多头注意力 — 动手学深度学习 2.0.0 documentation 本节开源代码:...>d2l-zh>pytorch>chapter_multilayer-perceptrons>multihead-attention.ipynb 多头注…...
Mirage Flow 运维效率提升实战:智能日志排查与故障自愈方案
Mirage Flow 运维效率提升实战:智能日志排查与故障自愈方案 你是不是也经历过这样的深夜?告警短信突然炸了锅,几十上百条日志涌进来,你得像侦探一样,在成百上千行日志里大海捞针,试图找出那个导致系统崩溃…...
DIY迷你平衡摩托车:从PID控制到机械设计全解析
1. 迷你平衡摩托车项目概述作为一名嵌入式开发爱好者,我最近完成了一个迷你平衡摩托车的DIY项目。这个项目的灵感来源于大学生智能车竞赛中的平衡单车组别,但相比那些专业竞赛车模,这个迷你版本更适合个人爱好者动手实现。整个项目从原理分析…...
告别鼠标流!用STM32CubeIDE快捷键玩转代码导航与重构(实战演示)
告别鼠标流!用STM32CubeIDE快捷键玩转代码导航与重构(实战演示) 在嵌入式开发的世界里,效率就是生命线。当你面对一个庞大的STM32工程,频繁在数千行代码中穿梭时,每一次不必要的鼠标点击都在蚕食宝贵的开发…...
保姆级教程:用Keil5将你的STM32F103工程无缝迁移到国民技术N32G45X
从STM32F103到N32G45X:嵌入式工程师的国产MCU迁移实战指南 在嵌入式开发领域,芯片选型往往决定着项目的成败。随着国产微控制器的崛起,越来越多的工程师开始考虑将原有基于STM32的项目迁移到国产平台。国民技术的N32G45X系列以其出色的性价比…...
别再手动画线了!用uniapp+高德地图SDK,5分钟搞定微信小程序轨迹绘制(附完整代码)
零基础实现UniApp高德地图轨迹绘制:从原理到实战封装 在移动应用开发中,地图轨迹功能是许多场景的刚需——从外卖配送路线、共享单车行程记录到物流追踪系统。传统实现方式往往需要开发者手动处理大量坐标点、编写复杂的画线逻辑,这不仅效率低…...
STM32分散加载机制与内存管理详解
1. STM32程序分散加载机制解析在嵌入式系统开发中,程序如何从存储介质加载到内存并正确执行是一个关键问题。STM32微控制器采用的分散加载机制(Scatter Loading)正是解决这一问题的核心技术。作为从事嵌入式开发多年的工程师,我经…...
18.children 这个 props 的意义何在?该怎样正确使用?
在 React 里,children 是一个非常特殊、非常常用的 prop, 它专门用来接收:写在组件标签中间的那一部分内容。你可以把它理解为:组件外层负责搭“外壳”,children 负责装进这个壳里的“内容物”。一、children 到底是什…...
告别数据孤岛:手把手教你用ArcMap的Join功能,把Excel数据精准‘贴’到地图上
数据可视化实战:用ArcMap的Join功能将Excel业务数据转化为空间洞察 在商业分析和区域规划中,最令人头疼的莫过于面对一堆冰冷的Excel数字却无法直观看到它们在地理空间上的分布规律。想象一下,当销售总监拿到全国各城市的业绩报表时ÿ…...
房屋租赁管理系统开发教程:基于SSM框架实战全记录
房屋租赁管理系统 java项目ssm框架开发,全套视频教程Verio 房屋租赁系统“我的收藏”功能深度解析——从用户点击到数据落地的全流程设计一、业务定位在房屋租赁平台中,“收藏”是连接「浏览」与「决策」的关键节点。Verio 把收藏做成一个轻量级、可复用的“微服务”…...
数理化随机出题系统HTML源码,适配教育场景,支持自定义题库与难度分级
🛠️ 系统核心功能多学科覆盖:支持数学、物理、化学三个学科的题目随机生成难度分级配置:可自定义简单、中等、困难三个难度级别的题目占比题库自定义:支持手动添加不同学科、不同难度的题目内容一键生成试卷:点击即可…...
