drc: added length/skew constraint types

This commit is contained in:
Tomasz Wlostowski 2020-09-23 23:47:35 +02:00
parent abe354773f
commit 26e7dc6e14
2 changed files with 22 additions and 2 deletions

View File

@ -50,4 +50,11 @@ void DRC_RULE::AddConstraint( DRC_CONSTRAINT& aConstraint )
m_Constraints.push_back( aConstraint ); m_Constraints.push_back( aConstraint );
} }
OPT<DRC_CONSTRAINT> DRC_RULE::FindConstraint( DRC_CONSTRAINT_TYPE_T aType )
{
for( auto &c : m_Constraints)
if( c.m_Type == aType )
return c;
return OPT<DRC_CONSTRAINT>();
}

View File

@ -25,6 +25,7 @@
#define DRC_RULE_PROTO_H #define DRC_RULE_PROTO_H
#include <core/typeinfo.h> #include <core/typeinfo.h>
#include <core/optional.h>
#include <layers_id_colors_and_visibility.h> #include <layers_id_colors_and_visibility.h>
#include <netclass.h> #include <netclass.h>
#include <libeval_compiler/libeval_compiler.h> #include <libeval_compiler/libeval_compiler.h>
@ -38,7 +39,8 @@ class DRC_RULE_CONDITION;
enum DRC_CONSTRAINT_TYPE_T enum DRC_CONSTRAINT_TYPE_T
{ {
DRC_CONSTRAINT_TYPE_UNKNOWN = -1, DRC_CONSTRAINT_TYPE_UNKNOWN = -1,
DRC_CONSTRAINT_TYPE_CLEARANCE = 0, DRC_CONSTRAINT_TYPE_NULL = 0,
DRC_CONSTRAINT_TYPE_CLEARANCE,
DRC_CONSTRAINT_TYPE_HOLE_CLEARANCE, DRC_CONSTRAINT_TYPE_HOLE_CLEARANCE,
DRC_CONSTRAINT_TYPE_EDGE_CLEARANCE, DRC_CONSTRAINT_TYPE_EDGE_CLEARANCE,
DRC_CONSTRAINT_TYPE_HOLE_SIZE, DRC_CONSTRAINT_TYPE_HOLE_SIZE,
@ -48,7 +50,12 @@ enum DRC_CONSTRAINT_TYPE_T
DRC_CONSTRAINT_TYPE_TRACK_WIDTH, DRC_CONSTRAINT_TYPE_TRACK_WIDTH,
DRC_CONSTRAINT_TYPE_ANNULAR_WIDTH, DRC_CONSTRAINT_TYPE_ANNULAR_WIDTH,
DRC_CONSTRAINT_TYPE_DISALLOW, DRC_CONSTRAINT_TYPE_DISALLOW,
DRC_CONSTRAINT_TYPE_VIA_DIAMETER DRC_CONSTRAINT_TYPE_VIA_DIAMETER,
DRC_CONSTRAINT_TYPE_LENGTH,
DRC_CONSTRAINT_TYPE_SKEW,
DRC_CONSTRAINT_TYPE_DIFF_PAIR_LENGTH,
DRC_CONSTRAINT_TYPE_DIFF_PAIR_SKEW,
DRC_CONSTRAINT_TYPE_DIFF_PAIR_INTRA_SKEW
}; };
@ -105,6 +112,7 @@ public:
}; };
void AddConstraint( DRC_CONSTRAINT& aConstraint ); void AddConstraint( DRC_CONSTRAINT& aConstraint );
OPT<DRC_CONSTRAINT> FindConstraint( DRC_CONSTRAINT_TYPE_T aType );
public: public:
bool m_Unary; bool m_Unary;
@ -129,6 +137,11 @@ class DRC_CONSTRAINT
{ {
} }
bool IsNull() const
{
return m_Type == DRC_CONSTRAINT_TYPE_NULL;
}
const MINOPTMAX<int>& GetValue() const { return m_Value; } const MINOPTMAX<int>& GetValue() const { return m_Value; }
MINOPTMAX<int>& Value() { return m_Value; } MINOPTMAX<int>& Value() { return m_Value; }