IC验证 AHB-RAM 项目(二)——接口与事务代码的编写

目录

  • 准备工作
  • 接口相关代码编写
  • 事务相关代码编写


准备工作

DVT(Design and Verification Tools)是一款专门为 IC 验证打造的 IDE 插件,可以理解为智能的 Verilog/System Verilog 编辑器,在 VS Code、Eclipse 软件中使用。

接口相关代码编写

  • lvc_ahb_if.sv 是面向 DUT 的接口,方便 TB 与 DUT 建立总线通信
  • rkv_ahbram_if.sv 是面向 TB 的接口,提供全局的 testbench 控制
  • rkv_ahbram_tb.sv 是 TB 顶层文件,由于时钟信号较为固定,无需在后续测试过程中更改,所以可以把时钟信号生成的代码放于此

下面将介绍各文件的代码更新内容:

  • lvc_ahb_defines.svh
    • 定义 AHB 总线相关的宏
  • lvc_ahb_if.sv
    • 定义 AHB 总线信号
  • rkv_ahbram_if.sv
    • 定义时钟和复位信号
    • 定义 task 任务产生复位信号,interface 里定义的 task/function 都是静态的,为了避免出现多个进程同时调用时,局部变量被覆盖的情况,这里使用动态任务
task automatic assert_reset(input int active_cycles = 5,    // 复位保持多少个时钟周期input int start_delay   = 0     // 复位开始前延迟多少个时钟周期
);rstn <= 1;repeat(start_delay) @(posedge clk);   // 等待 start_delay 个时钟周期后开始复位rstn <= 0;repeat(active_cycles) @(posedge clk); // 复位保持 active_cycles 个时钟周期后释放复位rstn <= 1;
endtask
  • rkv_ahbram_tb.sv
    • 例化接口 lvc_ahb_if 类和 rkv_ahbram_if 类
    • 使用 lvc_ahb_if 类的 interface 实例化 DUT(设计文件:ahb_blockram_32.v)
    • 产生时钟信号

事务相关代码编写

  • lvc_ahb_types.sv 集中定义了协议里各种枚举类型
  • lvc_ahb_transaction.sv 用于存放一次 AHB 传输需要的变量。作为输入激励,需要 sequence 随机化生成的变量定义为 rand 类型;仿真过程中记录/监测的变量为 非rand
    在这里插入图片描述

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。
如若转载,请注明出处:http://www.pswp.cn/web/93707.shtml
繁体地址,请注明出处:http://hk.pswp.cn/web/93707.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

基于Spring Boot的智能民宿预订与游玩系统设计与实现 民宿管理系统 民宿预订系统 民宿订房系统

&#x1f525;作者&#xff1a;it毕设实战小研&#x1f525; &#x1f496;简介&#xff1a;java、微信小程序、安卓&#xff1b;定制开发&#xff0c;远程调试 代码讲解&#xff0c;文档指导&#xff0c;ppt制作&#x1f496; 精彩专栏推荐订阅&#xff1a;在下方专栏&#x1…

大模型的底层运算线性代数

深度学习的本质是用数学语言描述并处理真实世界中的信息&#xff0c;而线性代数正是这门语言的基石。它不仅提供了高效的数值计算工具&#xff0c;更在根本上定义了如何以可计算、可组合、可度量的方式表示和变换数据。 1 如何描述世界&#x1f4ca; 真实世界的数据&#xff08…

Rust 中 i32 与 *i32 的深度解析

Rust 中 &i32 与 *i32 的深度解析 在 Rust 中&#xff0c;&i32 和 *i32 是两种完全不同的指针类型&#xff0c;它们在安全性、所有权和使用方式上有本质区别。以下是详细对比&#xff1a; 核心区别概览 #mermaid-svg-rCa8lLmHB7MK9P6K {font-family:"trebuchet ms…

【PyTorch项目实战】OpenNMT本地机器翻译框架 —— 支持本地部署和自定义训练

文章目录一、OpenNMT&#xff08;Neural Machine Translation&#xff0c;NMT&#xff09;1. 概述2. 核心特性3. 系统架构4. 与其他翻译工具的区别二、基于 OpenNMT-py 的机器翻译框架1. 环境配置&#xff08;以OpenNMT-py版本为例&#xff09;&#xff08;1&#xff09;pip安装…

基于prompt的生物信息学:多组学分析的新界面

以前总以为综述/评论是假大空&#xff0c;最近在朋友的影响下才发现&#xff0c;大佬的综述/评论内容的确很值得一读&#xff0c;也值得分享的。比如这篇讲我比较感兴趣的AI辅助生信分析的&#xff0c;相信大家都是已经实践中用上了&#xff0c;看看大佬的评论&#xff0c;拓宽…

Nacos-8--分析一下nacos中的AP和CP模式

Nacos支持两种模式来满足不同场景下的需求&#xff1a;AP模式&#xff08;强调可用性&#xff09;和CP模式&#xff08;强调一致性&#xff09;。 这两种模式的选择主要基于CAP理论&#xff0c;该理论指出在一个分布式系统中&#xff0c;无法同时保证一致性&#xff08;Consist…

水闸安全监测的主要核心内容

