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

Method compile_class_parameters_

src/DesignCompile/CompileClass.cpp:865–924  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

863}
864
865bool CompileClass::compile_class_parameters_(const FileContent* fC, NodeId id) {
866 /*
867 n<all_c> u<1> t<StringConst> p<16> s<14> l<3>
868 n<uvm_port_base> u<2> t<StringConst> p<12> s<8> l<7>
869 n<IF> u<3> t<StringConst> p<6> s<5> l<7>
870 n<uvm_void> u<4> t<StringConst> p<5> l<7>
871 n<> u<5> t<Data_type> p<6> c<4> l<7>
872 n<> u<6> t<List_of_type_assignments> p<7> c<3> l<7>
873 n<> u<7> t<Parameter_port_declaration> p<8> c<6> l<7>
874 n<> u<8> t<Parameter_port_list> p<12> c<7> s<10> l<7>
875 n<IF> u<9> t<StringConst> p<10> l<7>
876 n<> u<10> t<Class_type> p<12> c<9> s<11> l<7>
877 n<> u<11> t<Endclass> p<12> l<8>
878 n<> u<12> t<Class_declaration> p<13> c<2> l<7>
879
880 or
881
882 n<T1> u<3> t<StringConst> p<9> s<5> l<18>
883 n<> u<4> t<IntegerAtomType_Int> p<5> l<18>
884 n<> u<5> t<Data_type> p<9> c<4> s<6> l<18>
885 n<T2> u<6> t<StringConst> p<9> s<8> l<18>
886 n<T1> u<7> t<StringConst> p<8> l<18>
887 n<> u<8> t<Data_type> p<9> c<7> l<18>
888 n<> u<9> t<List_of_type_assignments> p<10> c<3> l<18>
889 n<> u<10> t<Parameter_port_declaration> p<11> c<9> l<18>
890 n<> u<11> t<Parameter_port_list> p<31> c<10> s<20> l<18>
891
892 */
893 UHDM::class_defn* defn = m_class->getUhdmDefinition();
894
895 if (fC->sl_collect(id, VObjectType::paVIRTUAL)) {
896 defn->VpiVirtual(true);
897 }
898
899 NodeId paramList = fC->sl_collect(id, VObjectType::paParameter_port_list);
900 if (paramList) {
901 NodeId parameter_port_declaration = fC->Child(paramList);
902 while (parameter_port_declaration) {
903 NodeId list_of_type_assignments = fC->Child(parameter_port_declaration);
904 NodeId type = fC->Child(list_of_type_assignments);
905 if (fC->Type(list_of_type_assignments) ==
906 VObjectType::paList_of_type_assignments ||
907 fC->Type(list_of_type_assignments) == VObjectType::paTYPE) {
908 // Type param
909 m_helper.compileParameterDeclaration(
910 m_class, fC, list_of_type_assignments, m_compileDesign, Reduce::No,
911 false, nullptr, false, false);
912 } else if (fC->Type(type) == VObjectType::paTYPE) {
913 // Handled in compile_parameter_declaration_
914 } else {
915 // Regular param
916 m_helper.compileParameterDeclaration(
917 m_class, fC, parameter_port_declaration, m_compileDesign,
918 Reduce::No, false, nullptr, false, false);
919 }
920 parameter_port_declaration = fC->Sibling(parameter_port_declaration);
921 }
922 }

Callers

nothing calls this directly

Calls 6

getUhdmDefinitionMethod · 0.80
sl_collectMethod · 0.45
ChildMethod · 0.45
TypeMethod · 0.45
SiblingMethod · 0.45

Tested by

no test coverage detected