打字网站怎么做/免费友情链接网页

打字网站怎么做,免费友情链接网页,张家港外贸型网站制作,网页视频下载到本地文章目录 前言1. connect_phase 的作用与执行顺序2. TLM 连接的类型与示例2.1 生产者-消费者模型2.2 分析端口广播模型 3. 层次化连接示例4. 动态连接与条件化配置5. 关键注意事项6. 完整示例:SoC 验证环境连接6.1 Monitor 广播数据6.2 Scoreboard 和 Coverage6.3 E…

文章目录

  • 前言
  • 1. `connect_phase` 的作用与执行顺序
  • 2. TLM 连接的类型与示例
    • 2.1 生产者-消费者模型
    • 2.2 分析端口广播模型
  • 3. 层次化连接示例
  • 4. 动态连接与条件化配置
  • 5. 关键注意事项
  • 6. 完整示例:SoC 验证环境连接
    • 6.1 Monitor 广播数据
    • 6.2 Scoreboard 和 Coverage
    • 6.3 Env 中的连接


前言

在 UVM 验证环境中,connect_phase 是组件间通信链路构建的核心阶段,用于连接 TLM 端口、分析端口等通信接口。以下是分步骤的详细应用说明:


1. connect_phase 的作用与执行顺序

  • 功能:建立组件间的通信通道(如 TLM 端口、分析端口、FIFO 等)。
  • 执行顺序:自底向上(Bottom-Up),子组件的 connect_phase 先于父组件执行。
  • build_phase 的区别build_phase 创建组件实例,connect_phase 连接组件实例。

2. TLM 连接的类型与示例

2.1 生产者-消费者模型

场景:Driver 生成事务(Transaction),Scoreboard 接收事务进行比对。

// Driver 类定义(生产者)
class instruction_driver extends uvm_driver #(instruction_tx);`uvm_component_utils(instruction_driver)uvm_blocking_put_port #(instruction_tx) put_port;  // 阻塞式输出端口function new(string name, uvm_component parent);super.new(name, parent);put_port = new("put_port", this);endfunction
endclass// Scoreboard 类定义(消费者)
class regfile_scoreboard extends uvm_scoreboard;`uvm_component_utils(regfile_scoreboard)uvm_blocking_put_imp #(instruction_tx, regfile_scoreboard) put_imp;  // 阻塞式输入端口实现function new(string name, uvm_component parent);super.new(name, parent);put_imp = new("put_imp", this);endfunction// 实现 put 方法(接收数据)task put(instruction_tx tx);// 比对逻辑endtask
endclass// Env 中的 connect_phase 连接端口
class processor_env extends uvm_env;instruction_driver   driver;regfile_scoreboard   scoreboard;virtual function void connect_phase(uvm_phase phase);super.connect_phase(phase);driver.put_port.connect(scoreboard.put_imp);  // 端口绑定endfunction
endclass

2.2 分析端口广播模型

场景:Monitor 监控 DUT 信号,通过分析端口广播给多个组件(Scoreboard、Coverage)。

// Monitor 类定义(广播者)
class data_monitor extends uvm_monitor;`uvm_component_utils(data_monitor)uvm_analysis_port #(data_tx) ap;  // 分析端口function new(string name, uvm_component parent);super.new(name, parent);ap = new("ap", this);endfunctiontask run_phase(uvm_phase phase);// 捕获数据并通过 ap.write(tx) 广播endtask
endclass// Scoreboard 和 Coverage 类定义(订阅者)
class data_scoreboard extends uvm_scoreboard;uvm_analysis_imp #(data_tx, data_scoreboard) ap_imp;function new(string name, uvm_component parent);super.new(name, parent);ap_imp = new("ap_imp", this);endfunctionfunction void write(data_tx tx);// 数据比对逻辑endfunction
endclassclass data_coverage extends uvm_component;uvm_analysis_imp #(data_tx, data_coverage) ap_imp;function new(string name, uvm_component parent);super.new(name, parent);ap_imp = new("ap_imp", this);endfunctionfunction void write(data_tx tx);// 覆盖率收集逻辑endfunction
endclass// Env 中的 connect_phase 连接分析端口
class data_env extends uvm_env;data_monitor     monitor;data_scoreboard  scoreboard;data_coverage    coverage;virtual function void connect_phase(uvm_phase phase);super.connect_phase(phase);monitor.ap.connect(scoreboard.ap_imp);   // 单播连接monitor.ap.connect(coverage.ap_imp);     // 多播连接endfunction
endclass

