SystemVerilog中对应VHDL的null关键字的等效写法是什么?
SystemVerilog中对应VHDL
null 的无操作写法及代码转换 在SystemVerilog里没有和VHDL null 完全对应的关键字,但实现“不执行任何操作”的效果非常简单,常见的几种写法如下,同时附上你提供的VHDL代码对应的SystemVerilog版本:
转换后的完整代码
// 组合逻辑场景用阻塞赋值=,时序逻辑用非阻塞赋值<= case (OPCODE) 3'b001: TmpData = RegA & RegB; 3'b010: TmpData = RegA | RegB; 3'b100: TmpData = ~RegA; default: ; // 等价于VHDL的null,无任何操作 endcase
几种等价的无操作写法
- 直接留空分支:把
default: ;改成default:,后面啥也不写,效果完全一样,是最简洁的写法 - 显式空语句
;:像上面代码里那样写default: ;,明确表示这里是有意不执行任何操作,可读性更好 $null(不推荐):语法上可以写default: $null;,但$null主要用于处理指针、句柄等空值场景,逻辑分支里用它属于过度冗余,一般没人这么写
额外说明
- SystemVerilog里用
default代替VHDL的others作为默认分支(当然也支持others,但default是更通用的写法) - 赋值符号选择:原VHDL用
:=是信号赋值,对应SystemVerilog的非阻塞赋值<=(时序逻辑);如果是组合逻辑,用阻塞赋值=即可,根据你的实际场景调整
内容的提问来源于stack exchange,提问作者quantum231
相关产品推荐
相关产品推荐

