Ejemplo n.º 1
0
 @Override
 public void visit(Call call) {
   // Do not checck the call's port connections and gate depth on it's
   // inputs for Entry level call, for other type of calls which
   // should be inside a block have to pass the input gate depth
   // verification before traversing the corresponding procedures.
   if (call.getOwner() == null
       || call.getOwner() instanceof Design.DesignModule
       || !findUnknownGateDepthOnInputs(call)) {
     preFilter(call);
     // propagate the gate depth to the procedure ports peer
     // buses which belong to a procedure body's inBuf.
     Integer currentInputGateDepth =
         (call.getOwner() != null) ? new Integer(getMaxInputGateDepth(call)) : new Integer(0);
     for (Port callPort : call.getPorts()) {
       Bus peerBus = call.getProcedurePort(callPort).getPeer();
       exitToGateDepthMap.put(peerBus.getOwner(), currentInputGateDepth);
     }
     traverse(call);
     for (Exit callExit : call.getExits()) {
       Integer currentOutputGateDepth = exitToGateDepthMap.get(call.getProcedureExit(callExit));
       exitToGateDepthMap.put(callExit, currentOutputGateDepth);
     }
     postFilter(call);
   }
 }