fixes to break apart layout cells
authorAdam Megacz <adam.megacz@sun.com>
Tue, 19 May 2009 20:19:29 +0000 (20:19 +0000)
committerAdam Megacz <adam.megacz@sun.com>
Tue, 19 May 2009 20:19:29 +0000 (20:19 +0000)
testCode/marina.bsh
testCode/marina.v
testCode/marina.xml

index fd37d8f..3371b9a 100644 (file)
@@ -19,6 +19,7 @@ import com.sun.electric.plugins.menus.ScanChainXML;
 
   gen.addScanChainElement("scanM", "scanCellE", "RW", "-", "sin", "sout", "dIn[1](R)", "latch2in@0.dataBar(WI)");
   gen.addScanChainElement("scanM", "scanCellF", "RW", "L", "sin", "sout", "dout[1](R)", "latch2in@1.dataBar(WI)");
+  gen.addScanChainElement("scanM", "scanCellFtall", "RW", "L", "sin", "sout", "dout[1](R)", "latch2in@1.dataBar(WI)");
 
   // Add all the pass through elements: these pass scan data through,
   // like inverters or buffers
index 94c354a..b7ab6e3 100644 (file)
@@ -1,7 +1,7 @@
 /* Verilog for cell 'marinaOutDock{sch}' from library 'aMarinaM' */
 /* Created on Mon Nov 17, 2008 08:47:24 */
 /* Last revised on Sat May 02, 2009 06:16:53 */
-/* Written on Tue May 12, 2009 17:07:57 by Electric VLSI Design System, version 8.08k */
+/* Written on Sat May 16, 2009 16:19:19 by Electric VLSI Design System, version 8.08k */
 
 module orangeTSMC090nm__wire(a);
   input a;
@@ -783,7 +783,29 @@ module scanM__scanCellF(mc, p1p, p2p, rd, sin, wr, dout, sout);
   orangeTSMC090nm__wire90 wire90_0(.a(net_2));
 endmodule   /* scanM__scanCellF */
 
-module scanM__scanFx3(dout, dout_1, dout_2, sic, soc);
+module scanM__scanCellFtall(mc, p1p, p2p, rd, sin, wr, dout, sout);
+  input mc;
+  input p1p;
+  input p2p;
+  input rd;
+  input sin;
+  input wr;
+  output [1:1] dout;
+  output sout;
+
+  supply1 vdd;
+  supply0 gnd;
+  wire net_2;
+
+  latchesK__latch1in10A latch1in_0(.hcl(p2p), .in({sin}), .out({net_2}));
+  latchesK__latch2in10Alo latch2in_0(.hcl_A_(p1p), .hcl_B_(rd), .inA({net_2}), 
+      .inB(dout[1:1]), .out({sout}));
+  latchesK__latch2in10Alomc latch2in_1(.hcl(wr), .inA({sout}), .mc(mc), 
+      .out(dout[1:1]));
+  orangeTSMC090nm__wire90 wire90_0(.a(net_2));
+endmodule   /* scanM__scanCellFtall */
+
+module scanM__scanFx3tallL(dout, dout_1, dout_2, sic, soc);
   output [1:1] dout;
   output [2:2] dout_1;
   output [3:3] dout_2;
@@ -794,18 +816,18 @@ module scanM__scanFx3(dout, dout_1, dout_2, sic, soc);
   supply0 gnd;
   wire net_30, net_31;
 
-  scanM__scanCellF scanCell_4(.mc(sic[9]), .p1p(sic[3]), .p2p(sic[2]), 
-      .rd(sic[5]), .sin(sic[1]), .wr(sic[4]), .dout(dout[1:1]), 
-      .sout(net_30));
   scanM__scanCellF scanCell_5(.mc(sic[9]), .p1p(sic[3]), .p2p(sic[2]), 
       .rd(sic[5]), .sin(net_30), .wr(sic[4]), .dout(dout_1[2:2]), 
       .sout(net_31));
   scanM__scanCellF scanCell_6(.mc(sic[9]), .p1p(sic[3]), .p2p(sic[2]), 
       .rd(sic[5]), .sin(net_31), .wr(sic[4]), .dout(dout_2[3:3]), 
       .sout(soc[1]));
