我看到了以下形式的一些陈述。#`DEL在这里是什么意思?我无法轻易找到它的含义,因为它包含一个特殊字符。
cmd <= #`DEL 32'b0
有问题的代码将分配延迟了一些。#`DEL(由于反引号不能使用内联编码)有 3 个部分。首先,# 表示这是一个延迟语句。接下来,反引号(~ 下方的字符)表示 Verilog 中的预处理器定义;在您正在编译的代码中的某处,您将拥有以下几行内容:
`define DEL 1ns
其中 1ns 可能是任何时间值,这将是延迟。在这里我们应该清楚,在 DEL 之前应该有一个反引号(在 ~ 下),而 32'b0 使用单引号。
这是一个延迟声明。
将右侧的值分配延迟到左侧定义的数量,在这种情况下延迟 cmd 变为零。
可以以任何时间或实时格式指定延迟,#1
如 ...
#1ns, #1us, #1ms
SystemVerilog 中提供了更多功能。
一个更典型的情况是右手边是非常数的。
assign a = #1ns b;
这里 a 将滞后 b 1 ns。
可以通过搜索“delay_value”在语言参考手册LRM中找到对此的参考。