Nodes and I/O ports.

.

Use the concept of nodes, where a resource is situated and then scheduled.

  • So far, a node is a binary value in a user variable at a point in time (cycle).

  • Next, nodes become locations where an expression (value of any datatype) may be held for one cycle.

  • Then we consider nodes as our interface terminals between sections. Hence the same scheduler approach designs protocols.

  • Finally, we allow nodes to contain arithmetic functions or other complete, separately synthesised subsystems.

    Protocols (programs) use an interface made of a number of nodes. Sections sport nodes.

    Example Syntax for H2

    Interface

    We define interfaces by listing their nodes and the protocol to be used or created.

    
               interface bunny
               {
    	     neutral:
    		   protocol hopper; // existing or generated now.
    
    		   assert always dvalid->ack;    // 
    		   always ~dvalid -> terms == X; // Allow declarations everwhere
    	     forward:
    		   node out [2:0] terms;
    		   node out ack;
    		   node in dvalid;
    
    	     reverse:
    		   // The nodes are implicitly defined here
    		   // but with the reverse direction.
               }
    

    Section

    Example section definition. Uses a number of interfaces.

    We do not optimise over section boundaries at the moment, but will add support and control for that.

    
               section mysource
               {
                  interface bunny a;
               }
    
               section mytranscoder      // default operation will be the identity data conservation.
               {
                  interface bunny b;
                  interface bunny c;
               }
    
               section mysink
               {
                 interface bunny d;
               }
    
               // Top-level section for simulation
               section system
    	   {
    	    interface bunny x, y;
    	    mysource s1(.a(x));
    	    mytranscoder tc1(.b(x), .c(y));
    	    mysink s2(.d(y);
     	  }
    

    Eternal Interoperation

    The node syntax requires some extension to provide defaults when interoperating with newer versions.


  • Home.           SRG Talk. 12 March 2003. DJ Greaves. www.cl.cam.ac.uk.