当前位置: 首页 > article >正文

使用不同模型相同提示词写一段systemverilog代码,deepseek太让人惊喜!

熟悉systemverilog的朋友应该都知道fork join_any disable有一个小陷阱就是可能会误kill其他进程所以需要一个guard fork。突然奇想看看哪个大模型可以不经过提醒(这个很重要因为我们大概率不会把这个加入到提示词)考虑到这个层面。先说结论deepseek v4 pro和claude opus 4.7胜出可以自行在chip.ai6800.com下调用模型做实验GPT-5.4 -失败花费0.0075可以用fork...join_any配合disable fork或disable来实现。推荐写法task automatic run_taskA_taskB(); fork : ab_fork begin : taskA_proc taskA(); end begin : taskB_proc taskB(); end join_any // taskA 和 taskB 任意一个先结束后杀掉另外一个 disable ab_fork; endtask更简洁写法如果当前作用域明确也可以这样写fork taskA(); taskB(); join_any disable fork;不过在实际验证环境里更推荐加名字便于维护和调试(其实还是有风险的)fork : ab_fork taskA(); taskB(); join_any disable ab_fork;GPT 5.5 -失败花费0.0205task automatic taskA(); $display([%0t] taskA start, $time); // taskA执行内容 #100; $display([%0t] taskA done, $time); endtask task automatic taskB(); $display([%0t] taskB start, $time); // taskB执行内容 #200; $display([%0t] taskB done, $time); endtask task automatic run_taskA_taskB(); fork : TASK_FORK begin taskA(); end begin taskB(); end join_any // taskA/taskB中任意一个完成后终止另一个还在运行的task disable TASK_FORK; $display([%0t] one task finished, remaining task disabled, $time); endtask说明fork ... join_any并行启动taskA和taskB任意一个结束后继续往下执行。disable TASK_FORK关闭该fork块中仍在运行的其他线程。如果taskA先完成则taskB会被终止。如果taskB先完成则taskA会被终止。Claude sonnet-4.6-失败花费0.0646这是一个使用SystemVerilog实现两个任务并行执行任一完成后终止另一个的代码示例module parallel_task_example; // 任务A task automatic taskA(); begin $display([%0t] taskA started, $time); #100ns; // 模拟任务A需要100ns完成 $display([%0t] taskA completed, $time); end endtask // 任务B task automatic taskB(); begin $display([%0t] taskB started, $time); #150ns; // 模拟任务B需要150ns完成 $display([%0t] taskB completed, $time); end endtask // 主控制逻辑 initial begin fork begin taskA(); end begin taskB(); end join_any // 任何一个分支完成就继续执行 // 终止所有未完成的并行进程 disable fork; $display([%0t] One task completed, both tasks disabled, $time); #10ns; $finish; end endmodule关键点说明fork...join_any- 启动并行执行任一分支完成后继续disable fork- 终止当前fork块中所有未完成的进程automatic- 确保任务可重入支持并发调用如果需要更精细的控制比如只disable特定任务可以使用命名的fork块initial begin fork : parallel_block begin taskA(); end begin taskB(); end join_any disable parallel_block; // 通过名称disable特定fork块 $display([%0t] Tasks disabled, $time); end这段代码中taskA会在100ns完成此时taskB还在执行中需要150nsjoin_any会立即继续执行然后disable fork会终止还在运行的taskB。Claude opus 4.7-成功花费0.0283方法一使用fork...join_anydisable forkmodule tb_top; // 定义 taskA task taskA(); $display([%0t] taskA started, $time); #100; // 模拟一些耗时操作 $display([%0t] taskA completed, $time); endtask // 定义 taskB task taskB(); $display([%0t] taskB started, $time); #50; // 模拟一些耗时操作比taskA快 $display([%0t] taskB completed, $time); endtask initial begin fork taskA(); taskB(); join_any // 任一 task 完成后disable 掉 fork 内所有剩余线程 disable fork; $display([%0t] Both taskA and taskB have been disabled/finished, $time); end endmodule注意disable fork会终止当前进程派生的所有子线程。如果调用环境中还有其他fork产生的线程可能会被误杀。为了避免这个问题推荐使用下面的方法二。方法二使用fork...join_anydisable fork加隔离层通过额外包裹一层fork...join将disable fork的作用范围限定在内部避免影响外部线程module tb_top; task taskA(); $display([%0t] taskA started, $time); #100; $display([%0t] taskA completed, $time); endtask task taskB(); $display([%0t] taskB started, $time); #50; $display([%0t] taskB completed, $time); endtask initial begin // 外层 fork...join 用于隔离 disable fork 的作用范围 fork begin fork taskA(); taskB(); join_any disable fork; // 只会 disable 内层 fork 派生的线程 $display([%0t] Both taskA and taskB have been disabled/finished, $time); end join $display([%0t] Continue with other work..., $time); end endmodule方法三使用命名 Block disable使用命名块可以精确控制要 disable 的目标module tb_top; task taskA(); $display([%0t] taskA started, $time); #100; $display([%0t] taskA completed, $time); endtask task taskB(); $display([%0t] taskB started, $time); #50; $display([%0t] taskB completed, $time); endtask initial begin fork : parallel_block begin : blk_a taskA(); end begin : blk_b taskB(); end join_any // 精确 disable 命名的 fork block disable parallel_block; $display([%0t] Both taskA and taskB have been disabled/finished, $time); end endmodule仿真输出以方法二为例[0] taskA started [0] taskB started [50] taskB completed [50] Both taskA and taskB have been disabled/finished [50] Continue with other work...要点总结方法关键语法优点注意事项方法一join_anydisable fork简洁可能误杀其他线程方法二外层fork begin...end join隔离推荐安全隔离多一层嵌套方法三命名块 disable block_name精确控制需要命名管理实际项目中推荐方法二既安全又清晰是 UVM/验证环境中最常用的模式。DeepSeek v4 pro-成功花费0.0496在芯片验证中经常需要并行启动多个任务并当其中任一任务完成时立即终止其余任务。SystemVerilog 中常见的实现方式有fork...join_anydisable fork以及基于process类的精细控制。下面给出两种典型写法并说明各自的适用场景。方法一fork...join_anydisable fork简洁、常用module tb; initial begin // 在独立的 begin...end 块内使用 fork可限制 disable fork 的影响范围 begin : isolated_fork_block fork taskA(); taskB(); join_any disable fork; // 终止本块内所有活动的子进程即 taskA / taskB end $display(One of the tasks finished, the other is disabled.); // 继续后续测试逻辑... end // 示例 taskA实际工作中可替换为真实的验证任务 task taskA(); $display(taskA started); #10ns; // 模拟耗时操作 $display(taskA finished); endtask // 示例 taskB task taskB(); $display(taskB started); #5ns; // 模拟耗时更短的任务 $display(taskB finished); endtask endmodule说明fork...join_any等待taskA与taskB中任一完成即解除阻塞。disable fork会杀死当前线程即initial块中所有尚未完成的子进程。为避免误杀同一initial块中的其他并行进程通常把fork封装在一个独立的begin...end块中并立即使用disable fork。优点代码简洁适合大多数验证场景。注意如果taskA/taskB内部又开启了子forkdisable fork也会终止那些子孙进程有时这正是期望的行为有时则需要避免。方法二使用process类精确控制推荐用于复杂环境当需要精确地只终止taskA和taskB而不影响其他可能存在的并行进程时可以保存进程句柄并单独 kill。module tb; initial begin process pA, pB; fork begin pA process::self(); // 获取当前进程句柄 taskA(); end begin pB process::self(); taskB(); end join_any // 哪个没完成就 kill 哪个 if (pA ! null pA.status ! process::FINISHED) pA.kill(); if (pB ! null pB.status ! process::FINISHED) pB.kill(); $display(One task completed, the other was killed precisely.); end task taskA(); $display(taskA started); #10ns; $display(taskA finished); endtask task taskB(); $display(taskB started); #5ns; $display(taskB finished); endtask endmodule说明process::self()返回当前进程的句柄。status属性可以检查进程是否已经结束FINISHED、KILLED等。kill()方法可以精确终止特定进程不影响其他并行进程。优点控制粒度细不会误杀其他进程适合复杂验证环境。要求需要仿真器支持 IEEE 1800-2012 及以上标准。总结对于大多数芯片验证场景方法一足够使用且书写快捷当验证环境中有多个并行的fork或需要精细控制时推荐采用方法二以避免副作用。

