博通 Jericho+Ramon 与 Tomahawk 技术架构与区别详解
博通的交换芯片有两条完全不同的技术路线:一条是为运营商路由而生的分布式多芯片架构(StrataDNX),一条是为云数据中心而生的单芯片高速交换(StrataXGS)。这一篇把两家的世代规格、系统架构、关键机制(cell 交换、VOQ、信用流控、深缓冲)以及 leaf、spine、Clos 等名词一次讲清。 一句话结论:Tomahawk 是”一颗芯片打天下”的高速交换机——单芯片、低时延、浅缓冲、每比特成本最低;Jericho + Ramon 是”多芯片分布式”的深缓冲路由器——大路由表、GB 级 HBM 缓冲、fabric 内天生无损,可扩展成一台数百 Tbps 的逻辑路由器。 文中数字的置信度标注:[官方] Broadcom 新闻稿/产品页;[媒体] 行业媒体报道;[第三方·低置信] 第三方整理站点,数字仅供参考。各厂商公布带宽的统计口径不完全一致,细节见「口径说明与未核实事项」一节。资料检索时间:2026-10-18。 01 两大家族速览两条产品线同属博通,但基因不同:StrataDNX 源自 2009 年底收购的 Dune Networks(高端路由 fabr...
UVM接口信号同步机制
1. 同步场景与应用在UVM验证环境中,以下典型场景需要直接处理接口信号: flowchart LR A[序列内事务间隔控制] --> B[总线时序管理] C[错误状态过滤] --> D[覆盖率采样控制] E[中断响应机制] --> F[ISR序列调度] G[复位同步] --> H[分析端数据采样] 2. 核心实现方案2.1 架构组件 组件类型 功能描述 关键方法 配置对象 封装虚拟接口和同步方法 wait_for_clock 事务类 定义传输数据格式 随机约束 基础序列 实现硬件感知的业务流 get_config 2.2 同步方法实现12345678910111213class bus_config extends uvm_object; virtual bus_interface bus_if; // 等待指定时钟周期 task wait_for_clock(int cycles=1); repeat(cycles) @(posedge bus_if.clk...
UVM调试功能全解析
1. 调试功能概览flowchart LR A[配置调试] --> A1[命令行跟踪] A --> A2[组件配置打印] A --> A3[资源库转储] B[工厂调试] --> B1[类型注册追踪] C[阶段调试] --> C1[相位跟踪] D[异议调试] --> D1[对象跟踪] E[TLM调试] --> E1[连接拓扑分析] F[通用调试] --> F1[组件层次] F --> F2[消息控制] 2. 核心调试功能详解2.1 配置调试 调试方法 命令行参数 使用场景 配置数据库跟踪 +UVM_CONFIG_DB_TRACE 追踪set/get操作 组件配置打印 print_config() 查看组件配置信息 资源库转储 uvm_config_db::dump() 显示当前资源配置 代码示例: 12345678// 打印组件配置信息function void my_env::end_of_elaboration_phas...
UVM Sequence 学习记录
目录 1. 为什么是 UVM? 2. Agent、Sequence、Sequencer、Driver 基本关系 3. Transaction 4. Sequence 5. 启动 Sequence 的方法 6. Virtual Sequence 7. Sequence 的细节 8. UVM 的 Transaction Level Modeling(TLM) 9. 分析接口 Analysis Port 10. 加深理解 TLM 技术 1. 为什么是 UVM? Verilog/VHDL/SystemC 设计的 TestBench CL(SystemVerilog Base Class Library) 随机约束验证(random constrained verification)(核心):是用仿真中的随机向量。 有两个好处: 约束随机,仿真非常适合发现bugs。 自动生成激励(长时间仿真等)。 验证中的CCC指的是: checker coverage(验证运行发生的情况,识别对设计的实践有多彻底) constraint(有约束==...
Common 分解
1-时钟 1 1) 确定DUT中时钟的数量,频率范围; 2) 测试用例须覆盖各时钟各种标称频率的组合,对于多时钟,须检查各时钟之间频率差最大/最小时DUT的工作状况。 2 若DUT有多个时钟,验证环境要支持各时钟的任意相位关系。 3 无论单时钟还是多时钟,验证环境均要支持时钟不确定性。 4 如果DUT支持门控时钟,需要对门控时钟进行功能验证,包括clock gating和ungating的切换 2-复位 1 确定DUT中复位信号的数量,并同设计,软件确定复位顺序。 2 复位后需要检查寄存器默认值。 3 复位后(包括二次复位)需要检查接口输出信号复位值,推荐使用断言检查。 5 二次复位后打流进行逻辑功能检查 3-寄存器 1 用CSR工具执行基础读写复位检查 2 用寄存器模型工具执行寄存器读写以及复位检查 3 在使用HBUS、RGR等总线对寄存器进行读写访问时,覆盖如下 种场景: SCN-1:valid信号无效时,总线上其他信号驱动成X态 SCN-2:valid信...
SystemVerilog 宏使用指南
介绍什么是宏?宏是使用 `define 编译器指令创建的代码片段。它们基本上有 3 个部分 - 名称、一些文本和可选参数。 1`define macroname(ARGS) macrotext 在编译时,代码中出现的 macroname 都会被替换为 macrotext 字符串,并且 ARGS 是可以在 macrotext 中使用的变量。 为什么要使用宏?在编写测试平台和用例时,经常会遇到代码重复的问题。比如,需要在多个地方打印字节数组,会出现类似这样的重复代码: 12345678910111213//1for (int ii=0; ii<numbytes; ii++) begin if ((ii !=0) && (ii % 16 == 0)) $display("\n"); $display("0x%x ", bytearray[ii]);end //2for (int ii=20; ii<100; ii++) begin if (ii % 16 == 0) ...
UVM Checklist
1. 基于 UVM 的 TB 架构 顶层模块 -> Test -> env -> sub_env -> agent -> driver, sequencer, monitor 为每个测试用例创建 Testbench 测试用例代码保存在case库(xx_test_lib.sv)文件中(类似于将所有测试定义保存在一个文件中的 package) 测试库文件被包含在顶层模块中 UVM TB 中不使用 Program block 2. 在 UVM 中运行测试 vsim +novopt work.top +UVM_TESTNAME=测试名称 必须从顶层模块中的 initial block 调用 run_test() 可以通过 run_test("testname") 运行测试,但不建议这样做,因为它将 Testbench 绑定到单个测试。 如果 run_test() 或者 UVM_TESTNAME 的 testname 没有在 UVM factory 中注册,模拟将导致致命错误。 如果没有在顶层模块中调用 run_test(),则 UVM ...
UVM Monitor 与 Backpressure 控制
概述本文档介绍如何在UVM验证环境中正确实现monitor采集DUT输出,以及如何通过分类型backpressure机制控制数据包流。核心特性是数据包级反压控制,确保数据包传输的完整性和可靠性。 第一部分:基础设计原则核心原则 只采样,不驱动 - Monitor绝不能影响DUT行为 使用正确的信号方向 - input采样,output驱动 时序同步 - 使用clocking block确保时序正确 分类型精细控制 - 根据数据包类型实现独立流控 数据包完整性 - 正确处理SOP/EOP边界和错误信号 智能头部解析 - 从高128字节头部提取类型和长度信息 数据包级反压 - backpressure只在完整数据包边界生效,避免中途中断 🎯 数据包级反压核心优势 传输完整性: 数据包传输过程中不被反压打断 边界对齐: 严格保持SOP/EOP边界完整性 状态一致: 避免传输状态机错乱 性能提升: DUT能完整处理数据包,减少重传开销 第二部分:Interface与Transaction设计1. 优化的Interface定义12345678910111213...
UVM Phase 机制详解
1. 概述UVM Phase机制是验证环境执行流程的核心控制机制,通过预定义的执行阶段确保验证组件的有序初始化和运行。 2. 主要Phase及其作用2.1 构建阶段 (Build Phases)flowchart TD S([开始]) --> A[build_phase] A --> B[connect_phase] B --> C[end_of_elaboration_phase] C --> D[start_of_simulation_phase] D --> E([结束]) Phase名称 执行顺序 主要作用 典型操作 build_phase 1 组件层次结构构建 创建子组件实例,配置对象分配 connect_phase 2 组件间连接建立 TLM端口连接,analysis端口绑定 end_of_elaboration_phase 3 环境最终调整 拓扑结构检查,最终配置参数设置 start_of_simulation_phase 4 仿真前准备 初始激励生成,参考模型初始化 ...
UVM 实用技巧
摘要通用验证方法(UVM)是一种功能强大的验证方法,其设计目的是能够验证各种设计规模和设计类型。UVM 名称中的“Universal”之一层含义,是该方法能够验证宇宙中的任何事物,至少是集成电路领域的所有事物。该通用能力有价值,但也意味着 UVM 中的许多能力对特定项目可能并非必要。事实上,作者认为 UVM 中的许多功能对多数项目来说并不需要。此外,UVM 起源于其他验证方法的融合,如 OVM 和 VMM。这些渊源意味着 UVM 中有些部分是从其他方法继承而来,但在纯 UVM 测试平台中并非真正需要。本文重点定义 UVM 基类、方法和宏的一个子集,使工程师更快学习 UVM,并在使用 UVM 验证以 VHDL、Verilog 或 SystemVerilog 建模的各种类型和规模的数字设计时提高效率。您可能会惊讶地发现,要有效验证复杂设计,真正需要的 UVM 子集其实很小。 引言通用验证方法(通常称为 UVM)的设计目的是具备验证所有类型数字逻辑设计的能力,无论设计规模大小,是 FPGA 或 ASIC 或全定制设计,还是面向控制、面向数据或面向处理器的设计。UVM 的这种通用性意味着...