Digamos que tengo una interfaz, me gustaría
interface myIf;
logic a;
logic b;
logic c;
logic d;
logic e;
logic f;
endinterface
interface mypartIf;
logic b;
logic c;
logic d;
endinterface
module top (
input clk,
myIf interf
)
mypartIf part();
always_ff @(posedge clk) begin
part.* <= interf.*; // should match b,c,d names in both interfaces
end
endmodule
Por supuesto, este ejemplo no funciona.
Podría reemplazar mypartIf
con un struct
y registrar el struct
, pero en ese caso tendré un espacio de nombres diferente.
typedef struct packed {
logic b;
logic c;
logic d;
} mypartIf;
interface myIf;
logic a;
mypartIf othernamespace; // HERE
logic e;
logic f;
endinterface
module top (
input clk,
myIf interf
)
mypartIf part;
always_ff @(posedge clk) begin
part <= interf.othernamespace; // This should work
end
endmodule
Me gustaría hacerlo lo más simple posible, la coincidencia de nombres sería una buena solución sin agregar struct
. Además, agregar struct
no me permite usar campos de cruce.
¿Cuáles son las mejores prácticas para utilizar elementos de cruce como este?