@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); } }