【发布时间】:2013-01-21 13:20:58
【问题描述】:
是否有任何可综合的方式将接口传递给函数或任务?我的用例如下:我有一个包含多个功能的包(尽管我可以将它们转换为任务,如果有帮助的话:)),所有这些都可能在模块中使用并且可能需要访问模块的端口。现在,通常我只是将所有端口分组到interface 中,将其添加到模块中,然后将其作为virtual 传递给函数。但是,我的综合工具手册中提到不支持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 将能够将端口用作端口,即等待它们的更改、向它们写入值等;基本上,通过将它们作为 signal 参数传递(而不是 variable 或 constant 参数)在 VHDL 中实现的效果相同。
【问题讨论】:
标签: interface system-verilog synthesis