| 1499 | } |
| 1500 | |
| 1501 | VObjectType getSignalType(const FileContent* fC, NodeId net_port_type, |
| 1502 | NodeId& Packed_dimension, bool& is_signed, |
| 1503 | bool& is_var, NodeId& nodeType) { |
| 1504 | Packed_dimension = InvalidNodeId; |
| 1505 | is_signed = false; |
| 1506 | is_var = false; |
| 1507 | VObjectType signal_type = VObjectType::paData_type_or_implicit; |
| 1508 | if (net_port_type) { |
| 1509 | NodeId data_type_or_implicit = fC->Child(net_port_type); |
| 1510 | VObjectType the_type = fC->Type(data_type_or_implicit); |
| 1511 | if (the_type == VObjectType::paNetType_Wire || |
| 1512 | the_type == VObjectType::paNetType_Wand || |
| 1513 | the_type == VObjectType::paNetType_Uwire || |
| 1514 | the_type == VObjectType::paNetType_Wor || |
| 1515 | the_type == VObjectType::paNetType_Tri || |
| 1516 | the_type == VObjectType::paNetType_TriAnd || |
| 1517 | the_type == VObjectType::paNetType_TriOr || |
| 1518 | the_type == VObjectType::paNetType_Tri1 || |
| 1519 | the_type == VObjectType::paNetType_Tri0 || |
| 1520 | the_type == VObjectType::paNetType_TriReg || |
| 1521 | the_type == VObjectType::paNetType_Supply0 || |
| 1522 | the_type == VObjectType::paNetType_Supply1 || |
| 1523 | the_type == VObjectType::paImplicit_data_type) { |
| 1524 | signal_type = the_type; |
| 1525 | if (the_type == VObjectType::paImplicit_data_type) { |
| 1526 | // Interconnect |
| 1527 | Packed_dimension = fC->Child(data_type_or_implicit); |
| 1528 | if (fC->Type(Packed_dimension) == VObjectType::paSigning_Signed) { |
| 1529 | is_signed = true; |
| 1530 | } |
| 1531 | if (fC->Type(Packed_dimension) != VObjectType::paPacked_dimension) { |
| 1532 | Packed_dimension = InvalidNodeId; |
| 1533 | } |
| 1534 | } |
| 1535 | data_type_or_implicit = fC->Sibling(data_type_or_implicit); |
| 1536 | if (data_type_or_implicit) { |
| 1537 | Packed_dimension = fC->Child(data_type_or_implicit); |
| 1538 | } |
| 1539 | } |
| 1540 | NodeId data_type = fC->Child(data_type_or_implicit); |
| 1541 | if (data_type) { |
| 1542 | VObjectType the_type = fC->Type(data_type); |
| 1543 | if (the_type == VObjectType::paVar_type) { |
| 1544 | is_var = true; |
| 1545 | data_type_or_implicit = fC->Sibling(data_type); |
| 1546 | data_type = fC->Child(data_type_or_implicit); |
| 1547 | if (data_type) |
| 1548 | the_type = fC->Type(data_type); |
| 1549 | else |
| 1550 | nodeType = data_type_or_implicit; |
| 1551 | } |
| 1552 | if (the_type == VObjectType::paData_type) { |
| 1553 | NodeId integer_vector_type = fC->Child(data_type); |
| 1554 | the_type = fC->Type(integer_vector_type); |
| 1555 | if (the_type == VObjectType::paIntVec_TypeBit || |
| 1556 | the_type == VObjectType::paIntVec_TypeLogic || |
| 1557 | the_type == VObjectType::paIntVec_TypeReg || |
| 1558 | the_type == VObjectType::slStringConst || |
no test coverage detected