![](/img/trans.png)
[英]Could we use extern "C" in C file without #ifdef __cplusplus?
[英]Can we use conditions in ifdef MACROS in C or SystemVerilog?
我想要那样的东西
`ifdef N_O > N_I
`define GREATER 1
`else
`define LESSER 1
`endif
却做不到。 任何解决方案或阅读?
我努力做到这一点,但做不到。
Verilog 不提供这样的工具。 文本宏只有一种可能的操作:检查它们是否存在。 因此有`ifdef
、 `ifndef
和`elsif
。 所有只接受一个参数,即文本宏的名称。
然而,在许多情况下,可以通过使用generate
verilog 特性来弥补这种功能上的不足。 最好使用此功能,因为 Verilog 控制声明的语法和范围。
以下是使用生成功能的示例:
module mod #(parameter N_0=1, parameter N_1=2)(input logic in1, in2, output logic out);
if (N_1 > N_2) begin
always_comb
out = in1;
end
else begin
always_comb
out = in2;
end
endmoudle
这是一个演示该功能的虚构示例,可以在没有“生成”块的情况下实现:
alwas_comb begin
if (N_1 > N_2) out = in1;
else out = in2;
end
然而,生成结构并不能解决所有问题,因此经常需要混合使用文本宏和生成块。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.