blob: a14049cf848b2ebd1df1b5353081561df947d7ed [file] [log] [blame]
//- @Bus defines/binding Bus
//- Bus.node/kind interface
interface Bus;
//- @Addr defines/binding Addr
//- @Data defines/binding Data
logic [7:0] Addr, Data;
//- @RWn defines/binding Rwn
logic RWn;
endinterface
//- @TestRAM defines/binding _
module TestRAM;
x y;
//- @#0Bus ref Bus
//- @TheBus defines/binding TheBus
Bus TheBus();
//- @mem defines/binding Mem0
logic[7:0] mem[0:7];
//- @#0RAM ref Ram
//- @TheRAM defines/binding _
//- @MemBus ref MemBus
//- @TheBus ref TheBus
RAM TheRAM (.MemBus(TheBus));
initial
begin
//- @TheBus ref TheBus
//- @RWn ref Rwn
TheBus.RWn = 0;
//- @TheBus ref TheBus
//- @Addr ref Addr
TheBus.Addr = 0;
//- @#0I defines/binding I
//- @#1I ref I
//- @#2I ref I
for (int I=0; I<7; I++)
//- @#0TheBus ref TheBus
//- @#0Addr ref Addr
//- @#1TheBus ref TheBus
//- @#1Addr ref Addr
TheBus.Addr = TheBus.Addr + 1;
//- @TheBus ref TheBus
//- @RWn ref Rwn
TheBus.RWn = 1;
//- @TheBus ref TheBus
//- @Data ref Data
//- @mem ref Mem0
TheBus.Data = mem[0];
end
endmodule
//- @RAM defines/binding Ram
//- @#0Bus ref Bus
//- @MemBus defines/binding MemBus
module RAM (Bus MemBus);
//- @mem defines/binding Mem
logic [7:0] mem[0:255];
always @*
//- @MemBus ref MemBus
//- @RWn ref Rwn
if (MemBus.RWn)
//- @#0MemBus ref MemBus
//- @Data ref Data
//- @#1MemBus ref MemBus
//- @Addr ref Addr
//- @mem ref Mem
MemBus.Data = mem[MemBus.Addr];
else
//- @#0MemBus ref MemBus
//- @Addr ref Addr
//- @#1MemBus ref MemBus
//- @Data ref Data
//- @mem ref Mem
mem[MemBus.Addr] = MemBus.Data;
endmodule