自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(57)
  • 收藏
  • 关注

原创 10-1 tlm2:temporal decoupling(时间解耦) UVM-TLM2 读-改-写最小验证环境概述0

本文基于UVM-TLM1阻塞传输实现最小可运行测试平台,覆盖事务定义→socket连接→objection控制→读-改-写流程,是理解UVM组件通信的入门模板。示例通过APB总线的读改写操作,完整展示TLM“发起方-目标方”的交互逻辑,适合快速掌握UVM核心机制。核心价值:本示例完整展示了UVM TLM1的解耦通信范式——组件通过标准化TLM接口交互,无需关心对方内部实现,为复杂SoC验证奠定基础。工业级扩展方向用uvm_reg实现寄存器自动化;

2025-12-24 01:05:37 814

原创 10-3 tlm2:nonblocking_simple UVM非阻塞TLM通信机制解析:USB协议验证示例

组件角色TLM接口类型关键方法通信方向HostTLM发起者(Initiator)主机→设备DeviceTLM目标(Target)双向(主机↔设备)本环境精准实现USB协议核心机制三阶段传输模型:严格遵循USB协议的流程;异步响应机制:用模拟设备延迟,与主机解耦;事务级抽象:屏蔽物理层细节(如差分信号、时钟),专注协议逻辑验证。

2025-12-23 00:16:48 602

原创 10-2 tlm2:blocking_simple UVM-TLM2 读-改-写最小验证环境概述1

本示例是UVM-TLM2的最小可运行模板,通过“事务对象+阻塞接口+组件连接”实现APB总线的读-改-写闭环验证。apb_rw:封装读写请求的事务对象;initiator:发起总线操作的主设备;target:响应请求的从设备(模拟寄存器);tb_env:集成组件并完成TLM端口连接;仿真结果验证了数据流转的正确性:初始寄存器值0xDEADBEEF→读→取反→写回→最终值0x21524110。// 定义寄存器// 地址映射// 32位、读写// 绑定地址// 锁定模型(禁止修改)

2025-12-21 23:24:05 967

原创 9-4 tlm1:hierarchy UVM TLM : Analysis port

这是一个基于UVM-TLM(事务级建模)的最小闭环验证环境,核心目标是验证事务从生成到终端接收的完整性,覆盖“生成→中转→监控→接收”全流程。📦:承载激励数据的基础对象;⚙️gen:随机化生成事务的生产者;🔀conv:事务中转与广播的“路由器”;🖥️bfm:模拟DUT接收端的总线功能模型;📤producer:集成gen与conv的事务分发中枢;📥consumer:集成bfm的事务接收终端;🔍listener:通过订阅机制实时监控事务的观察者。

2025-12-21 13:38:53 851

原创 9-1 tlm1:fifo UVM TLM FIFO生产者-消费者模型:核心范式与实践