水闸安全监测是指通过一系列技术手段和管理措施&#xff0c;对水闸的结构状态、运行性能及环境条件进行实时或定期的观测与评估&#xff0c;以确保水闸在设计寿命期内的安全性和可靠性。其核心目标是及时发现潜在的安全隐患&#xff0c;防止事故发生&#xff0c;保障水利工程的…

嵌入式系统学习Day19(数据结构)

数据结构的概念&#xff1a; 相互之间存在一种或多种特定关系的数据元素的集合。数据之间关系&#xff1a;逻辑关系&#xff1a;集合&#xff0c;线性&#xff08;1对1&#xff0c;中间位置的值有且仅有一个前驱&#xff0c;一个后继&#xff09;&#xff0c;树&#xff08;1对…

Pandas中数据清理、连接数据以及合并多个数据集的方法

一、简介1.数据清理的重要性&#xff1a;在进行数据分析前&#xff0c;需进行数据清理&#xff0c;使每个观测值成一行、每个变量成一列、每种观测单元构成一张表格。2.数据组合的必要性&#xff1a;数据整理好后&#xff0c;可能需要将多张表格组合才能进行某些分析&#xff0…

JavaSSM框架从入门到精通!第二天(MyBatis(一))!

一、 Mybatis 框架1. Mybatis 框架简介Mybatis 是 apache 的一个开源项目&#xff0c;名叫 iBatis &#xff0c;2010 年这个项目由 apache 迁移到了 google&#xff0c;并命名为 Mybatis&#xff0c;2013 年迁移到了 GitHub&#xff0c;可以在 GitHub 下载源码。2. Mybatis 的下…

Linux下Mysql命令,创建mysql,删除mysql

在 Linux 系统下&#xff0c;您可以通过命令行来创建和删除 MySQL 数据库。以下是详细的操作步骤&#xff0c;包括创建和删除数据库、用户&#xff0c;以及常见的相关管理命令。1. 登录 MySQL在执行任何 MySQL 操作之前&#xff0c;需要先登录 MySQL。1.1 使用 root 用户登录 M…

假设检验的原理

假设检验是统计学中用于判断样本数据是否支持某个特定假设的方法。其核心思想是通过样本数据对总体参数或分布提出假设&#xff0c;并利用统计量来判断这些假设的合理性。假设检验的基本步骤如下&#xff1a;1. 假设&#xff08;Hypothesis&#xff09;在统计学中&#xff0c;假…

信号、内存共享等实现

信号&#xff08;signal&#xff09;#include <signal.h> #include <stdio.h> #include <unistd.h>void handler(int sig) {printf("收到信号: %d\n", sig); }int main() {signal(SIGUSR1, handler); // 注册用户自定义信号printf("进程 PI…

《从日常到前沿:AI 在教育、医疗、制造业的真实落地案例》文章提纲

引言&#xff1a;AI 落地的多元图景​简述 AI 从实验室走向实际应用的发展趋势​说明选择教育、医疗、制造业的原因 —— 覆盖民生与基础产业&#xff0c;落地场景具有代表性​AI 在教育领域的落地案例​个性化学习&#xff1a;如某在线教育平台利用 AI 分析学生学习数据&#…

决策树(1)

一、树模型与决策树基础决策树概念&#xff1a;从根节点开始一步步走到叶子节点得出决策&#xff0c;所有数据最终都会落到叶子节点&#xff0c;既可用于分类&#xff0c;也可用于回归。树的组成根节点&#xff1a;第一个选择点。非叶子节点与分支&#xff1a;中间决策过程。叶…

电视系统:开启视听新时代

在当今数字化浪潮席卷的时代&#xff0c;电视领域正经历着一场深刻的变革&#xff0c;而电视系统无疑是这场变革中的耀眼明星。简单来讲&#xff0c;电视系统就是互联网协议电视&#xff0c;它宛如一座桥梁&#xff0c;巧妙地利用宽带有线电视网&#xff0c;将多媒体、互联网、…

字节开源了一款具备长期记忆能力的多模态智能体:M3-Agent

猫头虎AI分享&#xff5c;字节开源了一款具备长期记忆能力的多模态智能体&#xff1a;M3-Agent 近年来&#xff0c;多模态大模型的发展迅猛&#xff0c;但如何赋予智能体类似人类的长期记忆能力&#xff0c;一直是研究中的核心挑战。字节跳动开源的 M3-Agent&#xff0c;正是面…

第十六届蓝桥杯青少组C++省赛[2025.8.10]第二部分编程题(6、魔术扑克牌排列)

参考程序&#xff1a;#include<bits/stdc.h> using namespace std; long long dp[105]; long long c(int n) {dp[0] 1;for(int i1; i< n; i){for(int j0; j<i; j){dp[i] dp[j] * dp[i -1-j];}}return dp[n]; } int main() {int n;cin >> n;cout <<c(n…

【实时Linux实战系列】实时平台下的图像识别技术

在当今数字化时代&#xff0c;图像识别技术已经广泛应用于各个领域&#xff0c;如自动驾驶、安防监控、智能医疗等。它通过计算机对图像进行分析和处理&#xff0c;从而实现对物体、场景或人的识别。实时Linux作为一种高效的实时操作系统&#xff0c;为图像识别技术提供了强大的…

IPD流程执行检查表

IPD流程执行检查表 稽查