1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444144514461447144814491450145114521453145414551456145714581459146014611462146314641465146614671468146914701471147214731474147514761477147814791480148114821483148414851486148714881489149014911492149314941495149614971498149915001501150215031504150515061507150815091510151115121513151415151516151715181519152015211522152315241525152615271528152915301531153215331534153515361537153815391540154115421543154415451546154715481549155015511552155315541555155615571558155915601561156215631564156515661567156815691570157115721573157415751576157715781579158015811582158315841585158615871588158915901591159215931594159515961597159815991600160116021603160416051606160716081609161016111612161316141615161616171618161916201621162216231624162516261627162816291630163116321633163416351636163716381639164016411642164316441645164616471648164916501651165216531654165516561657165816591660166116621663166416651666166716681669167016711672167316741675167616771678167916801681168216831684168516861687168816891690169116921693169416951696169716981699170017011702170317041705170617071708170917101711171217131714171517161717171817191720172117221723172417251726172717281729173017311732173317341735173617371738173917401741174217431744174517461747174817491750175117521753175417551756175717581759176017611762176317641765176617671768176917701771177217731774177517761777177817791780178117821783178417851786178717881789179017911792179317941795179617971798179918001801180218031804180518061807180818091810181118121813181418151816181718181819182018211822182318241825182618271828182918301831183218331834183518361837183818391840184118421843184418451846184718481849185018511852185318541855185618571858185918601861186218631864186518661867186818691870187118721873187418751876187718781879188018811882188318841885188618871888188918901891189218931894189518961897189818991900190119021903190419051906190719081909191019111912191319141915191619171918191919201921192219231924192519261927192819291930193119321933193419351936193719381939194019411942194319441945194619471948194919501951195219531954195519561957195819591960196119621963196419651966196719681969197019711972197319741975197619771978197919801981198219831984198519861987198819891990199119921993199419951996199719981999200020012002200320042005200620072008200920102011201220132014201520162017201820192020202120222023202420252026202720282029203020312032203320342035203620372038203920402041204220432044204520462047204820492050205120522053205420552056205720582059206020612062206320642065206620672068206920702071207220732074207520762077207820792080208120822083208420852086208720882089209020912092209320942095209620972098209921002101210221032104210521062107210821092110211121122113211421152116211721182119212021212122212321242125212621272128212921302131213221332134213521362137213821392140214121422143214421452146214721482149215021512152215321542155(*
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|_->false