核心价值🧩解耦设计:生产者/消费者通过FIFO通信,互不依赖,可独立修改;🔄同步机制:阻塞式端口保证“数据传输的可靠性”;📦复用性:FIFO、生产者、消费者均可作为“基础组件”,快速搭建复杂验证环境。工业实践建议参数化所有配置:延迟、FIFO深度、数据量等通过注入,避免硬编码;添加监控机制:用f.used()获取FIFO当前深度,当深度>阈值(如80%)时触发告警(事务升级:将int替换为自定义事务类(如bus_req),支持协议级验证(如AXI、APB);超时保护:在消费者的get()

2025-12-21 12:43:50 744

原创 9-3 tlm1:fifo UVM TLM FIFO阻塞非阻塞:验证环境的“数据同步中枢”

endclass解耦生产与消费:生产者无需知道消费者的存在,消费者无需关心数据来源,组件复用性提升50%。灵活的流量控制:通过try_*接口实现高吞吐,通过put/get接口保证数据可靠,平衡“性能”与“正确性”。轻量级同步:比自定义同步机制(如事件、旗语)少写50%代码,调试效率提升3倍。可配置性:调整FIFO深度即可模拟真实芯片的“缓存压力”,提前发现死锁、溢出等bug。一句话总结。

2025-12-21 01:32:15 647

原创 9-2 tlm1:bidir UVM TLM双向通信:最小可运行例程解析

概念作用本例实现UVM TLM端口组件间解耦通信,定义数据流向blocking_put_port(发送)、blocking_get_port(接收)内置请求/响应FIFO,自动同步生产/消费相位机制(Phase)控制仿真生命周期,避免提前退出阻塞语义天然流量控制,防止数据丢失put/get的阻塞等待数据封装传输复杂数据(如地址、命令)本例用int,实际用transaction class解耦:Master/Slave独立开发,通过TLM端口连接,降低耦合度。流量控制。

2025-12-20 22:29:20 927

原创 8 sequence:basic_read_write_sequence UVM基本总线验证环境示例解析

🌟核心价值与应用建议UVM最佳实践优先使用宏:减少代码量,提高可维护性始终使用:确保类注册到UVM工厂设计原则组件化:将验证环境分解为可重用的组件可扩展性:设计时考虑未来扩展需求代码复用:重用基类功能,避免重复代码实际应用建议在项目中,从宏开始,需要特殊逻辑时再考虑手动实现在复杂环境中,添加详细的错误处理和日志,便于调试设计时考虑地址范围、数据宽度等边界条件💡关键学习点:UVM的核心是组件化和可重用性。

2025-12-20 19:03:45 548

原创 0 trivial:UVM的空壳平台

上面是极其简单的UVM用例,算起走入UVM的钥匙,没啥好分析的。“trivial” :“微不足道的”或“简单的”

2025-12-19 23:18:12 143

原创 7-3 phase:timeout UVM测试平台层次结构与Phase执行顺序解析

提高验证效率:自动检测并终止卡死的仿真,避免人工干预,提高测试效率。增强验证可靠性:防止因个别测试用例的异常导致整个验证环境崩溃。提升测试质量:通过及时发现超时问题,可以快速定位设计或验证环境的缺陷。支持自动化:是构建自动化回归测试系统的关键组件。关键提醒:在UVM验证中,超时机制不是替代正确的验证设计,而是作为"安全网",确保验证环境在异常情况下能够及时、安全地终止,避免资源浪费和验证进度延误。通过合理使用超时机制,我们可以构建更健壮、更可靠的IC验证平台,为芯片设计的高质量交付提供坚实保障。

2025-12-14 21:59:35 867

原创 7-2 phase:run_test UVM测试平台层次结构与Phase执行顺序解析

项目代码1代码2顶层成员类型中间包装类有class AA无组件全名示例top.a1.b1层级深度4 层 (3 层 (AA 是否打印日志否(未重写 phase 方法)💡 正是因为AA的存在,你在日志中看到的是而不是top.a1.b1。UVM的Phase执行顺序是验证平台设计的基础,理解组件层次结构对执行顺序的影响至关重要。组件层次结构是决定UVM Phase执行顺序的关键自底向上执行是UVM的核心机制,不是自顶向下日志输出顺序与执行顺序不同,日志是按名称字典排序的。

2025-12-14 13:53:16 719

原创 7-1 phase:basic UVM测试平台层次结构与Phase执行顺序解析

自底向上构建组件树run_phase:自顶向下执行主要测试逻辑结束阶段:自底向上执行提取、检查和报告。

2025-12-13 03:06:24 728

原创 6 objections UVM结束机制解析:uvm_test_done.raise/drop_objection(this) set_drain_time(this, 10)

UVM异议机制的核心原则“测试结束的条件是:所有异议被降低后,等待排空时间。本例完美展示了UVM异议机制设置了10ns的排空时间启动了4个并行任务,每个任务都正确提高了和降低了异议使用了异议回调函数来监控异议状态变化测试在50ns(最后一个任务完成)+10ns(排空时间)=60ns结束这是UVM验证方法学中测试结束协调的标准实践,展示了如何正确使用异议机制。避免过时代码:使用会导致警告,且可能在未来的 UVM 版本中失效。更精细的控制。

2025-12-12 23:57:49 1030

原创 5 interface UVM虚拟接口与资源数据库深度解析:接口连接机制

bit rst;bit rw;bit req;bit ack;bit err;// 主设备视图// 从设备视图// 监视器视图endpackageUVM虚拟接口机制的核心原则虚拟接口通过资源数据库在UVM组件之间共享,modport定义了接口的信号方向视图。本例验证了UVM虚拟接口机制的三个关键点虚拟接口是UVM组件与DUT之间的桥梁资源数据库用于在组件间共享虚拟接口modport定义了接口的信号方向,确保正确的信号连接问题解答modport 到底干啥?

2025-12-11 23:49:40 844

原创 【UVM】UVM回调简单理解版

UVM 回调机制的使用分为 4 个标准步骤,缺一不可:2️⃣ 关于“不修改原始代码”的澄清 —— 这是个重要误解!问题:换句话说:这就像给插座预留插孔——插孔()早就装好了,你只需要插上不同的插头(回调类),而不用重新布线。基础组件库(如公司级 VIP)→ 在 、、 等类中预先加入标准回调钩子(如 )项目级验证环境→ 直接继承这些带钩子的组件→ 只写新的回调类 + 注册→ 完全不碰原始组件代码例如 UVM 自带的 就内置了回调支持:你只需继承 并注册,就能监控所有 sequence 行

2025-12-10 00:52:30 690

原创 【UVM】UVM回调机制与工厂机制深度对比

工厂机制是"换壳",回调机制是"加功能"。特性工厂机制回调机制核心目的替换类的实现(“换壳”)在特定操作前后插入逻辑(“加功能”)关键代码+ 回调类必须实现无回调函数(pre_*post_*调用时机创建对象时组件方法执行过程中影响范围整个类类的特定方法典型场景替换驱动器、序列生成器日志记录、数据验证、时序检查精准实现要点在build_phase中设置1. 在组件中添加2. 在回调类中实现完整回调函数工厂机制是"换壳",回调机制是"加功能"。工厂机制:当你需要改变类的实现。

2025-12-10 00:43:27 843

原创 4 factory UVM工厂模式解析:类型覆盖与实例覆盖机制

/ 在packet_pkg中`uvm_object_utils(packet) // 注册packet类到工厂// 在gen_pkg中`uvm_component_utils(gen) // 注册gen类到工厂UVM工厂机制的核心原则工厂覆盖的优先级:实例覆盖 > 类型覆盖 > 默认类型在UVM中,工厂覆盖机制允许类型覆盖:改变对象的类型(如packet→mypacket实例覆盖:为特定实例提供自定义行为(如gen→mygen工厂覆盖的使用场景在不修改原始类代码的情况下,改变对象类型。

2025-12-09 23:44:42 632

原创 UVM中$sformatf与$sformat的区别及使用详解

test。

2025-12-08 00:15:00 701

原创 3-2 configuration:manual `uvm_field_*` 宏详解:字段自动化机制

字段自动化 vs 手动管理cfg0:使用宏,UVM 自动处理配置加载、打印、复制等。cfg1:全部手动调用和实现do_print。关联数组配置支持cfg0:通过自动支持myaa[key]配置。cfg1:需手动解析字段名并赋值。配置加载时机cfg0:在之前自动加载(由 UVM 框架完成)。cfg1:必须在内部显式调用get()。顶层配置项错误cfg0 错误地设置了,而不是"debug",导致debug字段始终为 0。cfg1 正确设置了"debug",所以组件能读到debug=1。

2025-12-08 00:06:44 614

原创 3-1 configuration:automated UVM配置机制深度解析:优先级规则与仿真验证

本文展示了一个基于UVM验证方法学的层次化测试环境实现。通过class A、B、C构建了包含嵌套组件的测试结构,其中class C包含可配置参数v、s和字符串数组myaa。在顶层模块中,通过uvm_config机制实现了多层次的参数配置:1)全局参数设置;2)特定组件参数覆盖;3)字符串数组元素级配置。仿真结果显示配置信息能正确传递到各层级组件,验证了UVM配置机制的有效性。测试环境最终通过print_topology()展示了完整的组件层次结构和配置值,包括inst1.u1的v=30(16进制1e)、in

2025-12-07 20:44:22 577

原创 2 callback:UVM回调机制深度解析:bus_driver示例

本文通过一个SystemVerilog UVM示例详细解析了回调机制(callback)的实现原理。示例包含事务类bus_tr、回调基类bus_driver_cb和驱动器类bus_driver,展示了回调在事务处理流程中的典型应用。重点演示了回调注册、回调链执行以及多个回调实例的协同工作方式,其中my_bus_driver_cb和my_bus_driver_cb2分别实现了trans_received和trans_executed回调方法。通过uvm_do_callbacks宏实现了回调触发,完整呈现了UV

2025-12-06 14:28:30 974

原创 【UVM】三种主流 UVM 配置共享方法(单例类、`uvm_config_db`、参数化类)

/ 公共配置数据结构(推荐单独放在 .svh 文件中)int sn;int fn;} a_s;💡 使用packed可选(非必须),但能提升仿真效率;若需动态数组等复杂类型,则去掉packed。uvm_object特性单例类(Singleton)(推荐)成员变量(Simple)配置隔离性全局共享(无隔离)✅ 按组件路径隔离❌ 无隔离(需手动传参)差异化配置❌ 所有组件用同一份✅ 支持 per-instance⚠️ 需手动管理UVM 兼容性中(自定义)✅ 官方标准低(绕过机制)调试支持。