3. 层次化连接示例

场景:在 SoC 验证中,连接跨层级的组件(如 Agent 到 Env 级 Scoreboard)。

// Agent 内部定义分析端口
class data_agent extends uvm_agent;data_monitor monitor;uvm_analysis_port #(data_tx) ap;  // Agent 级分析端口virtual function void build_phase(uvm_phase phase);super.build_phase(phase);monitor = data_monitor::type_id::create("monitor", this);ap = new("ap", this);endfunctionvirtual function void connect_phase(uvm_phase phase);super.connect_phase(phase);// 将 Monitor 的端口连接到 Agent 的端口monitor.ap.connect(ap);endfunction
endclass// Env 中跨层级连接
class soc_env extends uvm_env;data_agent       d_agent;soc_scoreboard   soc_sb;virtual function void connect_phase(uvm_phase phase);super.connect_phase(phase);// 连接 Agent 的端口到 Scoreboardd_agent.ap.connect(soc_sb.ap_imp);endfunction
endclass

4. 动态连接与条件化配置

场景:根据测试需求动态启用/禁用某些连接。

// Env 中按条件连接
class dynamic_env extends uvm_env;data_agent      d_agent;debug_monitor   dbg_mon;bit             enable_debug;virtual function void connect_phase(uvm_phase phase);super.connect_phase(phase);// 默认连接d_agent.monitor.ap.connect(scoreboard.ap_imp);// 动态启用调试连接if (enable_debug) begind_agent.monitor.ap.connect(dbg_mon.ap_imp);endendfunction
endclass

5. 关键注意事项

  1. 执行顺序connect_phase自底向上执行,确保子组件先连接,父组件后连接。
  2. 端口类型匹配:连接的端口必须类型兼容(如 uvm_blocking_put_port 必须连接 uvm_blocking_put_imp)。
  3. 引用层级路径:跨层级连接时需正确引用组件路径(如 agent.monitor.ap)。
  4. 避免空指针:确保连接的组件已在 build_phase 中实例化。
  5. FIFO 连接:若需缓冲数据,可使用 uvm_tlm_fifo 作为中间件:
uvm_tlm_fifo #(data_tx) fifo = new("fifo", this);
monitor.ap.connect(fifo.analysis_export);
scoreboard.ap_imp.connect(fifo.get_ap);

6. 完整示例:SoC 验证环境连接

6.1 Monitor 广播数据

class soc_monitor extends uvm_monitor;uvm_analysis_port #(soc_tx) ap;virtual task run_phase(uvm_phase phase);forever begin// 捕获 DUT 信号生成 soc_txap.write(tx);  // 广播事务endendtask
endclass

6.2 Scoreboard 和 Coverage

class soc_scoreboard extends uvm_scoreboard;uvm_analysis_imp #(soc_tx, soc_scoreboard) ap_imp;function void write(soc_tx tx);// 比对事务与预期结果endfunction
endclassclass soc_coverage extends uvm_component;uvm_analysis_imp #(soc_tx, soc_coverage) ap_imp;function void write(soc_tx tx);// 收集覆盖率endfunction
endclass

6.3 Env 中的连接

class soc_env extends uvm_env;soc_monitor      monitor;soc_scoreboard  scoreboard;soc_coverage    coverage;virtual function void connect_phase(uvm_phase phase);super.connect_phase(phase);monitor.ap.connect(scoreboard.ap_imp);monitor.ap.connect(coverage.ap_imp);endfunction
endclass

