Esiste un modo sintetizzabile per passare un'interfaccia a una funzione o un'attività? Il mio caso d'uso è il seguente: Ho un pacchetto con diverse funzioni (anche se potrei convertirle in attività, se questo aiuta :)), tutte cose che potrebbero essere usate in un modulo e potrebbe aver bisogno di accedere alle porte del modulo. Ora, di solito raggrupperei tutte le porte in un interface
, aggiungerlo al modulo e passarlo come virtual
alla funzione. Tuttavia, il manuale del mio strumento di sintesi indica che virtual
non è supportato.SystemVerilog: passaggio di interfacce a funzioni/attività (per sintesi!)
Mi manca qualcosa? Ci deve essere un modo per fornire le porte alle attività per la sintesi, in modo simile agli argomenti signal
di VHDL?
Alcuni codici di esempio:
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
Idealmente, il compito mypack::do_something
sarebbe in grado di utilizzare le porte come porte, cioè attendere per modifiche su di loro, scrivere i valori ad essi, ecc; fondamentalmente, lo stesso si otterrebbe in VHDL passandoli come argomenti signal
(a differenza degli argomenti variable
o constant
).
Puoi pubblicare un po 'di codice? –