P
Puneet Dhillon
Guest
I have a simple 2-signal hand-shake interface like this:
interface ready_valid_ifc(input clk);
wire ready;
wire valid;
modport sender(input clk,ready, output valid);
modport receiver(input clk,valid, output ready);
endinterface
I want to use this interface as a basic block in another interface
that actually specifies the data I want to transmit between sender and
receiver. E.g. I want to do something like below:
interface memory_bus_ifc(input clk);
wire address;
wire rd_data, wr_data;
wire command;// 0 : read, 1 : write
wire completion; // 0 : read cmp, 1 : write cmp
ready_valid_ifc to_mem(clk);// handshake from controller to memory
ready_valid_ifc from_mem(clk);// handshake from memory to controller
modport controller(input clk,completion,rd_data, output
address,command,wr_data, ref to_mem.sender,from_mem.receiver);
modport memory(input clk,address,command,wr_data, output
completion,rd_data, ref from_mem.sender,to_mem.receiver);
endinterface
However, this does not compile with either Modelsim or VCS. Is there
any way to achieve something like this?
interface ready_valid_ifc(input clk);
wire ready;
wire valid;
modport sender(input clk,ready, output valid);
modport receiver(input clk,valid, output ready);
endinterface
I want to use this interface as a basic block in another interface
that actually specifies the data I want to transmit between sender and
receiver. E.g. I want to do something like below:
interface memory_bus_ifc(input clk);
wire address;
wire rd_data, wr_data;
wire command;// 0 : read, 1 : write
wire completion; // 0 : read cmp, 1 : write cmp
ready_valid_ifc to_mem(clk);// handshake from controller to memory
ready_valid_ifc from_mem(clk);// handshake from memory to controller
modport controller(input clk,completion,rd_data, output
address,command,wr_data, ref to_mem.sender,from_mem.receiver);
modport memory(input clk,address,command,wr_data, output
completion,rd_data, ref from_mem.sender,to_mem.receiver);
endinterface
However, this does not compile with either Modelsim or VCS. Is there
any way to achieve something like this?