通过 connect_phase,UVM 验证环境中的组件能够高效协作,实现事务级数据交互,为验证场景的动态性和可扩展性奠定基础。

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

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

相关文章

HBase Shell

目录 1. HBase常用命令1.1 create命令1.2 list命令1.3 describe命令1.4 put命令1.5 get命令1.6 scan命令1.7 count命令1.8 exists命令1.9 修改表结构1.10 delete命令1.11 deleteall命令1.12 truncate命令1.13 disable、drop命令1.14 status命令1.15 version命令 2. HBase Shell…

MATLAB基础学习相关知识

MATLAB安装参考:抖音-记录美好生活 MATLAB基础知识学习参考:【1小时Matlab速成教程-哔哩哔哩】 https://b23.tv/CnvHtO3 第1部分:变量定义和基本运算 生成矩阵: % 生成矩阵% 直接法% ,表示行 ;表示列 a [1,2,3;4,5,6;7,8,9];%…

基于ffmpeg+openGL ES实现的视频编辑工具-opengl相关逻辑(五)

在我们的项目中,OpenGL ES 扮演着至关重要的角色,其主要功能是获取图像数据,经过一系列修饰后将处理结果展示到屏幕上,以此实现各种丰富多样的视觉效果。为了让大家更好地理解后续知识,本文将详细介绍 OpenGL 相关代码。需要注意的是,当前方案将对 OpenGL 的所有操作都集…

dify安装

官网教程 https://github.com/langgenius/dify/blob/main/README_CN.md 1、下载源码 git clone https://github.com/langgenius/dify.git 2、进入docker目录 cd dify cd docker cp .env.example .env修改nginx对外端口配置 修改为9000 最后执行:docker compo…

前端导出word文件,并包含导出Echarts图表等

