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
|
* @brief A class representing a title field on a mask
|
||||||
*/
|
*/
|
||||||
class MALYTitle
|
class DB_PUBLIC MALYTitle
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
@ -138,7 +138,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* @brief A class representing a structure (pattern) on a mask
|
* @brief A class representing a structure (pattern) on a mask
|
||||||
*/
|
*/
|
||||||
class MALYStructure
|
class DB_PUBLIC MALYStructure
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
@ -220,7 +220,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* @brief A class representing one mask
|
* @brief A class representing one mask
|
||||||
*/
|
*/
|
||||||
class MALYMask
|
class DB_PUBLIC MALYMask
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
@ -261,7 +261,7 @@ public:
|
||||||
/**
|
/**
|
||||||
* @brief A class representing the MALY file
|
* @brief A class representing the MALY file
|
||||||
*/
|
*/
|
||||||
class MALYData
|
class DB_PUBLIC MALYData
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
/**
|
/**
|
||||||
|
|
|
||||||
|
|
@ -165,7 +165,7 @@ MALYReader::import_data (db::Layout &layout, const MALYData &data)
|
||||||
|
|
||||||
} else {
|
} 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) {
|
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);
|
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) {
|
if (source_layer >= 0) {
|
||||||
|
|
||||||
// create a host cell for the pattern
|
// create a host cell for the pattern
|
||||||
|
|
||||||
std::string cn = m->name;
|
std::string cn = m->name;
|
||||||
if (s->mname.empty ()) {
|
if (s->topcell.empty ()) {
|
||||||
cn += ".PATTERN";
|
if (s->mname.empty ()) {
|
||||||
|
cn += ".PATTERN";
|
||||||
|
} else {
|
||||||
|
cn += "." + s->mname;
|
||||||
|
}
|
||||||
} else {
|
} else {
|
||||||
cn += "." + s->mname;
|
cn += "." + s->topcell;
|
||||||
}
|
}
|
||||||
db::cell_index_type target_cell = layout.add_cell (cn.c_str ());
|
db::cell_index_type target_cell = layout.add_cell (cn.c_str ());
|
||||||
|
|
||||||
// create the pattern instance
|
// 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;
|
db::CellInstArray array;
|
||||||
if (s->nx > 1 || s->ny > 1) {
|
if (s->nx > 1 || s->ny > 1) {
|
||||||
db::Coord idx = db::coord_traits<db::Coord>::rounded (s->dx / layout.dbu ());
|
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 ());
|
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 {
|
} else {
|
||||||
array = db::CellInstArray (target_cell, trans);
|
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 () != '/'))
|
while (! m_stream.at_end () && (m_stream.get_char () != '*' || m_stream.peek_char () != '/'))
|
||||||
;
|
;
|
||||||
if (m_stream.at_end ()) {
|
if (m_stream.at_end ()) {
|
||||||
|
m_last_record_line = m_stream.line_number ();
|
||||||
error (tl::to_string (tr ("/*...*/ comment not closed")));
|
error (tl::to_string (tr ("/*...*/ comment not closed")));
|
||||||
}
|
}
|
||||||
m_stream.get_char (); // eat trailing "/"
|
m_stream.get_char (); // eat trailing "/"
|
||||||
|
|
@ -288,19 +293,25 @@ MALYReader::read_record_internal ()
|
||||||
}
|
}
|
||||||
|
|
||||||
if (c == '\n') {
|
if (c == '\n') {
|
||||||
|
|
||||||
if (m_stream.peek_char () == '+') {
|
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
|
// continuation line
|
||||||
m_stream.get_char (); // eat "+"
|
m_stream.get_char (); // eat "+"
|
||||||
if (m_stream.at_end ()) {
|
if (m_stream.at_end ()) {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
c = m_stream.get_char ();
|
|
||||||
} else {
|
} else {
|
||||||
break;
|
break;
|
||||||
}
|
}
|
||||||
}
|
|
||||||
|
|
||||||
if (c == '"' || c == '\'') {
|
} else if (c == '"' || c == '\'') {
|
||||||
|
|
||||||
rec += c;
|
rec += c;
|
||||||
|
|
||||||
|
|
@ -314,16 +325,19 @@ MALYReader::read_record_internal ()
|
||||||
break;
|
break;
|
||||||
} else if (c == '\\') {
|
} else if (c == '\\') {
|
||||||
if (m_stream.at_end ()) {
|
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 ();
|
c = m_stream.get_char ();
|
||||||
rec += c;
|
rec += c;
|
||||||
} else if (c == '\n') {
|
} else if (c == '\n') {
|
||||||
|
m_last_record_line = m_stream.line_number ();
|
||||||
error (tl::to_string (tr ("Line break inside quoted string")));
|
error (tl::to_string (tr ("Line break inside quoted string")));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if (quote) {
|
if (quote) {
|
||||||
|
m_last_record_line = m_stream.line_number ();
|
||||||
error (tl::to_string (tr ("Unexpected end of file inside quotee string")));
|
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;
|
std::string format, path;
|
||||||
ex.read_word_or_quoted (format);
|
ex.read_word_or_quoted (format);
|
||||||
ex.read_word_or_quoted (path, ".\\/+-");
|
ex.read_word_or_quoted (path, ".\\/+-_");
|
||||||
ex.expect_end ();
|
ex.expect_end ();
|
||||||
|
|
||||||
data.roots.push_back (std::make_pair (format, path));
|
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 {
|
} else {
|
||||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
warn (tl::to_string (tr ("Unknown record ignored")));
|
||||||
}
|
}
|
||||||
|
|
@ -564,6 +581,9 @@ MALYReader::read_title (MALYReaderTitleData &data)
|
||||||
|
|
||||||
ex.expect_end ();
|
ex.expect_end ();
|
||||||
|
|
||||||
|
} else if (begin_section (ex)) {
|
||||||
|
warn (tl::to_string (tr ("Unknown section ignored")));
|
||||||
|
skip_section ();
|
||||||
} else {
|
} else {
|
||||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
warn (tl::to_string (tr ("Unknown record ignored")));
|
||||||
}
|
}
|
||||||
|
|
@ -639,6 +659,9 @@ MALYReader::read_strgroup (MALYReaderStrGroupData &data)
|
||||||
|
|
||||||
ex.expect_end ();
|
ex.expect_end ();
|
||||||
|
|
||||||
|
} else if (begin_section (ex)) {
|
||||||
|
warn (tl::to_string (tr ("Unknown section ignored")));
|
||||||
|
skip_section ();
|
||||||
} else {
|
} else {
|
||||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
warn (tl::to_string (tr ("Unknown record ignored")));
|
||||||
}
|
}
|
||||||
|
|
@ -674,6 +697,7 @@ MALYReader::read_mask (MALYReaderMaskData &mask)
|
||||||
read_strgroup (mask.strgroups.back ());
|
read_strgroup (mask.strgroups.back ());
|
||||||
|
|
||||||
} else if (begin_section (ex)) {
|
} else if (begin_section (ex)) {
|
||||||
|
warn (tl::to_string (tr ("Unknown section ignored")));
|
||||||
skip_section ();
|
skip_section ();
|
||||||
} else {
|
} else {
|
||||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
warn (tl::to_string (tr ("Unknown record ignored")));
|
||||||
|
|
@ -718,6 +742,9 @@ MALYReader::read_maskset (MALYData &data)
|
||||||
ex.expect_end ();
|
ex.expect_end ();
|
||||||
read_mask (cmask);
|
read_mask (cmask);
|
||||||
|
|
||||||
|
} else if (begin_section (ex)) {
|
||||||
|
warn (tl::to_string (tr ("Unknown section ignored")));
|
||||||
|
skip_section ();
|
||||||
} else {
|
} else {
|
||||||
warn (tl::to_string (tr ("Unknown record ignored")));
|
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);
|
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) {
|
if (array_base == MALYReaderParametersData::BaseNotSet) {
|
||||||
array_base = cmask.parameters.base;
|
array_base = cmask.parameters.array_base;
|
||||||
}
|
}
|
||||||
if (array_base == MALYReaderParametersData::BaseNotSet) {
|
if (array_base == MALYReaderParametersData::BaseNotSet) {
|
||||||
array_base = MALYReaderParametersData::Center;
|
array_base = MALYReaderParametersData::Center;
|
||||||
|
|
|
||||||
|
|
@ -138,6 +138,13 @@ public:
|
||||||
*/
|
*/
|
||||||
virtual void warn (const std::string &txt, int wl = 1);
|
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:
|
private:
|
||||||
struct MALYReaderTitleSpec
|
struct MALYReaderTitleSpec
|
||||||
{
|
{
|
||||||
|
|
@ -222,7 +229,6 @@ private:
|
||||||
std::list<std::string> m_sections;
|
std::list<std::string> m_sections;
|
||||||
|
|
||||||
void import_data (db::Layout &layout, const MALYData &data);
|
void import_data (db::Layout &layout, const MALYData &data);
|
||||||
MALYData read_maly_file ();
|
|
||||||
tl::Extractor read_record ();
|
tl::Extractor read_record ();
|
||||||
void unget_record ();
|
void unget_record ();
|
||||||
std::string read_record_internal ();
|
std::string read_record_internal ();
|
||||||
|
|
|
||||||
|
|
@ -24,6 +24,7 @@
|
||||||
#include "dbMALYReader.h"
|
#include "dbMALYReader.h"
|
||||||
#include "dbLayoutDiff.h"
|
#include "dbLayoutDiff.h"
|
||||||
#include "dbWriter.h"
|
#include "dbWriter.h"
|
||||||
|
#include "dbTestSupport.h"
|
||||||
#include "tlUnitTest.h"
|
#include "tlUnitTest.h"
|
||||||
|
|
||||||
#include <stdlib.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);
|
options.set_options (opt);
|
||||||
|
|
||||||
db::Manager m (false);
|
db::Manager m (false);
|
||||||
db::Layout layout (&m), layout2 (&m), layout_au (&m);
|
db::Layout layout (&m);
|
||||||
|
|
||||||
{
|
{
|
||||||
std::string fn (base);
|
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);
|
reader.read (layout, options);
|
||||||
}
|
}
|
||||||
|
|
||||||
tl_assert (layout.begin_top_down () != layout.end_top_down ());
|
std::string fn_au (base);
|
||||||
std::string tc_name = layout.cell_name (*layout.begin_top_down ());
|
fn_au += "/maly/";
|
||||||
|
fn_au += file_au;
|
||||||
|
|
||||||
// normalize the layout by writing to OASIS and reading from ..
|
db::compare_layouts (_this, layout, fn_au, db::WriteOAS);
|
||||||
|
|
||||||
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));
|
|
||||||
}
|
|
||||||
}
|
}
|
||||||
|
|
||||||
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
|
BEGIN TITLE
|
||||||
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
DATE 50.0 -50.0 MIRROR Y ROTATE 180
|
||||||
SERIAL 0 -50.0
|
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 TITLE
|
||||||
END CMASK
|
END CMASK
|
||||||
BEGIN MASK A
|
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