[sv-ec] Interface Class discussion today

From: Alsop, Thomas R <thomas.r.alsop@intel.com>
Date: Mon Nov 08 2010 - 11:01:08 PST

For discussion today... I tried adding another type to the PutImp below and I want to walk through it to get clarification on if this makes sense, if this is what was asked for and how to put rules behind it, as requested two weeks ago. More to come. -Tom

interface class PutImp#(type T = logic, string MyPutSignal = "a");
  pure virtual task void put(T MyPutSignal);
endclass

interface class GetImp#(type T = logic);
  pure virtual task T get();
endclass

class Fifo#(type T = logic, DEPTH = 1) implements PutImp#(T), GetImp#(T);
   T [DEPTH-1:0] myFifo;
   virtual task void put(T, a);
      // Put implementation
   virtual task T get();
      // Get implementation
endclass

class MyQueue(type T = logic, DEPTH = 1, string MyPutSignal = "a");
   T [DEPTH-1:0] PipeQueue[$];
   virtual function void deleteQ();
       // Delete implementation
   endfunction
endclass

class Fifo extends MyQueue#(T, DEPTH), implements PutImp#(T), GetImp#(T);
   virtual task void put(T, b);
      // Put implementation
   virtual task T get();
      // Get implementation
endclass

Need more interesting types instead of just 'T'. Pass in two different types, have put and get use two different types working in each case. Why not explicitly state this?. So we need rules behind them and not just examples.

-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Mon Nov 8 11:04:30 2010

This archive was generated by hypermail 2.1.8 : Mon Nov 08 2010 - 11:04:41 PST