2025-12-03 23:50:17 814

原创 【SV】SystemVerilog中静态方法、变量与默认方法、变量的全面解析

静态成员属于类本身,动态成员属于类的实例。静态成员在编译时初始化,动态成员在实例化时初始化。静态成员:属于类本身,所有对象共享,编译时初始化动态成员:属于对象实例,每个对象独立,实例化时初始化静态方法:通过类名调用,只能访问静态成员动态方法:通过对象调用,可以访问静态和动态成员。

2025-12-03 22:39:51 621

原创 在 gvim 中配置代码折叠以识别 `//{{{` 和 `//}}}` 标记

vimrc。

2025-12-03 10:58:40 222

原创 1-3 basic_pkg:UVM工厂机制与配置数据库综合解析

这个示例展示了UVM中**工厂机制(Factory)和配置数据库(uvm_config_db)**的综合用法,同时还包含了组件生命周期管理。它演示了如何手动注册组件到工厂、如何通过配置数据库设置参数、以及如何动态终止组件运行。本示例展示了UVM中工厂机制(Factory)和配置数据库(uvm_config_db)的综合用法,同时还包含了组件生命周期管理。手动注册组件到工厂通过配置数据库设置参数动态终止组件运行写剧本(定义组件类)注册演员名单(工厂注册)搭建舞台(创建组件实例)分配角色台词。

