用 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);
我试图避免使用 `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);