如何参数化verilog属性(* *)?
How to parameterize verilog attribute (* *)?
如何根据模块参数声明具有 verilog 属性的信号?
我试过了:
if (KEEP_VERILOG) begin
(*keep="true"*)reg mysig;
end else begin
reg mysig;
end
// doing something with mysig
我得到一个合成错误:mysig is not declared
您不能从该块外部引用未命名的 begin/end
块中声明的信号。为块命名(并且您必须为两个块指定相同的名称以用于您想要执行的操作)并在参考中使用该名称。
if (KEEP_VERILOG) begin : blockname
(*keep="true"*)reg mysig;
end else begin : blockname
reg mysig;
end
// do something with blockname.mysig
属性规范允许使用常量表达式。因此你可以直接在属性中使用模块参数:
(*keep=KEEP_VERILOG*) reg mysig;
属性的值将具有参数的值。
如何根据模块参数声明具有 verilog 属性的信号?
我试过了:
if (KEEP_VERILOG) begin
(*keep="true"*)reg mysig;
end else begin
reg mysig;
end
// doing something with mysig
我得到一个合成错误:mysig is not declared
您不能从该块外部引用未命名的 begin/end
块中声明的信号。为块命名(并且您必须为两个块指定相同的名称以用于您想要执行的操作)并在参考中使用该名称。
if (KEEP_VERILOG) begin : blockname
(*keep="true"*)reg mysig;
end else begin : blockname
reg mysig;
end
// do something with blockname.mysig
属性规范允许使用常量表达式。因此你可以直接在属性中使用模块参数:
(*keep=KEEP_VERILOG*) reg mysig;
属性的值将具有参数的值。