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

📄 oadeftest.cpp

📁 openaccess读def,lef文件所用的源代码
💻 CPP
📖 第 1 页 / 共 2 页
字号:
DefTest53::preTest(){    DefTest::preTest();    if (copyRefFiles) {	oaString    refFile = getName() + ".def.gz";	oaString    tmp;	getRelPath(refFile, tmp);	if (!tmp.isEmpty() && tmp != refFile) {	    copyFile(tmp, refFile);	}    }}// *****************************************************************************// DefTest53::testClass()//// This is tester for the DEF import-export test case.// *****************************************************************************oaBooleanDefTest53::testClass(){    return testLefIn(getName() + ".lef")	       && testDefIn(getName() + ".def.gz")	       && testDefOut(getName() + ".def.out")	       && testReread(getName() + ".def.out");}// *****************************************************************************// DefTest53::testDefOut()//// This function exports DEF from the test library.// *****************************************************************************oaBooleanDefTest53::testDefOut(const oaString	&fileName){    DefOutOptions	options;    options.setFileName(fileName);    options.setLibName(libName);    options.setCellName("cell");    options.setViewName("layout");    options.setVersion(LefDefVersion("5.3"));    defOut.run(&options);    return result;}// *****************************************************************************// DefTest54::testDefOut()//// This function exports DEF from the test library.// *****************************************************************************oaBooleanDefTest54::testDefOut(const oaString	&fileName){    DefOutOptions	options;    options.setFileName(fileName);    options.setLibName(libName);    options.setCellName("cell");    options.setViewName("layout");    options.setVersion(cLefDefVersion54);    defOut.run(&options);    return result;}// *****************************************************************************// DefTest55::testDefOut()//// This function exports DEF from the test library.// *****************************************************************************oaBooleanDefTest55::testDefOut(const oaString	&fileName){    DefOutOptions	options;    options.setFileName(fileName);    options.setLibName(libName);    options.setCellName("cell");    options.setViewName("layout");    options.setVersion(cLefDefVersion55);    // Create an oaRect to test rect output (cannot be created by def input)    oaDesign	*design = oaDesign::open(options.getLibName(), 					 options.getCellName(),					 options.getViewName(), 'a');    oaBlock	*blk = design->getTopBlock();    oaNet	*net = oaNet::find(blk, oaName(oaLefNS(), "VDD"));        oaRect  *rect;        rect = oaRect::create(design->getTopBlock(), 0, oavPurposeNumberDrawing, oaBox(0, 0, 100, 500));    rect->addToNet(net);    rect = oaRect::create(design->getTopBlock(), 0, oavPurposeNumberDrawing, oaBox(0, 0, 500, 100));    rect->addToNet(net);        // Create illegal nets    oaString newl("A");    newl += '\n';    newl += "B";    oaStringProp::create(net, newl, "aString");    oaStringProp::create(net, "AB1", newl);    oaStringProp::create(net, "#AB", "aString");    oaStringProp::create(net, "A#B", "aString");    oaStringProp::create(net, "AB2", "A#B");    oaStringProp::create(net, "AB3", "10 10 10");    oaStringProp::create(net, "AB4", "a[1::9]");    // Create non rectangular blockages    oaPointArray    points(8);        points[0].x() = 0;    points[0].y() = 0;    points[1].x() = 0;    points[1].y() = 200;    points[2].x() = 200;    points[2].y() = 200;    points[3].x() = 200;    points[3].y() = 300;    points[4].x() = 300;    points[4].y() = 300;    points[5].x() = 300;    points[5].y() = 100;    points[6].x() = 100;    points[6].y() = 100;    points[7].x() = 100;    points[7].y() = 0;    points.setNumElements(8);    oaAreaBlockage::create(blk, points);    design->save();    design->close();    defOut.run(&options);    return result;}// *****************************************************************************// DefTest56::testDefOut()//// This function exports DEF from the test library.// *****************************************************************************oaBooleanDefTest56::testDefOut(const oaString	&fileName){    DefOutOptions	options;    options.setFileName(fileName);    options.setLibName(libName);    options.setCellName("cell");    options.setViewName("layout");    options.setVersion(cLefDefVersion56);    // Create an oaPath to test path output (cannot be created by def input)    oaDesign	*design = oaDesign::open(options.getLibName(), 					 options.getCellName(),					 options.getViewName(), 'a');    oaBlock	*blk = design->getTopBlock();    oaNet	*net = oaNet::find(blk, oaName(oaLefNS(), "VDD"));    oaPointArray    points(3);    points.append(oaPoint(0, 0));    points.append(oaPoint(100, 0));    points.append(oaPoint(100, 100));    oaPath  *path;        path = oaPath::create(design->getTopBlock(), 0, oavPurposeNumberDrawing, 			  50, points);    path->addToNet(net);    path = oaPath::create(design->getTopBlock(), 0, oavPurposeNumberDrawing, 			  50, points, oacExtendPathStyle);    path->addToNet(net);    path = oaPath::create(design->getTopBlock(), 0, oavPurposeNumberDrawing, 			  50, points, oacVariablePathStyle, 10, 40);    path->addToNet(net);    // Test invalid property names and values    oaStringProp::create(net, "A\nB", "aString");    oaStringProp::create(net, "AB", "A\nB");    oaStringProp::create(design, "A\nB", "aString");    oaStringProp::create(design, "AB", "A\nB");    // Create non rectangular blockages    points.setSize(8);    points[0].x() = 0;    points[0].y() = 0;    points[1].x() = 0;    points[1].y() = 200;    points[2].x() = 200;    points[2].y() = 200;    points[3].x() = 200;    points[3].y() = 300;    points[4].x() = 300;    points[4].y() = 300;    points[5].x() = 300;    points[5].y() = 100;    points[6].x() = 100;    points[6].y() = 100;    points[7].x() = 100;    points[7].y() = 0;    points.setNumElements(8);    oaAreaBlockage::create(blk, points);    design->save();    design->close();    defOut.run(&options);    return result;}// *****************************************************************************// DefTestError::testDefIn()//// This function imports a DEF file to create design data for this test.// *****************************************************************************oaBooleanDefTestError::testDefIn(const oaString	&fileName){    DefInOptions    options;    options.addFileName(fileName);    try {	defIn.run(&options);    } catch (oaException    &err) {	verify(err.getMsgId() == cLibNotSpecified);    }    DefInOptions    options2;    options2.addFileName(fileName);    options2.setLibName(libName);    options2.setCellName("cell");    options2.addMasterLibName("undef");    defIn.run(&options2);    DefInOptions    options3;    options3.addFileName(fileName);    options3.setLibName(libName);    options3.setCellName("cell");    options3.addMasterViewName("undef");    options3.setOverwrite(true);    defIn.run(&options3);    DefInOptions    options4;    options4.addFileName(fileName);    options4.setLibName(libName);    options4.setCellName("cell");    options4.setOverwrite(true);    defIn.run(&options4);    return result;}// *****************************************************************************// DefTestError::testDefOut()//// This function exports DEF from the test library.// *****************************************************************************oaBooleanDefTestError::testDefOut(const oaString	&fileName){    DefOutOptions   options;    FILE	    *file = fopen(fileName, "w");    try {	defOut.run(file, &options);    } catch (oaException    &err) {	verify(err.getMsgId() == cLibNotSpecified);    }    options.setLibName(libName);    try {	defOut.run(file, &options);    } catch (oaException    &err) {	verify(err.getMsgId() == cCellNotSpecified);    }    options.setCellName("cell");    try {	defOut.run(file, &options);    } catch (oaException    &err) {	verify(err.getMsgId() == cViewNotSpecified);    }    options.setViewName("layout");    defOut.run(file, &options);    fclose(file);    return result;}

⌨️ 快捷键说明

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