2025-12-02 00:08:51 576

原创 1-2 basic_module:UVM配置数据库详解:组件参数传递与验证环境定制

这篇文章展示了一个基于UVM(Universal Verification Methodology)的测试平台实现。代码定义了一个层次化的验证组件结构,包含顶层模块top、中间组件myunit和底层组件lower。在初始化阶段通过uvm_config机制配置参数值,并在run_phase中进行验证检查。结果显示测试成功完成,打印了组件层次结构及其配置值,包括数组数据。验证平台实现了基本的UVM组件通信和配置功能,能够正确传递和检查配置参数。

2025-11-30 00:34:17 710

原创 【SV】SystemVerilog 进程控制与事件触发类语句全面解析

本文全面解析SystemVerilog中的进程控制与事件触发类语句,包括@、wait、always @和iff等关键字。这些语句主要用于控制仿真行为、同步多线程和响应信号变化,是构建高效验证环境的核心基础。文章通过思维导图将相关语句分为6大类:事件触发与敏感列表类、条件等待与阻塞控制类、事件限定与过滤类、进程启动与并发控制类、断言与采样事件控制类以及定时与延迟控制类。重点对比了@与wait、always_comb/always_ff与传统always @(*)的区别,并强调优先使用wait(conditio

2025-11-28 20:38:33 859

原创 【SV】SystemVerilog中逻辑运算符与按位运算符的区别及IC验证实际应用

在条件判断中,永远使用逻辑运算符&&||!而不是在位操作中,使用按位运算符而不是ERROR_FLAG;短路特性是IC验证的关键使用&&和||可以避免不必要的函数调用在验证环境中,这能防止很多潜在的错误🧠避免常见错误不要用或进行条件判断不要用进行逻辑判断。

2025-11-27 23:44:24 953

原创 【SV】SystemVerilog 关联数组在IC验证中的五大核心应用场景

关联数组不是“高级技巧”,而是现代验证工程师的“呼吸方式”。它让代码更简洁、仿真更高效、调试更轻松。当你面对“如何快速从 MAC 找到队列”这类问题时,别再遍历数组了——一个exists()+ 一次哈希查找,就是答案。希望本文能助你在验证之路上走得更快、更稳。欢迎在评论区分享你的关联数组实战案例!📌 附:五大场景速查表场景键类型值类型典型用途核心优势1. 寄存器映射stringbit[31:0]寄存器模型名字查找直观2. 错误统计stringint日志分析自动扩展3. 稀疏内存。

2025-11-27 23:34:02 770

原创 【SV】SystemVerilog数组声明深度解析:bit[7:0]a[7:0]与bit[7:0]c[0:7]的正确使用

维度硬件设计(RTL)软件/验证(TB)核心目标与物理电路一致与逻辑设计一致索引方向[7:0](高→低)[0:7](低→高)典型场景寄存器映射、FIFO、总线协议状态机、数据缓冲、测试序列错误成本高(可能导致硬件无法工作)中(可能导致测试失败,但不影响硬件)代码可读性重点匹配硬件手册匹配程序员直觉资源效率[7:0]无额外计算,资源最优[0:7]无额外计算,符合软件习惯💡终极建议在硬件设计中,永远用;在验证/软件中,永远用。这不是个人偏好,而是硬件设计的黄金法则。

2025-11-27 10:54:23 423

原创 1-1 basic_event_pool:uvm_event uvm_event_pool详解

这个示例展示了UVM中的基本用法,创建两个事件对象并打印事件池内容。它是一个非常基础的UVM事件机制演示,适用于理解UVM中事件管理的核心概念。!!\n");end关键点:获取UVM报告服务器,总结测试结果作用:检查测试中是否有错误,决定输出"通过"或"失败"通过创建事件管理池使用get()获取或创建事件通过print()查看事件池内容通过UVM报告系统验证测试结果。

2025-11-27 00:40:32 797

原创 13 hello_world:生产者-消费者模型详解

机制作用代码示例类比注册类到UVM工厂餐厅菜单登记系统注册组件到UVM工厂餐厅部门登记系统设置配置参数餐厅老板设置菜单数量发送数据包的接口传送带(生产者到FIFO)中间缓冲队列传菜区run_phase组件工作阶段厨师工作时间accept_trbegin_trend_tr事务生命周期管理end_tr(p);订单接收、开始处理、完成处理对象克隆参考食谱制作新菜品这个"生产者-消费者"示例是理解UVM验证框架的绝佳起点。它展示了UVM如何组织验证环境、处理事务以及管理组件交互。

2025-11-27 00:02:37 711

原创 【SV】SystemVerilog事件机制深度解析:为什么`@e`和`wait(e.triggered())`会导致完全不同的结果?

@e。

2025-11-26 17:11:23 666

原创 【SV】SystemVerilog位操作符详解:流操作符与移位运算符

⚠️ SystemVerilog中没有和用于循环移位!循环移位必须通过位连接操作符实现。3. 实际应用场景应用场景代码示例说明AES加密MixColumns步骤中的位移CRC校验位处理中的循环移位SPI协议串行数据移位处理帧同步以太网帧同步标志处理位反转快速实现4位位反转四、思维导图:SystemVerilog位操作符关系#mermaid-svg-VgpJItAGF7HmiIzv {font-family:"trebuchet

2025-11-26 15:11:45 873

原创 【SV】SystemVerilog结构体详解:使用场景、区别与应用

在SystemVerilog中,结构体(struct)是组织相关数据的关键机制。本文将系统阐述三种结构体声明方式的使用场景、技术区别、优缺点及典型应用,为硬件设计提供清晰指导。

2025-11-26 10:59:43 583

原创 【SV】如何正确检查 `logic` 变量是否为 `X` 或 `Z`?

想检查什么正确写法检查是否为 X 或 Z✅ 推荐检查是否为 X(单比特)a === 1'bx检查是否为 Z(单比特)a === 1'bz检查是否为确定值(0 或 1)!❌X和Z不等于整数 2 和 3。✅ 检查logic是否为X或Z,应使用。✅ 使用===而不是==来比较X/Z。✅是最简洁、最安全、推荐的方式。");end这样写,清晰、安全、符合硬件语义。

2025-11-26 10:02:00 248

原创 【SV】SystemVerilog 中 `new` 关键字的权威用法详解(附常见误区澄清)

用法类型正确语法作用说明重要提示创建类实例创建对象并调用构造函数类必须有构造函数创建动态数组分配指定大小的动态数组数组索引从 0 开始创建队列创建空队列(大小动态变化)无需指定初始大小构造函数配合类的初始化方法无构造函数则自动调用默认对象浅拷贝两个句柄指向同一对象(浅拷贝修改 obj1 会影响 obj2对象深拷贝手动复制对象内容(深拷贝需在类中实现copy方法❌ 常见错误SystemVerilog 无效语法!切勿使用!new= 内存分配 + 构造函数调用对象复制 = 浅拷贝(

2025-11-26 00:39:41 416

原创 UVM速通

通用验证方法学(UVM)是一种用于验证数字设计功能和性能的标准化方法学。UVM 基于 SystemVerilog(SV)构建,代表了提高设计和验证效率的著名最佳实践的集大成者。UVM 为验证过程带来了显著的标准化和可重用性,使设计和验证工程师能够创建灵活、模块化且可在多个项目中使用的测试平台。它是一种基于类的验证方法学,利用 SystemVerilog 的面向对象编程(OOP)特性,如封装、继承和多态性,来提供这些优势。

2025-11-23 23:40:30 896

原创 SV速通-偏验证

SystemVerilog 是数字系统设计和验证的必要语言。其高级功能使其成为创建全面且健壮测试平台的通用工具,提高了验证过程的质量和效率。SystemVerilog 凭借其高级功能和 UVM 等强大的方法论,是混合信号和数字设计验证中必不可少的工具。该语言的通用性与 UVM 等方法论相结合,确保测试平台不仅高效,而且提供高覆盖率,从而提高被测设计的可靠性。always 块在硬件描述语言中是描述数字电路响应变化或事件的关键结构。它与硬件的事件驱动特性紧密相关,能够模拟组合逻辑和时序逻辑。

2025-11-22 05:14:25 667

原创 【UVM】start_item() + finish_item(),uvm_send() , uvm_do,get_next_item()/item_done()之间的区别与联系

特性Sequence 端方法Driver 端方法角色生产者(推送事务)消费者(拉取事务)事务创建可手动或自动(uvm_do必须从 Sequencer 获取时序控制可插入延迟或条件必须立即处理并确认典型用途生成测试激励驱动硬件信号。

2025-11-18 00:49:57 810

【电子设计自动化】UVM模板生成器(uvmgen)用户指南:加速UVM测试平台开发与环境生成系统设计

内容概要:本文档是《UVM Template Generator (uvmgen) 用户指南》,旨在介绍uvmgen工具,帮助用户加速UVM(通用验证方法学)测试平台的开发。uvmgen通过提供一系列强大的模板,简化了验证环境的创建过程,使得开发者可以专注于功能的添加而非语法细节。文档详细描述了uvmgen的功能特性,包括模板生成、用户代码插入、命令行选项、环境生成模式(完整环境生成和独立模板生成)、自定义选项(如启用/禁用UVM字段自动化宏、UVM REG连接等),以及使用配置文件进行非交互式模板生成的方法。此外,文档还提供了详细的使用步骤和注意事项,确保用户能够顺利使用uvmgen。 适合人群:具备一定UVM和SystemVerilog基础,从事芯片验证工作的工程师和技术人员。 使用场景及目标:①通过uvmgen生成符合UVM标准的验证环境,简化测试平台的搭建过程;②利用uvmgen提供的丰富模板和自定义选项,快速理解和应用UVM的不同基类和功能;③在已有模板基础上,通过插入用户代码,实现特定功能的验证环境;④通过命令行和配置文件,实现非交互式的自动化模板生成,提高开发效率。 阅读建议:由于uvmgen涉及大量UVM概念和技术细节,建议读者在阅读时结合实际项目需求,逐步尝试生成不同类型的模板,并深入理解每个模板的具体实现方式。同时,参考文档中的示例和说明,确保正确配置和使用uvmgen。

2025-05-26

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除