mirror of https://github.com/KLayout/klayout.git
WIP: MALY reader, debugging, tests
This commit is contained in:
parent
55e2b27bf6
commit
226ba429f1
|
|
@ -61,7 +61,7 @@ public:
|
|||
/**
|
||||
* @brief A class representing a title field on a mask
|
||||
*/
|
||||
class MALYTitle
|
||||
class DB_PUBLIC MALYTitle
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
|
@ -138,7 +138,7 @@ public:
|
|||
/**
|
||||
* @brief A class representing a structure (pattern) on a mask
|
||||
*/
|
||||
class MALYStructure
|
||||
class DB_PUBLIC MALYStructure
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
|
@ -220,7 +220,7 @@ public:
|
|||
/**
|
||||
* @brief A class representing one mask
|
||||
*/
|
||||
class MALYMask
|
||||
class DB_PUBLIC MALYMask
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
|
@ -261,7 +261,7 @@ public:
|
|||
/**
|
||||
* @brief A class representing the MALY file
|
||||
*/
|
||||
class MALYData
|
||||
class DB_PUBLIC MALYData
|
||||
{
|
||||
public:
|
||||
/**
|
||||
|
|
|
|||
|
|
@ -165,7 +165,7 @@ MALYReader::import_data (db::Layout &layout, const MALYData &data)
|
|||
|
||||
} else {
|
||||
|
||||
auto cbm = layout.cell_by_name (s->topcell.c_str ());
|
||||
auto cbm = temp_layout.cell_by_name (s->topcell.c_str ());
|
||||
if (! cbm.first) {
|
||||
throw tl::Exception (tl::to_string (tr ("Mask pattern file '%s' does not have a cell named '%s' as required by mask '%s'")), s->path, s->topcell, m->name);
|
||||
}
|
||||
|
|
@ -174,27 +174,31 @@ MALYReader::import_data (db::Layout &layout, const MALYData &data)
|
|||
|
||||
}
|
||||
|
||||
int source_layer = layout.get_layer_maybe (db::LayerProperties (s->layer, 0));
|
||||
int source_layer = temp_layout.get_layer_maybe (db::LayerProperties (s->layer, 0));
|
||||
if (source_layer >= 0) {
|
||||
|
||||
// create a host cell for the pattern
|
||||
|
||||
std::string cn = m->name;
|
||||
if (s->mname.empty ()) {
|
||||
cn += ".PATTERN";
|
||||
if (s->topcell.empty ()) {
|
||||
if (s->mname.empty ()) {
|
||||
cn += ".PATTERN";
|
||||
} else {
|
||||
cn += "." + s->mname;
|
||||
}
|
||||
} else {
|
||||
cn += "." + s->mname;
|
||||
cn += "." + s->topcell;
|
||||
}
|
||||
db::cell_index_type target_cell = layout.add_cell (cn.c_str ());
|
||||
|
||||
// create the pattern instance
|
||||
|
||||
db::ICplxTrans trans = db::CplxTrans (layout.dbu ()).inverted () * s->transformation * db::CplxTrans (temp_layout.dbu ());
|
||||
db::ICplxTrans trans = db::CplxTrans (layout.dbu ()).inverted () * s->transformation * db::CplxTrans (layout.dbu ());
|
||||
db::CellInstArray array;
|
||||
if (s->nx > 1 || s->ny > 1) {
|
||||
db::Coord idx = db::coord_traits<db::Coord>::rounded (s->dx / layout.dbu ());
|
||||
db::Coord idy = db::coord_traits<db::Coord>::rounded (s->dy / layout.dbu ());
|
||||
array = db::CellInstArray (target_cell, trans, db::Vector (idx, 0), db::Vector (0, idy), s->nx, s->ny);
|
||||
array = db::CellInstArray (target_cell, trans, trans.fp_trans () * db::Vector (idx, 0), trans.fp_trans () * db::Vector (0, idy), s->nx, s->ny);
|
||||
} else {
|
||||
array = db::CellInstArray (target_cell, trans);
|
||||
}
|
||||
|
|
@ -277,6 +281,7 @@ MALYReader::read_record_internal ()
|
|||
while (! m_stream.at_end () && (m_stream.get_char () != '*' || m_stream.peek_char () != '/'))
|
||||
;
|
||||
if (m_stream.at_end ()) {
|
||||
m_last_record_line = m_stream.line_number ();
|
||||
error (tl::to_string (tr ("/*...*/ comment not closed")));
|
||||
}
|
||||
m_stream.get_char (); // eat trailing "/"
|
||||
|
|
@ -288,19 +293,25 @@ MALYReader::read_record_internal ()
|
|||
}
|
||||
|
||||
if (c == '\n') {
|
||||
|
||||
if (m_stream.peek_char () == '+') {
|
||||
|
||||
if (tl::Extractor (rec.c_str ()).at_end ()) {
|
||||
m_last_record_line = m_stream.line_number ();
|
||||
error (tl::to_string (tr ("'+' character at beginning of new record - did you mean to continue a line?")));
|
||||
}
|
||||
|
||||
// continuation line
|
||||
m_stream.get_char (); // eat "+"
|
||||
if (m_stream.at_end ()) {
|
||||
break;
|
||||
}
|
||||
c = m_stream.get_char ();
|
||||
|
||||
} else {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
||||
if (c == '"' || c == '\'') {
|
||||
} else if (c == '"' || c == '\'') {
|
||||
|
||||
rec += c;
|
||||
|
||||
|
|
@ -314,16 +325,19 @@ MALYReader::read_record_internal ()
|
|||
break;
|
||||
} else if (c == '\\') {
|
||||
if (m_stream.at_end ()) {
|
||||
error (tl::to_string (tr ("Unexpected end of file inside quotee string")));
|
||||
m_last_record_line = m_stream.line_number ();
|
||||
error (tl::to_string (tr ("Unexpected end of file inside quoted string")));
|
||||
}
|
||||
c = m_stream.get_char ();
|
||||
rec += c;
|
||||
} else if (c == '\n') {
|
||||
m_last_record_line = m_stream.line_number ();
|
||||
error (tl::to_string (tr ("Line break inside quoted string")));
|
||||
}
|
||||
}
|
||||
|
||||
if (quote) {
|
||||
m_last_record_line = m_stream.line_number ();
|
||||
error (tl::to_string (tr ("Unexpected end of file inside quotee string")));
|
||||
}
|
||||
|
||||
|
|
@ -512,11 +526,14 @@ MALYReader::read_parameter (MALYReaderParametersData &data)
|
|||
|
||||
std::string format, path;
|
||||
ex.read_word_or_quoted (format);
|
||||
ex.read_word_or_quoted (path, ".\\/+-");
|
||||
ex.read_word_or_quoted (path, ".\\/+-_");
|
||||
ex.expect_end ();
|
||||
|
||||
data.roots.push_back (std::make_pair (format, path));
|
||||
|
||||
} else if (begin_section (ex)) {
|
||||
warn (tl::to_string (tr ("Unknown section ignored")));
|
||||
skip_section ();
|
||||
} else {
|
||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
||||
}
|
||||
|
|
@ -564,6 +581,9 @@ MALYReader::read_title (MALYReaderTitleData &data)
|
|||
|
||||
ex.expect_end ();
|
||||
|
||||
} else if (begin_section (ex)) {
|
||||
warn (tl::to_string (tr ("Unknown section ignored")));
|
||||
skip_section ();
|
||||
} else {
|
||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
||||
}
|
||||
|
|
@ -639,6 +659,9 @@ MALYReader::read_strgroup (MALYReaderStrGroupData &data)
|
|||
|
||||
ex.expect_end ();
|
||||
|
||||
} else if (begin_section (ex)) {
|
||||
warn (tl::to_string (tr ("Unknown section ignored")));
|
||||
skip_section ();
|
||||
} else {
|
||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
||||
}
|
||||
|
|
@ -674,6 +697,7 @@ MALYReader::read_mask (MALYReaderMaskData &mask)
|
|||
read_strgroup (mask.strgroups.back ());
|
||||
|
||||
} else if (begin_section (ex)) {
|
||||
warn (tl::to_string (tr ("Unknown section ignored")));
|
||||
skip_section ();
|
||||
} else {
|
||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
||||
|
|
@ -718,6 +742,9 @@ MALYReader::read_maskset (MALYData &data)
|
|||
ex.expect_end ();
|
||||
read_mask (cmask);
|
||||
|
||||
} else if (begin_section (ex)) {
|
||||
warn (tl::to_string (tr ("Unknown section ignored")));
|
||||
skip_section ();
|
||||
} else {
|
||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
||||
}
|
||||
|
|
@ -788,9 +815,9 @@ MALYReader::create_masks (const MALYReaderMaskData &cmask, const std::list<MALYR
|
|||
warn (tl::to_string (tr ("No structure placement given - using 'center' for mask: ")) + m.name);
|
||||
}
|
||||
|
||||
MALYReaderParametersData::Base array_base = MALYReaderParametersData::BaseNotSet;
|
||||
MALYReaderParametersData::Base array_base = i->parameters.array_base;
|
||||
if (array_base == MALYReaderParametersData::BaseNotSet) {
|
||||
array_base = cmask.parameters.base;
|
||||
array_base = cmask.parameters.array_base;
|
||||
}
|
||||
if (array_base == MALYReaderParametersData::BaseNotSet) {
|
||||
array_base = MALYReaderParametersData::Center;
|
||||
|
|
|
|||
|
|
@ -138,6 +138,13 @@ public:
|
|||
*/
|
||||
virtual void warn (const std::string &txt, int wl = 1);
|
||||
|
||||
/**
|
||||
* @brief Reads the MALY file into a MALYData structure
|
||||
*
|
||||
* This method is provided for test purposes mainly.
|
||||
*/
|
||||
MALYData read_maly_file ();
|
||||
|
||||
private:
|
||||
struct MALYReaderTitleSpec
|
||||
{
|
||||
|
|
@ -222,7 +229,6 @@ private:
|
|||
std::list<std::string> m_sections;
|
||||
|
||||
void import_data (db::Layout &layout, const MALYData &data);
|
||||
MALYData read_maly_file ();
|
||||
tl::Extractor read_record ();
|
||||
void unget_record ();
|
||||
std::string read_record_internal ();
|
||||
|
|
|
|||
|
|
@ -24,6 +24,7 @@
|
|||
#include "dbMALYReader.h"
|
||||
#include "dbLayoutDiff.h"
|
||||
#include "dbWriter.h"
|
||||
#include "dbTestSupport.h"
|
||||
#include "tlUnitTest.h"
|
||||
|
||||
#include <stdlib.h>
|
||||
|
|
@ -54,7 +55,7 @@ static void run_test (tl::TestBase *_this, const std::string &base, const char *
|
|||
options.set_options (opt);
|
||||
|
||||
db::Manager m (false);
|
||||
db::Layout layout (&m), layout2 (&m), layout_au (&m);
|
||||
db::Layout layout (&m);
|
||||
|
||||
{
|
||||
std::string fn (base);
|
||||
|
|
@ -65,44 +66,74 @@ static void run_test (tl::TestBase *_this, const std::string &base, const char *
|
|||
reader.read (layout, options);
|
||||
}
|
||||
|
||||
tl_assert (layout.begin_top_down () != layout.end_top_down ());
|
||||
std::string tc_name = layout.cell_name (*layout.begin_top_down ());
|
||||
std::string fn_au (base);
|
||||
fn_au += "/maly/";
|
||||
fn_au += file_au;
|
||||
|
||||
// normalize the layout by writing to OASIS and reading from ..
|
||||
|
||||
std::string tmp_oas_file = _this->tmp_file (tl::sprintf ("%s.oas", tc_name));
|
||||
|
||||
{
|
||||
tl::OutputStream stream (tmp_oas_file);
|
||||
db::SaveLayoutOptions options;
|
||||
options.set_format ("OASIS");
|
||||
db::Writer writer (options);
|
||||
writer.write (layout, stream);
|
||||
}
|
||||
|
||||
{
|
||||
tl::InputStream stream (tmp_oas_file);
|
||||
db::Reader reader (stream);
|
||||
reader.read (layout2);
|
||||
}
|
||||
|
||||
{
|
||||
std::string fn (base);
|
||||
fn += "/maly/";
|
||||
fn += file_au;
|
||||
tl::InputStream stream (fn);
|
||||
db::Reader reader (stream);
|
||||
reader.read (layout_au);
|
||||
}
|
||||
|
||||
bool equal = db::compare_layouts (layout2, layout_au, db::layout_diff::f_boxes_as_polygons | db::layout_diff::f_verbose | db::layout_diff::f_flatten_array_insts, 1);
|
||||
if (! equal) {
|
||||
_this->raise (tl::sprintf ("Compare failed after reading - see %s vs %s\n", tmp_oas_file, file_au));
|
||||
}
|
||||
db::compare_layouts (_this, layout, fn_au, db::WriteOAS);
|
||||
}
|
||||
|
||||
TEST(1)
|
||||
TEST(1_Basic)
|
||||
{
|
||||
run_test (_this, tl::testdata (), "MALY_TEST.maly", "mag_test_au.oas");
|
||||
std::string fn (tl::testdata ());
|
||||
fn += "/maly/MALY_test1.maly";
|
||||
|
||||
tl::InputStream stream (fn);
|
||||
db::MALYReader reader (stream);
|
||||
|
||||
db::MALYData data = reader.read_maly_file ();
|
||||
|
||||
EXPECT_EQ (data.to_string (),
|
||||
"Mask A\n"
|
||||
" Size 127000\n"
|
||||
" Title \"<SERIAL>\" m90 50,-50 1,1,1 [Standard]\n"
|
||||
" Title \"<DATE>\" r0 0,-50 1,1,1 [Standard]\n"
|
||||
" Title \"MaskA1\" r0 -50,50 1,1,1 [Standard]\n"
|
||||
" Title \"WITH \"QUOTES\"\" m45 50,0 1,1,1 [Standard]\n"
|
||||
" Ref A1.oas{CHIP_A}(1) (0,0;10,10) m90 *1 20,0\n"
|
||||
" Ref A2.oas{CHIP_A}(2) ename(e001) dname(d001) (0,0;50,50) m90 *0.8 20,0 [2x5,1x2]\n"
|
||||
" Ref B3.oas{CHIP_A}(2) (0,0;12,12) m90 *1 20,0"
|
||||
)
|
||||
}
|
||||
|
||||
static std::string run_test_with_error (tl::TestBase * /*_this*/, const std::string &file)
|
||||
{
|
||||
std::string fn (tl::testdata ());
|
||||
fn += "/maly/";
|
||||
fn += file;
|
||||
|
||||
tl::InputStream stream (fn);
|
||||
db::MALYReader reader (stream);
|
||||
|
||||
try {
|
||||
reader.read_maly_file ();
|
||||
tl_assert (false);
|
||||
} catch (tl::Exception &ex) {
|
||||
tl::error << ex.msg ();
|
||||
return ex.msg ();
|
||||
}
|
||||
}
|
||||
|
||||
TEST(2_Errors)
|
||||
{
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2a.maly").find ("Line break inside quoted string (line=17,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2b.maly").find ("/*...*/ comment not closed (line=43,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2c.maly").find ("Expected value STANDARD or NATIVE for FONT (line=7,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2d.maly").find ("Unknown base specification: NOVALIDBASE (line=8,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2e.maly").find ("Expected end of text here: NOVALIDKEY .. (line=15,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2f.maly").find ("Expected 'Y' or 'NONE' for MIRROR spec (line=15,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2g.maly").find ("Expected end of text here: UNEXPECTED (line=20,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2h.maly").find ("Expected value Y or NONE for MASKMIRROR (line=23,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2i.maly").find ("Expected end of text here: UNEXPECTED (line=29,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2j.maly").find ("Expected end of text here: NOVALIDKEY .. (line=30,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2k.maly").find ("Expected a real number here: SCALE 0.80 .. (line=31,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2l.maly").find ("Expected 'PARAMETER' here: CMASK (line=19,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2m.maly").find ("Expected 'CMASK' here: TITLE (line=18,"), size_t (0));
|
||||
EXPECT_EQ (run_test_with_error (_this, "MALY_test2n.maly").find ("Header expected ('BEGIN MALY') (line=2, "), size_t (0));
|
||||
}
|
||||
|
||||
TEST(10_BasicLayout)
|
||||
{
|
||||
run_test (_this, tl::testdata (), "MALY_test10.maly", "maly_test10_au.oas");
|
||||
}
|
||||
|
||||
|
|
|
|||
|
|
@ -0,0 +1,60 @@
|
|||
|
||||
// A comment
|
||||
|
||||
/*
|
||||
A multi-line comment
|
||||
BEGIN MALY 1.1 -- not seend
|
||||
*/
|
||||
|
||||
BEGIN MALY 1.1 // ignored
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
AN UNKNOWN MASK RECORD
|
||||
BEGIN NONSENSE
|
||||
SOMETHING INSIDE A NONSENSE RECORD
|
||||
BEGIN MORE
|
||||
SOMETHING INSIDE ANOTHER NONSENSE RECORD
|
||||
END MORE
|
||||
END NONSENSE
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE "/home/NATIVE"
|
||||
REFERENCE TOOL a.para
|
||||
AN UNKNOWN PARAMETER
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
AN UNKNOWN TITLE RECORD
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "WITH \"QUOTES\"" 50.0 0
|
||||
+SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
+// with a continuation line
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
// A comment at the end
|
||||
|
|
@ -0,0 +1,62 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 7
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK test10_oas
|
||||
MASKMIRROR NONE
|
||||
END PARAMETER
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN STRGROUP G1
|
||||
SREF pat.oas TOP 1 ORG -2000.0 0 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 0.8
|
||||
AREF pat.oas TOP 2 ORG 1000 0 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 1.0 ITERATION 2 5 1500 2000
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF pat.oas TOP 3 ORG -3000.0 2000 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 2.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
BEGIN MASK B
|
||||
BEGIN PARAMETER
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN STRGROUP G1
|
||||
SREF pat.oas TOP 1 ORG -2000.0 0 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 0.8
|
||||
AREF pat.oas TOP 2 ORG 1000 0 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 1.0 ITERATION 2 5 1500 2000
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF pat.oas TOP 3 ORG -3000.0 2000 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 2.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
BEGIN MASK C
|
||||
BEGIN PARAMETER
|
||||
ARYBASE LOWERLEFT
|
||||
BASE LOWERLEFT
|
||||
END PARAMETER
|
||||
BEGIN STRGROUP G1
|
||||
SREF pat.oas TOP 1 ORG -2000.0 0 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 0.8
|
||||
AREF pat.oas TOP 2 ORG 1000 0 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 1.0 ITERATION 2 5 1500 2000
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF pat.oas TOP 3 ORG -3000.0 2000 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 2.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
BEGIN MASK D
|
||||
BEGIN PARAMETER
|
||||
ARYBASE CENTER
|
||||
BASE CENTER
|
||||
END PARAMETER
|
||||
BEGIN STRGROUP G1
|
||||
SREF pat.oas TOP 1 ORG -2000.0 0 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 0.8
|
||||
AREF pat.oas TOP 2 ORG 1000 0 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 1.0 ITERATION 2 5 1500 2000
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF pat.oas TOP 3 ORG -3000.0 2000 SIZE -250.0 -250.0 1000.0 1000.0 SCALE 2.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
|
@ -14,7 +14,7 @@ BEGIN MALY 1.1
|
|||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING TEST 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
STRING "TEST\" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
|
|
@ -0,0 +1,42 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
/* not terminated
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT NOVALIDFONT // wrong keyword
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE NOVALIDBASE // not a valid keyword
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180 NOVALIDKEYWORD
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR NOVALIDSPEC ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A UNEXPECTED
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR NOVALIDKEYWORD
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1 UNEXPECTED
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0 NOVALIDKEYWORD
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 // missing argument
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
// missing closing section END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN MALY 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
// missing opening BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
|
|
@ -0,0 +1,41 @@
|
|||
|
||||
BEGIN WRONG 1.1
|
||||
BEGIN MASKSET
|
||||
BEGIN CMASK
|
||||
BEGIN PARAMETER
|
||||
MASKSIZE 5
|
||||
FONT STANDARD
|
||||
BASE ORIGIN
|
||||
ARYBASE ORIGIN
|
||||
ROOT OASIS.MASK /home/MASK
|
||||
ROOT NATIVE /home/NATIVE
|
||||
REFERENCE TOOL a.para
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||
SERIAL 0 -50.0
|
||||
STRING "TEST" 50.0 0 SIZE 1.0 1.0 1.0 MIRROR Y ROTATE 90
|
||||
END TITLE
|
||||
END CMASK
|
||||
BEGIN MASK A
|
||||
BEGIN PARAMETER
|
||||
ROOT OASIS.MASK /home/mask1
|
||||
MASKMIRROR Y
|
||||
END PARAMETER
|
||||
BEGIN TITLE
|
||||
DATE OFF
|
||||
STRING MaskA1 -50.0 50.00
|
||||
END TITLE
|
||||
BEGIN STRGROUP G1
|
||||
SREF A1.oas CHIP_A 1 ORG -20.0 0 SIZE 0.0 0.0 10.0 10.0
|
||||
AREF A2.oas CHIP_A 2 ORG -20.0 0 SIZE 0.0 0.0 50.0 50.0
|
||||
+ SCALE 0.800 ITERATION 5 2 2.0 1.0
|
||||
PROPERTY DNAME d001 ENAME e001
|
||||
END STRGROUP
|
||||
BEGIN STRGROUP G2
|
||||
SREF B3.oas CHIP_A 2 ORG -20.0 0.0 SIZE 0.0 0.0 12.0 12.0
|
||||
END STRGROUP
|
||||
END MASK
|
||||
END MASKSET
|
||||
END MALY
|
||||
|
||||
Binary file not shown.
Binary file not shown.
Loading…
Reference in New Issue