相关文章:

使用不同模型相同提示词写一段systemverilog代码,deepseek太让人惊喜!

熟悉systemverilog的朋友应该都知道fork join_any disable有一个小陷阱,就是可能会误kill其他进程,所以需要一个guard fork。突然奇想,看看哪个大模型可以不经过提醒(这个很重要,因为我们大概率不会把这个加入到提示词&#xff01…...

AI 时代为什么所有人都在用 Markdown 写东西

如果你最近开始频繁用 AI 工具,会发现一个现象:不管是 ChatGPT 还是其他大模型,输出的内容几乎都是 Markdown 格式——标题用 #,重点用 **,代码用反引号包起来。 Markdown 是一种轻量级的标记语言,1.0 版本…...

复制粘贴:那些年芯片工程师的“黑科技“

这是一个真实的笑话,也是一段不算久远的历史。大模型出现之前,芯片工程师提升效率的核心手段,说出来让人笑中带泪:CtrlC,然后CtrlV。那时候的工程师是认真在维护一个"代码片段收藏夹"的。一个写了三年RTL的工…...

GHelper终极指南:华硕笔记本轻量级性能调控开源工具

GHelper终极指南:华硕笔记本轻量级性能调控开源工具 【免费下载链接】g-helper Lightweight Armoury Crate alternative for Asus laptops with nearly the same functionality. Works with ROG Zephyrus, Flow, TUF, Strix, Scar, ProArt, Vivobook, Zenbook, Expe…...

工业摇摆筛筛分精度不达标怎么调试整改

——从现象判断到解决落地的实操指南一、精度不达标:先判断“属于哪一类问题”摇摆筛在化工、食品、医药、建材等行业中,常用于粉料与颗粒的分级作业。当用户发现筛分精度下降时,需要先区分问题的具体表现——不同的现象对应不同的排查方向。…...

共探 AI 转型新路径,数式科技黄梦瑶在 “走进云谷中心” 活动分享核心实战经验

近日,“智领未来・名企对标行”系列活动(第五期:走进云谷中心)隆重召开。本次活动汇聚了数百位制造业CIO、CEO、CTO及行业专家,围绕“AI赋能制造业高质量发展”展开深度探讨。作为深耕企业AI转型培训与咨询的专业机构&…...

【审计专栏】【社会科学】【管理科学】第一百篇 人的需求来源01

人的需求来源 编号 类型 需求模型 人对其他个体/群体/多群体的需求来源和需求形式的数学方程式 人自身的需求匹配 关联知识和法律法规及监管 1 宏观社会 国家利益模型 需求来源:主权安全、领土完整、发展利益、国际地位。形式:博弈论中的效用最大化,如 U_national=…...

车规级芯片缺料怎么办?深智微华润微授权代理提供元器件一站式配单与停产替代

汽车终端工厂的采购经理、硬件工程师,以及方案公司、代工厂的物料计划员,正面临一个共性难题:英飞凌、ST、NXP等车规级芯片交期动辄26周以上,大量成熟制程的工业级功率器件因产线调整突然停产,BOM表频繁"缺料断链…...

陆空两栖复合结构飞行器总体设计与PID控制系统【附模型】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,可以私信,或者点击《获取方式》 (1)纵列式共轴变桨距与全向轮…...

无人机无人车空地协同巡逻任务分配与路径规划【附程序】

✨ 本团队擅长数据搜集与处理、建模仿真、程序设计、仿真代码、EI、SCI写作与指导,毕业论文、期刊论文经验交流。 ✅ 专业定制毕设、代码 ✅ 如需沟通交流,可以私信,或者点击《获取方式》 (1)考虑实际路网约束与动态汇…...

AI赋能人才分析:从数据到决策的智能人力资源管理实践

1. 项目概述:当AI遇见人才管理在人力资源这个传统上高度依赖“人”的经验和直觉的领域,一场静默的革命正在进行。过去,一位资深HR经理判断一份简历是否合适,或者预测哪位员工有离职风险,很大程度上依赖于其多年的行业积…...

基于文本挖掘的课程技能图谱构建:从数据采集到可视化分析

1. 项目概述:从课程列表到技能地图的旅程 最近在帮几位想申请荷兰数据科学和人工智能硕士的朋友梳理信息,发现了一个挺有意思的痛点。大家面对各个大学官网上琳琅满目的课程列表,比如“高级机器学习”、“大数据系统”、“自然语言处理”&…...

基于CRealNVP深度生成模型的gNTS过程拟合与Quanto期权定价实践

1. 项目概述:当深度生成模型遇上复杂衍生品定价最近在琢磨一个挺有意思的课题,就是怎么把前沿的深度生成模型,具体来说是CRealNVP,给“塞”进金融衍生品定价这个传统上由随机微分方程和蒙特卡洛模拟主导的领域里,去解决…...

科研绘图别再乱找素材了

作为常年和学术插图打交道的基础方向博士生,我见过太多朋友实验数据很漂亮,最后因为绘图不规范被编辑打回,甚至因为版权问题耽误接收——其实科研绘图不是让你当设计师,只要摸对规律,选对工具,完全可以快速…...

AI与机器人如何重塑工资不平等?嵌套CES模型的经济学解析

1. 项目概述:当AI开始“卷”高薪岗位最近几年,AI,尤其是以ChatGPT为代表的大语言模型,已经从一个科幻概念变成了我们工作流中的日常工具。作为一个长期关注技术与经济交叉领域的人,我观察到一种普遍的焦虑:…...

数据库性能优化的两大基石

数据库性能优化是一个永恒的话题,DBA们似乎永远在讨论它。究其原因,性能问题是最终用户抱怨最多的一类技术问题——没有之一。如果DBA能迅速解决性能瓶颈,他们就是团队里的英雄;如果迟迟无法定位问题,再好的架构设计也…...

本地大模型轻量级WebUI部署指南:极简架构与实战解析

1. 项目概述:一个为本地大模型打造的轻量级Web界面最近在折腾本地部署的大语言模型(LLM),比如Llama、Qwen这些,相信很多朋友都有同感。虽然模型本身能力越来越强,但交互方式往往还停留在命令行终端&#xf…...

PTO Tile Intrinsics 编程模型

PTO Tile Intrinsics 编程模型 【免费下载链接】pto-isa Parallel Tile Operation (PTO) is a virtual instruction set architecture designed by Ascend CANN, focusing on tile-level operations. This repository offers high-performance, cross-platform tile operations…...

CANN/pyasc块内最小值归约API文档

asc.language.basic.block_reduce_min 【免费下载链接】pyasc 本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。 项目地址: https://gitcode.com/cann/pyasc asc.language.basic.…...

CANN/pyasc加法ReLU类型转换API

asc.language.basic.add_relu_cast 【免费下载链接】pyasc 本项目为Python用户提供算子编程接口,支持在昇腾AI处理器上加速计算,接口与Ascend C一一对应并遵守Python原生语法。 项目地址: https://gitcode.com/cann/pyasc asc.language.basic.add…...

AI监管政策分析框架:从技术不确定性到全球治理的合规导航

1. 项目概述:当AI撞上“红绿灯”最近和几个做AI产品落地的朋友聊天,大家不约而同地提到了同一个词:合规。以前我们聊的都是模型精度、算力成本、用户增长,现在话题的焦点变成了“这个功能会不会触发监管红线”、“数据跨境怎么处理…...

数据驱动的可解释AI:从特征归因到样本影响分析的实践指南

1. 项目概述:当数据挖掘遇见可解释AI在深度学习的浪潮席卷了几乎所有领域之后,我们获得了一个又一个性能惊人的“黑箱”模型。作为一名长期在数据科学一线工作的从业者,我见证了模型精度从90%提升到99.9%的激动,也亲历了当业务方或…...

基于MCP协议构建MeiliSearch AI助手集成:安全搜索与工作流自动化

1. 项目概述:一个为MeiliSearch打造的MCP服务器如果你正在使用MeiliSearch这个高性能的开源搜索引擎,并且同时是AI Agent生态(比如Claude、Cursor等)的深度用户,那么你很可能遇到过这样的痛点:如何在AI工作…...

修改寄存器的位操作方法

某一位&#xff08;不分组&#xff09;&#xff1a;对变量某位清零&#xff1a; a & ~(1 <<N); 对变量某位置1&#xff1a; a | (1 <<N); 对变量某位取反&#xff1a; a ^ (1 <<N); 分组&#xff08;连续位&#xff09;的情况&#xff1a;A <…...

AI责任归属:从算法黑箱到法律虚构的治理路径

1. 项目概述&#xff1a;当算法“犯错”&#xff0c;谁该负责&#xff1f;最近和一位做AI产品经理的朋友聊天&#xff0c;他提到一个让他头疼的案例&#xff1a;他们公司的一款用于简历初筛的AI工具&#xff0c;在一次使用中&#xff0c;意外地将一批来自某所顶尖高校的毕业生简…...

CANN电力负荷预测算子库

【免费下载链接】elec-ops-prediction elec-ops-prediction 是 CANN 社区 Electrical Engineering SIG&#xff08;电力行业兴趣小组&#xff09;旗下的电力负荷预测算子库&#xff0c; 聚焦于电力系统运行、调度、规划与市场交易中的预测核心需求&#xff0c;面向华为昇腾&…...

创业公司如何借助Taotoken快速原型验证多个AI创意

&#x1f680; 告别海外账号与网络限制&#xff01;稳定直连全球优质大模型&#xff0c;限时半价接入中。 &#x1f449; 点击领取海量免费额度 创业公司如何借助Taotoken快速原型验证多个AI创意 对于资源有限的创业团队而言&#xff0c;产品构思阶段往往伴随着大量的不确定性…...

对抗性可解释AI:攻击原理、防御策略与工程实践

1. 项目概述&#xff1a;当可解释性遭遇对抗攻击在机器学习模型日益渗透到高风险决策领域的今天&#xff0c;可解释人工智能&#xff08;XAI&#xff09;被寄予厚望&#xff0c;成为连接复杂算法与人类信任的桥梁。无论是医生需要理解AI辅助诊断的依据&#xff0c;还是法官需要…...

2026年网络安全自学入门(超详细)从入门到精通学习路线规划,学完即可就业!_网安学习路线

随着数字化转型加速与网络威胁常态化&#xff0c;网络安全已成为数字经济的 “安全底座”。2026 年行业数据显示&#xff0c;全球网络安全人才缺口超 300 万&#xff0c;国内缺口达数百万&#xff0c;平均起薪较 IT 行业高出 20%-30%&#xff0c;且呈现 “越老越值钱” 的职业发…...

OpenClaw AI助手架构解析:模块化设计、记忆系统与自动化实践

1. 项目概述&#xff1a;一个AI助手的“数字大脑”与自动化中枢如果你正在构建或研究一个功能完备的AI助手&#xff0c;那么如何管理它日益增长的“记忆”、行为准则、技能库和自动化任务&#xff0c;绝对是一个甜蜜的烦恼。今天要聊的这个项目——luovicter-collab/openclaw-d…...