Có cách tổng hợp nào để truyền một giao diện đến một chức năng hay một nhiệm vụ không? Trường hợp sử dụng của tôi là như sau: Tôi có một gói với một số chức năng (mặc dù tôi có thể chuyển đổi chúng thành công việc, nếu điều đó giúp :)), tất cả đều có thể được sử dụng trong mô-đun và có thể cần truy cập các cổng của mô-đun. Bây giờ, thông thường tôi sẽ chỉ nhóm tất cả các cổng trong một interface
, thêm nó vào mô-đun và chuyển nó thành virtual
cho hàm. Tuy nhiên, hướng dẫn sử dụng công cụ tổng hợp của tôi đề cập rằng virtual
không được hỗ trợ.SystemVerilog: Truyền các giao diện cho các chức năng/nhiệm vụ (để tổng hợp!)
Tôi có thiếu gì không? Phải có cách để cung cấp cổng cho các nhiệm vụ tổng hợp, tương tự như đối số signal
của VHDL?
Một số mã ví dụ:
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
Lý tưởng nhất, nhiệm vụ mypack::do_something
sẽ có thể sử dụng các cảng như cảng, ví dụ: chờ đợi những thay đổi trên chúng, viết giá trị cho họ, vv; về cơ bản, giống như bạn đạt được trong VHDL bằng cách chuyển chúng thành đối số signal
(ngược với đối số variable
hoặc constant
).
Bạn có thể đăng một số mã không? –