+  scanM__scanCellFtall scanCell_7(.mc(sic[9]), .p1p(sic[3]), .p2p(sic[2]), 
+      .rd(sic[5]), .sin(sic[1]), .wr(sic[4]), .dout(dout[1:1]), 
+      .sout(net_30));
   orangeTSMC090nm__wire90 wire90_0(.a(net_30));
   orangeTSMC090nm__wire90 wire90_1(.a(net_31));
-endmodule   /* scanM__scanFx3 */
+endmodule   /* scanM__scanFx3tallL */
 
 module stagesM__drainStage(ain, ain_TT_, in, pred, aout, aout_TT_, out, succ, 
       sic, sir, soc, sor);
@@ -840,8 +862,8 @@ module stagesM__drainStage(ain, ain_TT_, in, pred, aout, aout_TT_, out, succ,
       .succ(succ), .take(net_5));
   scanM__scanEx2 scanEx2v_1(.dIn({net_17[1], net_17[0]}), .sir(sir[1:9]), 
       .sor(sor[1:1]));
-  scanM__scanFx3 scanFx3_0(.dout({go}), .dout_1({clear}), .dout_2({silent}), 
-      .sic(sic[1:9]), .soc(soc[1:1]));
+  scanM__scanFx3tallL scanFx3t_1(.dout({go}), .dout_1({clear}), 
+      .dout_2({silent}), .sic(sic[1:9]), .soc(soc[1:1]));
   wiresL__tranCap tc_1_();
   wiresL__tranCap tc_2_();
 endmodule   /* stagesM__drainStage */
@@ -1193,6 +1215,30 @@ module scanM__scanAMPx5(si, so);
   scanM__scanAmp sa_5_(.in({si[5]}), .out({so[5]}));
 endmodule   /* scanM__scanAMPx5 */
 
