⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 filllib.bsh

📁 The ElectricTM VLSI Design System is an open-source Electronic Design Automation (EDA) system that c
💻 BSH
字号:
/* -*- tab-width: 4 -*- * Electric(tm) VLSI Design System * * File: fillLib.bsh * bean shell script to generate fill cell library * * Copyright (c) 2003 Sun Microsystems and Static Free Software * * Electric(tm) is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as published by * the Free Software Foundation; either version 2 of the License, or * (at your option) any later version. * * Electric(tm) is distributed in the hope that it will be useful, * but WITHOUT ANY WARRANTY; without even the implied warranty of * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the * GNU General Public License for more details. * * You should have received a copy of the GNU General Public License * along with Electric(tm); see the file COPYING.  If not, write to * the Free Software Foundation, Inc., 59 Temple Place, Suite 330, * Boston, Mass 02111-1307, USA. */import com.sun.electric.tool.generator.layout.fill.FillGeneratorTool;import com.sun.electric.tool.generator.layout.fill.FillGeneratorTool.Units;import com.sun.electric.tool.generator.layout.fill.FillGen;import com.sun.electric.tool.generator.layout.fill.ExportConfig;import com.sun.electric.tool.generator.layout.TechType;// These constant declarations make the following code more compact.// They won't be necessary once we upgrade to JDK 1.5.Units LAMBDA = FillGeneratorTool.LAMBDA;Units TRACKS = FillGeneratorTool.TRACKS;ExportConfig PERIMETER = ExportConfig.PERIMETER;ExportConfig PERIMETER_AND_INTERNAL = ExportConfig.PERIMETER_AND_INTERNAL;// The argument to the FillGenerator constructor may be // TechType.MOCMOS or TechType.TSMC180 or TechType.CMOS90FillGen fg = new FillGen(TechType.MOCMOS);fg.setFillLibrary("fillLib");fg.setFillCellWidth(245);fg.setFillCellHeight(175);fg.makeEvenLayersHorizontal(true);// Floor plan of a typical fill Cell metal layer://                          (ground space specified by user)/2//  gggggggggggggggggggg    ground bus bar//                          wide space set by design rules//  vvvvvvvvvvvvvvvvvvvv    vdd bus bar//                          Vdd space specified by user//  vvvvvvvvvvvvvvvvvvvv    vdd bus bar//                          wide space set by design rules//  gggggggggggggggggggg    ground bus bar//                          (ground space specified by user)/2//// Arguments to reserveSpaceOnLayer()://     layer number, //     vdd space, //     vdd space units (TRACKS or LAMBDA), //     gnd space, //     gnd space units (TRACKS or LAMBDA) fg.reserveSpaceOnLayer(2, 3, TRACKS, 3, TRACKS);fg.reserveSpaceOnLayer(3, 3, TRACKS, 3, TRACKS);fg.reserveSpaceOnLayer(4, 3, TRACKS, 3, TRACKS);fg.reserveSpaceOnLayer(5, 3, TRACKS, 3, TRACKS);fg.reserveSpaceOnLayer(6, 2, TRACKS, 2, TRACKS);// Arguments to ExportConfig()://     perimeterExportLayers   // layers that should get perimeter exports//     internalExportLayers    // layers that should get internal exportsExportConfig exportsForVddGndPadConnections = 	new ExportConfig(new int[] {5,6}, new int[] {2,3});// create a procedure because I want to do this twicevoid makeCells() {	// Arguments to makeFillCell():	//     low layer number	//     high layer number	//     export configuration (PERIMETER or PERIMETER_AND_INTERNAL)	//     array of int's specifying how to tile this fill cell into 	//        larger ones. null means don't tile.	fg.makeFillCell(1, 6, PERIMETER, new int[] {2,3,4,5,10,12});	fg.makeFillCell(2, 6, PERIMETER, new int[] {2,3});	fg.makeFillCell(3, 6, PERIMETER, null);	fg.makeFillCell(4, 6, PERIMETER, null);	fg.makeFillCell(5, 6, PERIMETER, null);	fg.makeFillCell(6, 6, PERIMETER, new int[] {2,3,4,5,10,12});		fg.makeFillCell(2, 6, PERIMETER_AND_INTERNAL, null);	fg.makeFillCell(3, 6, PERIMETER_AND_INTERNAL, null);	fg.makeFillCell(4, 6, PERIMETER_AND_INTERNAL, null);	fg.makeFillCell(5, 6, PERIMETER_AND_INTERNAL, null);	fg.makeFillCell(6, 6, PERIMETER_AND_INTERNAL, null);		fg.makeFillCell(2, 6, exportsForVddGndPadConnections, null);		fg.makeGallery();	fg.writeLibrary();}makeCells();// Now generate a library with no gap in the vdd strap// We must choose a different library because the Cell names// don't reflect all the different parameters.fg.setFillLibrary("noGapLib");fg.reserveSpaceOnLayer(2, 0, TRACKS, 6, TRACKS);fg.reserveSpaceOnLayer(3, 0, TRACKS, 6, TRACKS);fg.reserveSpaceOnLayer(4, 0, TRACKS, 6, TRACKS);fg.reserveSpaceOnLayer(5, 0, TRACKS, 6, TRACKS);fg.reserveSpaceOnLayer(6, 0, TRACKS, 4, TRACKS);makeCells();

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -