123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348349350351352353354355356357358359360361362363364365366367368369370371372373374375376377378379380381382383384385386387388389390391392393394395396397398399400401402403404405406407408409410411412413414415416417418419420421422423424425426427428429430431432433434435436437438439440441442443444445446447448449450451452453454455456457458459460461462463464465466467468469470471472473474475476477478479480481482483484485486487488489490491492493494495496497498499500501502503504505506507508509510511512513514515516517518519520521522523524525526527528529530531532533534535536537538539540541542543544545546547548549550551552553554555556557558559560561562563564565566567568569570571572573574575576577578579580581582583584585586587588589590591592593594595596597598599600601602603604605606607608609610611612613614615616617618619620621622623624625626627628629630631632633634635636637638639640641642643644645646647648649650651652653654655656657658659660661662663664665666667668669670671672673674675676677678679680681682683684685686687688689690691692693694695696697698699700701702703704705706707708709710711712713714715716717718719720721722723724725726727728729730731732733734735736737738739740741742743744745746747748749750751752753754755756757758759760761762763764765766767768769770771772773774775776777778779780781782783784785786787788789790791792793794795796797798799800801802803804805806807808809810811812813814815816817818819820821822823824825826827828829830831832833834835836837838839840841842843844845846847848849850851852853854855856857858859860861862863864865866867868869870871872873874875876877878879880881882883884885886887888889890891892893894895896897898899900901902903904905906907908909910911912913914915916917918919920921922923924925926927928929930931932933934935936937938939940941942943944945946947948949950951952953954955956957958959960961962963964965966967968969970971972973974975976977978979980981982983984985986987988989990991992993994995996997998999100010011002100310041005100610071008100910101011101210131014101510161017101810191020102110221023102410251026102710281029103010311032103310341035103610371038103910401041104210431044104510461047104810491050105110521053105410551056105710581059106010611062106310641065106610671068106910701071107210731074107510761077107810791080108110821083108410851086108710881089109010911092109310941095109610971098109911001101110211031104110511061107110811091110111111121113111411151116111711181119112011211122112311241125112611271128112911301131113211331134113511361137113811391140114111421143114411451146114711481149115011511152115311541155115611571158115911601161116211631164116511661167116811691170117111721173117411751176117711781179118011811182118311841185118611871188118911901191119211931194119511961197119811991200120112021203120412051206120712081209121012111212121312141215121612171218121912201221122212231224122512261227122812291230123112321233123412351236123712381239124012411242124312441245124612471248124912501251125212531254125512561257125812591260126112621263126412651266126712681269127012711272127312741275127612771278127912801281128212831284128512861287128812891290129112921293129412951296129712981299130013011302130313041305130613071308130913101311131213131314131513161317131813191320132113221323132413251326132713281329133013311332133313341335133613371338133913401341134213431344134513461347134813491350135113521353135413551356135713581359136013611362136313641365136613671368136913701371137213731374137513761377137813791380138113821383138413851386138713881389139013911392139313941395139613971398139914001401140214031404140514061407140814091410141114121413141414151416141714181419142014211422142314241425142614271428142914301431143214331434143514361437143814391440144114421443144414451446144714481449145014511452145314541455145614571458145914601461146214631464146514661467146814691470147114721473147414751476147714781479148014811482148314841485148614871488148914901491149214931494149514961497149814991500150115021503150415051506150715081509151015111512151315141515151615171518151915201521152215231524152515261527152815291530153115321533153415351536153715381539154015411542154315441545154615471548154915501551155215531554155515561557155815591560156115621563156415651566156715681569157015711572157315741575157615771578157915801581158215831584158515861587158815891590159115921593159415951596159715981599160016011602160316041605160616071608160916101611161216131614161516161617161816191620162116221623162416251626162716281629163016311632163316341635163616371638163916401641164216431644164516461647164816491650165116521653165416551656165716581659166016611662166316641665166616671668166916701671167216731674167516761677167816791680168116821683168416851686168716881689169016911692169316941695169616971698169917001701170217031704170517061707170817091710171117121713171417151716171717181719172017211722172317241725172617271728172917301731173217331734173517361737173817391740174117421743174417451746174717481749175017511752175317541755175617571758175917601761176217631764176517661767176817691770177117721773177417751776177717781779178017811782178317841785178617871788178917901791179217931794179517961797179817991800180118021803180418051806180718081809181018111812181318141815181618171818181918201821182218231824182518261827182818291830183118321833183418351836183718381839184018411842184318441845184618471848184918501851185218531854185518561857185818591860186118621863186418651866186718681869187018711872187318741875187618771878187918801881188218831884188518861887188818891890189118921893189418951896189718981899190019011902190319041905190619071908190919101911191219131914191519161917191819191920192119221923192419251926192719281929193019311932193319341935193619371938193919401941194219431944194519461947194819491950195119521953195419551956195719581959196019611962196319641965196619671968196919701971197219731974197519761977197819791980198119821983198419851986198719881989199019911992199319941995199619971998199920002001200220032004200520062007200820092010201120122013201420152016201720182019202020212022202320242025202620272028202920302031203220332034203520362037203820392040204120422043204420452046204720482049205020512052205320542055205620572058205920602061206220632064206520662067206820692070207120722073207420752076207720782079208020812082208320842085208620872088208920902091209220932094209520962097209820992100210121022103210421052106210721082109211021112112211321142115211621172118211921202121212221232124212521262127212821292130213121322133213421352136213721382139214021412142214321442145214621472148214921502151215221532154215521562157215821592160(*
Copyright 2012-2025 Codinuum Software Lab <https://codinuum.com>
Licensed under the Apache License, Version 2.0 (the "License");
you may not use this file except in compliance with the License.
You may obtain a copy of the License at
http://www.apache.org/licenses/LICENSE-2.0
Unless required by applicable law or agreed to in writing, software
distributed under the License is distributed on an "AS IS" BASIS,
WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
See the License for the specific language governing permissions and
limitations under the License.
*)(* verilog/label.ml *)moduleLoc=Diffast_misc.LocmoduleAstml=Diffast_core.AstmlmoduleLang_base=Diffast_core.Lang_basemoduleSpec=Diffast_core.SpecmoduleCharpool=Diffast_core.CharpoolmoduleAst=Verilog_parsing.AstmoduleLabels=Verilog_parsing.LabelsmoduleLabel=Verilog_parsing.LabelmoduleLs=Labelstypeidentifier=stringletlang_prefix=Astml.verilog_prefix(*let ident_attr_name = "ident"
let label_attr_name = "label"
let value_attr_name = "value"
let path_attr_name = "path"
let spec_attr_name = "spec"*)letkeyroot_depth_min=2typetie_id=Lang_base.tie_idletnull_tid=Lang_base.null_tidletmktid=Lang_base.mktidlettid_to_string=Lang_base.tid_to_stringletanonymize_tid=Lang_base.anonymize_tidletmktidattr=Lang_base.mktidattr(*let strlit_to_encoded_path s =
XML.encode_string (Astml.str_lit_to_path s)*)moduletype T=sigincludeSpec.LABEL_Tvallang_prefix:stringvalis_always_construct:t->boolvalis_timing_control :t->boolvalis_continuous_assign:t->boolvalis_blocking_assign:t->boolvalis_non_blocking_assign:t->boolvalis_if:t->boolvalis_case:t->boolvalis_case_item:t->boolvalis_case_cond:t->boolvalis_module_decl:t->boolvalis_ports:t->boolvalis_port:t->boolvalis_port_dir:t->boolvalis_net_type:t->boolvalis_data_type:t->boolvalis_var_data_type:t-> boolvalis_signing:t->boolvalis_ranges:t-> boolvalis_variable_dims:t->boolvalis_inst:t->boolvalis_initial_construct:t->boolvalis_final_construct:t->boolvalis_generate_region :t->boolvalis_param_port_decl :t->boolvalis_param_assign :t->boolvalis_data_decl_var:t->boolvalis_net_decl :t->boolvalis_reg :t->boolvalis_wire:t->boolvalis_expr:t-> boolvalis_stmt:t->boolvalis_pp_define:t->boolvalis_pp_include:t->boolvalis_source_text:t->boolvalgetlab:Spec.node_t->tendletconv_loc{Ast.Loc.start_offset=so;Ast.Loc.end_offset=eo;Ast.Loc.start_line =sl;Ast.Loc.start_char=sc;Ast.Loc.end_line =el;Ast.Loc.end_char=ec;_}=Loc.makesoeoslscelecopenCharpoolmoduleOverloadOperator=structincludeLs.OverloadOperatorletto_short_string =function|Add->mkstr0|Incr->mkstr1|Subt->mkstr2|Decr->mkstr3|Mult ->mkstr4|Pow->mkstr5|Div->mkstr6|Mod->mkstr7|Eq-> mkstr8|Neq->mkstr9|Lt->mkstr10|Le->mkstr 11|Gt->mkstr12|Ge->mkstr13|Assign->mkstr14end(* of module OverloadOperator *)module AssignmentOperator=structinclude Ls.AssignmentOperatorletto_short_string =function|Eq->mkstr0|AddEq->mkstr1|SubtEq-> mkstr2|MultEq->mkstr3|DivEq->mkstr4|ModEq->mkstr5|AndEq->mkstr6|OrEq->mkstr7|XorEq->mkstr8|ShiftLEq->mkstr9|ShiftREq->mkstr10|SShiftREq ->mkstr11end (* of module AssignmentOperator *)moduleIncOrDecOperator=structincludeLs.IncOrDecOperatorletto_short_string=function|PreIncr->mkstr0|PreDecr->mkstr1|PostIncr->mkstr2|PostDecr->mkstr3end(* of module IncOrDecOperator *)moduleUnaryOperator=structincludeLs.UnaryOperatorletto_short_string=function|Plus->mkstr0|Minus->mkstr1|Not->mkstr2|And->mkstr3|Neg->mkstr4|Or->mkstr5|Xor->mkstr6|Nand->mkstr7|Nor->mkstr8|Xnor->mkstr9|Inc->mkstr10|Dec->mkstr11end(* of module UnaryOperator *)moduleBinaryOperator=structincludeLs.BinaryOperatorletto_short_string=function|Add->mkstr0|Subt->mkstr1|Mult->mkstr2|Div->mkstr3|Mod->mkstr4|Eq->mkstr5|Neq->mkstr6|CaseEq->mkstr7|CaseNeq->mkstr8|WildEq->mkstr9|WildNeq ->mkstr10|LogAnd->mkstr11|LogOr->mkstr12|Pow->mkstr13|Lt->mkstr 14|Le->mkstr15|Gt->mkstr16|Ge->mkstr17|And->mkstr18|Or->mkstr19|Xor->mkstr20|Xnor->mkstr21|Nor->mkstr22|Nand->mkstr23|ShiftL->mkstr24|ShiftR->mkstr25|SShiftR->mkstr26|Constraint->mkstr27|LtMinusGt->mkstr28end(* of module BinaryOperator *)moduleTimingCheck=structincludeLs.TimingCheckletanonymize=function|Setup|Hold|Recovery|Removal|Skew|Setuphold|Recrem|Timeskew|Fullskew|Period|Width|Nochange ->Anonymous|x->xletto_short_string=function|Setup->mkstr0|Hold->mkstr 1|Recovery->mkstr 2|Removal->mkstr3|Skew->mkstr4|Setuphold-> mkstr5|Recrem->mkstr6|Timeskew->mkstr7|Fullskew->mkstr8|Period->mkstr9|Width->mkstr10|Nochange ->mkstr11|Anonymous->mkstr12end(* of module TimingCheck *)moduleSystemTask=structincludeLs.SystemTaskletanonymize=function|Error|Fatal|Info|Root|Unit|Warning->Anonymous|x->xletto_short_string=function|Error->mkstr0|Fatal->mkstr1|Info->mkstr2|Root->mkstr3|Unit->mkstr4|Warning->mkstr5|Anonymous->mkstr6end(* of module SystemTask *)moduleQualifier=structincludeLs.Qualifierletto_short_string=function|Protected->mkstr0|Local->mkstr1|Static->mkstr2|Virtual->mkstr3|PureVirtual->mkstr4|Rand->mkstr5|Randc ->mkstr6|Automatic->mkstr 7end(* of module Qualifier *)moduleNetType=structincludeLs.NetTypeletanonymize=function|Supply0|Supply1|Tri|Tri0|Tri1|Triand|Trior|Trireg|Wand|Wire|Uwire|Wor->Anonymous|x->xletto_short_string =function|Supply0->mkstr 1|Supply1 ->mkstr2|Tri->mkstr3|Tri0->mkstr4|Tri1->mkstr5|Triand ->mkstr6|Trior->mkstr7|Trireg->mkstr8|Wand->mkstr9|Wire->mkstr 10|Uwire ->mkstr11|Wor->mkstr12|Anonymous->mkstr13end(* of module NetType *)modulePortDirection=structincludeLs.PortDirectionletanonymize=function|Input|Output|Inout|Ref|ConstRef->Anonymous|x->xletto_short_string =function|Input->mkstr0|Output-> mkstr1|Inout->mkstr2|Ref->mkstr3|ConstRef->mkstr4|Anonymous->mkstr5end(* of module PortDirection *)moduleGate=structincludeLs.Gatelet anonymize=function|Gate_|And|Buf|Nand|Nor|Not|Or|Xnor|Xor->Anonymous|x->xletgate_to_short_string=function|Ls.BUFIF0->mkstr0|Ls.BUFIF1->mkstr1|Ls.CMOS->mkstr2|Ls.NMOS->mkstr3|Ls.PMOS->mkstr4|Ls.NOTIF0-> mkstr5|Ls.NOTIF1->mkstr6|Ls.RCMOS->mkstr7|Ls.RNMOS ->mkstr8|Ls.RPMOS ->mkstr9|Ls.PULLDOWN->mkstr10|Ls.PULLUP->mkstr11|Ls.RTRAN->mkstr12|Ls.RTRANIF0->mkstr13|Ls.RTRANIF1-> mkstr14|Ls.TRAN->mkstr 15|Ls.TRANIF0->mkstr16|Ls.TRANIF1->mkstr17letto_short_string=function|Gateg->catstr[mkstr0;gate_to_short_string g]|And->mkstr1|Buf->mkstr 2|Nand->mkstr3|Nor->mkstr4|Not ->mkstr5|Or->mkstr 6|Xnor->mkstr7|Xor->mkstr8|Anonymous->mkstr9end(* of module Gate *)moduleDataType=structincludeLs.DataTypeletanonymize=function|PsType_->PsType""|VirtualInterface_->VirtualInterface""|PsCovergroup_->PsCovergroup""|ClassScopeType_->ClassScopeType""|Named_->Named""|dt->dtletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flag infunction|Byte->mkstr0|Shortint->mkstr1|Int->mkstr2|Longint->mkstr3|Integer->mkstr4|Time->mkstr5|Bit->mkstr6|Logic->mkstr7|Reg->mkstr 8|Shortreal->mkstr9|Real-> mkstr10|Realtime->mkstr 11|Struct->mkstr 12|Union->mkstr13|Enum->mkstr 14|PsTypeid->combo15[id]|String->mkstr16|Chandle ->mkstr17|Event->mkstr18|VirtualInterfaceid->combo19[id]|TypeReference->mkstr20|PsCovergroupid->combo21[id]|ClassScopeTypeid->combo22[id]|ClassType->mkstr23|Namedid->combo24[id]|Implicit->mkstr25end(* of module DataType *)moduleExpression=structincludeLs.Expressionletanonymize =function|IntegralNumber_->IntegralNumber ""|RealNumber_->RealNumber ""|TimeNumber_->TimeNumber""|Tagged_->Tagged""|SystemFCall _->SystemFCall""|SystemTCallst->SystemTCall(SystemTask.anonymizest)|TfCall_->TfCall""|MethodCall_->MethodCall""|e->eletto_short_string ?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|IntegralNumbers->mkstr_str0s|RealNumbers->mkstr_str2s|TimeNumbers->mkstr_str4s|Null->mkstr5|UOp uo-> catstr[mkstr6;UnaryOperator.to_short_stringuo]|BOpbo->catstr[mkstr7;BinaryOperator.to_short_stringbo]|Cond->mkstr8|Paren->mkstr9|Taggedid->combo 10[id]|Inside->mkstr11|Concat->mkstr 12|EmptyQueue->mkstr 13|Last->mkstr14|MinTypeMax->mkstr15|Cast->mkstr16|Constraint->mkstr17|ConstraintIf->mkstr18|ConstraintForeach->mkstr19|ConstraintSet->mkstr20|Stream->mkstr21|PreIncr->mkstr22|PreDecr->mkstr23|OperatorAssignmentao->catstr[mkstr24;AssignmentOperator.to_short_string ao]|SystemFCallid->combo25[id]|SystemTCallst->catstr[mkstr26;SystemTask.to_short_stringst]|TfCall id->combo27[id]|MethodCallid->combo28[id]|ArrayMethodCallUnique->mkstr29|ArrayMethodCallAnd->mkstr30|ArrayMethodCallOr->mkstr31|ArrayMethodCallXor->mkstr32|CycleDelayConstRange->mkstr33|ConstantRange->mkstr34|ClassNew->mkstr35|ClassNewA->mkstr36|PostIncr-> mkstr37|PostDecr->mkstr38end(* of module Expression *)moduleEventExpression=structincludeLs.EventExpressionletto_short_string=function|Posedge->mkstr0|Negedge->mkstr1|Edge->mkstr2|Iff->mkstr3|Or->mkstr4|Multi->mkstr5end(* of module EventExpression *)modulePropertyExpression=structincludeLs.PropertyExpressionletto_short_string=function|Not->mkstr0|Strong->mkstr1|Weak->mkstr2|ImplicationOverlapped->mkstr3|ImplicationNonOverlapped->mkstr4|SharpMinusSharp->mkstr5|SharpEqSharp->mkstr6|Nexttime->mkstr7|S_nexttime->mkstr8|Always->mkstr9|S_always->mkstr10|Eventually->mkstr11|S_eventually->mkstr12|Until->mkstr13|S_until->mkstr14|Until_with->mkstr15|S_until_with->mkstr16|Implies ->mkstr17|Iff->mkstr 18|Accept_on->mkstr19|Sync_accept_on->mkstr20|Reject_on->mkstr21|Sync_reject_on->mkstr22|If->mkstr23|Case->mkstr24|Spec->mkstr25end(* of module PropertyExpression *)moduleSequenceExpression=structincludeLs.SequenceExpressionletto_short_string=function|Concat->mkstr0|Repetition->mkstr1|OnMatch->mkstr2|And->mkstr3|Or->mkstr4|Intersect->mkstr5|First_match->mkstr6|Throughout->mkstr7|Within->mkstr8|Clocking->mkstr9end(* of module SequenceExpression *)moduleJoinSpec=structincludeLs.JoinSpecletto_short_string=function|NORMAL->mkstr0|ANY->mkstr1|NONE->mkstr2;endmoduleStatement=structincludeLs.Statementletanonymize=function|Labeled_->Labeled""|ParBlock(_,js)->ParBlock("",js)|SeqBlock_->SeqBlock""|Randsequence_->Randsequence""|Expre->Expr(Expression.anonymizee)|stmt->stmtletto_short_string?(ignore_identifiers_flag=false)=letcombo=combo~ignore_identifiers_flaginfunction|Empty->mkstr0|OperatorAssignmentao->catstr[mkstr1;AssignmentOperator.to_stringao]|Labeledid->combo3[id]|BlockingAssignment->mkstr4|NonBlockingAssignment->mkstr5|Assign->mkstr6|Deassign->mkstr7|Force->mkstr8|Release->mkstr9|Case->mkstr10|Casex->mkstr11|Casez->mkstr12|Conditional->mkstr13|IncOrDec->mkstr14|SubroutineCall->mkstr15|SubroutineCallVoid->mkstr16|Disable->mkstr17|DisableFork->mkstr18|EventTrigger->mkstr19|EventTriggerNonBlocking->mkstr20|Forever->mkstr21|Repeat->mkstr22|While->mkstr 23|For->mkstr24|Do->mkstr25|Foreach->mkstr26|Return->mkstr27|Break->mkstr28|Continue->mkstr29|ParBlock(id,js)->catstr[mkstr30;id;JoinSpec.to_short_stringjs]|ProceduralTimingControl->mkstr31|SeqBlockid->combo32[id]|Wait->mkstr33|WaitFork->mkstr34|WaitOrder->mkstr35|ProceduralAssertion->mkstr36|ClockingDrive->mkstr37|Randsequenceid->combo38[id]|Randcase->mkstr39|ExpectProperty->mkstr40|Expre->catstr[mkstr41;Expression.to_short_stringe]|PExprpe->catstr[mkstr42;PropertyExpression.to_short_stringpe]end(* of module Statement *)moduleCompilerDirective=structincludeLs.CompilerDirectiveletanonymize=function|Define_->Define""|Undef_->Undef""|Include_->Include""|SysInclude_->SysInclude""|Timescale(_,_)->Timescale("","")|Error_->Error""|Line(_,_,_)->Line("","","")|Pragma_->Pragma""|Begin_keywords_->Begin_keywords""|Default_decay_time_->Default_decay_time""|Default_trireg_strength_->Default_trireg_strength ""|cd->cdletto_short_string ?(ignore_identifiers_flag=false)=letcombo=combo ~ignore_identifiers_flag infunction|Defineid->combo0[id]|Undefid->combo1[id]|Undefineall->mkstr2|Include s->mkstr_str3s|SysInclude s->mkstr_str5s|Timescale(s1,s2)->mkstr_strs7[s1;s2]|Errors->mkstr_str9s|Line(n1,s,n2)->mkstr_strs11[n1;s;n2]|Resetall->mkstr13|Default_nettypeNone->mkstr14|Default_nettype->mkstr15|Pragmaid->combo16[id]|Begin_keywordss->mkstr_str17s|End_keywords->mkstr19|Default_decay_times->mkstr_str21s|Default_trireg_strengths->mkstr_str23s|Delay_mode_distributed->mkstr25|Delay_mode_path->mkstr26|Delay_mode_unit->mkstr27|Delay_mode_zero->mkstr28|Celldefine->mkstr29|Endcelldefine->mkstr30|Unconnected_drive->mkstr31|Nounconnected_drive->mkstr32end(* of module CompilerDirective *)moduleStrength=structincludeLs.Strengthletanonymize=function|HIGHZ0|HIGHZ1|LARGE|MEDIUM|SMALL|PULL0|PULL1|STRONG0|STRONG1|WEAK0|WEAK1->Anonymous|x->xletto_short_string=function|HIGHZ0->mkstr0|HIGHZ1->mkstr1|LARGE->mkstr2|MEDIUM->mkstr3|SMALL->mkstr4|PULL0->mkstr5|PULL1->mkstr6|STRONG0->mkstr7|STRONG1->mkstr8|WEAK0->mkstr9|WEAK1->mkstr10|Anonymous->mkstr11endmoduleSimpleImmediateAssertion=structincludeLs.SimpleImmediateAssertionletto_short_string=function|Assert->mkstr0|Assume->mkstr1|Cover->mkstr2endmoduleDeferredImmediateAssertion=structincludeLs.DeferredImmediateAssertionletanonymize=function|Assert_|Assume_|Cover_->Anonymous|x->xletto_short_string=function|Asserts->mkstr_str0s|Assumes->mkstr_str2s|Covers->mkstr_str4s|Anonymous->mkstr5endmoduleConcurrentAssertion=structincludeLs.ConcurrentAssertionletto_short_string=function|AssertProp->mkstr0|AssumeProp->mkstr1|CoverProp->mkstr2|CoverSeq->mkstr3|RestrictProp->mkstr4endmoduleModuleSpec=structincludeLs.ModuleSpecletto_short_string=function|NORMAL->mkstr0|MACRO->mkstr1endmoduleAlwaysSpec=structincludeLs.AlwaysSpecletto_short_string=function|NORMAL->mkstr0|COMB->mkstr1|FF->mkstr2|LATCH->mkstr3endmoduleBinsSpec=structincludeLs.BinsSpecletto_short_string=function|Normal->mkstr0|Illegal->mkstr1|Ignore->mkstr2endtypeannotation=stringoptionletnull_annotation=Noneletannotation_to_string=function|None->"<none>"|Somex->xincludeLabelletfx=CompilerDirective.anonymizexletstriplab=lab(* not yet *)letanonymize?(more=false)lab=ignoremore;matchlabwith|CompilerDirectivecd->CompilerDirective(CompilerDirective.anonymizecd)|ModuleDeclaration(mspec,_)->ModuleDeclaration(mspec,"")|UdpDeclaration_->UdpDeclaration""|BindDirective_->BindDirective""|Expre->Expr(Expression.anonymizee)|Stmtstmt->Stmt(Statement.anonymizestmt)|NetTypent->NetType(NetType.anonymizent)|Instantiation_->Instantiation""|GateInstantiationg->GateInstantiation(Gate.anonymizeg)|PpIdentifier_->PpIdentifier""|ParamAssignment_->ParamAssignment ""|IdSelect_->IdSelect""|Cellpin_->Cellpin""|DelayValue_->DelayValue""|PackageScope _->PackageScope""|PackageImport_->PackageImport ""|EndLabel_->EndLabel""|ClassType_->ClassType ""|DataTypedt->DataType(DataType.anonymizedt)|ArgsDotted_->ArgsDotted ""|ClassScopeId _->ClassScopeId""|EnumNameDeclaration _->EnumNameDeclaration ""|Variable_->Variable""|PackageImportItem_->PackageImportItem""|VariableDeclAssignment_->VariableDeclAssignment""|GenBlockId_->GenBlockId""|NetSig_->NetSig""|PortDirectionpd->PortDirection(PortDirection.anonymizepd)|Strengthstrength->Strength(Strength.anonymizestrength)|Port_->Port""|InterfacePort_->InterfacePort""|ModportIdentifier_->ModportIdentifier""|PatternId_->PatternId""|PatternTagged_->PatternTagged""|ForInitItemDT_->ForInitItemDT""|CycleDelay_->CycleDelay""|CycleDelayId_->CycleDelayId""|InstName_->InstName""|ClockingEvent_->ClockingEvent""|CycleDelayRange_->CycleDelayRange""|CycleDelayRangeId_->CycleDelayRangeId""|ConcurrentAssertionItemLabeled_->ConcurrentAssertionItemLabeled""|DeferredImmediateAssertionItemLabeled_->DeferredImmediateAssertionItemLabeled""|DeferredImmediateAssertionStmtdia->DeferredImmediateAssertionStmt(DeferredImmediateAssertion.anonymizedia)|CheckerInstantiation_->CheckerInstantiation""|GenvarIterationAssign(ao,_)->GenvarIterationAssign(ao,"")|GenvarIterationIncOrDec(iod,_)->GenvarIterationIncOrDec(iod,"")|GenvarIdDecl_->GenvarIdDecl""|GenvarInitId_->GenvarInitId""|SpecparamAssignmentId_->SpecparamAssignmentId""|SpecparamAssignmentPulseControl_->SpecparamAssignmentPulseControl""|InputOrOutputId_->InputOrOutputId""|InterfaceIdentifier_->InterfaceIdentifier""|ProgramDeclaration_->ProgramDeclaration""|InterfaceDeclaration_->InterfaceDeclaration""|InterfaceDeclarationExtern_->InterfaceDeclarationExtern""|TimeUnit_->TimeUnit""|Timeprecision_->Timeprecision""|PackageDeclaration_->PackageDeclaration""|FunctionDeclaration_->FunctionDeclaration""|FunctionPrototype_->FunctionPrototype""|FuncId_->FuncId""|FuncIdVoid_->FuncIdVoid""|TfIdScoped_->TfIdScoped""|TaskDeclaration_->TaskDeclaration""|TaskPrototype_->TaskPrototype""|TfPortItemAssignment_->TfPortItemAssignment""|TfVariableIdentifier_->TfVariableIdentifier""|CheckerDeclaration_->CheckerDeclaration""|PropertyDeclaration_->PropertyDeclaration""|PropertyPortItemAssignment_->PropertyPortItemAssignment""|SequenceDeclaration_->SequenceDeclaration""|LetDeclaration_->LetDeclaration""|TypeDeclaration_->TypeDeclaration""|ScopedType_->ScopedType""|TypeIdentifier_->TypeIdentifier""|VirtualInterfaceDeclaration_->VirtualInterfaceDeclaration""|ModportItem_->ModportItem""|ModportClockingDecl_->ModportClockingDecl""|ModportSimplePort_->ModportSimplePort""|ModportSimplePortDot_->ModportSimplePortDot""|ModportTfPort_->ModportTfPort""|CovergroupDeclaration_->CovergroupDeclaration""|CoverageOption(_,_)->CoverageOption("","")|CoverPointLabeled_->CoverPointLabeled""|CoverCrossLabeled_->CoverCrossLabeled""|CrossItem_->CrossItem""|Bins(bspec,_)->Bins(bspec,"")|BinsSelection(bspec,_)->BinsSelection(bspec,"")|BinsExpressionVar_->BinsExpressionVar""|BinsExpression(_,_)->BinsExpression("","")|CoverageEventWith_->CoverageEventWith""|HierarchicalBtfIdentifier_->HierarchicalBtfIdentifier""|DpiImport_->DpiImport""|DpiExportFunc(_,_)->DpiExportFunc("","")|DpiExportTask(_,_)->DpiExportTask("","")|DpiImportLabel_->DpiImportLabel""|ClassDeclaration_->ClassDeclaration""|ClassConstraint_->ClassConstraint""|ExternTfDeclaration_->ExternTfDeclaration""|TimingChecktc->TimingCheck(TimingCheck.anonymizetc)|Notifier_->Notifier""|Delayed_->Delayed""|EdgeDescriptor_->EdgeDescriptor""|OverloadDeclaration(oo,_)->OverloadDeclaration(oo,"")|ClockingDeclaration_->ClockingDeclaration""|ClockingDeclAssign_->ClockingDeclAssign""|Production_->Production""|ProductionItem_->ProductionItem""|ElaborationSystemTaskst->ElaborationSystemTask(SystemTask.anonymizest)|AttrSpec_->AttrSpec""|UdpPort_->UdpPort""|UdpOutputDeclaration_->UdpOutputDeclaration""|UdpOutputDeclarationReg_->UdpOutputDeclarationReg""|UdpRegDeclaration_->UdpRegDeclaration""|UdpInitialStmt(_,_)->UdpInitialStmt("","")|EdgeSymbol_->EdgeSymbol""|LevelSymbol_->LevelSymbol""|OutputSymbol_->OutputSymbol""|ConfigDeclaration_->ConfigDeclaration""|CellId_->CellId""|LibraryIdentifier_->LibraryIdentifier""|CellClause_->CellClause""|InstanceIdentifier_->InstanceIdentifier ""|TopModuleIdentifier_-> TopModuleIdentifier""|LibraryDeclaration _->LibraryDeclaration ""|FilePathSpec_->FilePathSpec""|IncludeStatement _->IncludeStatement ""|PragmaExpression _->PragmaExpression""|PragmaValueNum _->PragmaValueNum""|PragmaValueStr_->PragmaValueStr""|PragmaValueId_->PragmaValueId""|NetDeclaration_->NetDeclaration[]|LocalParameterDeclaration_->LocalParameterDeclaration[]|ParameterDeclaration_->ParameterDeclaration[]|GenvarDeclaration_->GenvarDeclaration[]|ModportDeclaration_->ModportDeclaration[]|NetDeclAssignments_->NetDeclAssignments[]|ParamAssignments_->ParamAssignments[]|MacroExpr_->MacroExpr""|MacroStmt_->MacroStmt""|lab->labletanonymize2=anonymize~more:trueletanonymize3=anonymize~more:trueletto_short_string?(ignore_identifiers_flag=false)=letcombo2=combo2~ignore_identifiers_flaginfunction|Dummy->mkstr20|Error->mkstr21|Empty->mkstr22|SourceText->mkstr23|LibraryText->mkstr24|CompilerDirectivecd->catstr[mkstr25;CompilerDirective.to_short_string~ignore_identifiers_flagcd]|ModuleDeclaration(mspec,id)->catstr([mkstr26;ModuleSpec.to_short_stringmspec]@(encode_ids[id]))|UdpDeclarationid->combo27[id]|NetDeclarationids->combo28ids|BindDirectiveid->combo29[id]|Expre->catstr[mkstr210;Expression.to_short_string~ignore_identifiers_flage]|Stmtstmt->catstr[mkstr211;Statement.to_short_string~ignore_identifiers_flagstmt]|NetTypent->catstr[mkstr212;NetType.to_short_stringnt]|LocalParameterDeclarationids->combo213ids|ParameterDeclarationids->combo214ids|ParameterPortDeclaration->mkstr215|ModuleBody->mkstr216|Instantiationid->combo217[id]|GateInstantiationg->catstr[mkstr218;Gate.to_short_stringg]|ContinuousAssign->mkstr219|Assign->mkstr220|ConcurrentAssertionItem->mkstr221|DeferredImmediateAssertionItem->mkstr222|PpIdentifierid->combo223[id]|PackedDimension->mkstr224|ParamAssignmentid->combo225[id]|DefparamAssignment->mkstr226|IdSelectid->combo227[id]|Select->mkstr228|Range->mkstr229|RangePlus->mkstr230|RangeMinus->mkstr231|RangeForeach->mkstr232|Root->mkstr233|This->mkstr234|Super->mkstr235|Cellpinid->combo236[id]|CellpinStar->mkstr237|CellpinAnon->mkstr238|DelayValueid->combo239[id]|PackageScopeid->combo240[id]|PackageScopeUnit->mkstr241|PackageScopeLocal->mkstr242|PackageImportid->combo2 43[id]|PackageImportAny->mkstr2 44|LifetimeStatic ->mkstr245|LifetimeAutomatic->mkstr246|EndLabelid->combo247[id]|EndLabelNew->mkstr248|ClassTypeid->combo249[id]|DataTypedt->catstr[mkstr250;DataType.to_short_string~ignore_identifiers_flagdt]|Signed->mkstr251|Unsigned->mkstr252|ArgsDottedid->combo253[id]|Tagged->mkstr254|StructUnionBody->mkstr255|StructUnionMember->mkstr256|ClassScopeIdid->combo257[id]|Void->mkstr258|EnumNameDeclarationid->combo259[id]|EnumBody->mkstr260|IdClassSelid->combo261[id]|Variableid->combo262[id]|Extern->mkstr263|PackageImportDeclaration->mkstr264|PackageImportItemid->combo265[id]|Packed->mkstr266|ParameterValueAssignment->mkstr267|Ports->mkstr268|PortsStar->mkstr269|BitSelect->mkstr270|VariableDeclAssignment id->combo271[id]|DynamicArrayNew->mkstr272|VariableDimension->mkstr273|VariableDimensionStar ->mkstr274|GenItemBegin ->mkstr275|GenBlockIdid->combo276[id]|GenerateRegion->mkstr277|Scalared->mkstr278|Vectored->mkstr279|DelayControl->mkstr2 80|NetSigid-> combo281[id]|ParameterOverride ->mkstr282|PortDeclaration->mkstr283|PortDirectionpd->catstr[mkstr284;PortDirection.to_short_stringpd]|Strengthstrength->catstr[mkstr285;Strength.to_short_stringstrength]|StrengthSupply0->mkstr286|StrengthSupply1->mkstr287|StrengthSpec->mkstr288|VarDataType->mkstr289|Portid->combo290[id]|InterfacePortid->combo291[id]|InterfacePortInterface->mkstr292|ModportIdentifierid->combo293[id]|PortMulti->mkstr294|ExprScope->mkstr295|ExprScopeThis->mkstr296|ExprScopeSuper->mkstr297|ExprScopeDot->mkstr298|ExprScopeDotSuper->mkstr299|CondPredicate->mkstr2100|CondPattern->mkstr2101|Dist->mkstr2102|DistItem->mkstr2103|DistWeight->mkstr2104|DistWeightRange->mkstr2105|ArrayRange->mkstr2106|ArrayRangePlus->mkstr2107|ArrayRangeMinus->mkstr2108|CastingTypeSimple->mkstr2109|CastingTypeSigned->mkstr2110|CastingTypeUnsigned->mkstr2111|CastingTypeString->mkstr2112|CastingTypeConst->mkstr2113|ValueRange->mkstr2114|Pattern->mkstr2115|PatternIdid->combo2116[id]|PatternStar->mkstr2117|PatternTaggedid->combo2118[id]|EventControl->mkstr2119|EventControlStar->mkstr2120|EventControlParenStar->mkstr2121|EventControlRepeat->mkstr2122|EvExpree->catstr[mkstr2123;EventExpression.to_short_stringee]|CaseItem->mkstr2124|CaseItemDefault->mkstr2125|CaseInsideItem->mkstr2126|CaseInsideItemDefault->mkstr2127|CaseItems->mkstr2128|CaseItemsMatches->mkstr2129|CaseItemsInside->mkstr2130|With->mkstr2131|Args->mkstr2132|ConstraintBlock->mkstr2133|ForInit->mkstr2134|ForInitItemDTid->combo2135[id]|ForInitItemLval->mkstr2136|StreamingConcat->mkstr2137|OrderRL->mkstr2138|OrderLR->mkstr2139|StreamConcat->mkstr2140|Solve->mkstr2141|SolveBefore->mkstr2142|ActionBlock->mkstr2143|CycleDelays->mkstr2_str144s|CycleDelayIdid->combo2146[id]|CycleDelayParen->mkstr2147|Priority->mkstr2148|Unique->mkstr2149|Unique0->mkstr2150|InstRange->mkstr2151|InstNameid->combo2152[id]|PExprpe->catstr[mkstr2153;PropertyExpression.to_short_stringpe]|ClockingEventid->combo2154[id]|ClockingEventParen->mkstr2155|PropertyCase->mkstr2156|PropertyCaseDefault->mkstr2157|DisableIff->mkstr2158|CycleDelayRanges->mkstr2_str159s|CycleDelayRangeIdid->combo2161[id]|CycleDelayRangeParen->mkstr2162|CycleDelayRangeBracket->mkstr2163|CycleDelayRangeBracketStar->mkstr2164|CycleDelayRangeBracketPlus->mkstr2165|SExprse->catstr[mkstr2166;SequenceExpression.to_short_stringse]|ConsecutiveRepetition->mkstr2167|NonconsecutiveRepetition->mkstr2168|GotoRepetition->mkstr2169|NetAlias->mkstr2170|InitialConstruct->mkstr2171|FinalConstruct->mkstr2172|AlwaysConstructaspec->catstr[mkstr2173;AlwaysSpec.to_short_stringaspec]|ConcurrentAssertionItemLabeledid->combo2174[id]|ConcurrentAssertionStmtca->catstr[mkstr2175;ConcurrentAssertion.to_short_stringca]|DeferredImmediateAssertionItemLabeledid->combo2176[id]|DeferredImmediateAssertionStmtdia->catstr[mkstr2177;DeferredImmediateAssertion.to_short_stringdia]|SimpleImmediateAssertionStmtsia->catstr[mkstr2178;SimpleImmediateAssertion.to_short_stringsia]|CheckerInstantiationid->combo2179[id]|LoopGenerateConstruct->mkstr2180|GenvarDeclarationids->combo2181ids|GenvarIterationAssign(ao,id)->catstr([mkstr2182;AssignmentOperator.to_short_stringao]@(encode_ids[id]))|GenvarIdDeclid->combo2183[id]|GenvarInitIdid->combo2184[id]|GenvarInit->mkstr2185|SpecifyBlock->mkstr2186|SpecparamDeclaration->mkstr2187|SpecparamAssignmentIdid->combo2188[id]|SpecparamAssignmentPulseControlid->combo2189[id]|PulsestyleDeclarationOnevent->mkstr2190|PulsestyleDeclarationOndetect->mkstr2191|ShowcancelledDeclaration ->mkstr2192|NoshowcancelledDeclaration ->mkstr2193|SpecifyTerminalDescriptor->mkstr2194|InputOrOutputIdid ->combo2195[id]|InterfaceIdentifierid->combo2196[id]|ProgramDeclarationid->combo2197[id]|InterfaceDeclarationid ->combo2198[id]|InterfaceDeclarationExternid->combo2199[id]|TimeUnitsDeclaration ->mkstr2200|TimeUnits->mkstr2_str201s|Timeprecisions->mkstr2_str203s|PackageDeclarationid->combo2205[id]|AnonymousProgram->mkstr2206|AnonymousProgramItemEmpty->mkstr2207|FunctionDeclarationid->combo2208[id]|FunctionPrototypeid->combo2209[id]|FuncIdid->combo2210[id]|FuncIdVoidid->combo2211[id]|FuncIdNew->mkstr2212|TfIdScopedid->combo2213[id]|TaskDeclarationid->combo2214[id]|TaskPrototypeid->combo2215[id]|ClassCtorPrototype->mkstr2216|TfPortListPart->mkstr2218|TfBody->mkstr2219|TfPortDeclaration->mkstr2220|TfPortItemAssignmentid->combo2221[id]|TfPortItem->mkstr2222|TfVariableIdentifierid->combo2225[id]|CheckerDeclarationid->combo2226[id]|PropertyDeclarationid->combo2227[id]|PropertyDeclBody->mkstr2228|PropertyPortItem->mkstr2229|PropertyPortItemDir->mkstr2230|PropertyPortItemAssignmentid->combo2231[id]|SequenceDeclarationid->combo2234[id]|SequenceDeclBody->mkstr2235|LetDeclarationid->combo2236[id]|PropertyStatementSpec->mkstr2237|AssertionVariableDeclaration->mkstr2238|SequenceFormalTypeSequence->mkstr2239|SequenceFormalTypeUntyped->mkstr2240|DataDeclarationVar->mkstr2241|Const->mkstr2243|DataDeclarationVarClass->mkstr2244|TypeDeclarationid->combo2246[id]|ScopedTypeid->combo2247[id]|TypeIdentifierid->combo2248[id]|TypeDeclEnum->mkstr2249|TypeDeclStruct->mkstr2250|TypeDeclUnion->mkstr2251|TypeDeclClass->mkstr2252|VirtualInterfaceDeclarationid->combo2253[id]|ModportDeclarationids->combo2254ids|ModportItemid->combo2255[id]|ModportSimplePortsDecl->mkstr2256|ModportClockingDeclid->combo2257[id]|ModportTfPortsDeclImport->mkstr2258|ModportTfPortsDeclExport->mkstr2259|ModportSimplePortid->combo2260[id]|ModportSimplePortDotid->combo2261[id]|ModportTfPortid->combo2262[id]|CovergroupDeclarationid->combo2263[id]|Paren->mkstr2264|CoverageOption(id1,id2)->combo2265[id1;id2]|CoverPoint->mkstr2266|CoverPointLabeledid->combo2267[id]|CoverCross->mkstr2268|CoverCrossLabeledid->combo2269[id]|CrossItemid->combo2270[id]|Iff->mkstr2271|BinsList->mkstr2272|BinsEmpty->mkstr2273|SelectBins->mkstr2274|SelectBinsEmpty->mkstr2275|Bins(bspec,id)->catstr([mkstr2276;BinsSpec.to_repbspec]@(encode_ids[id]))|BinsSelection(bspec,id)->catstr([mkstr2277;BinsSpec.to_repbspec]@(encode_ids[id]))|BinsExpressionVarid->combo2278[id]|BinsExpression(id1,id2)->combo2279[id1;id2]|NBins->mkstr2280|SelCondBinsof->mkstr2281|SelExprNot->mkstr2 282|SelExprAnd->mkstr2283|SelExprOr->mkstr2284|SelExprParen->mkstr2285|Intersect->mkstr2286|Wildcard->mkstr2287|TransSet->mkstr2288|TransRangeList->mkstr2289|RepeatRange->mkstr2290|TransItem->mkstr2291|TransRepetitionConsecutive->mkstr2292|TransRepetitionNonconsecutive->mkstr2293|TransRepetitionGoto->mkstr2294|Default->mkstr2295|DefaultSequence->mkstr2296|OpenRangeList->mkstr2297|CoverageEventWithid->combo2298[id]|CoverageEventBlockEvent->mkstr2299|BlockEventExpression->mkstr2300|BlockEventExpressionBegin->mkstr2301|BlockEventExpressionEnd->mkstr2302|HierarchicalBtfIdentifierid->combo2303[id]|PackageExportDeclarationStar->mkstr2304|PackageExportDeclaration->mkstr2305|DpiImports->mkstr2_str306s|DpiExportFunc(s,id)->letstrs,no_digest=encode_strs[s]inletidx=ifno_digestthen308else307incatstr((mkstr2idx)::(strs@(encode_ids[id])))|DpiExportTask(s,id)->letstrs,no_digest=encode_strs[s]inletidx=ifno_digestthen310else309incatstr((mkstr2idx)::(strs@(encode_ids[id])))|DpiImportLabelid->combo2311[id]|DpiTfImportPropertyContext->mkstr2312|DpiTfImportPropertyPure-> mkstr2313|ExternConstraintDeclaration->mkstr2314|Static->mkstr2315|Virtual->mkstr2316|ClassDeclarationid->combo2317[id]|ClassExtends->mkstr2318|ClassItemEmpty->mkstr2319|ClassMethod->mkstr2320|Qualifierq->catstr[mkstr2321;Qualifier.to_short_stringq]|ClassBody->mkstr2322|ClassConstraintid->combo2323[id]|Pure->mkstr2324|ClassProperty ->mkstr2325|PackageOrGenerateItemEmpty ->mkstr2326|Forkjoin->mkstr2327|ExternTfDeclarationid->combo2328[id]|TimingChecktc->catstr[mkstr2329;TimingCheck.to_short_stringtc]|SystemTimingCheck->mkstr2330|Notifierid->combo2331[id]|Delayedid->combo2332[id]|TimingCheckEvent->mkstr2333|TimingCheckEventControlPosedge->mkstr2334|TimingCheckEventControlNegedge->mkstr2335|TimingCheckEventControl->mkstr2336|EdgeDescriptors->mkstr2_str337s|OverloadDeclaration(oo,id)->catstr([mkstr2339;OverloadOperator.to_short_string oo]@(encode_ids[id]))|Params->mkstr2340|ClockingDeclarationid->combo2341[id]|Global->mkstr2342|ClockingBody-> mkstr2343|ClockingItemDefault->mkstr2344|ClockingItem->mkstr2345|DefaultSkewInput->mkstr2346|DefaultSkewOutput->mkstr2347|DefaultSkewInputOutput->mkstr2348|ClockingDirectionInput ->mkstr2349|ClockingDirectionInputOutput->mkstr2350|ClockingDirectionInout->mkstr2351|ClockingSkewPosedge->mkstr2352|ClockingSkewNegedge->mkstr2353|ClockingSkewEdge->mkstr2354|ClockingSkew->mkstr2355|ClockingDeclAssignid->combo2356[id]|Productionid->combo2357[id]|ProductionItemid->combo2358[id]|RsCodeBlock->mkstr2359|RsRule->mkstr2360|RsProductionList->mkstr2361|RsProductionListRandJoin->mkstr2362|WeightSpecInts->mkstr2_str363s|WeightSpecId->mkstr2365|WeightSpec->mkstr2366|RsProdIf->mkstr2367|RsProdRepeat->mkstr2368|RsProdCase->mkstr2369|RsCaseItem->mkstr2370|RsCaseItemDefault->mkstr2371|CheckerOrGenerateItemEmpty->mkstr2372|ConditionalGenerateConstructCase->mkstr2373|ConditionalGenerateConstructIf->mkstr2374|ElaborationSystemTaskst->catstr[mkstr2375;SystemTask.to_short_stringst]|CaseGenerateItem->mkstr2376|CaseGenerateItemDefault->mkstr2377|AssignmentPattern->mkstr2378|AssignmentPatternExpr->mkstr2379|PatternKey->mkstr2380|PatternKeyDefault->mkstr2381|PatternMember->mkstr2382|SimplePathDeclaration->mkstr2383|ParallelPathDescription->mkstr2384|FullPathDescription->mkstr2385|PathInputs->mkstr2386|PathOutputs->mkstr2387|PathDelayValue->mkstr2388|PolarityPlus->mkstr2389|PolarityMinus->mkstr2390|EdgePosedge->mkstr2391|EdgeNegedge->mkstr2392|EdgeSensitivePathDeclaration->mkstr2393|ParallelEdgeSensitivePathDescription->mkstr2394|FullEdgeSensitivePathDescription->mkstr2395|ParallelEdgeSensitivePathDescriptionSub->mkstr2396|FullEdgeSensitivePathDescriptionSub->mkstr2397|StateDependentPathDeclarationIf->mkstr2398|StateDependentPathDeclarationIfnone->mkstr2399|VariableLvalue->mkstr2400|AttributeInstance->mkstr2401|AttrSpecid->combo2402[id]|UdpPortid->combo2403[id]|UdpPortDeclaration->mkstr2404|UdpOutputDeclarationid->combo2405[id]|UdpOutputDeclarationRegid->combo2406[id]|UdpInputDeclaration->mkstr2407|UdpRegDeclarationid->combo2408[id]|SequentialBody->mkstr2409|CombinationalBody->mkstr2410|UdpInitialStmt(id,s)->letstrs,no_digest=encode_strs[s]inletidx=ifno_digestthen412else411incatstr((mkstr2idx)::((encode_ids[id])@strs))|SequentialEntry->mkstr2413|EdgeIndicator->mkstr2414|EdgeSymbols->mkstr2_str415s|LevelSymbols->mkstr2_str417s|OutputSymbols->mkstr2_str419s|CombinationalEntry->mkstr2421|NextStateMinus->mkstr2422|UdpPortsStar->mkstr2423|UdpPorts->mkstr2424|UdpPortDecls->mkstr2425|UdpDeclarationPorts->mkstr2426|AttributeInstances->mkstr2427|ConfigDeclarationid->combo2428[id]|DesignStatement->mkstr2429|CellIdid->combo2430[id]|LibraryIdentifierid->combo2431[id]|LiblistClause->mkstr2432|CellClauseid->combo2433[id]|UseClause->mkstr2434|ColonConfig->mkstr2435|InstanceName->mkstr2436|InstanceIdentifierid->combo2437[id]|TopModuleIdentifierid->combo2438[id]|InstClause->mkstr2439|ConfigRuleStatementDefault->mkstr2440|ConfigRuleStatement->mkstr2441|LibraryDeclarationid->combo2442[id]|Incdir->mkstr2443|FilePathSpecs->mkstr2_str444s|IncludeStatements->mkstr2_str446s|PragmaExpressionid->combo2448[id]|PragmaValueTuple->mkstr2449|PragmaValueNums->mkstr2_str450s|PragmaValueStrs->mkstr2_str452s|PragmaValueIdid->combo2454[id]|PackageImportDecls->mkstr2455|ParamPorts->mkstr2456|Ranges->mkstr2457|VariableDimensions->mkstr2458|CaseConds->mkstr2459|NetDeclAssignmentsids->combo2460ids|ParamAssignmentsids->combo2461ids|MacroExprs->mkstr2_str462s|MacroStmts->mkstr2_str464s|ImplicitDataType->mkstr2466|VarDeclAssignments->mkstr2467|Var->mkstr2468|GenvarIterationIncOrDec(iod,id)->catstr([mkstr2182;IncOrDecOperator.to_short_stringiod]@(encode_ids[id]))letis_hunk_boundary__=false(* not yet *)(* These labels are collapsible whether they are leaves or not. *)letforced_to_be_collapsible(*lab*)_=falseletis_collapse_targetoptionslab=ifoptions#no_collapse_flagthenfalseelsematchlabwith|ModuleDeclaration_|UdpDeclaration_|InterfaceDeclaration_|InterfaceDeclarationExtern_|ProgramDeclaration_|PackageDeclaration_|NetDeclaration_|DataDeclarationVar|DataDeclarationVarClass|TypeDeclaration_|PackageImportDeclaration|VirtualInterfaceDeclaration_|TaskDeclaration_|TaskPrototype_|FunctionDeclaration_|FunctionPrototype_|DpiImport_|DpiExportFunc_|DpiExportTask_|ExternConstraintDeclaration|ClassDeclaration_|ClassCtorPrototype|ParameterDeclaration_|LocalParameterDeclaration_|CovergroupDeclaration_|OverloadDeclaration_|ConcurrentAssertionItemLabeled_|ConcurrentAssertionStmt_|DeferredImmediateAssertionItemLabeled_|DeferredImmediateAssertionStmt_|SimpleImmediateAssertionStmt_|AnonymousProgram|TimeUnitsDeclaration|BindDirective_|ConfigDeclaration_(* module_declaration related *)|PackageImportDecls|ParamPorts|Ports|Ranges|VariableDimensions|ModuleBody|PortDeclaration|GenerateRegion|ParameterOverride|GateInstantiation_|Instantiation_|CheckerInstantiation_|CheckerDeclaration_|PropertyDeclaration_|SequenceDeclaration_|LetDeclaration_|GenvarDeclaration_|ClockingDeclaration_|ContinuousAssign|NetAlias|InitialConstruct|FinalConstruct|AlwaysConstruct_|LoopGenerateConstruct|ConditionalGenerateConstructCase|ConditionalGenerateConstructIf|SpecifyBlock|SpecparamDeclaration(* udp_declaration related *)|UdpPorts|UdpPortDecls|UdpDeclarationPorts|CombinationalBody|SequentialBody|CombinationalEntry|SequentialEntry(* interface_declaration related *)|ModportDeclaration_|ExternTfDeclaration_(* program_declaration related *)|ElaborationSystemTask_(* package_declaration related *)|PackageExportDeclaration(* net_declaration related *)(* data_declaration related *)(* task_declaration related *)(* function_declaration related *)|TfPortListPart|TfBody(* dpi_import_export related *)(* extern_constraint_declaration related *)|ConstraintBlock|Solve|SolveBefore(* class_declaration related *)|ClassExtends|ClassProperty|ClassMethod|ClassConstraint_|ClassBody(* parameter_declaration related *)(* covergroup_declaration related *)|CoverageEventWith_|CoverageEventBlockEvent|ClockingEventParen|ParamAssignment_(* overload_declaration related *)|Params(* assertion_item_declaration related *)|PropertyDeclBody|PropertyStatementSpec|SequenceDeclBody|AssertionVariableDeclaration(* anonymous_program related *)(* bind_directive related *)(* config_declaration related *)|DesignStatement(* clocking_declaration related *)|ClockingBody(* data_type related *)|DataType(DataType.Struct|DataType.Union|DataType.Enum|DataType.VirtualInterface_|DataType.PsType_|DataType.ClassScopeType_|DataType.PsCovergroup_|DataType.ClassType)|StructUnionBody|StructUnionMember|EnumBody|EnumNameDeclaration_(* others *)|PortMulti|Args|CaseConds|NetDeclAssignments_|ParamAssignments_|Expr_|PExpr_|SExpr_|Stmt_->true|_->falseletis_to_be_notified=function|ModuleDeclaration_|UdpDeclaration_|InterfaceDeclaration_|InterfaceDeclarationExtern_|ProgramDeclaration_|PackageDeclaration_|NetDeclaration_|DataDeclarationVar|DataDeclarationVarClass|TypeDeclaration_|PackageImportDeclaration|VirtualInterfaceDeclaration_|TaskDeclaration_|TaskPrototype_|FunctionDeclaration_|FunctionPrototype_|DpiImport_|DpiExportFunc_|DpiExportTask_|ExternConstraintDeclaration|ClassDeclaration_|ClassCtorPrototype|ParameterDeclaration_|LocalParameterDeclaration_|CovergroupDeclaration_|OverloadDeclaration_|ConcurrentAssertionItemLabeled_|ConcurrentAssertionStmt_|DeferredImmediateAssertionItemLabeled_|DeferredImmediateAssertionStmt_|SimpleImmediateAssertionStmt_|AnonymousProgram|TimeUnitsDeclaration|BindDirective_|ConfigDeclaration_|GenvarDeclaration_|ModportDeclaration_->true|_->falseletis_boundary=function|SourceText|LibraryText|ModuleDeclaration_|UdpDeclaration_|InterfaceDeclaration_|InterfaceDeclarationExtern_|ProgramDeclaration_|PackageDeclaration_|NetDeclaration_|DataDeclarationVar|DataDeclarationVarClass|TypeDeclaration_|PackageImportDeclaration|VirtualInterfaceDeclaration_|TaskDeclaration_|TaskPrototype_|FunctionDeclaration_|FunctionPrototype_|DpiImport_|DpiExportFunc_|DpiExportTask_|ExternConstraintDeclaration|ClassDeclaration_|ClassCtorPrototype|ParameterDeclaration_|LocalParameterDeclaration_|CovergroupDeclaration_|OverloadDeclaration_|ConcurrentAssertionItemLabeled_|ConcurrentAssertionStmt_|DeferredImmediateAssertionItemLabeled_|DeferredImmediateAssertionStmt_|SimpleImmediateAssertionStmt_|AnonymousProgram|TimeUnitsDeclaration|BindDirective_|ConfigDeclaration_->true|_->falseletis_partition=function|CompilerDirective_|ModuleDeclaration_|UdpDeclaration_|InterfaceDeclaration_|InterfaceDeclarationExtern_|ProgramDeclaration_|PackageDeclaration_|NetDeclaration_|BindDirective_->true|_->falseletis_sequence=function|SourceText|LibraryText|ModuleBody|StructUnionBody|EnumBody|PropertyDeclBody|SequenceDeclBody|ClassBody|ClockingBody|SequentialBody|CombinationalBody->true|_->falseletis_ntuple=function(* not yet *)|_->false(* for fact extraction *)letget_categorylab=letname,_=to_taglabinnameletget_name?(strip=false)lab=ignorestrip;letn=matchlabwith|CompilerDirectivecd->CompilerDirective.get_namecd|Expre->Expression.get_namee|Stmtstmt->Statement.get_namestmt|TimingChecktc->TimingCheck.get_nametc|ElaborationSystemTaskst->SystemTask.get_namest|DataTypedt->DataType.get_namedt|ModuleDeclaration(_,id)|UdpDeclarationid|BindDirectiveid|Instantiationid|PpIdentifierid|ParamAssignmentid|IdSelectid|Cellpinid|DelayValueid|PackageScopeid|PackageImportid|EndLabelid|ClassTypeid|ArgsDottedid|ClassScopeIdid|EnumNameDeclarationid|Variableid|PackageImportItemid|VariableDeclAssignmentid|GenBlockIdid|NetSigid|Portid|InterfacePortid|ModportIdentifierid|PatternIdid|PatternTaggedid|ForInitItemDTid|CycleDelayIdid|InstNameid|ClockingEventid|CycleDelayRangeIdid|ConcurrentAssertionItemLabeledid|DeferredImmediateAssertionItemLabeledid|CheckerInstantiationid|GenvarIterationAssign(_,id)|GenvarIterationIncOrDec(_,id)|GenvarIdDeclid|GenvarInitIdid|SpecparamAssignmentIdid|SpecparamAssignmentPulseControlid|InputOrOutputIdid|InterfaceIdentifierid|ProgramDeclarationid|InterfaceDeclarationid|InterfaceDeclarationExternid|PackageDeclarationid|FunctionDeclarationid|FunctionPrototypeid|FuncIdid|FuncIdVoidid|TfIdScopedid|TaskDeclarationid|TaskPrototypeid|TfPortItemAssignmentid|TfVariableIdentifierid|CheckerDeclarationid|PropertyDeclarationid|PropertyPortItemAssignmentid|SequenceDeclarationid|LetDeclarationid|TypeDeclarationid|ScopedTypeid|TypeIdentifierid|VirtualInterfaceDeclarationid|ModportItemid|ModportClockingDeclid|ModportSimplePortid|ModportSimplePortDotid|ModportTfPortid|CovergroupDeclarationid|CoverPointLabeledid|CoverCrossLabeledid|CrossItemid|Bins(_,id)|BinsSelection(_,id)|BinsExpressionVarid|CoverageEventWithid|HierarchicalBtfIdentifierid|DpiExportFunc(_,id)|DpiExportTask(_,id)|DpiImportLabelid|ClassDeclarationid|ClassConstraintid|ExternTfDeclarationid|Notifierid|Delayedid|OverloadDeclaration(_,id)|ClockingDeclarationid|ClockingDeclAssignid|Productionid|ProductionItemid|AttrSpecid|UdpPortid|UdpOutputDeclarationid|UdpOutputDeclarationRegid|UdpRegDeclarationid|UdpInitialStmt(id,_)|ConfigDeclarationid|CellIdid|LibraryIdentifierid|CellClauseid|InstanceIdentifierid|TopModuleIdentifierid|LibraryDeclarationid|PragmaExpressionid|PragmaValueIdid->id|CoverageOption(id1,id2)|BinsExpression(id1,id2)->id1^"."^id2|_->raiseNot_foundinifn=""thenraiseNot_foundelsenletget_names=function|NetDeclarationids|LocalParameterDeclarationids|ParameterDeclarationids|GenvarDeclarationids|ModportDeclarationids|NetDeclAssignmentsids|ParamAssignmentsids->ifids=[]thenraiseNot_foundelseids|_->raiseNot_foundletget_value=function|Exprexpr->Expression.get_valueexpr|_->raiseNot_foundlethas_value=function|Expr(Expression.IntegralNumber_|Expression.RealNumber_|Expression.TimeNumber_)->true|_->falselethas_non_trivial_valuelab=tryletv=get_valuelabinv<>"0"&&v<>"1"withNot_found->falselethas_non_trivial_tid(*lab*)_=false(* not yet *)letis_compatible?(weak=false)__=ignoreweak;falseletis_order_insensitive=function|_->falseletquasi_eq__=falseletrelabel_allowed=function|ModuleDeclaration_,ModuleDeclaration_|Expr_,Expr_|Stmt_,Stmt_|EvExpr_,EvExpr_|PExpr_,PExpr_|SExpr_,SExpr_|AlwaysConstruct_,AlwaysConstruct_|ConcurrentAssertionStmt_,ConcurrentAssertionStmt_|DeferredImmediateAssertionStmt_,DeferredImmediateAssertionStmt_|SimpleImmediateAssertionStmt_,SimpleImmediateAssertionStmt_|GenvarIterationAssign_,GenvarIterationAssign_|GenvarIterationIncOrDec_,GenvarIterationIncOrDec_|GenvarIterationAssign_,GenvarIterationIncOrDec_|GenvarIterationIncOrDec_,GenvarIterationAssign_|Bins_,Bins_|BinsSelection_,BinsSelection_|Qualifier_,Qualifier_|TimingCheck_,TimingCheck_|OverloadDeclaration_,OverloadDeclaration_->true|l1,l2->anonymize2l1=anonymize2l2letmove_disallowed_=falseletis_common_=falseletget_ident_use=function|IdSelectid->id|_->""letto_char(*lab*)_='0'lethas_nameslab=tryignore(get_nameslab);truewithNot_found->falselethas_a_namelab=tryignore(get_namelab);truewithNot_found->falseletis_namedlab=has_a_namelab||has_nameslabletis_named_orig=is_named(* not yet *)letto_elem_data=Astml.to_elem_datalang_prefixto_tagletof_elem_data(*name*)_(*attrs*)__=Dummy(* not yet *)letgetlabnd=(Obj.objnd#data#_label:t)letcannot_be_keyrootnd=matchgetlabndwith|SourceText|LibraryText->true|_->falseletis_string_literal(*lab*)_=false(* not yet *)letis_int_literal(*lab*)_=false(* not yet *)letis_real_literal(*lab*)_=false(* not yet *)letis_phantom=function|AttributeInstances|PackageImportDecls|Ranges|VariableDimensions->true|_->falseletis_special_=falseletis_always_construct=function|AlwaysConstruct_->true|_->falseletis_timing_control=function|DelayControl|EventControl|EventControlStar|EventControlParenStar|EventControlRepeat|CycleDelay_|CycleDelayId_|CycleDelayParen->true|_->falseletis_continuous_assign=function|ContinuousAssign->true|_->falseletis_blocking_assign=function|StmtStatement.BlockingAssignment->true|_->falseletis_non_blocking_assign=function|StmtStatement.NonBlockingAssignment->true|_->falseletis_if=function|StmtStatement.Conditional->true|_->falseletis_case=function|Stmt(Statement.Case|Statement.Casex|Statement.Casez)->true|_->falseletis_case_item=function|CaseItem|CaseItemDefault->true|_->falseletis_case_cond=function|CaseConds->true|_->falseletis_module_decl=function|ModuleDeclaration_->true|_->falseletis_ports=function|Ports|PortsStar->true|_->falseletis_port=function|Port_->true|_->falseletis_port_dir=function|PortDirection_->true|_->falseletis_net_type=function|NetType_->true|_->falseletis_data_type=function|DataType_->true|_->falseletis_var_data_type=function|VarDataType->true|_->falseletis_signing=function|Signed|Unsigned->true|_->falseletis_ranges=function|Ranges->true|_->falseletis_variable_dims=function|VariableDimensions->true|_->falseletis_inst=function|Instantiation_->true|_->falseletis_initial_construct=function|InitialConstruct->true|_->falseletis_final_construct=function|FinalConstruct->true|_->falseletis_generate_region=function|GenerateRegion->true|_->falseletis_param_port_decl=function|ParameterPortDeclaration->true|_->falseletis_param_assign=function|ParamAssignment_->true|_->falseletis_data_decl_var=function|DataDeclarationVar->true|_->falseletis_net_decl=function|NetDeclaration_->true|_->falseletis_reg=function|DataTypeDataType.Reg->true|_->falseletis_wire=function|NetType(NetType.Wire|NetType.Uwire)->true|_->falseletis_expr=function|Expr_->true|_->falseletis_op=function(* not yet *)|_->falseletis_scope_creating=function(* not yet *)|_->falseletis_stmt=function|Stmt_->true|_->falseletis_statement=is_stmtletis_primary_=false(* not yet *)letis_block_=false(* not yet *)letis_pp_define=function|CompilerDirective(CompilerDirective.Define_)->true|_->falseletis_pp_include=function|CompilerDirective(CompilerDirective.Include_|CompilerDirective.SysInclude_)->true|_->falseletis_source_text=function|SourceText->true|_->falseletget_nparams_=raiseNot_foundletget_nargs_=raiseNot_foundletis_parameter_=false(* not yet *)letis_assignment_=false(* not yet *)