基础导出模板 const html <html><head><style>body {font-family: Times New Roman;}h1 {text-align: center;}table {border-collapse: collapse;width: 100%;color: #1118FF;font-weight: 600;}th,td {border: 1px solid black;padding: 8px;text-align: …

若依Flowable工作流版本监听器使用方法

1.前言 本文详细介绍如何在若依Flowable工作流版本&#xff08;RuoYi-Vue-Flowable&#xff09;中配置执行监听器和任务监听器。是以我二次开发的代码为基础&#xff0c;介绍如何配置监听器&#xff0c;已解决源码在新增或删除监听器出现的问题&#xff0c;如果需要二次开发的…

VSCode自定义快捷键和添加自定义快捷键按键到状态栏

VSCode自定义快捷键和添加自定义快捷键按键到状态栏 &#x1f4c4;在VSCode中想实现快捷键方式执行某些指令操作&#xff0c;可以通过配置组合式的键盘按键映射来实现&#xff0c;另外一种方式就是将执行某些特定的指令嵌入在面板菜单上&#xff0c;在想要执行的时候&#xff0…

【C语言】指针(5)

前言&#xff1a;上篇文章的末尾我们使用了转移表来解决代码冗余的问题&#xff0c;那我们还有没有什么办法解决代码冗余呢&#xff1f;有的这就是接下来要说的回调函数。 往期文章: 指针1 指针2 指针3 指针4 文章目录 一&#xff0c;回调函数二&#xff0c;qsort实现快速排序1…

【python】网页批量转PDF

安装wkhtmltopdf 网站&#xff1a;wkhtmltopdf wkhtmltopdf http://www.baidu.com/ D:website1.pdf 安装pdfkit库 pip install pdfkit 批量转换代码 import os import pdfkit path_wkthmltopdf rE:\Program Files\wkhtmltopdf\bin\wkhtmltopdf.exe config pdfkit.configu…

游戏引擎学习第113天

仓库:https://gitee.com/mrxiao_com/2d_game_2 黑板&#xff1a;优化的基本过程 在游戏编程中&#xff0c;优化是一个非常重要的学习内容&#xff0c;尤其是想要成为专业开发者时。优化的核心是理解代码的执行速度&#xff0c;以及如何提升其性能。在这个阶段&#xff0c;已经…

通义灵码AI程序员

通义灵码是阿里云与通义实验室联合打造的智能编码辅助工具&#xff0c;基于通义大模型技术&#xff0c;为开发者提供多种编程辅助功能。它支持多种编程语言&#xff0c;包括 Java、Python、Go、TypeScript、JavaScript、C/C、PHP、C#、Ruby 等 200 多种编码语言。 通义灵码 AI…

SeaTunnel社区「Demo方舟计划」首期活动上线—— MySQL CDC实时同步至PostgreSQL实战

引言 凌晨2点&#xff0c;某电商公司的数据工程师小李正对着屏幕抓狂——业务部门临时要求将MySQL的订单表实时同步到PostgreSQL进行分析&#xff0c;众所周知&#xff0c;在数据驱动的业务场景中&#xff0c;异构数据源同步是高频刚需。 以MySQL到PostgreSQL的CDC同步为例&a…

利用websocket检测网络连接稳定性

浏览器中打开F12&#xff0c;控制台中输入以下内容 > 回车 > 等待结果 连接关闭 表示断网 let reconnectDelay 1000; // 初始重连间隔 let pingInterval null; let socketManuallyClosed false; // 标志是否手动关闭function createWebSocket() {if (socketManuallyCl…

Unity shader glsl着色器特效之 模拟海面海浪效果

一个简单的海浪效果&#xff0c;通过波的叠加实现水面起伏的动效&#xff0c;根据波峰斜率来为浪花着色&#xff0c;再根据法线贴图和水花贴图来和调整uv的平滑移动来增强海浪移动的细节。如果需要更逼真的效果可以考虑在满足浪花触发的地方添加粒子系统 前置效果图 因为是很久…

spring日志

前言 入门 这些就是日志 现在开始使用一下 spring是集合了日志的 注意选这个 这样我们就创建好了一个日志对象了 我们就可以这样打印日志了 日志和普通的打印消息相比&#xff0c;区别就是多个一些时间之类的消息 从左到右分别是时间&#xff0c;级别&#xff0c;PID&#x…

用C++ Qt实现安卓电池充电动效 | 打造工业级电量控件

一、为什么需要自定义电池控件&#xff1f; 在工业控制、车机系统、智能硬件等领域的UI开发中&#xff0c;电池状态显示是高频出现的UI组件。通过实现一个支持颜色渐变、动态充电动画、警戒阈值提示的电池控件&#xff0c;开发者可以系统掌握以下核心能力&#xff1a; Qt绘图…

Django+Vue3全栈开发实战:从零搭建博客系统

文章目录 1. 开发环境准备2. 创建Django项目与配置3. 设计数据模型与API4. 使用DRF创建RESTful API5. 创建Vue3项目与配置6. 前端页面开发与组件设计7. 前后端交互与Axios集成8. 项目优化与调试9. 部署上线10. 总结与扩展10.1 项目总结10.1.1 技术栈回顾10.1.2 项目亮点 10.2 扩…

uni-app开发app时 使用uni.chooseLocation遇到的问题

问题一&#xff1a;不显示 问题二&#xff1a;选择地址列表一直在加载中 因为 uni-app 接口文档 中已经说明&#xff0c;使用腾讯的话需要开启云服务&#xff0c;具体可看官网&#xff0c;这就是为什么使用时直接不显示的原因&#xff0c;所以我使用的高德&#xff0c;但又出现…

体验用ai做了个python小游戏

体验用ai做了个python小游戏 写在前面使用的工具2.增加功能1.要求增加视频作为背景。2.我让增加了一个欢迎页面。3.我发现中文显示有问题。4.我提出了背景修改意见&#xff0c;欢迎页面和结束页面背景是视频&#xff0c;游戏页面背景是静态图片。5.提出增加更多游戏元素。 总结…