I've been meaning to reply to this thread for a while - just hadn't got to it. In general, the portOrder is not that important nowadays and it's debatable whether all the consistency checks are necessary (I've got a request to disable them by default). The only thing that really uses portOrder is the Verilog netlister (non-ADE netlisters, in other words) and even then it's really only needed for leaf cells if you're netlisting by order (implicit) rather than by name (explicit). For other levels it may get used, but if it's inconsistent between views that's not critical because it should always use the same portOrder for both the instance (the caller) and the definition (the callee, i.e. the module/subckt etc). ADE netlisters use the CDF termOrder. Again, this is important for leaf (i.e. stopping) views because they need to know how to connect with the right order to some external or built-in component in the simulator. For intermediate levels in the hierarchy it's used as a guide, but since both the caller and callee are netlisted consistently it's not so critical. If the termOrder is inconsistent with the terminals on the views (e.g. if there are extra or missing terminals) it is ignored (with a warning) and the default order is used instead (which is OK, because it's consistent). The cdsenv variable: auCore.misc updateCDFtermOrder boolean t can be set so that any updates to the pins on symbols will trigger an update of the termOrder in the CDF to make it consistent which eliminates these warnings. Note that the termOrder in the CDF is per cell, but then there is also something called "view-specific CDF" which is another bit of information in the CDF which allows the terminal order to be different for different views. This is important when there are textual views involved - imagine that a cell has a schematic and two veriloga views - and the veriloga views were written with inconsistent terminal orders. This allows for the netlister to ensure that the instance uses the correct order. The Tools->CDF->Edit CDF form doesn't show the view-specific CDF but if you dump the Base CDF you can see it. Also, the alm functions you mention will deal with view-specific CDF. Hope that helps in addition to what you've found. Regards, Andrew.
↧