gpt4 book ai didi

syntax - 在模块声明中选择接口(interface)参数

转载 作者:行者123 更新时间:2023-12-05 01:00:06 25 4
gpt4 key购买 nike

假设我有一个参数化接口(interface),例如

interface Foo;
parameter WIDTH=8;
logic [WIDTH-1:0]data;
endinterface

现在我想在一个模块中使用宽度为(比如说)16的这些接口(interface)之一。我怎样才能做到这一点?我试过
module foo(Foo #(.WIDTH(16)) in, output logic [15:0]out);
assign out=in.data;
endmodule

但得到一个错误:
Error (10170): Verilog HDL syntax error at test.sv(6) near text "#";  expecting ")"

最佳答案

当前的 SystemVerilog 语法 BNF 不允许您指定接口(interface)端口的参数特化。它将从连接到端口的实例中获取参数化

module foo(Foo in, output logic [in.WIDTH-1:0] out);
assign out = in.data;
endmodule

interface Foo #(
parameter WIDTH=8
);
logic [WIDTH-1:0]data;
endinterface : Foo

module top;
Foo#(.WIDTH(16)) f();
logic [15:0] o;
foo dut(f,o);
endmodule : top

您可以对特定参数化进行详细检查,如果检查失败,则会产生编译错误
module foo(Foo in, output logic [in.WIDTH-1:0] out);
if (in.WIDTH != 16) $error("Width not 16");

assign out = in.data;
endmodule
if上面的语句不是程序语句,它是 generate-if堵塞

关于syntax - 在模块声明中选择接口(interface)参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30203382/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com