gpt4 book ai didi

interface - 系统Verilog : Passing interfaces to functions/tasks (for synthesis!)

转载 作者:行者123 更新时间:2023-12-02 23:52:45 30 4
gpt4 key购买 nike

是否有任何可综合的方法将接口(interface)传递给函数或任务?我的用例如下:我有一个包含多个函数的包(尽管我可以将它们转换为任务,如果这有帮助:)),所有这些函数都可能在模块中使用,并且可能需要访问模块的端口。现在,通常我只是将所有端口分组到一个接口(interface)中,将其添加到模块中,并将其作为虚拟的传递给函数。但是,我的综合工具手册提到不支持virtual

我错过了什么吗?一定有一种方法可以为任务提供端口进行综合,类似于 VHDL 的 signal 参数?

一些示例代码:

module mymod (
input logic clk,
input logic rst,
input uint16_t adr,
input bit cyc,
input uint32_t dat_m,
input bit stb,
input bit we,
output bit ack,
output uint32_t dat_s
);

always_comb begin
mypack::do_something(a, b, c, adr, cyc, dat_m, stb, we, ack, dat_s);
endmodule

理想情况下,任务 mypack::do_something 能够将端口用作端口,即等待它们的更改、向它们写入值等;基本上,通过将它们作为信号参数(而不是变量常量参数)传递,您可以在VHDL中实现相同的效果。

最佳答案

通常,您会在接口(interface)定义本身中声明任何特定于接口(interface)的函数。这样,任何任务或函数声明都已经在范围内具有接口(interface)端口。

interface int1(ports...);
function func1(args...);
// Do stuff with ports and args
endfunction
endinterface

module mod1(input wire clk,interface intf);
...
always @(posedge clk)
intf.func1(module_specific_data);
...
endmodule

关于interface - 系统Verilog : Passing interfaces to functions/tasks (for synthesis!),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14439589/

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