2326 #endif // DEFINE_ENUM 2327 #ifdef DEFINE_METHODS 2461 "IFNONE_PATH_ASSIGN",
2483 "ASSIGNMENT_PATTERN",
2495 "expression width change",
2502 "logical left shift",
2503 "logical right shift",
2504 "arithmetic left shift",
2505 "arithmetic right shift",
2512 "instance reference",
2515 "call to enable a systask",
2516 "call to a timing task",
2517 "call to a function",
2518 "dimensioned reference (array/bit select)",
2520 "reference to variable",
2521 "reference to parameter",
2522 "reference to port",
2523 "reference to a forward declared variable",
2524 "reference to a genvar",
2525 "reference to a enum",
2526 "reference to a type",
2528 "variable declaration",
2529 "parameter declaration",
2530 "specify parameter declaration",
2532 "genvar declaration",
2535 "vector decl range specification",
2537 "vector subrange with ascending index select",
2538 "vector subrange with descending index select",
2539 "convert real to integer",
2540 "convert integer to real",
2541 "replication operator",
2542 "concatenation operator",
2544 "bitwise complement",
2547 "logical complement",
2549 "greater than or equal",
2551 "less than or equal",
2564 "condition expression operator",
2567 "always latch block",
2568 "always flip-flop block",
2569 "always combinational logic block",
2573 "procedural assignment",
2574 "generate intialize assignment",
2575 "procedural assignment with add",
2576 "procedural assignment with subtract",
2577 "procedural assignment with mul",
2578 "procedural assignment with div",
2579 "procedural assignment with mod",
2580 "procedural assignment with bitwise and",
2581 "procedural assignment with bitwise or",
2582 "procedural assignment with bitwise xor",
2583 "procedural assignment with left shift",
2584 "procedural assignment with right shift",
2585 "procedural assignment with left arithmetic shift",
2586 "procedural assignment with right arithmetic shift",
2588 "release statement",
2589 "nonblocking assignment",
2590 "positive event qualifier",
2591 "negative event qualifier",
2595 "min/typ/max expression",
2597 "forever statement",
2606 "continious assignment",
2609 "function definition",
2610 "module definition",
2611 "package definition",
2615 "external reference",
2617 "defparam statement",
2619 "path assignment statement",
2620 "ifnone path assignment statement",
2622 "procedural assignment",
2623 "deassign statement",
2624 "disable statement",
2625 "attribute specification",
2626 "structural if statement",
2627 "structural for statement",
2628 "structural case statement",
2632 "sentinal at end of port list",
2633 "expression represented by a macro",
2634 "enum specification",
2635 "member reference (structure, class or external",
2642 "assignment_pattern",
2646 #endif // DEFINE_METHODS 2649 #ifdef DEFINE_CONSTRUCTOR 2716 n->
Arg<
char*>(0) = a0;
2731 n->
Arg<
char*>(0) = a0;
2745 n->
Arg<
const char*>(0) = a0;
2760 n->
Arg<
const char*>(0) = a0;
2774 n->
Arg<
const char*>(0) = a0;
2789 n->
Arg<
const char*>(0) = a0;
2804 n->
Arg<
const char*>(0) = a0;
2805 n->
Arg<
int>(1) = a1;
2821 n->
Arg<
const char*>(0) = a0;
2822 n->
Arg<
int>(1) = a1;
3823 n->
Arg<CEnum*>(0) = a0;
3838 n->
Arg<CEnum*>(0) = a0;
3852 n->
Arg<CTypedef*>(0) = a0;
3867 n->
Arg<CTypedef*>(0) = a0;
4063 n->
Arg<CTypedef*>(0) = a0;
4078 n->
Arg<CTypedef*>(0) = a0;
5249 n->
Arg<
bool>(2) = a2;
5268 n->
Arg<
bool>(2) = a2;
5354 n->
Arg<
bool>(0) = a0;
5373 n->
Arg<
bool>(0) = a0;
6342 n->
Arg<
bool>(3) = a3;
6363 n->
Arg<
bool>(3) = a3;
6645 n->
Arg<CPackage*>(0) = a0;
6660 n->
Arg<CPackage*>(0) = a0;
6862 n->
Arg<
int>(0) = a0;
6864 n->
Arg<
int>(2) = a2;
6865 n->
Arg<
int>(3) = a3;
6867 n->
Arg<
int>(5) = a5;
6889 n->
Arg<
int>(0) = a0;
6891 n->
Arg<
int>(2) = a2;
6892 n->
Arg<
int>(3) = a3;
6894 n->
Arg<
int>(5) = a5;
7297 n->
Arg<
char*>(0) = a0;
7312 n->
Arg<
char*>(0) = a0;
7352 n->
Arg<
const char*>(0) = a0;
7369 n->
Arg<
const char*>(0) = a0;
7675 #endif // DEFINE_CONSTUCTOR 7685 #ifdef DEFINE_METHODS 8423 return Arg<CEnum*>(0)->GetExpression()->IsVolatile();
8491 return Arg<CNode*>(1) ? Arg<CNode*>(1)->IsVolatile() : TRUE;
8569 return Array::WidthConstant(Arg<CNode*>(0),Arg<CNode*>(1));
8655 return Member::WidthConstant(Arg<CNode*>(0),Arg<CSymbol*>(1));
8729 return Array::WidthVolatile(Arg<CNode*>(0),Arg<CNode*>(1));
8815 return Member::WidthVolatile(Arg<CNode*>(0),Arg<CSymbol*>(1));
8982 return Array::WidthExp(Arg<CNode*>(0),Arg<CNode*>(1));
9048 return Arg<CNode*>(1);
9054 return Arg<CNode*>(1);
9240 return Member::WidthExp(Arg<CNode*>(0),Arg<CSymbol*>(1));
9343 return Array::WidthEvaluateable(Arg<CNode*>(0),Arg<CNode*>(1));
9429 return Member::WidthEvaluateable(Arg<CNode*>(0),Arg<CSymbol*>(1));
9463 return !Arg<CVector*>(0)->HasXZ();
9467 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9469 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9471 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9473 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9475 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9477 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9479 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9481 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9483 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9485 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9487 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9489 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9491 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9493 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9495 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9497 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9499 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9505 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9509 (integerIsNonX && Arg<CDecl*>(0)->GetDataType()->GetVarDataType() ==
eINT);
9511 return Arg<CDecl*>(0)->GetDataType()->GetTwoState() ||
9517 (integerIsNonX && Arg<CDecl*>(0)->GetDataType()->GetVarDataType() ==
eINTEGER);
9523 (integerIsNonX && Arg<CDecl*>(0)->GetDataType()->GetVarDataType() ==
eINT);
9529 return Arg<CEnum*>(0)->GetExpression()->IsNonX( integerIsNonX, exclude );
9535 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9537 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9539 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9541 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9543 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9545 return Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9547 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9549 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9551 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9553 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9555 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9557 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9559 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9561 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9563 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9565 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9567 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9569 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9571 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9573 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9575 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9577 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9579 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9581 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9583 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9585 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9587 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9589 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9591 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(2)->
IsNonX( integerIsNonX, exclude );
9593 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9595 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9597 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9599 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(2)->
IsNonX( integerIsNonX, exclude );
9603 return Arg<CNode*>(1) ? Arg<CNode*>(1)->IsNonX(integerIsNonX, exclude) : FALSE;
9605 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9607 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9609 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9611 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9613 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
9615 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude ) && Arg<CNode*>(1)->
IsNonX( integerIsNonX, exclude );
9617 return Arg<CNode*>(0)->
IsNonX( integerIsNonX, exclude );
10111 n->fixedWidth = fixedWidth;
10113 n->attributes = attributes->
Clone(heap);
10115 for(
int i = 0; i <
ArgCount(); i++ ) {
10116 if( ((nodeMask>>i)&1) && Arg<CNode*>(i) ) {
10119 void* tmp = Arg<void*>(i);
10120 n->
Arg<
void*>(i) = tmp;
10136 if( !(*func)(
this, data ) ) {
10145 switch(
GetOp() ) {
10220 if(Arg<CInstance*>(0)) Arg<CInstance*>(0)->
PreVisit1( func, data );
10224 if(Arg<CGate*>(0)) Arg<CGate*>(0)->
PreVisit1( func, data );
10259 if(Arg<CNet*>(0)) Arg<CNet*>(0)->
PreVisit1( func, data );
10263 if(Arg<CVar*>(0)) Arg<CVar*>(0)->
PreVisit1( func, data );
10267 if(Arg<CParam*>(0)) Arg<CParam*>(0)->
PreVisit1( func, data );
10271 if(Arg<CParam*>(0)) Arg<CParam*>(0)->
PreVisit1( func, data );
10275 if(Arg<CPortDir*>(0)) Arg<CPortDir*>(0)->
PreVisit1( func, data );
10279 if(Arg<CGenvar*>(0)) Arg<CGenvar*>(0)->
PreVisit1( func, data );
10283 if(Arg<CTypedef*>(0)) Arg<CTypedef*>(0)->
PreVisit1( func, data );
10398 if(Arg<CBlock*>(0)) Arg<CBlock*>(0)->
PreVisit1( func, data );
10402 if(Arg<CSpecify*>(0)) Arg<CSpecify*>(0)->
PreVisit1( func, data );
10514 if(Arg<CFunction*>(0)) Arg<CFunction*>(0)->
PreVisit1( func, data );
10518 if(Arg<CModule*>(0)) Arg<CModule*>(0)->
PreVisit1( func, data );
10522 if(Arg<CPackage*>(0)) Arg<CPackage*>(0)->
PreVisit1( func, data );
10538 if(Arg<CPort*>(0)) Arg<CPort*>(0)->
PreVisit1( func, data );
10566 if(Arg<CAttr*>(0)) Arg<CAttr*>(0)->
PreVisit1( func, data );
10628 for(
int i = 0; i <
ArgCount(); i++ ) {
10629 if( Arg<CNode*>(i) && !((nodeMask>>i)&1) ) Arg<CNode*>(i)->PreVisit1( func, data );
10641 if( !(*func)( n, data ) ) {
10667 switch(
GetOp() ) {
10742 if(Arg<CInstance*>(0)) Arg<CInstance*>(0)->
PostVisit1( func, data );
10746 if(Arg<CGate*>(0)) Arg<CGate*>(0)->
PostVisit1( func, data );
10789 if(Arg<CNet*>(0)) Arg<CNet*>(0)->
PostVisit1( func, data );
10793 if(Arg<CVar*>(0)) Arg<CVar*>(0)->
PostVisit1( func, data );
10797 if(Arg<CParam*>(0)) Arg<CParam*>(0)->
PostVisit1( func, data );
10801 if(Arg<CParam*>(0)) Arg<CParam*>(0)->
PostVisit1( func, data );
10805 if(Arg<CPortDir*>(0)) Arg<CPortDir*>(0)->
PostVisit1( func, data );
10809 if(Arg<CGenvar*>(0)) Arg<CGenvar*>(0)->
PostVisit1( func, data );
10813 if(Arg<CTypedef*>(0)) Arg<CTypedef*>(0)->
PostVisit1( func, data );
10928 if(Arg<CBlock*>(0)) Arg<CBlock*>(0)->
PostVisit1( func, data );
10932 if(Arg<CSpecify*>(0)) Arg<CSpecify*>(0)->
PostVisit1( func, data );
11044 if(Arg<CFunction*>(0)) Arg<CFunction*>(0)->
PostVisit1( func, data );
11048 if(Arg<CModule*>(0)) Arg<CModule*>(0)->
PostVisit1( func, data );
11052 if(Arg<CPackage*>(0)) Arg<CPackage*>(0)->
PostVisit1( func, data );
11068 if(Arg<CPort*>(0)) Arg<CPort*>(0)->
PostVisit1( func, data );
11096 if(Arg<CAttr*>(0)) Arg<CAttr*>(0)->
PostVisit1( func, data );
11158 for(
int i = 0; i <
ArgCount(); i++ ) {
11159 if( Arg<CNode*>(i) && !((nodeMask>>i)&1) ) Arg<CNode*>(i)->PostVisit1( func, data );
11162 std::stack<CNode*> visitLog;
11180 while( !visitLog.empty() ) {
11181 CNode* top = visitLog.top();
11183 (*func)(top->
Arg<
CNode*>(1),data);
11189 (*func)(
this, data );
11206 switch(
GetOp() ) {
11281 if(Arg<CInstance*>(0)) Arg<CInstance*>(0)->
PostSubVisit1( func, data );
11285 if(Arg<CGate*>(0)) Arg<CGate*>(0)->
PostSubVisit1( func, data );
11328 if(Arg<CNet*>(0)) Arg<CNet*>(0)->
PostSubVisit1( func, data );
11332 if(Arg<CVar*>(0)) Arg<CVar*>(0)->
PostSubVisit1( func, data );
11336 if(Arg<CParam*>(0)) Arg<CParam*>(0)->
PostSubVisit1( func, data );
11340 if(Arg<CParam*>(0)) Arg<CParam*>(0)->
PostSubVisit1( func, data );
11344 if(Arg<CPortDir*>(0)) Arg<CPortDir*>(0)->
PostSubVisit1( func, data );
11348 if(Arg<CGenvar*>(0)) Arg<CGenvar*>(0)->
PostSubVisit1( func, data );
11352 if(Arg<CTypedef*>(0)) Arg<CTypedef*>(0)->
PostSubVisit1( func, data );
11467 if(Arg<CBlock*>(0)) Arg<CBlock*>(0)->
PostSubVisit1( func, data );
11471 if(Arg<CSpecify*>(0)) Arg<CSpecify*>(0)->
PostSubVisit1( func, data );
11583 if(Arg<CFunction*>(0)) Arg<CFunction*>(0)->
PostSubVisit1( func, data );
11587 if(Arg<CModule*>(0)) Arg<CModule*>(0)->
PostSubVisit1( func, data );
11591 if(Arg<CPackage*>(0)) Arg<CPackage*>(0)->
PostSubVisit1( func, data );
11607 if(Arg<CPort*>(0)) Arg<CPort*>(0)->
PostSubVisit1( func, data );
11635 if(Arg<CAttr*>(0)) Arg<CAttr*>(0)->
PostSubVisit1( func, data );
11697 for(
int i = 0; i <
ArgCount(); i++ ) {
11698 if( Arg<CNode*>(i) && !((nodeMask>>i)&1) ) Arg<CNode*>(i) = Arg<CNode*>(i)->
PostSubVisit1( func, data );
11701 std::stack<CNode*> visitLog;
11720 while( !visitLog.empty() ) {
11721 CNode* top = visitLog.top();
11729 return (*func)(
this, data );
11742 unsigned result =
GetOp();
11744 switch(
GetOp() ) {
11750 result ^= Arg<CVector*>(0)->
Hash();
11754 result ^= strlen(Arg<char*>(0));
11758 result ^= strlen(Arg<char*>(0));
11762 result ^= strlen(Arg<char*>(0));
11766 result ^= strlen(Arg<char*>(0));
11767 result ^= Arg<int>(1);
11825 result ^= Arg<unsigned long>(0);
11829 result ^= Arg<unsigned long>(0);
11833 result ^= Arg<unsigned long>(0);
11837 result ^= Arg<unsigned long>(0);
11841 result ^= Arg<unsigned long>(0);
11845 result ^= Arg<unsigned long>(0);
11846 result ^= Arg<unsigned long>(2);
11853 result ^= Arg<unsigned long>(0);
11857 result ^= Arg<unsigned long>(0);
11861 result ^= Arg<unsigned long>(0);
11865 result ^= Arg<unsigned long>(0);
11869 result ^= Arg<unsigned long>(0);
11873 result ^= Arg<unsigned long>(0);
11877 result ^= Arg<unsigned long>(0);
11881 result ^= Arg<unsigned long>(0);
11885 result ^= Arg<unsigned long>(0);
11889 result ^= Arg<unsigned long>(0);
11893 result ^= Arg<unsigned long>(0);
11897 result ^= Arg<unsigned long>(0);
11901 result ^= Arg<unsigned long>(0);
11905 result ^= Arg<unsigned long>(0);
11909 result ^= Arg<unsigned long>(0);
12024 result ^= Arg<unsigned long>(0);
12025 result ^= Arg<bool>(2);
12029 result ^= Arg<unsigned long>(0);
12036 result ^= Arg<bool>(0);
12091 result ^= (
unsigned long)Arg<Edge_t>(1);
12104 result ^= Arg<unsigned long>(3);
12123 result ^= Arg<unsigned long>(2);
12124 result ^= Arg<bool>(3);
12128 result ^= Arg<unsigned long>(2);
12132 result ^= Arg<unsigned long>(2);
12139 result ^= Arg<unsigned long>(0);
12143 result ^= Arg<unsigned long>(0);
12147 result ^= Arg<unsigned long>(0);
12151 result ^= Arg<unsigned long>(0);
12155 result ^= Arg<unsigned long>(0);
12159 result ^= Arg<unsigned long>(0);
12172 result ^= Arg<unsigned long>(0);
12176 result ^= Arg<unsigned long>(0);
12183 result ^= Arg<int>(0);
12184 result ^= Arg<int>(2);
12185 result ^= Arg<int>(3);
12186 result ^= Arg<int>(5);
12205 result ^= Arg<unsigned long>(0);
12209 result ^= Arg<unsigned long>(0);
12228 result ^= strlen(Arg<char*>(0));
12235 result ^= strlen(Arg<char*>(0));
12239 result ^= Arg<unsigned long>(0);
12243 result ^= Arg<unsigned long>(1);
12271 for(
int i = 0; i <
ArgCount(); i++ ) {
12272 if( !((nodeMask>>i)&1) && Arg<CNode*>(i) ) result ^= Arg<CNode*>(i)->
Hash();
12300 if( a == NULL || b == NULL ) {
12311 switch( a->
GetOp() ) {
12321 if( !(!strcmp(a->
Arg<
char*>(0),b->
Arg<
char*>(0))) ) {
return FALSE; }
12325 if( !(!strcmp(a->
Arg<
char*>(0),b->
Arg<
char*>(0))) ) {
return FALSE; }
12329 if( !(!strcmp(a->
Arg<
char*>(0),b->
Arg<
char*>(0))) ) {
return FALSE; }
12333 if( !(!strcmp(a->
Arg<
char*>(0),b->
Arg<
char*>(0))) ) {
return FALSE; }
12334 if( !(a->
Arg<
int>(1)==b->
Arg<
int>(1)) ) {
return FALSE; }
12726 if( !(a->
Arg<CPackage*>(0)==b->
Arg<CPackage*>(0)) ) {
return FALSE; }
12750 if( !(a->
Arg<
int>(0)==b->
Arg<
int>(0)) ) {
return FALSE; }
12751 if( !(a->
Arg<
int>(2)==b->
Arg<
int>(2)) ) {
return FALSE; }
12752 if( !(a->
Arg<
int>(3)==b->
Arg<
int>(3)) ) {
return FALSE; }
12753 if( !(a->
Arg<
int>(5)==b->
Arg<
int>(5)) ) {
return FALSE; }
12795 if( !(!strcmp(a->
Arg<
char*>(0),b->
Arg<
char*>(0))) ) {
return FALSE; }
12802 if( !(!strcmp(a->
Arg<
char*>(0),b->
Arg<
char*>(0))) ) {
return FALSE; }
12838 for(
int i = 0; i < a->
ArgCount(); i++ ) {
12839 if( !((nodeMask>>i)&1) &&
12856 return Arg<CParam*>(0)->GetExpression()->IsEvaluateable();
12858 return Arg<CParam*>(0)->GetExpression()->IsEvaluateable();
12860 return Arg<CNode*>(1) ? Arg<CNode*>(1)->IsEvaluateable() : FALSE;
13020 for(
int i = 0; i <
ArgCount(); i++ ) {
13021 if( !Arg<CNode*>(i)->IsEvaluateable() )
return FALSE;
13036 void CNode::_EvalVector(
CVector& v )
13046 EVAL_VECTOR_BINARY(
Sub);
13049 EVAL_VECTOR_BINARY(
Mul);
13052 EVAL_VECTOR_BINARY(
Div);
13055 EVAL_VECTOR_BINARY(
Pow);
13058 EVAL_VECTOR_BINARY(
Add);
13061 EVAL_VECTOR_BINARY_SELF_RIGHT(Lsh);
13064 EVAL_VECTOR_BINARY_SELF_RIGHT(Rsh);
13067 EVAL_VECTOR_BINARY_SELF_RIGHT(Lsha);
13070 EVAL_VECTOR_BINARY_SELF_RIGHT(Rsha);
13073 EVAL_VECTOR_BINARY(Mod);
13076 EVAL_VECTOR_BINARY(Or);
13079 EVAL_VECTOR_BINARY(And);
13082 EVAL_VECTOR_BINARY(Xor);
13085 EVAL_VECTOR_BINARY(Xnor);
13091 EVAL_VECTOR_PARAM_REF();
13094 EVAL_VECTOR_ENUM_REF();
13097 v.
LoadReal( Arg<CNode*>(0)->_EvalReal() );
13100 EVAL_VECTOR_BINARY(Rep);
13103 EVAL_VECTOR_BINARY(Cat);
13106 {
CVector vv(Arg<CNode*>(0)->width); Arg<CNode*>(0)->_EvalVector(vv); v = vv;};
13109 EVAL_VECTOR_UNARY(Com);
13112 EVAL_VECTOR_UNARY(
Neg);
13115 EVAL_VECTOR_UNARY(
Plus);
13118 EVAL_VECTOR_UNARY(Not);
13121 EVAL_RELATIONAL(Gt);
13124 EVAL_RELATIONAL(Ge);
13127 EVAL_RELATIONAL(Lt);
13130 EVAL_RELATIONAL(Le);
13133 EVAL_VECTOR_BINARY(Land);
13136 EVAL_VECTOR_BINARY(Lor);
13139 EVAL_RELATIONAL(Ceq);
13142 EVAL_RELATIONAL(Cne);
13145 EVAL_RELATIONAL(Eq);
13148 EVAL_RELATIONAL(Ne);
13151 EVAL_VECTOR_UNARY_SELF(Rand);
13154 EVAL_VECTOR_UNARY_SELF(Rnand);
13157 EVAL_VECTOR_UNARY_SELF(Ror);
13160 EVAL_VECTOR_UNARY_SELF(Rnor);
13163 EVAL_VECTOR_UNARY_SELF(Rxor);
13166 EVAL_VECTOR_UNARY_SELF(Rxnor);
13169 EVAL_VECTOR_HOOK();
13188 double CNode::_EvalReal()
13193 d =
s2d(Arg<char*>(0));
13196 EVAL_REAL_BINARY(
Sub);
13199 EVAL_REAL_BINARY(
Mul);
13202 EVAL_REAL_BINARY(
Div);
13205 EVAL_REAL_BINARY(
Pow);
13208 EVAL_REAL_BINARY(
Add);
13214 EVAL_REAL_PARAM_REF();
13217 EVAL_REAL_ENUM_REF();
13220 {
CVector v(Arg<CNode*>(0)->width); v.
Signed(Arg<CNode*>(0)->type ==
eS); Arg<CNode*>(0)->_EvalVector(v); d = v.
GetReal(); };
13223 EVAL_REAL_UNARY(
Neg);
13226 EVAL_REAL_UNARY(
Plus);
13244 int CNode::ConditionalWiden()
13246 switch(
GetOp() ) {
13408 unsigned CNode::NodeMask()
13410 switch(
GetOp() ) {
13734 int CNode::WidthFixed()
13736 switch(
GetOp() ) {
13738 return NodeMask()==0;
13742 return NodeMask()==0;
13744 return NodeMask()==0;
13746 return NodeMask()==0;
13748 return NodeMask()==0;
13750 return NodeMask()==0;
13752 return NodeMask()==0;
13754 return NodeMask()==0;
13756 return NodeMask()==0;
13758 return NodeMask()==0;
13760 return NodeMask()==0;
13762 return NodeMask()==0;
13764 return NodeMask()==0;
13766 return NodeMask()==0;
13768 return NodeMask()==0;
13770 return NodeMask()==0;
13772 return NodeMask()==0;
13774 return NodeMask()==0;
13776 return NodeMask()==0;
13778 return NodeMask()==0;
13780 return NodeMask()==0;
13782 return NodeMask()==0;
13784 return NodeMask()==0;
13786 return NodeMask()==0;
13788 return NodeMask()==0;
13790 return NodeMask()==0;
13792 return NodeMask()==0;
13794 return NodeMask()==0;
13798 return NodeMask()==0;
13800 return NodeMask()==0;
13802 return NodeMask()==0;
13804 return NodeMask()==0;
13810 return NodeMask()==0;
13812 return NodeMask()==0;
13814 return NodeMask()==0;
13816 return NodeMask()==0;
13818 return NodeMask()==0;
13820 return NodeMask()==0;
13856 return NodeMask()==0;
13858 return NodeMask()==0;
13860 return NodeMask()==0;
13862 return NodeMask()==0;
13864 return NodeMask()==0;
13866 return NodeMask()==0;
13870 return NodeMask()==0;
13872 return NodeMask()==0;
13874 return NodeMask()==0;
13876 return NodeMask()==0;
13878 return NodeMask()==0;
13880 return NodeMask()==0;
13882 return NodeMask()==0;
13902 void CNode::_LabelBits(
CNode* n,
void* arg )
13910 if( labelCacheEnabled && (evalCount == 0 || !evalHeap.IsOwner(n)) ) {
13911 if( labelCache.find(n) != labelCache.end() ) {
13920 unsigned nodeMask = n->NodeMask();
13921 int conditionalWiden = n->ConditionalWiden();
13923 switch( n->
GetOp() ) {
13935 if( !suppressErrorMessages ) {
13938 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
13940 if( !suppressErrorMessages ) {
13957 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
13968 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
13979 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
13990 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14001 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14040 if( !suppressErrorMessages ) {
14043 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14045 if( !suppressErrorMessages ) {
14057 if( !suppressErrorMessages ) {
14060 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14062 if( !suppressErrorMessages ) {
14074 if( !suppressErrorMessages ) {
14077 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14079 if( !suppressErrorMessages ) {
14091 if( !suppressErrorMessages ) {
14094 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14096 if( !suppressErrorMessages ) {
14106 if( !suppressErrorMessages ) {
14109 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14111 if( !suppressErrorMessages ) {
14123 if( !suppressErrorMessages ) {
14126 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14128 if( !suppressErrorMessages ) {
14177 if( !suppressErrorMessages ) {
14180 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14182 if( !suppressErrorMessages ) {
14192 if( !suppressErrorMessages ) {
14195 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14197 if( !suppressErrorMessages ) {
14207 if( !suppressErrorMessages ) {
14217 if( !suppressErrorMessages ) {
14237 if( !suppressErrorMessages ) {
14240 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14242 if( !suppressErrorMessages ) {
14252 if( !suppressErrorMessages ) {
14255 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14257 if( !suppressErrorMessages ) {
14267 if( !suppressErrorMessages ) {
14277 if( !suppressErrorMessages ) {
14280 }
else if( n->
Arg<
CNode*>(0)->type ==
eS ) {
14287 n->type = n->
Arg<
CNode*>(0)->type;
14290 n->type = n->
Arg<
CNode*>(0)->type;
14330 if( !suppressErrorMessages ) {
14333 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14335 if( !suppressErrorMessages ) {
14345 if( !suppressErrorMessages ) {
14348 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14350 if( !suppressErrorMessages ) {
14370 if( !suppressErrorMessages ) {
14380 if( !suppressErrorMessages ) {
14390 if( !suppressErrorMessages ) {
14400 if( !suppressErrorMessages ) {
14410 if( !suppressErrorMessages ) {
14420 if( !suppressErrorMessages ) {
14430 }
else if( n->
Arg<
CNode*>(2)->type ==
eR ) {
14456 }
else if( n->
Arg<
CNode*>(1)->type ==
eR ) {
14458 }
else if( n->
Arg<
CNode*>(2)->type ==
eR ) {
14475 n->type = n->
Arg<
CNode*>(1)->type;
14483 }
else if( n->
Arg<
CNode*>(0)->type ==
eS ) {
14492 }
else if( n->
Arg<
CNode*>(0)->type ==
eS ) {
14501 }
else if( n->
Arg<
CNode*>(0)->type ==
eS ) {
14510 }
else if( n->
Arg<
CNode*>(0)->type ==
eS ) {
14522 n->type = n->
Arg<
CNode*>(0)->type;
14536 switch( n->type ) {
14547 switch( n->
GetOp() ) {
14573 n->width = n->
Arg<
CNode*>(0)->width;
14579 n->width = n->
Arg<
CNode*>(0)->width;
14582 n->width = n->
Arg<
CNode*>(0)->width;
14585 n->width = n->
Arg<
CNode*>(0)->width;
14588 n->width = n->
Arg<
CNode*>(0)->width;
14666 n->width = n->
Arg<
CNode*>(0)->width;
14669 n->width = n->
Arg<
CNode*>(0)->width;
14672 n->width = n->
Arg<
CNode*>(0)->width;
14675 n->width = n->
Arg<
CNode*>(0)->width;
14741 n->width = n->
Arg<
CNode*>(1)->width;
14747 n->width = n->
Arg<
CNode*>(0)->width;
14750 n->width = n->
Arg<
CNode*>(0)->width;
14753 n->width = n->
Arg<
CNode*>(0)->width;
14756 n->width = n->
Arg<
CNode*>(0)->width;
14759 n->width = n->
Arg<
CNode*>(0)->width;
14773 int operandWidth = -1;
14774 for(
int i = 0; i < n->
ArgCount(); i++ ) {
14775 if( ((nodeMask>>i)&1) && n->
Arg<
CNode*>(i) ) {
14776 int widthFixed = n->
Arg<
CNode*>(i)->WidthFixed() ||
14779 if( n->ConditionalWiden() && !widthFixed ) {
14780 n->FixedWidth( 0 );
14782 }
else if( !widthFixed ) {
14783 n->FixedWidth( 0 );
14787 if( operandWidth != w ) {
14788 if( operandWidth >= 0 ) {
14789 n->FixedWidth( 0 );
14797 if( !conditionalWiden && nodeMask != 0 ) {
14798 n->FixedWidth( 0 );
14814 int calculateMax = 0;
14816 int conditionalWiden = ConditionalWiden();
14817 unsigned nodeMask = NodeMask();
14818 unsigned scalarMask = 0;
14819 unsigned selfDeterminedMask = 0;
14820 switch(
GetOp() ) {
14841 selfDeterminedMask = nodeMask;
14845 selfDeterminedMask = nodeMask;
14861 selfDeterminedMask = 1<<1;
14868 selfDeterminedMask = 1<<1;
14872 selfDeterminedMask = 1<<1;
14876 selfDeterminedMask = 1<<1;
14880 selfDeterminedMask = 1<<1;
14911 selfDeterminedMask = nodeMask;
14918 selfDeterminedMask = nodeMask;
14922 selfDeterminedMask = 1<<1;
14974 selfDeterminedMask = nodeMask;
14978 selfDeterminedMask = nodeMask;
14982 selfDeterminedMask = nodeMask;
14986 selfDeterminedMask = nodeMask;
14990 selfDeterminedMask = nodeMask;
14994 selfDeterminedMask = nodeMask;
14998 selfDeterminedMask = nodeMask;
15002 selfDeterminedMask = nodeMask;
15006 selfDeterminedMask = nodeMask;
15063 selfDeterminedMask = nodeMask;
15067 selfDeterminedMask = nodeMask;
15071 selfDeterminedMask = nodeMask;
15075 selfDeterminedMask = nodeMask;
15079 selfDeterminedMask = nodeMask;
15083 selfDeterminedMask = nodeMask;
15319 selfDeterminedMask = nodeMask;
15323 selfDeterminedMask = nodeMask;
15327 selfDeterminedMask = nodeMask;
15335 unsigned realMask = 0;
15336 unsigned forceRealMask = 0;
15337 int widthsDiffer = 0;
15338 int originalWidth = width;
15339 for(
int i = 0; i <
ArgCount(); i++ ) {
15340 if( ((nodeMask>>i)&1) && Arg<CNode*>(i)->type ==
eR ) {
15343 if( ((nodeMask>>i)&1) &&
15344 Arg<CNode*>(i)->type !=
eR &&
15346 Arg<CNode*>(i)->width != width) ) {
15354 if( newType ==
eU && newWidth == 0 ) {
15361 }
else if( (newType ==
eB || newType ==
eS || newType ==
eU) &&
15362 (type ==
eB || type ==
eS) ) {
15363 if( newWidth > width ) {
15366 if( newType ==
eU ) {
15371 MASSERT( newType !=
eR || newWidth == 0 );
15372 MASSERT( newType !=
eE || newWidth == 0 );
15379 forceRealMask = (~realMask & nodeMask);
15386 int convertWidth = conditionalWiden && FixedWidth();
15387 if( convertWidth ) {
15388 width = originalWidth;
15390 if( newType ==
eB && type ==
eS ) {
15396 int cWidth = width;
15398 if( calculateMax ) {
15402 int foundUnsigned = 0;
15403 for(
int i = 0; i <
ArgCount(); i++ ) {
15404 if( (nodeMask>>i)&1 ) {
15405 switch( Arg<CNode*>(i)->type ) {
15413 if( Arg<CNode*>(i)->width > max ) {
15414 max = Arg<CNode*>(i)->width;
15421 }
else if( foundUnsigned ) {
15432 for(
int i = 0; i <
ArgCount(); i++ ) {
15433 if( (nodeMask>>i)&1 ) {
15434 if( (scalarMask>>i)&1 ) {
15435 if( Arg<CNode*>(i)->type ==
eR ) {
15437 Arg<CNode*>(i) =
cNE( Arg<CNode*>(i),
cREAL(0), &loc );
15438 Arg<CNode*>(i)->LabelBits();
15439 }
else if( type ==
eR ) {
15442 Arg<CNode*>(i) =
cCNE( Arg<CNode*>(i),
cINT32(0), &loc );
15443 Arg<CNode*>(i)->LabelBits();
15445 Arg<CNode*>(i) = Arg<CNode*>(i)->FixBits( 0,
eU );
15446 }
else if( (forceRealMask>>i)&1 ) {
15447 Arg<CNode*>(i) = Arg<CNode*>(i)->FixBits( 0,
eR );
15448 }
else if( (selfDeterminedMask>>i)&1 ) {
15449 Arg<CNode*>(i) = Arg<CNode*>(i)->FixBits( 0,
eU );
15451 Arg<CNode*>(i) = Arg<CNode*>(i)->FixBits( cWidth, cType );
15461 if( newType !=
eR && convertWidth ) {
15463 nn->width = newWidth;
15467 if( newType ==
eR && (type ==
eB || type ==
eS) ) {
15473 }
else if( (newType ==
eB || newType ==
eS) && type ==
eR ) {
15475 nn->width = newWidth;
15476 nn->type = newType;
15489 switch(
GetOp() ) {
15491 fprintf( f,
"%s",
"???" );
15494 fprintf( f,
"%s", Arg<CVector*>(0)->GetVString() );
15497 fprintf( f,
"%s", (
char*)Arg<char*>(0) );
15500 fprintf( f,
"%s", (
char*)Arg<char*>(0) );
15503 fprintf( f,
"%s",
"" );
15504 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15505 fprintf( f,
"%s",
"," );
15506 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15507 fprintf( f,
"%s",
"" );
15510 fprintf( f,
"%s",
"WIDTH(" );
15511 fprintf( f,
"%s", type==
eS ?
"S" :
"U" );
15512 fprintf( f,
"%s",
"," );
15513 fprintf( f,
"%ld", width );
15514 fprintf( f,
"%s",
"," );
15515 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15516 fprintf( f,
"%s",
"," );
15517 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15518 fprintf( f,
"%s",
")" );
15521 fprintf( f,
"%s",
"(" );
15522 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15523 fprintf( f,
"%s",
")-(" );
15524 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15525 fprintf( f,
"%s",
")" );
15528 fprintf( f,
"%s",
"(" );
15529 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15530 fprintf( f,
"%s",
")*(" );
15531 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15532 fprintf( f,
"%s",
")" );
15535 fprintf( f,
"%s",
"(" );
15536 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15537 fprintf( f,
"%s",
")/(" );
15538 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15539 fprintf( f,
"%s",
")" );
15542 fprintf( f,
"%s",
"(" );
15543 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15544 fprintf( f,
"%s",
")**(" );
15545 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15546 fprintf( f,
"%s",
")" );
15549 fprintf( f,
"%s",
"(" );
15550 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15551 fprintf( f,
"%s",
")+(" );
15552 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15553 fprintf( f,
"%s",
")" );
15556 fprintf( f,
"%s",
"(" );
15557 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15558 fprintf( f,
"%s",
")<<(" );
15559 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15560 fprintf( f,
"%s",
")" );
15563 fprintf( f,
"%s",
"(" );
15564 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15565 fprintf( f,
"%s",
")>>(" );
15566 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15567 fprintf( f,
"%s",
")" );
15570 fprintf( f,
"%s",
"(" );
15571 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15572 fprintf( f,
"%s",
")<<<(" );
15573 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15574 fprintf( f,
"%s",
")" );
15577 fprintf( f,
"%s",
"(" );
15578 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15579 fprintf( f,
"%s",
")>>>(" );
15580 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15581 fprintf( f,
"%s",
")" );
15584 fprintf( f,
"%s",
"(" );
15585 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15586 fprintf( f,
"%s",
")%%(" );
15587 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15588 fprintf( f,
"%s",
")" );
15591 fprintf( f,
"%s",
"(" );
15592 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15593 fprintf( f,
"%s",
")|(" );
15594 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15595 fprintf( f,
"%s",
")" );
15598 fprintf( f,
"%s",
"(" );
15599 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15600 fprintf( f,
"%s",
")&(" );
15601 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15602 fprintf( f,
"%s",
")" );
15605 fprintf( f,
"%s",
"(" );
15606 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15607 fprintf( f,
"%s",
")&&&(" );
15608 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15609 fprintf( f,
"%s",
")" );
15612 fprintf( f,
"%s",
"(" );
15613 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15614 fprintf( f,
"%s",
")^(" );
15615 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15616 fprintf( f,
"%s",
")" );
15619 fprintf( f,
"%s",
"(" );
15620 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15621 fprintf( f,
"%s",
")~^(" );
15622 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15623 fprintf( f,
"%s",
")" );
15626 fprintf( f,
"%s",
"" );
15627 fprintf( f,
"%s", Arg<CSymbol*>(0)->GetName() );
15628 fprintf( f,
"%s",
"(" );
15629 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15630 fprintf( f,
"%s",
")" );
15633 fprintf( f,
"%s",
"" );
15634 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15635 fprintf( f,
"%s",
"[" );
15636 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15637 fprintf( f,
"%s",
"]" );
15640 fprintf( f,
"%s", Arg<CNet*>(0)->GetName() );
15643 fprintf( f,
"%s", Arg<CVar*>(0)->GetName() );
15646 fprintf( f,
"%s", Arg<CParam*>(0)->GetName() );
15649 fprintf( f,
"%s", Arg<CPort*>(0)->GetName() );
15652 fprintf( f,
"%s", Arg<CFref*>(0)->GetName() );
15655 fprintf( f,
"%s", Arg<CGenvar*>(0)->GetName() );
15658 fprintf( f,
"%s", Arg<CEnum*>(0)->GetName() );
15661 fprintf( f,
"%s", Arg<CTypedef*>(0)->GetName() );
15664 fprintf( f,
"%s",
"VarDecl" );
15667 fprintf( f,
"%s",
"(" );
15668 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15669 fprintf( f,
"%s",
"," );
15670 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15671 fprintf( f,
"%s",
")" );
15674 fprintf( f,
"%s",
"" );
15675 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15676 fprintf( f,
"%s",
":" );
15677 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15678 fprintf( f,
"%s",
"" );
15681 fprintf( f,
"%s",
"" );
15682 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15683 fprintf( f,
"%s",
":" );
15684 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15685 fprintf( f,
"%s",
"" );
15688 fprintf( f,
"%s",
"" );
15689 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15690 fprintf( f,
"%s",
"+:" );
15691 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15692 fprintf( f,
"%s",
"" );
15695 fprintf( f,
"%s",
"" );
15696 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15697 fprintf( f,
"%s",
"-:" );
15698 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15699 fprintf( f,
"%s",
"" );
15702 fprintf( f,
"%s",
"CVRI(" );
15703 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15704 fprintf( f,
"%s",
")" );
15707 fprintf( f,
"%s",
"CVIR(" );
15708 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15709 fprintf( f,
"%s",
")" );
15712 fprintf( f,
"%s",
"{" );
15713 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15714 fprintf( f,
"%s",
"{" );
15715 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15716 fprintf( f,
"%s",
"}}" );
15719 fprintf( f,
"%s",
"{" );
15720 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15721 fprintf( f,
"%s",
"," );
15722 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15723 fprintf( f,
"%s",
"}" );
15726 fprintf( f,
"%s",
"{" );
15727 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15728 fprintf( f,
"%s",
"}" );
15731 fprintf( f,
"%s",
"~(" );
15732 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15733 fprintf( f,
"%s",
")" );
15736 fprintf( f,
"%s",
"-(" );
15737 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15738 fprintf( f,
"%s",
")" );
15741 fprintf( f,
"%s",
"+(" );
15742 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15743 fprintf( f,
"%s",
")" );
15746 fprintf( f,
"%s",
"!(" );
15747 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15748 fprintf( f,
"%s",
")" );
15751 fprintf( f,
"%s",
"(" );
15752 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15753 fprintf( f,
"%s",
")>(" );
15754 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15755 fprintf( f,
"%s",
")" );
15758 fprintf( f,
"%s",
"(" );
15759 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15760 fprintf( f,
"%s",
")>=(" );
15761 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15762 fprintf( f,
"%s",
")" );
15765 fprintf( f,
"%s",
"(" );
15766 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15767 fprintf( f,
"%s",
")<(" );
15768 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15769 fprintf( f,
"%s",
")" );
15772 fprintf( f,
"%s",
"(" );
15773 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15774 fprintf( f,
"%s",
")<=(" );
15775 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15776 fprintf( f,
"%s",
")" );
15779 fprintf( f,
"%s",
"(" );
15780 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15781 fprintf( f,
"%s",
")&&(" );
15782 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15783 fprintf( f,
"%s",
")" );
15786 fprintf( f,
"%s",
"(" );
15787 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15788 fprintf( f,
"%s",
")||(" );
15789 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15790 fprintf( f,
"%s",
")" );
15793 fprintf( f,
"%s",
"(" );
15794 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15795 fprintf( f,
"%s",
")===(" );
15796 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15797 fprintf( f,
"%s",
")" );
15800 fprintf( f,
"%s",
"(" );
15801 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15802 fprintf( f,
"%s",
")!==(" );
15803 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15804 fprintf( f,
"%s",
")" );
15807 fprintf( f,
"%s",
"(" );
15808 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15809 fprintf( f,
"%s",
")==(" );
15810 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15811 fprintf( f,
"%s",
")" );
15814 fprintf( f,
"%s",
"(" );
15815 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15816 fprintf( f,
"%s",
")!=(" );
15817 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15818 fprintf( f,
"%s",
")" );
15821 fprintf( f,
"%s",
"&(" );
15822 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15823 fprintf( f,
"%s",
")" );
15826 fprintf( f,
"%s",
"~&(" );
15827 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15828 fprintf( f,
"%s",
")" );
15831 fprintf( f,
"%s",
"|(" );
15832 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15833 fprintf( f,
"%s",
")" );
15836 fprintf( f,
"%s",
"~|(" );
15837 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15838 fprintf( f,
"%s",
")" );
15841 fprintf( f,
"%s",
"^(" );
15842 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15843 fprintf( f,
"%s",
")" );
15846 fprintf( f,
"%s",
"~^(" );
15847 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15848 fprintf( f,
"%s",
")" );
15851 fprintf( f,
"%s",
"(" );
15852 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15853 fprintf( f,
"%s",
")?(" );
15854 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15855 fprintf( f,
"%s",
"):(" );
15856 if( Arg<CNode*>(2) ) Arg<CNode*>(2)->
Dump( f );
else fprintf( f,
"NULL" );
15857 fprintf( f,
"%s",
")" );
15860 fprintf( f,
"%s",
"INIT(*)" );
15863 fprintf( f,
"%s",
"POSEDGE(" );
15864 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15865 fprintf( f,
"%s",
")" );
15868 fprintf( f,
"%s",
"NEGEDGE(" );
15869 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15870 fprintf( f,
"%s",
")" );
15873 fprintf( f,
"%s",
"EDGE(" );
15874 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15875 fprintf( f,
"%s",
")" );
15878 fprintf( f,
"%s",
"(" );
15879 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15880 fprintf( f,
"%s",
":" );
15881 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15882 fprintf( f,
"%s",
":" );
15883 if( Arg<CNode*>(2) ) Arg<CNode*>(2)->
Dump( f );
else fprintf( f,
"NULL" );
15884 fprintf( f,
"%s",
")" );
15887 fprintf( f,
"%s",
"MODULE_DEF" );
15890 fprintf( f,
"%s",
"PACKAGE_DEF" );
15893 fprintf( f,
"%s",
"" );
15894 fprintf( f,
"%s", (
const char*)Arg<const char*>(0) );
15895 fprintf( f,
"%s",
"<" );
15896 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15897 fprintf( f,
"%s",
">" );
15900 fprintf( f,
"%s",
"" );
15901 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15902 fprintf( f,
"%s",
"." );
15903 fprintf( f,
"%s", Arg<CSymbol*>(1)->GetName() );
15904 fprintf( f,
"%s",
"" );
15907 fprintf( f,
"%s",
"++(" );
15908 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15909 fprintf( f,
"%s",
")" );
15912 fprintf( f,
"%s",
"(" );
15913 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15914 fprintf( f,
"%s",
")++" );
15917 fprintf( f,
"%s",
"--(" );
15918 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15919 fprintf( f,
"%s",
")" );
15922 fprintf( f,
"%s",
"(" );
15923 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15924 fprintf( f,
"%s",
")--" );
15927 fprintf( f,
"%s",
"CAST(" );
15928 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15929 fprintf( f,
"%s",
"," );
15930 if( Arg<CNode*>(1) ) Arg<CNode*>(1)->
Dump( f );
else fprintf( f,
"NULL" );
15931 fprintf( f,
"%s",
")" );
15934 fprintf( f,
"%s",
"'" );
15935 if( Arg<CNode*>(0) ) Arg<CNode*>(0)->
Dump( f );
else fprintf( f,
"NULL" );
15936 fprintf( f,
"%s",
"" );
15939 fprintf( f,
"%s",
"$" );
16023 #endif // DEFINE_METHODS 16025 #ifdef DEFINE_TEST_HARNESS 16028 for(
int i = 0; i < 155; ++i ) {
16030 if( n->
Precedence() != n->Precedence_1() ) {
16036 #endif // DEFINE_TEST_HARNESS CNode * cDIV(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for DIV divide.
Definition: cnode_def.h:2991
Declaration object for nets.
Definition: cnet.h:46
CNode * cSUB(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for SUB subtract.
Definition: cnode_def.h:2925
static NodeType_t Type(CSymbol *symbol, CNode *args)
Determine type of systask.
Definition: systask.h:134
nonblocking assignment
Definition: cnode_def.h:1735
int declaration
Definition: cdatatype.h:52
CNode * cEDGE(CNode *a0, Edge_t a1, Coord_t *loc=NULL)
Node construction shortcut for EDGE edge qualifier.
Definition: cnode_def.h:5988
int HasAttribute(const char *name, CNode *n=NULL, int init=1)
Determine if node has the given attribute.
Definition: cnode.cc:412
CNode * cROR(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for ROR reduction or.
Definition: cnode_def.h:4911
CNode * cFOREVER(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for FOREVER forever statement.
Definition: cnode_def.h:6164
real constant
Definition: cnode_def.h:666
CNode * cMOD_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for MOD_ASSIGN procedural assignment with mod.
Definition: cnode_def.h:5536
CNode * cDEASSIGN(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for DEASSIGN deassign statement.
Definition: cnode_def.h:7038
CNode * cMUL_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for MUL_ASSIGN procedural assignment with mul.
Definition: cnode_def.h:5462
preincrement
Definition: cnode_def.h:2262
CNode * cASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for ASSIGN procedural assignment.
Definition: cnode_def.h:5314
vector subrange with ascending index select
Definition: cnode_def.h:1165
force statement
Definition: cnode_def.h:1713
condition expression operator
Definition: cnode_def.h:1450
arithmetic right shift
Definition: cnode_def.h:827
CNode * cCASSIGN(StrengthPair_t *a0, CNode *a1, CNode *a2, CNode *a3, Coord_t *loc=NULL)
Node construction shortcut for CASSIGN continious assignment.
Definition: cnode_def.h:6484
procedural assignment with mul
Definition: cnode_def.h:1594
CNode * cSUB_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for SUB_ASSIGN procedural assignment with subtract.
Definition: cnode_def.h:5425
sentinal at end of port list
Definition: cnode_def.h:2208
CNode * cPARAM_DECL(CParam *a0, Coord_t *loc=NULL)
Node construction shortcut for PARAM_DECL parameter declaration.
Definition: cnode_def.h:3944
static int WidthVolatile(CSymbol *symbol, CNode *args)
Determine if width of systask variable is volatile.
Definition: systask.h:100
CNode * cDELAY(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for DELAY delay statement.
Definition: cnode_def.h:6054
reduction xnor
Definition: cnode_def.h:1438
case not equal
Definition: cnode_def.h:1356
CNode * cMOD(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for MOD modulus.
Definition: cnode_def.h:3222
CNode * cWAIT(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for WAIT wait statement.
Definition: cnode_def.h:6260
no operation
Definition: cnode_def.h:728
Declaration object for genvars.
Definition: cgenvar.h:46
reduction nand
Definition: cnode_def.h:1398
CNode * cELIST(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for ELIST expression list.
Definition: cnode_def.h:2834
undefined
Definition: cdatatype.h:102
error node
Definition: cnode_def.h:646
CNode * cPORT_REF(CPortDir *a0, Coord_t *loc=NULL)
Node construction shortcut for PORT_REF reference to port.
Definition: cnode_def.h:3733
signed bit vector, includes integer
Definition: cdatatype.h:104
gate instance
Definition: cnode_def.h:913
procedural assignment with right shift
Definition: cnode_def.h:1678
static int WidthConstant(CSymbol *symbol, CNode *args)
Determine if width of systask variable is constant.
Definition: systask.h:82
Gate declaration object.
Definition: cgate.h:42
repeat control
Definition: cnode_def.h:1992
exponent
Definition: cnode_def.h:772
CNode * cFUNCTION_CALL(CSymbol *a0, CNode *a1, CScope *a2, Coord_t *loc=NULL)
Node construction shortcut for FUNCTION_CALL call to a function.
Definition: cnode_def.h:3578
static NodeType_t Type(CSymbol *symbol)
Determine type of external variable.
Definition: external.h:81
static int WidthVolatile(CSymbol *symbol)
Determine if width of external variable is volatile.
Definition: external.h:69
CNode * cCOMMENT(const char *a0, Coord_t *loc=NULL)
Node construction shortcut for COMMENT comment.
Definition: cnode_def.h:2742
statement block
Definition: cnode_def.h:1523
disable statement
Definition: cnode_def.h:2123
static int WidthEvaluateable(CSymbol *symbol, CNode *args, CBlock *block)
Determine if width of function is evaluateable.
procedural assignment with bitwise xor
Definition: cnode_def.h:1654
vector decl range specification
Definition: cnode_def.h:1143
case equal
Definition: cnode_def.h:1345
CNode * cREAL(double number)
Short cut for creating RCONSTANT node with a given double value.
Definition: cnode.h:817
negative event qualifier
Definition: cnode_def.h:1755
import item
Definition: cnode_def.h:1951
CNode * cDIV_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for DIV_ASSIGN procedural assignment with div.
Definition: cnode_def.h:5499
initial block
Definition: cnode_def.h:1460
CNode * cPREDEC(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for PREDEC predecrement.
Definition: cnode_def.h:7538
CNode * cGIF(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for GIF structural if statement.
Definition: cnode_def.h:7127
CNode * cFWD_REF(CFref *a0, Coord_t *loc=NULL)
Node construction shortcut for FWD_REF reference to a forward declared variable.
Definition: cnode_def.h:3762
int IsEvaluateable()
Checks to see if expression tree can be evaluated.
Definition: cnode_def.h:12850
CNode * cPRAGMA(const char *a0, int a1, Coord_t *loc=NULL)
Node construction shortcut for PRAGMA program pragma.
Definition: cnode_def.h:2801
CNode * cCASEX(CNode *a0, CNode *a1, ConditionalType a2, Coord_t *loc=NULL)
Node construction shortcut for CASEX casex statement.
Definition: cnode_def.h:6376
bitwise and
Definition: cnode_def.h:860
CNode * cCAT(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for CAT concatenation operator.
Definition: cnode_def.h:4346
postincrement
Definition: cnode_def.h:2272
void Add(double *r, double *a, double *b)
Definition: cnode.h:682
CNode * cRXOR(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for RXOR reduction xor.
Definition: cnode_def.h:4969
Declaration object for specify blocks.
Definition: cspecify.h:47
CNode * cARG(CSymbol *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for ARG port connection.
Definition: cnode_def.h:6523
CNode * cMAX_N(CNode *first,...)
Definition: cnode.h:1266
CNode * cAND(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for AND bitwise and.
Definition: cnode_def.h:3288
instance reference
Definition: cnode_def.h:903
CNode * cTABLE_SYMBOL(char *a0, Coord_t *loc=NULL)
Node construction shortcut for TABLE_SYMBOL udp table symbol.
Definition: cnode_def.h:7294
CNode * cPOSEDGE(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for POSEDGE positive event qualifier.
Definition: cnode_def.h:5929
not equal
Definition: cnode_def.h:1378
CNode * cRSHA_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for RSHA_ASSIGN procedural assignment with right arithmetic shift...
Definition: cnode_def.h:5795
CNode * cNOT(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for NOT logical complement.
Definition: cnode_def.h:4494
CNode * cRETURN(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for RETURN return.
Definition: cnode_def.h:7451
void Neg(double *r, double *a)
Definition: cnode.h:702
CNode * cCEQ(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for CEQ case equal.
Definition: cnode_def.h:4722
list of nodes
Definition: cnode_def.h:1132
greater than or equal
Definition: cnode_def.h:1290
CNode * cEQ(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for EQ equal.
Definition: cnode_def.h:4788
vector constant
Definition: cnode_def.h:656
procedural assignment
Definition: cnode_def.h:1546
assignment_pattern
Definition: cnode_def.h:2313
Coord_t * GetCoord()
Get node's file coordinates.
Definition: cnode.h:312
CNode * cNET_DECL(CNet *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for NET_DECL net declaration.
Definition: cnode_def.h:3879
wait statement
Definition: cnode_def.h:1856
CNode * cMUL_N(CNode *first,...)
Definition: cnode.h:1300
CNode * cIFNONE_PATH_ASSIGN(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for IFNONE_PATH_ASSIGN ifnone path assignment statement.
Definition: cnode_def.h:6944
static CObstack * CurrentHeap()
Gets pointer to current heap allocator.
Definition: cnode.h:237
CNode * cEVOR(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for EVOR event or.
Definition: cnode_def.h:6021
int IsConstant()
Checks expression tree to see if it is constant.
Definition: cnode_def.h:8189
CNode * GetWidthExp(void)
Create expression representing width of expression.
Definition: cnode_def.h:8843
reduction xor
Definition: cnode_def.h:1428
case item
Definition: cnode_def.h:1917
delay control
Definition: cnode_def.h:2002
CNode * cRAND(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for RAND reduction and.
Definition: cnode_def.h:4853
void SetWidth(INT32 newWidth)
Set width of vector in bits.
CNode * cNBASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for NBASSIGN nonblocking assignment.
Definition: cnode_def.h:5894
CNode * cNEG(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for NEG negation.
Definition: cnode_def.h:4436
virtual INT32 GetWidth(void)
Get width of declaration.
Definition: cgenvar.h:70
CNode * cOR_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for OR_ASSIGN procedural assignment with bitwise or.
Definition: cnode_def.h:5610
reduction nor
Definition: cnode_def.h:1418
CNode * cGT(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for GT greater than.
Definition: cnode_def.h:4524
CNode * cCVRI(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for CVRI convert real to integer.
Definition: cnode_def.h:4254
void PostVisit1(void(*callback)(CNode *, void *), void *data)
Walk tree invoking callback on each node after children have been visited.
Definition: cnode_def.h:10660
port connection
Definition: cnode_def.h:1941
long INT32
Short cut for signed 32 bit integer.
Definition: glue.h:38
arithmetic left shift
Definition: cnode_def.h:816
CNode * cDISABLE(CSymbol *a0, Coord_t *loc=NULL)
Node construction shortcut for DISABLE disable statement.
Definition: cnode_def.h:7067
CNode * cREPEAT_CONTROL(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for REPEAT_CONTROL repeat control.
Definition: cnode_def.h:6672
variable declaration
Definition: cnode_def.h:1071
int IsVolatile(void)
Checks to see if expression tree is volatile.
Definition: cnode_def.h:8355
CNode * cLSHA_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for LSHA_ASSIGN procedural assignment with left arithmetic shift...
Definition: cnode_def.h:5758
path statement
Definition: cnode_def.h:2059
int Precedence()
Get the precedence of the operator represented by the node.
Definition: cnode_def.h:8017
genvar declaration
Definition: cnode_def.h:1111
CNode_sp< T > Arg(int index)
Get a node's operand.
Definition: cnode.h:549
Edge_t
Edge values.
Definition: cnode.h:72
CNode * cFOR(CNode *a0, CNode *a1, CNode *a2, CNode *a3, Coord_t *loc=NULL)
Node construction shortcut for FOR for statement.
Definition: cnode_def.h:6295
CNode * cRSH(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for RSH logical right shift.
Definition: cnode_def.h:3123
reference to port
Definition: cnode_def.h:1009
CNode * cFUNCTION_DEF(CFunction *a0, Coord_t *loc=NULL)
Node construction shortcut for FUNCTION_DEF function definition.
Definition: cnode_def.h:6584
convert integer to real
Definition: cnode_def.h:1196
logical and
Definition: cnode_def.h:1323
reduction or
Definition: cnode_def.h:1408
less than or equal
Definition: cnode_def.h:1312
edge qualifier
Definition: cnode_def.h:1766
reduction and
Definition: cnode_def.h:1388
bitwise or
Definition: cnode_def.h:849
CNode * cSLICE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for SLICE vector subrange.
Definition: cnode_def.h:4156
virtual INT32 GetWidth(void)
Evaluate packed width of declaration.
CNode * cLE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for LE less than or equal.
Definition: cnode_def.h:4623
reference to a forward declared variable
Definition: cnode_def.h:1019
static double EvalReal(CSymbol *symbol, CNode *args, CBlock *block)
Evaluate function as a real and return result.
CNode * cPSLICE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for PSLICE vector subrange with ascending index select.
Definition: cnode_def.h:4189
CNode * cSPECPARAM_DECL(CParam *a0, Coord_t *loc=NULL)
Node construction shortcut for SPECPARAM_DECL specify parameter declaration.
Definition: cnode_def.h:3973
void CNodeTestHarness()
Definition: cnode_def.h:16026
comment
Definition: cnode_def.h:676
static NodeType_t Type(CSymbol *symbol, CNode *args, CBlock *block)
Determine if type of result of function.
CNode * cWHILE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for WHILE while statement.
Definition: cnode_def.h:6227
CNode * cADD_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for ADD_ASSIGN procedural assignment with add.
Definition: cnode_def.h:5388
bitwise xor
Definition: cnode_def.h:882
CNode * cCAST(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for CAST data type change.
Definition: cnode_def.h:7597
procedural assignment with div
Definition: cnode_def.h:1606
procedural assignment with add
Definition: cnode_def.h:1570
INT32 EvalINT32()
Evaluates expression tree and returns value as a 32 bit integer.
Definition: cnode.cc:308
CNode * cHOOK(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for HOOK condition expression operator.
Definition: cnode_def.h:5029
concatenation operator
Definition: cnode_def.h:1218
static void EvalVector(CVector &v, CSymbol *symbol, CNode *args, CBlock *block)
Evaluate function as a vector and return result.
procedural assignment with left shift
Definition: cnode_def.h:1666
port declaration
Definition: cnode_def.h:1101
CNode * cPACKAGE_DEF(CPackage *a0, Coord_t *loc=NULL)
Node construction shortcut for PACKAGE_DEF package definition.
Definition: cnode_def.h:6642
reference to a genvar
Definition: cnode_def.h:1029
CNode * cGFOR(CNode *a0, CNode *a1, CNode *a2, CNode *a3, Coord_t *loc=NULL)
Node construction shortcut for GFOR structural for statement.
Definition: cnode_def.h:7165
static int WidthEvaluateable(CSymbol *symbol, CNode *args)
Determine if width of systask can be evaluated.
Definition: systask.h:117
CNode * cPATH_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for PATH_ASSIGN path assignment statement.
Definition: cnode_def.h:6908
CNode * cATTRIBUTE(CAttr *a0, Coord_t *loc=NULL)
Node construction shortcut for ATTRIBUTE attribute specification.
Definition: cnode_def.h:7096
CNode * cTABLE_ENTRY(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for TABLE_ENTRY udp table entry.
Definition: cnode_def.h:7265
convert real to integer
Definition: cnode_def.h:1186
int ArgCount(void)
Get the number of operands for the node.
Definition: cnode_def.h:7691
CNode * cGENVAR_DECL(CGenvar *a0, Coord_t *loc=NULL)
Node construction shortcut for GENVAR_DECL genvar declaration.
Definition: cnode_def.h:4031
CNode * cALWAYS(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for ALWAYS always block.
Definition: cnode_def.h:5093
CNode * cERROR(Coord_t *loc=NULL)
Node construction shortcut for ERROR error node.
Definition: cnode_def.h:2658
unsigned bit vector
Definition: cdatatype.h:106
CNode * cSYSTASK_CALL(CSymbol *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for SYSTASK_CALL call to enable a systask.
Definition: cnode_def.h:3511
static int Width(CSymbol *symbol, CNode *args, CBlock *block)
Get width of function.
CNode * cTYPE_REF(CTypedef *a0, Coord_t *loc=NULL)
Node construction shortcut for TYPE_REF reference to a type.
Definition: cnode_def.h:3849
CNode * cALWAYS_COMB(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for ALWAYS_COMB always combinational logic block.
Definition: cnode_def.h:5180
Pair of strengths.
Definition: cnode.h:108
Structure to hold file coordinates.
Definition: cdecl.h:47
Holder for character strings.
Definition: csymbol.h:44
attribute specification
Definition: cnode_def.h:2133
CNode * cRANGE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for RANGE vector decl range specification.
Definition: cnode_def.h:4123
event statement
Definition: cnode_def.h:1511
Declaration object for module/function/task ports.
Definition: cport.h:44
generate intialize assignment
Definition: cnode_def.h:1558
divide
Definition: cnode_def.h:761
static int WidthConstant(CSymbol *symbol)
Determine if width of external variable is constant.
Definition: external.h:62
Forward reference declaration.
Definition: cfref.h:51
Bulk object allocation object.
Definition: cobstack.h:46
CNode * cABSDIFFPLUS1_N(CNode *first,...)
Definition: cnode.h:1316
delay statement
Definition: cnode_def.h:1788
negation
Definition: cnode_def.h:1248
logical right shift
Definition: cnode_def.h:805
casez statement
Definition: cnode_def.h:1906
unary concat
Definition: cnode_def.h:1228
call to a task
Definition: cnode_def.h:924
reference to net
Definition: cnode_def.h:979
void LoadReal(double d)
Load vector with integer part of real value.
int error
Definition: cnode_def.h:13899
Definition: cnode_def.h:13897
CNode * cFORCE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for FORCE force statement.
Definition: cnode_def.h:5831
CNode * cEXTERNAL_REF(CSymbol *a0, Coord_t *loc=NULL)
Node construction shortcut for EXTERNAL_REF external reference.
Definition: cnode_def.h:6762
vrq comment
Definition: cnode_def.h:686
CNode * cLAND(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for LAND logical and.
Definition: cnode_def.h:4656
CNode * cRSHA(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for RSHA arithmetic right shift.
Definition: cnode_def.h:3189
equal
Definition: cnode_def.h:1367
unary plus
Definition: cnode_def.h:1258
Primary data structure representing parse tree nodes.
Definition: cnode.h:197
CNode * cPASSIGN(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for PASSIGN procedural assignment.
Definition: cnode_def.h:7006
CNode * cANDANDAND(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for ANDANDAND triple and.
Definition: cnode_def.h:3321
CNode * cNET_REF(CNet *a0, Coord_t *loc=NULL)
Node construction shortcut for NET_REF reference to net.
Definition: cnode_def.h:3646
integer declaration
Definition: cdatatype.h:50
NodeOp_t
Parse tree opcodes.
Definition: cnode_def.h:637
CNode * cGASSIGN(bool a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for GASSIGN generate intialize assignment.
Definition: cnode_def.h:5351
void info(struct Coord_t *location, const char *format,...)
This routine should not be used by plugins.
program pragma
Definition: cnode_def.h:697
CNode * cCASEZ(CNode *a0, CNode *a1, ConditionalType a2, Coord_t *loc=NULL)
Node construction shortcut for CASEZ casez statement.
Definition: cnode_def.h:6413
CNode * cTRIGGER(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for TRIGGER event trigger.
Definition: cnode_def.h:6976
return
Definition: cnode_def.h:2252
CNode * cCNE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for CNE case not equal.
Definition: cnode_def.h:4755
CNode * cVAR_REF(CVar *a0, Coord_t *loc=NULL)
Node construction shortcut for VAR_REF reference to variable.
Definition: cnode_def.h:3675
CNode * cCOM(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for COM bitwise complement.
Definition: cnode_def.h:4407
positive event qualifier
Definition: cnode_def.h:1745
CNode * cWIDTH(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for WIDTH expression width change.
Definition: cnode_def.h:2867
CNode * cEVENT(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for EVENT event statement.
Definition: cnode_def.h:5210
defparam statement
Definition: cnode_def.h:2043
int IsNonX(int integerIsNonX=0, char *exclude=NULL)
Checks expression tree to see if expression can result in an X or Z.
Definition: cnode_def.h:9457
Declaration object for module and gate instances.
Definition: cinstance.h:45
expression list
Definition: cnode_def.h:708
void EvalVector(CVector &v)
Evaluates expression tree evaluated in unconstrainted context.
Definition: cnode.cc:360
udp table symbol
Definition: cnode_def.h:2199
CNode * cEVENT_CONTROL(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for EVENT_CONTROL event control.
Definition: cnode_def.h:6733
multiply
Definition: cnode_def.h:750
CNode * cMSLICE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for MSLICE vector subrange with descending index select.
Definition: cnode_def.h:4222
call to a function
Definition: cnode_def.h:958
queue dimension
Definition: cnode_def.h:2322
CNode * cARRAY(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for ARRAY dimensioned reference (array/bit select)
Definition: cnode_def.h:3614
CNode * cVRQ(const char *a0, Coord_t *loc=NULL)
Node construction shortcut for VRQ vrq comment.
Definition: cnode_def.h:2771
void error(struct Coord_t *location, const char *format,...)
This routine should not be used by plugins.
CNode * cPOSTINC(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for POSTINC postincrement.
Definition: cnode_def.h:7509
parameter declaration
Definition: cnode_def.h:1081
void Pow(double *r, double *a, double *b)
Definition: cnode.h:712
less than
Definition: cnode_def.h:1301
CNode * cALWAYS_FF(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for ALWAYS_FF always flip-flop block.
Definition: cnode_def.h:5151
CNode * cCASEITEM(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for CASEITEM case item.
Definition: cnode_def.h:6449
CNode * cCASE(CNode *a0, CNode *a1, ConditionalType a2, bool a3, Coord_t *loc=NULL)
Node construction shortcut for CASE case statement.
Definition: cnode_def.h:6336
replication operator
Definition: cnode_def.h:1207
CNode(Coord_t *aLoc, NodeOp_t aOp)
Constructor for parse node.
Definition: cnode.cc:240
member reference (structure, class or external
Definition: cnode_def.h:2242
CNode * cINIT(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for INIT initial block.
Definition: cnode_def.h:5064
void SetAttributes(CNode *attr)
Attach attributes to operation.
Definition: cnode.h:519
CNode * cPORTLIST_END(Coord_t *loc=NULL)
Node construction shortcut for PORTLIST_END sentinal at end of port list.
Definition: cnode_def.h:7322
package definition
Definition: cnode_def.h:1981
bitwise xnor
Definition: cnode_def.h:893
CNode * cMEMBER(CNode *a0, CSymbol *a1, Coord_t *loc=NULL)
Node construction shortcut for MEMBER member reference (structure, class or external.
Definition: cnode_def.h:7419
CNode * cALWAYS_LATCH(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for ALWAYS_LATCH always latch block.
Definition: cnode_def.h:5122
event control
Definition: cnode_def.h:2012
event or
Definition: cnode_def.h:1777
const char * nodeOpDescription[]
Definition: cnode_def.h:2487
CNode * PostSubVisit1(CNode *(*callback)(CNode *, void *), void *data)
Walk tree invoking callback on each node after children have been visited.
Definition: cnode_def.h:11199
procedural assignment with bitwise and
Definition: cnode_def.h:1630
CNode * cPOSTDEC(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for POSTDEC postdecrement.
Definition: cnode_def.h:7567
udp table
Definition: cnode_def.h:2179
for statement
Definition: cnode_def.h:1869
triple and
Definition: cnode_def.h:871
void Div(double *r, double *a, double *b)
Definition: cnode.h:697
CNode * cXOR(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for XOR bitwise xor.
Definition: cnode_def.h:3354
event trigger
Definition: cnode_def.h:2092
structural if statement
Definition: cnode_def.h:2145
reference to a enum
Definition: cnode_def.h:1039
int Equivalent(CNode *a, CNode *b)
Definition: cnode_def.h:12289
static int Evaluateable(CSymbol *symbol, CNode *args, CBlock *block)
Determine if function can be evaluated.
CNode * cNEGEDGE(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for NEGEDGE negative event qualifier.
Definition: cnode_def.h:5958
postdecrement
Definition: cnode_def.h:2292
module definition
Definition: cnode_def.h:1971
void Sub(double *r, double *a, double *b)
Definition: cnode.h:687
subtract
Definition: cnode_def.h:739
CNode * cRNAND(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for RNAND reduction nand.
Definition: cnode_def.h:4882
specify parameter declaration
Definition: cnode_def.h:1091
forever statement
Definition: cnode_def.h:1823
CNode * cRELEASE(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for RELEASE release statement.
Definition: cnode_def.h:5863
Declaration object for variables.
Definition: cvar.h:50
CNode * cIF(CNode *a0, CNode *a1, CNode *a2, ConditionalType a3, Coord_t *loc=NULL)
Node construction shortcut for IF if statement.
Definition: cnode_def.h:6126
external reference
Definition: cnode_def.h:2022
Declaration object for parameters.
Definition: cparam.h:46
CNode * cRNOR(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for RNOR reduction nor.
Definition: cnode_def.h:4940
CNode * cMTM(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for MTM min/typ/max expression.
Definition: cnode_def.h:6088
while statement
Definition: cnode_def.h:1845
CNode * cENUM_REF(CEnum *a0, Coord_t *loc=NULL)
Node construction shortcut for ENUM_REF reference to a enum.
Definition: cnode_def.h:3820
CNode * cTABLE(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for TABLE udp table.
Definition: cnode_def.h:7236
CNode * cPOW(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for POW exponent.
Definition: cnode_def.h:3024
CNode * cREPEAT(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for REPEAT repeat statement.
Definition: cnode_def.h:6194
CNode * cOR(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for OR bitwise or.
Definition: cnode_def.h:3255
Declaration object for holding lists of verilog attributes and their corresponding expressions...
Definition: cattr.h:50
procedural assignment with right arithmetic shift
Definition: cnode_def.h:1702
CNode * cINT32(INT32 i)
Short cut for creating VCONSTANT node with a given integer value.
Definition: cnode.h:798
int suppressErrorMessages
Definition: cnode_def.h:13898
CNode * cASSIGNMENT_PATTERN(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for ASSIGNMENT_PATTERN assignment_pattern.
Definition: cnode_def.h:7629
function definition
Definition: cnode_def.h:1961
CNode * cNE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for NE not equal.
Definition: cnode_def.h:4821
static CNode * WidthExp(CSymbol *symbol, CNode *args, CBlock *block)
Get width of function as an expression.
double GetReal()
Get vector value as a real.
enum specification
Definition: cnode_def.h:2231
CNode * cGATE_REF(CGate *a0, Coord_t *loc=NULL)
Node construction shortcut for GATE_REF gate instance.
Definition: cnode_def.h:3448
CNode * cPATH(int a0, CNode *a1, int a2, int a3, CNode *a4, int a5, CNode *a6, Coord_t *loc=NULL)
Node construction shortcut for PATH path statement.
Definition: cnode_def.h:6859
int IsWidthEvaluateable(void)
Evaluates if expression width can be evaluated.
Definition: cnode_def.h:9295
CNode * cRCONSTANT(char *a0, Coord_t *loc=NULL)
Node construction shortcut for RCONSTANT real constant.
Definition: cnode_def.h:2713
static int Width(CSymbol *symbol)
Get width of external variable.
Definition: external.h:49
static CNode * WidthExp(CSymbol *symbol, CNode *args)
Get width of systask as an expression.
Definition: systask.h:64
CNode * cVAR_DECL(CVar *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for VAR_DECL variable declaration.
Definition: cnode_def.h:3912
event - have width 0
Definition: cdatatype.h:105
CNode * cPORT_DEF(CPort *a0, Coord_t *loc=NULL)
Node construction shortcut for PORT_DEF port definition.
Definition: cnode_def.h:6791
Bit vector class for implementing 4 state verilog signed and unsigned arithmetic. ...
Definition: cvector.h:58
CNode * cGE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for GE greater than or equal.
Definition: cnode_def.h:4557
void PreVisit1(int(*callback)(CNode *, void *), void *data)
Walk tree invoking callback on each node before children have been visited.
Definition: cnode_def.h:10134
procedural assignment with mod
Definition: cnode_def.h:1618
CNode * cIMPORT(CSymbol *a0, Coord_t *loc=NULL)
Node construction shortcut for IMPORT import item.
Definition: cnode_def.h:6555
static int Width(CSymbol *symbol, CNode *args)
Get width of systask.
Definition: systask.h:48
INT32 GetWidth(void)
Evaluate width of expression.
Definition: cnode.h:494
call to a timing task
Definition: cnode_def.h:946
CNode * cLT(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for LT less than.
Definition: cnode_def.h:4590
release statement
Definition: cnode_def.h:1723
void Mul(double *r, double *a, double *b)
Definition: cnode.h:692
CNode * cLSH_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for LSH_ASSIGN procedural assignment with left shift.
Definition: cnode_def.h:5684
structural case statement
Definition: cnode_def.h:2169
int IsWidthConstant(void)
Evaluates if expression width is constant.
Definition: cnode_def.h:8521
CNode * cREP(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for REP replication operator.
Definition: cnode_def.h:4313
CNode * cDELAY_CONTROL(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for DELAY_CONTROL delay control.
Definition: cnode_def.h:6704
CNode * cNOP(Coord_t *loc=NULL)
Node construction shortcut for NOP no operation.
Definition: cnode_def.h:2898
NodeType_t GetNodeType(void)
Get node expression type.
Definition: cnode.h:540
always block
Definition: cnode_def.h:1470
reference to a type
Definition: cnode_def.h:1049
udp table entry
Definition: cnode_def.h:2189
void Plus(double *r, double *a)
Definition: cnode.h:707
INT32 GetWidth(void)
Get vector bit width.
CNode * cDOLLAR(Coord_t *loc=NULL)
Node construction shortcut for DOLLAR queue dimension.
Definition: cnode_def.h:7657
static int WidthConstant(CSymbol *symbol, CNode *args, CBlock *block)
Determine if width of function is constant.
path assignment statement
Definition: cnode_def.h:2071
int Signed() const
Get signed attribute.
Definition: cvector.h:178
vector subrange
Definition: cnode_def.h:1154
real - have width 0
Definition: cdatatype.h:103
Declaration object for functions and tasks.
Definition: cfunction.h:50
port definition
Definition: cnode_def.h:2032
static int WidthEvaluateable(CSymbol *symbol)
Determine if width of external variable can be evaluated.
Definition: external.h:75
CNode * cLIST(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for LIST list of nodes.
Definition: cnode_def.h:4090
always flip-flop block
Definition: cnode_def.h:1490
call to enable a systask
Definition: cnode_def.h:935
procedural assignment
Definition: cnode_def.h:2103
CNode * cGCASE(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for GCASE structural case statement.
Definition: cnode_def.h:7204
procedural assignment with bitwise or
Definition: cnode_def.h:1642
unsigned Hash()
Calculate hash of tree.
Definition: cnode_def.h:11740
CNode * cTIMING_CALL(CSymbol *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for TIMING_CALL call to a timing task.
Definition: cnode_def.h:3544
CNode * cRXNOR(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for RXNOR reduction xnor.
Definition: cnode_def.h:4998
structural for statement
Definition: cnode_def.h:2158
logical complement
Definition: cnode_def.h:1268
Declaration object for input/output/inout statements.
Definition: cportdir.h:45
CNode * cMAX(CNode *n1, CNode *n2)
Short cut for creating a expression tree that calculates the maximum of two expressions.
Definition: cnode.h:895
CNode * cXNOR(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for XNOR bitwise xnor.
Definition: cnode_def.h:3387
casex statement
Definition: cnode_def.h:1894
always latch block
Definition: cnode_def.h:1480
CNode * cADD_N(CNode *first,...)
Definition: cnode.h:1284
CNode * cMACRO_EXPR(const char *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for MACRO_EXPR expression represented by a macro.
Definition: cnode_def.h:7349
addition
Definition: cnode_def.h:783
repeat statement
Definition: cnode_def.h:1834
expression represented by a macro
Definition: cnode_def.h:2219
deassign statement
Definition: cnode_def.h:2113
NodeType_t
Expression node type.
Definition: cdatatype.h:101
CNode * cSPECIFY_REF(CSpecify *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for SPECIFY_REF specify block.
Definition: cnode_def.h:5280
data type change
Definition: cnode_def.h:2303
procedural assignment with subtract
Definition: cnode_def.h:1582
CNode * cRSH_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for RSH_ASSIGN procedural assignment with right shift. ...
Definition: cnode_def.h:5721
CNode * GetAttributes()
Get attributes attached to operation.
Definition: cnode.h:514
CNode * cADD(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for ADD addition.
Definition: cnode_def.h:3057
const char * nodeOpName[]
Definition: cnode_def.h:2328
predecrement
Definition: cnode_def.h:2282
CNode * cDEFPARAM(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for DEFPARAM defparam statement.
Definition: cnode_def.h:6821
dimensioned reference (array/bit select)
Definition: cnode_def.h:969
CNode * cPORT_DECL(CPortDir *a0, Coord_t *loc=NULL)
Node construction shortcut for PORT_DECL port declaration.
Definition: cnode_def.h:4002
CNode * cLOR(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for LOR logical or.
Definition: cnode_def.h:4689
CNode * cENUM_SPEC(CSymbol *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for ENUM_SPEC enum specification.
Definition: cnode_def.h:7383
NodeOp_t GetOp()
Return node's operation type.
Definition: cnode.h:317
CNode * cLSH(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for LSH logical left shift.
Definition: cnode_def.h:3090
int IsWidthVolatile(void)
Evaluates if expression width is volatile.
Definition: cnode_def.h:8681
type declaration
Definition: cnode_def.h:1121
CNode * cVCONSTANT(CVector *a0, Coord_t *loc=NULL)
Node construction shortcut for VCONSTANT vector constant.
Definition: cnode_def.h:2684
void Dump(FILE *f)
Print a compact representation of the parse tree.
Definition: cnode_def.h:15487
logical left shift
Definition: cnode_def.h:794
Declaration class for block constructs.
Definition: cblock.h:52
CNode * cUCAT(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for UCAT unary concat.
Definition: cnode_def.h:4378
virtual INT32 GetWidth(void) const
Evaluate packed width of declaration.
Definition: cdecl.h:263
static CNode * WidthExp(CSymbol *symbol)
Get width of external variable as an expression.
Definition: external.h:55
continious assignment
Definition: cnode_def.h:1930
CNode * cTYPEDEF_DECL(CTypedef *a0, Coord_t *loc=NULL)
Node construction shortcut for TYPEDEF_DECL type declaration.
Definition: cnode_def.h:4060
int cABSDIFFPLUS1(int a1, int a2)
Definition: cnode.h:1354
vector subrange with descending index select
Definition: cnode_def.h:1176
bitwise complement
Definition: cnode_def.h:1238
reference to parameter
Definition: cnode_def.h:999
always combinational logic block
Definition: cnode_def.h:1500
double EvalReal(void)
Evaluates expression tree evaluated in a real context.
Definition: cnode.cc:391
case statement
Definition: cnode_def.h:1882
CNode * cLSHA(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for LSHA arithmetic left shift.
Definition: cnode_def.h:3156
CNode * cPARAM_REF(CParam *a0, Coord_t *loc=NULL)
Node construction shortcut for PARAM_REF reference to parameter.
Definition: cnode_def.h:3704
greater than
Definition: cnode_def.h:1279
CNode * cMODULE_DEF(CModule *a0, Coord_t *loc=NULL)
Node construction shortcut for MODULE_DEF module definition.
Definition: cnode_def.h:6613
specify block
Definition: cnode_def.h:1534
static int WidthVolatile(CSymbol *symbol, CNode *args, CBlock *block)
Determine if width of function is volatile.
CNode * cPREINC(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for PREINC preincrement.
Definition: cnode_def.h:7480
CNode * cPLUS(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for PLUS unary plus.
Definition: cnode_def.h:4465
modulus
Definition: cnode_def.h:838
ifnone path assignment statement
Definition: cnode_def.h:2082
net declaration
Definition: cnode_def.h:1060
expression width change
Definition: cnode_def.h:719
CNode * cINSTANCE_REF(CInstance *a0, Coord_t *loc=NULL)
Node construction shortcut for INSTANCE_REF instance reference.
Definition: cnode_def.h:3419
CNode * cTASK_ENABLE(CSymbol *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for TASK_ENABLE call to a task.
Definition: cnode_def.h:3478
ConditionalType
Case/If type.
Definition: cnode.h:116
CNode * cGENVAR_REF(CGenvar *a0, Coord_t *loc=NULL)
Node construction shortcut for GENVAR_REF reference to a genvar.
Definition: cnode_def.h:3791
CNode * cMUL(CNode *a0, CNode *a1, Coord_t *loc=NULL)
Node construction shortcut for MUL multiply.
Definition: cnode_def.h:2958
virtual INT32 GetWidth(void)
Evaluate packed width of declaration.
procedural assignment with left arithmetic shift
Definition: cnode_def.h:1690
double s2d(char *s)
Convert char string to double.
Definition: cnode.h:1093
if statement
Definition: cnode_def.h:1813
reference to variable
Definition: cnode_def.h:989
CNode * cAND_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for AND_ASSIGN procedural assignment with bitwise and. ...
Definition: cnode_def.h:5573
CNode * cCVIR(CNode *a0, Coord_t *loc=NULL)
Node construction shortcut for CVIR convert integer to real.
Definition: cnode_def.h:4283
CNode * cXOR_ASSIGN(CNode *a0, CNode *a1, CNode *a2, Coord_t *loc=NULL)
Node construction shortcut for XOR_ASSIGN procedural assignment with bitwise xor. ...
Definition: cnode_def.h:5647
CNode * cBLOCK_REF(CBlock *a0, CNode *a1, bool a2, Coord_t *loc=NULL)
Node construction shortcut for BLOCK_REF statement block.
Definition: cnode_def.h:5244
CNode * Clone(CObstack *heap=stack)
Replicate tree.
Definition: cnode_def.h:9632
min/typ/max expression
Definition: cnode_def.h:1800
logical or
Definition: cnode_def.h:1334