| interface CacheSetInterface( | |
| input logic [7:0] request, | |
| output logic [7:0] response | |
| ); | |
| modport CacheSet( | |
| input request, | |
| output response | |
| ); | |
| endinterface | |
| module CacheWithInterface( | |
| input logic [7:0] dataIn, | |
| output logic [7:0] dataOut, | |
| input logic clock, clear | |
| ); | |
| logic [7:0] myRequest; | |
| logic [7:0] myResponse; | |
| CacheSetInterface dataInterface( | |
| .request(myRequest), | |
| .response(myResponse) | |
| ); | |
| CacheSet set( | |
| .data(dataInterface.CacheSet), | |
| .clock, | |
| .clear | |
| ); | |
| assign myRequest = dataIn; | |
| assign dataOut = myResponse; | |
| endmodule | |
| module CacheSet ( | |
| CacheSetInterface.CacheSet data, | |
| input logic clock, clear | |
| ); | |
| always_ff @(posedge clock) | |
| if(clear) | |
| data.response <= 8'h0; | |
| else | |
| data.response <= ~data.request; | |
| endmodule |