MCPcopy Create free account
hub / github.com/chipsalliance/Surelog / getSignalType

Function getSignalType

src/DesignCompile/CompileHelper.cpp:1501–1613  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

1499}
1500
1501VObjectType 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 ||

Callers 2

Calls 4

ChildMethod · 0.45
TypeMethod · 0.45
SiblingMethod · 0.45
SymNameMethod · 0.45

Tested by

no test coverage detected