At 04:52 PM 1/27/2010, you wrote:
I'm using Electric 8.10 on Snow Leopard 10.6.2 with Java version
1.6.0_17.

I do the following in Electric

1. Edit -> Technology Specific -> Convert Technology to Library for
Editing for mocmos
2. Then I click on technology nodes and select say node-Metal-1-N-
Active-Con{lay}.
3. Then I go Edit -> Technology Specific ->  Identify Primitive layers
or Identify Ports

I get "Analysis Failure:

Cell node-Metal-1-N-Active-Con{lay}, node filled-box[...@3]: Node has
no layer information

However, this series of steps work OK in Electric 8.09 and show the
various layers that are present (they're highlighted with white
lines). I believe this is a bug in 8.10.

Hopefully this can be fixed or a patch can be made available?

The simple patch is to replace the method "getLayerCell()" in the module:
       com.sun.electric.tool.user.tecEdit.Manipulate.java

The code should be:
--------------------------------------------------
static Cell getLayerCell(NodeInst ni)
{
   Variable var = ni.getVar(Info.LAYER_KEY);
   if (var == null) return null;
   CellId cID = (CellId)var.getObject();
   Cell clientCell = EDatabase.clientDatabase().getCell(cID);
   Cell cell = EDatabase.serverDatabase().getCell(cID);
   if (clientCell != null || cell != null)
   {
      // validate the reference
for(Iterator<Cell> it = ni.getParent().getLibrary().getCells(); it.hasNext(); )
      {
         Cell oCell = it.next();
         if (oCell == cell || oCell == clientCell) return oCell;
      }
   }
   System.out.println("Layer " + cID.cellName + " not found");
   return null;
}
--------------------------------------------------
However, your bug report uncovers other problems in that same module. To fix these other problems, make these patches:

In the "doIt()" method of the RedoLayerGraphicsJob subclass, change the lines:
--------------------------------------------------
Variable varLay = cNi.getVar(Info.LAYER_KEY);
if (varLay == null) continue;
CellId cID = (CellId)varLay.getObject();
Cell varCell = EDatabase.serverDatabase().getCell(cID);
--------------------------------------------------
to be:
--------------------------------------------------
Cell varCell = getLayerCell(cNi);
--------------------------------------------------


In the "deletedCell()" method, change the lines:
--------------------------------------------------
Variable var = ni.getVar(Info.LAYER_KEY);
if (var == null) continue;
CellId cID = (CellId)var.getObject();
Cell varCell = EDatabase.serverDatabase().getCell(cID);
--------------------------------------------------
to be:
--------------------------------------------------
Cell varCell = getLayerCell(ni);
--------------------------------------------------

And in the "modPort()" method, change the line:
--------------------------------------------------
connectSet.add(EDatabase.serverDatabase().getCell(connects[i]));
--------------------------------------------------
to be:
--------------------------------------------------
connectSet.add(EDatabase.clientDatabase().getCell(connects[i]));
--------------------------------------------------

Sorry for the complexity. If you wish to have a new copy of the entire module, let me know and I will send it to you.

-Steven Rubin
--
You received this message because you are subscribed to the Google Groups "Electric 
VLSI Editor" group.
To post to this group, send email to [email protected].
To unsubscribe from this group, send email to 
[email protected].
For more options, visit this group at 
http://groups.google.com/group/electricvlsi?hl=en.

Reply via email to