Czy istnieje jakiś syntezowalny sposób przekazania interfejsu do funkcji lub zadania? Mój przypadek użycia jest następujący: Mam pakiet z kilkoma funkcjami (chociaż mógłbym przekonwertować je na zadania, jeśli to pomaga :)), z których wszystkie mogą być używane w module i mogą potrzebować dostępu do portów modułu. Teraz zwykle zgrupowałem wszystkie porty w interface
, dodałem je do modułu i przekazałem jako funkcję virtual
. Jednak podręcznik mojego narzędzia do syntezy wspomina, że virtual
nie jest obsługiwany.SystemVerilog: przekazywanie interfejsów do funkcji/zadań (do syntezy!)
Czy brakuje mi czegoś? Musi istnieć sposób na zapewnienie portów dla zadań do syntezy, podobnych do argumentów VHDL: signal
?
Niektóre przykładowy kod:
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
Idealnie zadanie mypack::do_something
byłby w stanie wykorzystać porty jako porty, to znaczy czekać na zmiany zachodzące na nich napisać im wartości, etc; w zasadzie to samo można osiągnąć w VHDL, przekazując je jako argumenty signal
(w przeciwieństwie do argumentów variable
lub constant
).
Czy możesz dodać kod? –