用 let construct 替换 `define

replace `define with let construct

我试图避免使用 `define 预处理器并开始使用 "let" 因为它是一种语言结构。

这是我的例子:

`define MY_REGISTER_RANGE 15:0

logic [`MY_REGISTER_RANGE] my_array;

我怎样才能对 let construct 做同样的事情?我的代码非常简单,但它假设我是`include 定义我的宏 MY_REGISTER_RANGE 的文件(在另一个文件中)。

谢谢。

您只能使用 let 替换某些类型的表达式。你不能只定义一个范围。

您应该使用 typedef 而不是 let

typedef logic [15:0] MY_REGISTER_t;
MY_REGISTER_t my_array;

在这种特殊情况下,您不需要 let 结构。此外,构造与变量声明无关。

您可以开始使用参数而不是文本宏。例如

parameter MY_REGISTER_WIDTH = 16;
...
logic [MY_REGISTER_WIDTH-1:0] my_array;

let 构造定义了一个包含单个表达式的简单函数。在这方面,它可以用来替换某些类型的宏,例如

`define MULT(A,B)   A * B
...
R = `MULT(O1,O2);

可以替换为

let MULT(A,B) = A * B;
...
R = MULT(O1,O2);