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