+module scanM__scanFx3(dout, dout_1, dout_2, sic, soc);
+  output [1:1] dout;
+  output [2:2] dout_1;
+  output [3:3] dout_2;
+  inout [1:9] sic;
+  inout [1:1] soc;
+
+  supply1 vdd;
+  supply0 gnd;
+  wire net_30, net_31;
+
+  scanM__scanCellF scanCell_4(.mc(sic[9]), .p1p(sic[3]), .p2p(sic[2]), 
+      .rd(sic[5]), .sin(sic[1]), .wr(sic[4]), .dout(dout[1:1]), 
+      .sout(net_30));
+  scanM__scanCellF scanCell_5(.mc(sic[9]), .p1p(sic[3]), .p2p(sic[2]), 
+      .rd(sic[5]), .sin(net_30), .wr(sic[4]), .dout(dout_1[2:2]), 
+      .sout(net_31));
+  scanM__scanCellF scanCell_6(.mc(sic[9]), .p1p(sic[3]), .p2p(sic[2]), 
+      .rd(sic[5]), .sin(net_31), .wr(sic[4]), .dout(dout_2[3:3]), 
+      .sout(soc[1]));
+  orangeTSMC090nm__wire90 wire90_0(.a(net_30));
+  orangeTSMC090nm__wire90 wire90_1(.a(net_31));
+endmodule   /* scanM__scanFx3 */
+
 module stagesM__fillStage(ain, ain_TT_, \in[1] , \in[2] , \in[3] , \in[4] , 
       \in[5] , \in[6] , \in[7] , \in[8] , \in[9] , \in[10] , \in[11] , \in[12] 
       , \in[13] , \in[14] , \in[15] , \in[16] , \in[17] , \in[18] , \in[20] , 
index 5afa3af..7789e17 100644 (file)
   <datanet name="southFif@1.tapPropS@1.properSt@1.fillStag@1.scanFx3@0.scanCell@4" net="xsouthFif@1.xtapPropS@1.xproperSt@1.xfillStag@1.block(R)" net2="xsouthFif@1.xtapPropS@1.xproperSt@1.xfillStag@1.xscanFx3@0.xscanCell@4.xlatch2in@1.dataBar(WI)" />
   <datanet name="southFif@1.tapPropS@1.properSt@1.fillStag@1.scanFx3@0.scanCell@5" net="xsouthFif@1.xtapPropS@1.net@91(R)" net2="xsouthFif@1.xtapPropS@1.xproperSt@1.xfillStag@1.xscanFx3@0.xscanCell@5.xlatch2in@1.dataBar(WI)" />
   <datanet name="southFif@1.tapPropS@1.properSt@1.fillStag@1.scanFx3@0.scanCell@6" net="xsouthFif@1.xtapPropS@1.xproperSt@1.xfillStag@1.fill(R)" net2="xsouthFif@1.xtapPropS@1.xproperSt@1.xfillStag@1.xscanFx3@0.xscanCell@6.xlatch2in@1.dataBar(WI)" />
-  <datanet name="southFif@1.tapPropS@1.properSt@1.drainSta@1.scanFx3@0.scanCell@4" net="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.go(R)" net2="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.xscanFx3@0.xscanCell@4.xlatch2in@1.dataBar(WI)" />
-  <datanet name="southFif@1.tapPropS@1.properSt@1.drainSta@1.scanFx3@0.scanCell@5" net="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.clear(R)" net2="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.xscanFx3@0.xscanCell@5.xlatch2in@1.dataBar(WI)" />
-  <datanet name="southFif@1.tapPropS@1.properSt@1.drainSta@1.scanFx3@0.scanCell@6" net="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.silent(R)" net2="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.xscanFx3@0.xscanCell@6.xlatch2in@1.dataBar(WI)" />
+  <datanet name="southFif@1.tapPropS@1.properSt@1.drainSta@1.scanFx3t@1.scanCell@7" net="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.go(R)" net2="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.xscanFx3t@1.xscanCell@7.xlatch2in@1.dataBar(WI)" />
+  <datanet name="southFif@1.tapPropS@1.properSt@1.drainSta@1.scanFx3t@1.scanCell@5" net="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.clear(R)" net2="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.xscanFx3t@1.xscanCell@5.xlatch2in@1.dataBar(WI)" />
+  <datanet name="southFif@1.tapPropS@1.properSt@1.drainSta@1.scanFx3t@1.scanCell@6" net="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.silent(R)" net2="xsouthFif@1.xtapPropS@1.xproperSt@1.xdrainSta@1.xscanFx3t@1.xscanCell@6.xlatch2in@1.dataBar(WI)" />
   <datanet name="southFif@1.tapPropS@1.tapStage@2.scanFx2@0.scanCell@3" net="xsouthFif@1.xtapPropS@1.xtapStage@2.to[A](R)" net2="xsouthFif@1.xtapPropS@1.xtapStage@2.xscanFx2@0.xscanCell@3.xlatch2in@1.dataBar(WI)" />
   <datanet name="southFif@1.tapPropS@1.tapStage@2.scanFx2@0.scanCell@4" net="xsouthFif@1.xtapPropS@1.xtapStage@2.to[B](R)" net2="xsouthFif@1.xtapPropS@1.xtapStage@2.xscanFx2@0.xscanCell@4.xlatch2in@1.dataBar(WI)" />
   <datanet name="northFif@1.fillDrai@1.properSt@1.fillStag@1.scanFx3@0.scanCell@4" net="xnorthFif@1.xfillDrai@1.xproperSt@1.xfillStag@1.block(R)" net2="xnorthFif@1.xfillDrai@1.xproperSt@1.xfillStag@1.xscanFx3@0.xscanCell@4.xlatch2in@1.dataBar(WI)" />
   <datanet name="northFif@1.fillDrai@1.properSt@1.fillStag@1.scanFx3@0.scanCell@5" net="xnorthFif@1.xfillDrai@1.net@48(R)" net2="xnorthFif@1.xfillDrai@1.xproperSt@1.xfillStag@1.xscanFx3@0.xscanCell@5.xlatch2in@1.dataBar(WI)" />
   <datanet name="northFif@1.fillDrai@1.properSt@1.fillStag@1.scanFx3@0.scanCell@6" net="xnorthFif@1.xfillDrai@1.xproperSt@1.xfillStag@1.fill(R)" net2="xnorthFif@1.xfillDrai@1.xproperSt@1.xfillStag@1.xscanFx3@0.xscanCell@6.xlatch2in@1.dataBar(WI)" />
-  <datanet name="northFif@1.fillDrai@1.properSt@1.drainSta@1.scanFx3@0.scanCell@4" net="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.go(R)" net2="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.xscanFx3@0.xscanCell@4.xlatch2in@1.dataBar(WI)" />
-  <datanet name="northFif@1.fillDrai@1.properSt@1.drainSta@1.scanFx3@0.scanCell@5" net="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.clear(R)" net2="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.xscanFx3@0.xscanCell@5.xlatch2in@1.dataBar(WI)" />
-  <datanet name="northFif@1.fillDrai@1.properSt@1.drainSta@1.scanFx3@0.scanCell@6" net="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.silent(R)" net2="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.xscanFx3@0.xscanCell@6.xlatch2in@1.dataBar(WI)" />
+  <datanet name="northFif@1.fillDrai@1.properSt@1.drainSta@1.scanFx3t@1.scanCell@7" net="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.go(R)" net2="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.xscanFx3t@1.xscanCell@7.xlatch2in@1.dataBar(WI)" />
+  <datanet name="northFif@1.fillDrai@1.properSt@1.drainSta@1.scanFx3t@1.scanCell@5" net="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.clear(R)" net2="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.xscanFx3t@1.xscanCell@5.xlatch2in@1.dataBar(WI)" />
+  <datanet name="northFif@1.fillDrai@1.properSt@1.drainSta@1.scanFx3t@1.scanCell@6" net="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.silent(R)" net2="xnorthFif@1.xfillDrai@1.xproperSt@1.xdrainSta@1.xscanFx3t@1.xscanCell@6.xlatch2in@1.dataBar(WI)" />
 '>
 <!ENTITY countersL_cntScnFour_sin '
        <subchain name="cntScnOn@1" length="1" access="RW" clears="-" />
        <subchain name="scanCell@5" length="1" access="RW" clears="L" />
        <subchain name="scanCell@6" length="1" access="RW" clears="L" />
 '>
+<!ENTITY scanM_scanFx3tallL_sic_1_ '
+       <subchain name="scanCell@7" length="1" access="RW" clears="L" />
+       <subchain name="scanCell@5" length="1" access="RW" clears="L" />
+       <subchain name="scanCell@6" length="1" access="RW" clears="L" />
+'>
 <!ENTITY stageGroupsM_dockWagNine_sir_1_ '
        <subchain name="altStart@0"> &stagesM_altStartDockStage_sir_1_; </subchain>
        <subchain name="plainDoc@4"> &stagesM_plainDockStage_sir_1_; </subchain>
        <subchain name="scanEx2v@1"> &scanM_scanEx2_sir_1_; </subchain>
 '>
 <!ENTITY stagesM_drainStage_sic_1_ '
-       <subchain name="scanFx3@0"> &scanM_scanFx3_sic_1_; </subchain>
+       <subchain name="scanFx3t@1"> &scanM_scanFx3tallL_sic_1_; </subchain>
 '>
 <!ENTITY stagesM_drainStage_sir_1_ '
        <subchain name="scanEx2v@1"> &scanM_scanEx2_sir_1_; </subchain>