While reviewing the information model, we have found some issues with the 
interface, refobj,  iodecl diagrams.
1. RefObj diagram
---------------------------
This diagram apparently models both interface port references and ref ports.
a)
It looks like the method vpiInterfaceConn would serve both interface port 
references and ref ports. If it does intent to return the wire or variable 
pointed to by a refObj, I suggest to change the name of the method to 
something more general:
   vpiActual
b) interfaceConn relationship to an unamed class . That unamed class is 
missing interfaceArray as interface arrays can be declared as interface ports.
module M (interface i [2:0]); is legal
c) Additionally I am assuming that the typespec of a ref port would only be 
found in the actual object it points to (since there is no typespec method 
available on a refObj.
Is that correct assumption?
d) In Note 1.
a vpiRefObjType of vpiRefObj is missing: vpiInterfaceArray (unless it is 
lumped into vpiInterface), vpiEvent
e) what does the iteration on ports from a refObj returns? It says it is 
only allowed from an interface refObj
f) same question as above for vpiPortInsts
2. IO declaration diagram
a) an io declaration can be an interface or an interface array io 
declaration; vpiExpr does not allow to return a refObj which would be 
pointing to an interface or interface array.
Additionally a refObj should be returned for any vpiExpr of a iodecl 
denoting a ref port
ex:
interface I;
endinterface
module (I  i); ansi C style declaration for interfaces, interface port i of 
interface declaration I
or
module (i);  non ansi C style declaration for interfaces
I i; // explicit io decl: declare i as an interface port to which only 
interface I can be connected
module (interface i);  generic interface port declaration
endmodule
In all above examples, we have an io declaration (either implicit or explicit).
vpiExpr should return either the refObj
3) Ports diagram
Let's assume the example:
module top;
   I myI(); // instantiate an interface
   m u1(myI); // pass interface instance down to m
endmodule
module m (I i);
endmodule
if I iterate over the ports of module m, I will get a port which 
vpiPortType would be a vpiInterfacePort. His lowConn will be a vpiRefObj of 
name "i"
What would the highConn return? I would expect the interface instance myI 
but the diagram does not allow to return anything else other than an 
expression.
I think we need to add interface and interfacearray to what can be returned 
by highConn.
that's all for now.
I may have more next week after I get some clarifications from BC on what 
is allowed for interfaces and ref ports.
Received on Sun Mar  7 17:14:25 2004
This archive was generated by hypermail 2.1.8 : Sun Mar 07 2004 - 17:14:57 PST