From d1a602cefc337505eaf4cb28511f22f46f7004cc Mon Sep 17 00:00:00 2001 From: James Cherry Date: Mon, 29 Apr 2019 08:39:05 -0700 Subject: [PATCH] 2.0.15 --- CMakeLists.txt | 2 +- doc/ChangeLog.txt | 32 ++- doc/OpenSTA.odt | Bin 75114 -> 75262 bytes doc/OpenSTA.pdf | Bin 152393 -> 153190 bytes graph/Delay.hh | 2 +- graph/DelayNormal1.cc | 15 +- graph/DelayNormal2.cc | 13 +- liberty/Liberty.cc | 4 +- search/Power.cc | 519 ++++++++++++++++++++++++++++++++++++------ search/Power.hh | 94 ++++++-- search/Property.cc | 32 ++- search/Property.hh | 6 +- tcl/Power.tcl | 61 +++-- tcl/StaTcl.i | 50 +++- 14 files changed, 696 insertions(+), 134 deletions(-) diff --git a/CMakeLists.txt b/CMakeLists.txt index acd81b72..28f362ee 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -16,7 +16,7 @@ cmake_minimum_required (VERSION 3.9) -project(STA VERSION 2.0.14) +project(STA VERSION 2.0.15) set(CMAKE_VERBOSE_MAKEFILE ON) set(CMAKE_CXX_STANDARD 11) diff --git a/doc/ChangeLog.txt b/doc/ChangeLog.txt index 8ab9ea3f..707cc767 100644 --- a/doc/ChangeLog.txt +++ b/doc/ChangeLog.txt @@ -9,18 +9,36 @@ Release 2.0.0 2018/09/28 Builds using Autotools/configure are no longer supported. Use CMake as documented in README.mb. +.... + The check_timing command -no_output_delay checks output ports for set_output_delay. +.... + The report_power command reports the power consumption of the design or a specific instance. - report_power [-instance inst] [-digits digits] [> filename] [>> filename] + report_power [-instances inst] [-digits digits] [> filename] [>> filename] -Report power used by the design or a specific instance. The internal, -switching, leakage and total power are reported. Design power is -reported separately for combinational, sequential, macro and pad -groups. +The internal, switching, leakage and total power are reported. Design +power is reported separately for combinational, sequential, macro and +pad groups. + +Use -instances to report power for a specific instance. + +Use the set_power_activity command to specify activity/duty +globally using -global, the input port default using -input, +or for input ports using -input_ports, or pins using -pins. + + set_power_activity [-global] + [-input] + [-input_ports ports] + [-pins pins] + [-activiity activity] + [-duty duty] + +.... The write_path_spice command writes a spice netlist for a timing path. @@ -46,6 +64,8 @@ and ground names are specified with the -power and -ground arguments. The spice netlist includes a piecewise linear voltage source at the input and .measure statement for each gate delay and pin slew. +.... + The report_checks, find_timing_paths commands now support an -unconstrained flag. @@ -55,6 +75,8 @@ The report_checks, find_timing_paths commands now support an The sta_report_unconstrained_paths variable will be supported for for compatibility in this current release. +.... + The read_parasitics command has been renamed read_spef and no longer supports the SPF format. diff --git a/doc/OpenSTA.odt b/doc/OpenSTA.odt index 1208310014739ad35dd8e91c4a72712b7e0d9e2a..7bc4566af346ab1d70b0b513428bc31d2f0472d4 100644 GIT binary patch delta 45445 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 delta 45288 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%0ABUL|DcUw3K zDKDD@8FNNl=8hGD@4{zF`!e!0N#<;gYr{(Q5^VJ5$j_)atg?OaGqX)->ph=cPnh%P z00mVU*Kfe3lso9>)8{(AUHK?eqHPYObCKh2!lVopjGL?=?;DvT?}33US(j_pqEd2T)Rn zZ?WxGjz!+y)KtY_B8scR&3!-V$rok>{nKrhpJStv8k7&B1E9tJXlutXZ0&+u#c-PU z`5_&Dh6|o}EJzu(4R~!^_GaXNA1S0kFi}v>xn3RZZK~PGl@r?x7Q_cOmFj?BmuKV7 z;dVKi2y0keeu2-z)zm(@3h9*2PC?&fX_xRpAn!JuL!-yY!&!^-lUXqGqsx%ZWZOy*ywzk#V$5~C zvI`SjQYjjGI=R2$8;i2gkw>N@D~*dr7*mR(vytSdxhbF%wlon_w)z3}md)u%x`9>A zWm6~aSGa;YJ@92;_dK%&HlN>CscguY)qTcBfYE(wU)x88SgqHz1mP=}SqgOlr|$RL z_ye{VN3r<_Q!%9L_iRtow=t=3v-Al1Q-YD9bzLDF*4m~K^L5eoI3t$oYwefmx}1ja z-9@%~s3C;CfK39EM0UU>6a-6dWO5R-A$meJU~JN}JfeaI0xD&#Tgp_K`fjV6?7nC! zuaAO=fQw!+81jC*dFMrF?#A4*+TWJTea`) z{%{<*XlN{fhC4=;?5~*a)%#s#xv^C^0$%!4T5U~w!^rGbZB8IeckVVMh2$FE!i?AP zP@)SAD;(dSAAeIKy8Eg}8FcYC1r8`mmK8Q6NG=OFruChnXR6O7$FQThlaQ|6+pwS0 zV=HWRGlbxE`p>aDuS|sD7g)XS03Fg90^h*L{N&uMNCvn#I>6@ElRMA4X0gsTI+(zh zg!Qg&IO4B?x*qUQ2SRb{w!eH}R6EhS4YEW>@8!8kC!iYBM9W?dGTtG42c9s)HYFzK z)GKvJwtP{M-j5kdSr-~FWlLg>ssr=+SD4>tx=IScum9E<@yp9blby0v;Y-DMmMZhG3v(>@M4|o2^WUpsu1E$Y2XI1l;^ZR6~!t19?DLCEwB z3N?oid4$h{1{jx9;@JD0&=d0&zc;9{X)FD=yL9mOfVR?D5Cd?o1>z}*sQG9u4x==u z<}#4oY(Vso1x6HEacB>0*TtYcSDetgkSXaP5G8NcEm+v0mosd*E-H~e?eQx@twDP% zYqznhx!>pymmdE#xq;zk!uo(0G67>*iWKvUxnZdGM?%rPGi#H2-2?sliRN|YlOvo@%M z80Il#OB6Wk@E6OIJZ|QwN%E${6!(YHRa4W;v^YHf-e-EbS_-v~Iz&b!4liGzN{*oe z;qW7OCOS6R@-3~?6rR0qn9)c^45dhP>`8a(6Uk8O&YK^_%7#UdWJO z{lw0DcQzNqqbA*^`IW`M`t@7*x-BD}v_o0S^tJ zbh3tL!-ly~EV4En>FapqLr{tt!A=7DIe}E=%@ip-;!h9ThMV55jU&pzD-`0htMl1+ zLipL~s&U^(XRV?zG9|gp#2qoOu%#N}qeoeuHYL(Ecv?!R)P1fpa1wO_fz}3n*ZE5q z9J8;Q`i{)8k*n>~kCVQcrS5Z3fJiV&*js!SrI@8RBz`MEu9#fXVrx zkE_(CA6rm2bCWGSz0wcF5)8f}ZV^Tw?2)L~qzi^mAGU=1;IP7pd|n#aNG zZV-<|g{I247*Bgwo-HPwK6x1IJjrm-Uns3wO1`Wv65Z+MP!DKrWSpS7Ku`Ln#%nKJ zuhvq90E=E}Q z{uLCUIyC;^#SzXv=<<4q4WN`lL4VCH^B*I2&#l-LIDrYi?6JfBUOckU5(jSxA_I!G zA<-eVR^X~t*PMnOz4G==(RNw;VdaoIAfIukpnF5S65I567&E$fQ8ZlHUsDi?8;P&n zT0^|uA>q=wv^Dj;(%Fz_)|w94S3B6;w)&|il=Imq-(R=bQdf-37I2~=)T_jdW7Lh7 zK&rUfted^lJu+7FzKtEbb(ACw#cN=~7~Pl`lhd(?;ISkB+vzo6LaA-QYQqQb*X~fGq+>_1&BRAkDZ!C&aY1qvuFaRoNtzyeLD7QAOK^3)4 z1%!33EIagk3!@4|+Xk+{v}YdFu#Y5qs@FGUmKbpi1f$HKY!~c1)lx7BW~9DaCCHTG zB!ag^#hOZj%vSD|1ldFr8@Z&JE}P@=-WoI4BnBI2(50-_*H3u^cv)XL0yR4CH<04Z z=phcEar7HQ;D84Cej%PpQh(3P4$RgN{k4Qm6x4+@AK9*sloZ>VZMRW5R_XOv2PZ2W z+EY+hbFIGFrPvoLKkb$;?HLm3EU8&UZa_eMY#$-3N}-yPdSaGj1i7uqjK6q7$Y@Vv zg=DWfd$|RUlxHtN&gpYT9Y!b%v!yX}CO2+`M5QQ;6tJ+oLd?@Up_jxg8y5$aAXB`T z4jrCxg|yEpy|s`=7UvN$j!pVHnji<6hoRY;h(pfw`K|}vrD!dOk2($VYRQBDJxqeZ zC}crl10bRRsV^l^PbWja*c9`m!so?J89)|pUYhVDj==0*6}A2w>^@%Nta5bJ0gwI* zVXc^B8wgE&A4A7ftC5JvZoX|&QV=YaspS(2FF`!BlY7}z0ZVd(5?cx9Q#qId8@^GM zUiI8v01u-7h7TLS+H7@ULP0{*zziQORyInt2`Vq1+{jK&hHzL@dZwrUg59dTffmO# z2bCgcGO;6@c5+p%5R!Gh^IVncD83Oeiay`O4R9!2-)hZ3hAgsVCOVE2Oz&AmH>^pp zgj7ag@$BcZ7KX1OyqaJ#w+~@}f8%e}s&#_Mbr3JnN3!IB@8pk^-@h92AKyk4{FOgO zt({K9pobsMq&?ddb!SGo5`YubbWtXdl z08p2g3z5R8Su4(nd%#mAU-Mzt(({tsLi#Ph${&p(OPUc=_jEApCBU->ibU-kStiLpDiGnvbf z`2pzWb69@EZh)1Z&TCd^-%c&h*Os^jFn~}m#sXz@4EKdBw&AB`Eg#CdlkBx>yF%z+ z1$(Br{O!92)$aU*3R8GT>(Ol(2ZqUOPi0n7&oWly?FfPB?9eAUoCb&qzEq&NX&Epl z!6qfu33-|uuyl1wLbYjBI*HF91V8r9055aW2@ux9vbTeO_V44Lr(87O<98P+2Vf(C0sIS4scTXnp~;AZ=S(e2lm+*=O(& zdvay#p}x27i10Gf^g7z4@6=_cSGiTsxay>p)0l`xJx?cl(Tv6BfY@b>b9=TCeBIC5xH$4g62&tjl}jhMk4+kd|tWP&!IAp4umvmwZ8aldE3 z2fKMyep~Hbx2Gw90X>q23_$((%PH_U|D8abF}C9%qyOQkr0uKb5^r)=rMToSK-6^6DUZHf%&6+Ln6p zWkfv8R}>qiV4354+(saxop+Pqtl0bR8A&6|?qjCkHzkQqU+>ux*-;xju5~iQ!QhKc zLxL3R;%s!{u_k&RTx5U%j}c-TOa?gR_I*G^?l(iyQZad64Y>H9BQ=?Ge>%gu7px6c z1s}D8V+tRa6M}VEzHrg*I*^f^bE59qk&#SrqW1PqYc*%E^H~5~D-lw(tKpiF(sqPo z2rKeWG97(~hFmn1Xw~&5=e?&)W6J99wuRzw_ZRx*zIL7Aji#R)N;^w zZ;g2vgZ)a(SoJg`|LR-;$HrK7{+NW+1r-L+I%UY&BGT3)BPd<{f&S~qEOH9vQCY>< zRC;GFTj{I%@U8&mshJ?);vCRfh2>F*WNW(HeDm4oRC;(bo``aow;NPS9W4+&dU z&t}UALC?Gk(!E{3j8fknN8-qcC(y<0kda0B%Y%m^=L}?*OLV;Abo2iDiq+cFt zU+>>{-Vg7$-L%IQp%7&M&MHUsmF^MZ``kI#S%E4;N%K`o9mz`(lzG|`;on~y@i+;O)b?m-O z?mLfFgA~Vzfm|c;EcFc6r4BLRCw{Dx}3^#mTW!g76fHyS`;s;LCz z12EW@vOQR1FHWCdKwkNlzI65^dl8=BSwiX@PJ*O}Z+Y|L!Vyvlfbtwe!TbNc!q3?| z76c5(N>!(!Jb{o_$jm`({(zZWQIMKL#b1V@LC9%le)6>0f-}L0RB?2W%jKJoqb|jF z5atpBU(JkuyL=^u_{DEwhGYn(lu83Ul(Po-V2L2`5)qg3KT~1wARC`zB|m7|jdhLy zS`v3pf!BW6HTYQ^OjT&GpV1m#czjIuuVIz@=-!d#T1rQ!F_^n=JIK|Cu!jczSl@vj4>t`4NgWsI-ipbn zk+7u%{6N52m-^sN20lPC7NBcCMbhXZq)#O3-M3dKv9N8B6_BKpShgfd{;Ry}B&tCg z@OGn8G`=^hf^1Q8jW{SpNFEx;xzx)CCPOy$C$s80qC5nt{~j$%+mmBQlmd(v_cR)$ zGl{&q9C~=Zr4w%I!&?T+s+U06jP(?G-`aOiRA$=_!H1Gn1116S36Oy{Go0&74fCjk zYrYcS*@mo4hC3l{aUmgirq6=AXIkMKK$vXhD@=N7tm%Ay-7ruSt2nJn(H$kj6sl@M zfUl?)o!q`&H6l7J3__z-0XGZw>WzkL{#hM^koBgicxk4*1o;E>Zy=5>O7-oKjOUW% zj}dNvB=G3E@ypM2JTQq~usaC)*Rh-1aft6n-db!Yu1o^>K$>pZ%{X-u)+z#92OLue z6E-WshNbmwz~tPt0=8H8PUwmZ`UF@FE}ZLjhs6zuc8l1iLGw`cj5y5`GX`tpv>@L+ z72?Lw_QG<<*?MTau}|;s%u0;iMkqGU^z*lc4UvPXV7o%bK_D~YccHPM5--YMAg+dF z7k_CaO%3(LKm{4~yPE|glea$W)*$Ek4&2UAbQFP@S>I~Ja%9i|#y|xfT&f0oWzT|B zpje?jkDCDB;;0zMFNFy*`*5oTVshW7*{-mGI_XXlut`-oT#gRUE~n{~UcD^j%Pp@d zHNU?TeuY&_kHBdpTV@G}XCpnVEYFk&MPOq9jKq=I=$IbPgf6A$74I;yqg@QNrOmei zi1p)+`bE`ESMP-4>>74AxOKD8%AorerNw0v{}@^0_}W8cdy4>Sg1w?BCcl` zY*m|Fjz{X7EPlZ3Gutg)JQ@X z>0hDVTe*1&I6{MB|Al$Ny{mRZ5{SZDX-}hOB(^&#R3sZmAvb;>ky(lg9}&7f6G9#b^ta;}!efv^(Iff> z&!`DTO)H3DTujLm1zpnO71)#SFi{lRXkX5d2^ngwaZ~OPXad!5R&2{3FU|0#?FXPb zQ**Q-Jm{w^U(z<0q>scC-v*<}fMAtu$@kN(>^3@Ajt9g|SUD-2QYWX=53`Jw&*k}H zB+T{}c;a{oAA5Qe)>673x{7PtV>33yb@iROfEoQ3;hv=w&Q-P?sn;`kDr?uG7`U~= z+8+V?Yf#h>;FD;AW7)fHG&NTo->8A}vABo|jY5E@+~;zSw#GYpGNz#cxFlJd6{@Y{ z><>xw>HPZAqfh_AQYTo+g(VfNMo_r3y`N!Hx1M3LHUCK`KEWBj6Z>NAoJ62@zucvd zYhR>|XtD9t)9dTJcEgI88?Sz)d*iu|6WrmvwMM`?z~Rj zBgq26+}kh}i&WYOWC2(4zBLz#(rN?`hFmpbLY{Hf+cg+Isr}gjW$xPc!hKF8D5M-x6?6@3ppjbW*@Q)yS0(>I}(5ki$UFz8;~n~E~^|m4q53kChr@+ zQB17X>EE*u`50*VDFNGLZPeGSB60DXxETMiP5QHpV$4b89Fm3-0I!Fuu#cRxzbWr_%Z73{%S3ccmb_qcip2mY`3D>K5}+&&%HTYYmCtj9>jC zFR52fn7g3*gK!ZlbLM0-O;9~D$h|o3p?Ty>b}>Qg5%$9wvQMtoMyol&qRBP@|U!kfvo`zQG zHV_@x8^+w#nx@!;Y<<&IXiEX#P3h&cyo>n_v*SB9A4S4s7qyw6+NeCO?tq${xbY`? z)qwvLjA6A3*ifh;1I1b#u^RHk%uREy!waW<QW>Dt}FtLL&LRHc9OX(o;Y{Ba6)W^HE+xxq%*t{VcrIV7&N zsB&H6+XPWCfN82F|A>`k8qDI1;d?G@ra!Z$+ssHRKh8?QAR6{=Aq>fv^yE){mgoGZ|$)1gcoDPJtq~;wbVv-C z0TRZa=>3Gzl7X(_YLN%>e^AdoCWJT&qFljD~w4OX={IWj61d#0xqU+_4y&erUP#PsO}UbD8k{`*H|e-JBDlkBzPN! zoGBm=<4amN;H305;2ZH14j49RAR}Yr2kMBTS?dqUFyvYm@qR5$SP4R%ikhDmi27B8m#VUS|jfB=mY|NQ0GpxO}*~Fl&dkS*>H03Cb2#firj@t6Vy%5Ujn*dpIYu=u$RWW9o82J@@?O!~j+ZG8xPEi7BoWXn;Y z0t&J=CQ>$0)ue@dyUA<4dQs7EmxXLqVUyMAUrEZr zGPR}lQJ9Qk6dF%W%*p?}+o$#P)N0_BGgpI63UTzgsVARl01J<*kJT1Wg~!e59yfzU z;I)vCpEs~^FMD6!w@m*yw5&>9IJ%qm(6{et6l%Ga+{9&@f2l@9cr4%wxH`@Uq@> z03;HifbjZ#m?u5_X8b^wOvN43GWMS`FK5zN7I1-oojsi zS$xU88ywnj&u={qSHJQju8hnMcUEu-fw@W3zq_T*9+sYjyXNLZ|I({wEMA8`{kjS` zUnIu1AG3=zeJ7Qb3f<^PqqUQTmzjlN zSkqVZ?Kh>hD#@$Y4xWM) z!PrdGQ8W2idlHHmWuiQRs#Z|lbPQYHm+AW0-k2J?J4`!JXcU^sddNt=>>LcEQoG}y zf{@vr6PJ!dLn$_<`zaB_$f|vQ|B~~i_O~y$ROeBCca@6u^W$$txso{1iHTsa^%+f#hPeRnc5 zh_k^K+Dzm62&3J{(B)%di4I8JY%&IEOwjaO0dX}4H$>Mz3-k+|jI=%yEg}^;MDoqb zO<;Dzp=d!#ydD*0gR?vO0oS_f$#u26#g)M~?ZGH8Dp$9k;?>$XT5P?$q_hg#KdE&e z`Puk>uc>B4`ZcgNLG;47n77TZCq$YAx&^_tsya{5`vs3A+ia^0I1p(Yl**n8%-q3^ zp|-S67d>)|Ekok^4oHlRo@>t&W_Fk0kI6cf{HW6`_)+JW^GSaKpFh9ioPw*VIS|-X zU!EUd=FR>v^0tLPXOA^fF3wmLm5tJSeX%H$y^XQMp&xFac?Q|08#Sza$)Cw9p>fca z^)g`@#e-K_*Nna%G*0F^pQqFY33sPfeAm~fX3p=vpdoM6=;u7wrGEE;l^Xmel*y#n zZb)oCp|I7)`XCCh_YEcNKzMk@Jn22!wgt!eYY4H@@?hgRE_)%|33ZCIAlqL|{e;)r z^XKj#1ld5$m(%ir4^-3fFYn~gvDzc|*2Fm<{43jvQd%eL{<10c@}~xx>v4@>_}6mQ zOT^nq``=*e-qe5YiAHDo_=~ZShAWE1 zIY;Y_v7p%}bOhlLkGXS@1$DZm(Ros&6t;TZ- z?_5h%PHqf|O}-5^V_*^BAWaX6=btD4b;)D(sX!07=?sr<|Jc2rAvN(+MME1Y!y+j-NSr)=BJ985;Yf)ArA>n!N)7xq zmjRZCA%iC61g@~U@$~LFHp~{hB$ik@r1Gl=$ZSvgq z^9NrJd{LhgnGpb)a|inH8cwoa4rW#xv)ZhRC2K&IJh>DSE9D@i39yXvAsPd_r3t*xt=gIT?n-*?vLSA{sU7OfEA|VykNFK_uQ`BFU{ND7=cj z0qUwFF|5Yt!@6IO4*2bT?y6!~QyPj~q&L#sF5krSKWg{V-t7%Fvg~|7OO#HaPPp>3 zR@1i59~qxoG&0=rrYGPS17K-9*UbD0wdIymzCLg-oz6GTxwy4&QGmyrP;0KHVVIVm zPd@CO5&6DDA5tLIvxuhxlgNz%CA(YOfU1V$);ML>M_WJGB06)*pS7|>^)cM%FthoZi6Boy@&m{ zn9Re0UigCujq1(&FoDk=UB#}YsVILmur~Qe0@XQDFtPLTVleaZ;J=x97(oJH+Wx*D zNB@JA?dAOJp#XCOMmr(0-91YyL^umnnt=D9l`7=hYJ-I6mXRk=o)(dMsBF_luKt4r zFR1<(NT(0Ps`^&Ep-8g{jnlatr32JR=}tw7$0x#>iK(R#{g0_yzw$lEI(qtS?`&Q^ z0b!>nS%Z~PMIW3!DGSU|H)JOOyZCe_qxFl)L2-ZbXNXxyLDK@;d!KejtvKw3h-Pi$ z0I#j&;i)9F=UHhU##<}3>E~q>5a8>wDOE8ZmHy_sP`{Z~v|j42IX^E|nYQreWWf{u zaiAx($RRQb96#oFeXtHFO?UWN^8puPCE7U2Y}Ic7|1j7&{EC6`LQ@QwZWqvS208>D z!_L zclp-IRCX0NZa*H8_K-=9IrK#>XfSkkEx+9)Yx+OWC}>7@AGIeDWzjAhrGlfgRY4J+ zX)lYUurrYrajH42AsPS}sd4?jDfvTqaKP+vUS(CJCv&33vkb{93I1u{}wz^oI_ z#vXIgg^B3C3Bwk%mDY4`M{Q9f&20GGGN8?6AwNX-Ka7$!q#^*w3N_=FZMF$+EO-lY z0NLt>C(7HzmPFb!9-#08`i5b%+scS#bqyef6chmdMQCF(L0!d(XW>J;;WGfehfO~*R$nYSDdzfq2EmaXX4!*Rk)PqUmc4Z%9?){++HFZeZ61i z^?dAp)Mv0WW!VFRCrnG|3!S(9n61S>ZH7R)oePqYv;i)lQ$jQdfjRX`S`?q-9K;K!hRo&VKv=ch>kh-9vJ%yiqQ+jJlVv#QR(KVZv#4VNjmtJ`Z!WF zu@)|I$^d}UM(cq`GbXB9t#!I^y=Seo3-PW4($}~@9&VcUWbMj@?}%Zg1E(jmI>>c` zNt1b-AE1t$K?tqENJV9og%!opqC;J%%v!}*%nDg+?4-WxV1xy{)n_vQ>GivZ(8nzX z{~`G|DE{YN&3aD8!g>vCO2pGj^zN(GYhAbe3xBsk%|p;Hm;QPxF4!?R_-dAf1N8Aa z=$M0o=?MC~iD?6zfvQ%#io6Q#h*3|JgrM(+0bm7RCfD&FA-4Whod^h6Vw{|pXA7o) z&09#Tr~g>I$3+>lxjU&Ans(W`MEGSD)M7E0$(;N=J4xI8y;%&LVaRIP0AoMTQyt)) zoy~?iLKgR*V!WvzpP-!eHLc!cr5i;DQR0Mo`V1;sl2S9SPim zpUW0$;z~)A!V`OAd9AFmvW9KWLAevTt#Ehu3l=AWQ{udEfD5ZBMv9cfu__|!R1S_W zVwix}z#+UQhKXdHTn$HnUkvthh5#Q~TKtmX_=^$sLxGzy3VrEN&|xUO%i1|TR* z<@5`{ApmXMN#5hQB@fSe4jS5jRKgLsUBK>}^&7Yfl{0lcuEJ?SKWF&SMm>X%PQG}S zVef>P)1mpg`|hx4=n8SwnCyu%X3u-8ZV@fI^Xfg`IMh-;b8}VZ*t^e3M#mqJ7aQ?P z7&Kk#ZbpQQM&H|RNq@QHDp-Yw1NeN12VBMZ)N;2vsq$HJmY-*RscATRVX>A;eCbyC z#0fl??dcrE+%8wyq`~@|$lpu~gyEtj_@ild2xGM{bACBNmsan4Ru}j<{3ggD#+uZSlLtbhO16ppGdcq*lXJR+0+a=i1ZWE6 zzJKbl#)MRm5l9*JIAn z<^gLN$D?EK{I?!2&`QbMZ3f=407gMI<*8Y#Lbs_x8i>RI27;v$t?V81;yE4iT9$c< zrw*DgXZ*M0lko*j3+j1bv0r{=w7kQQ7H zTPJ`UA8ULfS*rKo-mUc_&$7Ej{QK(VSWH|1aqC~{lqD$^)vrwrz`rMGp7O@{4UpSN z)=$%1oDwfr{yCl0LBG9ia(#dDs0nR%5JUzR%Cq2*#U(R=Ge!(0WcrfHPm^p}y-L#6 z>s+`Xs99;Kn{=Mb4E~DUZE7*eARS?tTqHl;Bz*R4^!V?_qTV-i+B(3!;QW4M$G!OE z%kQQ$`f1Be)ob<#fLiQ3BJ-J@XO_6)eeHk|4}Ea+oxOCRF$*2g+!Uw}nNEhz4Xt(3 zJQN5?dI#C@py7jvTD3sD;PItUdKIz21JAPe{JmL)!#OBzmZ#-qcjDv_hQZ0v-{TK@DCcfNay(Fwr91HVE|b=Ci&g=O}^^ZOl)(KY=O;{r&V* z9y>eHoaQ_YTNktF$$izim=q@c%z;y2Y+d@fm@I<;$zBi+(pP0A5ZqhpeVnScG|2wpMvjR8$Z#=+J2kC8 zgFg2J`vt>F1aZT5{9u)@rD6wy4yd2K9we;*d+SvSIld_?`XIf5gI;t92VvFVT~Hvb z_5Kt`tV3xn5wwQ$$dCrn=+>$G!3<1WT$ojxT$oJXI3E$L4WftZsxB2^(s2cBDp9LDUwitzFO&U!ZVYbsvFX#uJA;%XFK;vAQ*et?gfVQUU)4SM&6U1zYcrsqRw{c6 zVHj+EeHPv7W|#Y^|DPiDYW!`|`P~Y_f0Xxe_T+Izw#%>bJ5lt+OuS@p#@TD`Ckg;@z*livSSXO53_Et$6ba z8c{BgzCf#J4Vm?HwI$B(W}YFwMte)YP~I}#IVKFq?l0Hs<~lUtk&29uUNDo{?_tQ zVN%GC7PHjwP;Ie!DgiFO=QK)6(Bz~Rz`tLnDNfn)+F>x|aYJu@UO1l03AvJ+Ssa8Z zX_a1P5~F|VCn~vZxPz`cFqqbTzztvSG%q+**Z7vd>3gtUG%w5(U>7ZDe*SH7QEC1v z1$VBmjv{mQo8`u?vaJnYB~;M764QTV-iI?x+cHi3568U~P6K_D5g-KZS^-V`t42K!8<-OHwJ%yDGyVBBm$p^w^RoT|%vrJ?E zzVnn`#f?ul1&T?YynL7Z{oPJcywED?!Ap5chlP}A1{RF^o{I?|+*FW)yJC?>AP66u zd8ua>3rIWcZ~&FF%6FhI11gKg>bXU^Ap7w0v5q5FeVR!I6FmRXw@@rGrJVdydHvS6 z#L=l}g4$tVOU%Qm+xO2wKp& z1r}WJ=rhFdA`0vWc?r$`r#>z~a~t>ACrxyZU|g8N@l zl%BiE_}>W}uf6oY6@~btqmCdDiP+SN7wosMy`Tqk*UhRs2eFD2{rJ&3WMDFcHAuMuiDulmp( z7)HSduXe6oHx(;d;zER_czj8muD!L`2)Y8WfT);+`Pt)ptso`;oV5EVDR3C{e*7sr zOc$eO#r4{z3!UdJcHu~{pi)bHKG@dW7yR|Gc7NA<#Qq*N4?@+ZS{+Jpn@J2I+>h&d zuCei$w45$i2#(C@nI__XXX{uxsKtu^r$mslE_ZCVi7t-UBQMudjmX;DFO61Bz`>{Ka#{SP*Zd`9g#&E{? z{A6;Mr6n$13(Ey$_J0ewcOqe#h=3Fi)zcPxvT84I^32@kc-y$OmN%K<%4psQXG6cA zE1Ul*;_8@I_eEY?um7T-?tY_ZRV&s-Z38^&AnznS$^)rxiu0GMiN_a<&TG(f`3U|B6~x>X-xfAN+ale7(YJD#h;wZ@84*v|zuH5~f>$jmkT{of)e~89uM*(Z zj1`u@5aGwBbU`bTcpXVeVCFp_59X1N^5|@%b5y;uewkVY20Yj7+IfcZkQ|8`idlGg z=uOT199~)FwV~xr;SMs^fv32$5qGK`@z!J0cGVz6b!Y`TEIhMqA zgrxo@%)P&e^v-!G7mbs71;-m>wIy=T@@PDg&Z*BT*;hD!h%2WQ0Z>gWI)5Q5ZxX^1 zi3alD;+3#c90ia%P`PXOUL4hGfV=51kTMNZ43z*w+w4nTXxz02bD3q89|TTT)?KkI+B|Q>*JePi3u(QV4k6!g;ye7|@TpezF!)_=DI?DG?l}MCm1PzC}opFOO3dy09afwI7H(VVpZ6bb`xfC zs}orYz|4!d2*2wr#X${Q8ox|Tz7(9Adq7B&*D=7rY!zX^Cvm|L#KyHrQE)z!%zg^4 zIwSXB)hacVRNSdar-=U%A3c0HpK7ek78?c3>dqEUN6<04Z7C|OA47=xdR(rM2BwK1 z&k8#PDxX}70(PRXQ#FrXp#np}wNr|u>0JTHf(|Tdrxyi8c-0DnDb1k4wbQ%Pq#>4a z%Yg%X_C7z*Yz-k$ZZ_{?@-4os8eJX99s6#Zv0TBIz;TqoWO#Tn0=HsSgMPgbO>E(e z?914_qUIY`Fy`&* zQNtoLp=KmjrmP9<^)PYk-lin0r6yT5Z^@ZIOXXZkS(P5w%INi0ZTHznFk8=aO$)yikpc1tgMI0 zNFy1%S(N$+IUw4k9NnJ~l2^v->HTT?B>24x~UJo ziLi;Qdk~+WhhR11w!kujzZ$bSF|T0>aWx7#)Bl?saOUzbJSP1&VJ|Recij;4?hG;VNCSz-M{zDv31XsUPAoHOi1T*b!4TZ1rNljZmkZ#>hN zIG@S;5*17QfT$IkDoSJmWufrm42%m8D{`0 zB7exW6rjNJ0%p))E*5o`^+J9c&;&*o$n%tz`J){sW!o!RE07w*tSmatW*a!aUSy7u zq4WsVfy_`SlmK^thqaaU|1IuttBho5$9b4y&0LGj1b0TGByr zxR9&tIBG-T;PJs2cu`K|`_pb~1I-Yd5eBSM(|ReJic|3yTSDL19oG$}v%!1*>eGfI}~ zMHYRu#Cq+RCT-8;M$xaU6%Cfi;2${`4b~$$(e`7Xk~X(EMi*&k@PII|L`D2Cjr&%;0)i}6IPw#S4tutp0nU}Rd`onn>)crwMJbr5COQNSsfPjl2TJ~ z=|FI%)6|TddK3`;1Beef_i+ci6z+HM@I8O$Ys^2yP&(jRe$p#F+tkYI35;oT1I;+r zSJI_TWlX#3W~Ak3YNK< zP=)8~NSR4?4^TOs`Lqf|cv=x}u8#);Hw+4{O2A#pK&B?P?*uwOov&;_r8j=6@J;<@ zFE^W=u8S`FZqs-4p_tQIEoT-c6S8CQqrt0ZVmEj%m59$r?qlQ-JHt}__A)tRn*1LE z{m)j#4UB~NGTpb4k04@$tM%YBDS$Mn!tRruAw04IeQq;V^_jB1dc0t`BZF`|Qb?Ex zuBEXc%4K34$YCPF-M&T>n_&j$2lr_X>TSRhHKQ&v&jW2^Di8^WBp^oagJgU^n~BZ5b?;g=mhkFJY+D0tQ72$S1My!Lp8k ziB@|yCw!(WYsz>I5#+{zQfvH^D&V{T_?&8yH|I3`f|v-r7i*@laFMrj!>B&Px*1dU z1uOQXTW(A{{_*kD*%$}h&qM&%jBBkUzEIehsvcc#wzmZGHdXw3T|ON8*8cY#sUc@I zRC&p_-C@K5UZ?1dzm0JwbGfMEVh8p2>6x`kot)y~p~h74Ow;xPyam!9S#bJ zzQ^04ux8}02lFv(#D_*Vgb(X~G6B=3rP zyb<$~PE7r)Y?n9-k6T7 zj0oHcSP}k;^#WX3MaSf^GH1{drsuwA!1wZ=ndt?QYqJeKXcF3{?(wW$B5FNJbgZeo zmYN}22ujvy$H;EK`Wg~blBXkyGci;V z9E*+Tu@x)SpETct^flz@pU(XgVRJ7aE)~sQ@X4unc?EDq-ZV)$q8I|LEe$=fd7;t$z%*Zjl;i`yD0c_N*Y@W&Q~f&pZ|6Z!X%+d+zavbsC?GjBcA^1}FKRB_pHLdhAt*j@Xz=WD(t|={O@1A#P4@5l_Gg zvzgGEFa-9>Mx$@2SS8>YC2U|o$vA3*9xzukw}CU<353tJHGW*g79_=^BcMe>=om2R z6I+8(V{ppFOs&6!6g@SPQZD*ZSVq^JBXCufopu+gUe%8)?i35pQ{;s%MIM%Dd!hP7 zsU~<2Rn@#l@9gmU@F?Q_8TxK47Zn2vE%`L_Z3MvOT8OXT-o)w`n{mF}Nw{X11qg_w zxEl7SKfLxW3?tQ_FdKU5Xvnk3M@oy;r=C`2`=4ETJ1TUTc?7m+{jg^yed_Dl&6zyz z^+rsq%j@xf;bjrgh!{s!25h(F4TLW{7oAP__vhxy`spMEdSQsBi$~t^5F2QZ53|H8 zUJXOwJRC(h{tU?fiYmRv^)gF^1vq{@-%TS6e-iYnT~S4gCbX4G7GQ7FO7_JF>QEzt za_^EI^?R#6?h;ScSctIfUYJ<8&>%lAUK`^>Wp7Xnjjcv!B|n!?AWF}k9*cH}-$;W$ zbBvrfk$j_jpX;ed`&{nHLHj`H`_MW_vLW`H7<1X)bj*8~W5)acIm%1U=_$??c?<5e zZ$KE(@#{W4U)3uB;Bw$ddCHjD3(s<9FF`f>LNrN=(7ZGLFoz0Sl8tbP41=pIudSDb zcykibHJ{t!Q7Wt$sziuRS%51Rx-1O~ zx!T_r#9~Kvu(Q9{hmpohn>)~2#n&x1jlYb-?f1%v~9TnZLDZ5fM}SB@1js?bHph|-A>yKDnI%>Z~AN!l41_qz;FVj zF55P2Do9>r{>6GRe$%RnQ@DPrl_dR}FX*r=TE=Pa0g}!EGoA-q-K!w#Q^X?m@1;)v zt-F{MAjFz?@+K-Gjhi0s>0L>$f@a3DZ$ir11EWKS-jrRsApV!U-CkC%yR=`dU!jY! zdgwLHEAutXJW=bAN$N$f$pHy+aPb0FxLZw>i8O1LMl>G<9+wqI6~Q=X*O+T^ru;O} zU+e8eq$z#ZDpJ~a^n{KS9w_%~YawloqOrIi;0!Sol59%EH2xHg=DO$Jly$TE`;d5@ z1;q&}^1=*_?foI@m?Xj^A_dW)(Nug@VQP*Ooy%={2*H4zHJ9z%u{22?$K3yKb2^~1 zvq?z*(tu`86-Dh3C32i0dWvr?Am*<=!B5CC(&dV*PRwupOBG9NuBu^xhO{M~y5TD3Y6bol{CUbO9j&{fU6UReO=jSRQn| z)UIe(zRE*Zb6Oi{%OA{~*H5BCd(8x_hJg>Ox`84s)&YvIA3#`5g8P$YuQ}{r7$)|k zVCz7fE&h(T@+EYtZ9(z^_FEB1#xtk}fG=gw7LJAWg1p$IglAAmcnPKHl12}r2;)!! z!O*J6`MD|fY(9@;kSHy4xZ`oHxUk>et(m)5`_QCowX3=DO-IPr>!|P@#{3!Xq+6f> zro`sjNOyTbTAcgY$|&pn0eqSn*&;3-8`ZxF{@VjFDNp^jws9SO%_h}jLh)rsfRe+T zDhv*;3VVuJ4?hI-6j3yq9#AR>CX}t7rGSyhjfFc>9zjBq-t~;?I$^1gohb5HE4yoo zQ>QQEdOO%!*(nkzeYYbT$RH@bRs&eOi(IWtef6#{31G6U$b;8AJ2p*yZD0GrA)HoX zX!$QcJgZVIwqBrGjUtu9nJ2>v5G-cspCLt%gaP}{7KlbAQwyDci^sq zuoZ|>R5aY4Tp419#>~P%ose+8>ZGOaeY^F?D)~<9BJadqTwZydF?_l@X5mSKqw3(8 zctWUGu7|MA@A4Y?h}mrtY7VT`Y5B+bml@~Sz!5ZO995LS^b8~Q&=a;ScQ%g&S0W9Y z^;&i@o_-tm>?=dO%>E$-K!YWRLmO6W16}_h+cGJRbS`&Y0uO?ZJHrhDtP5EqP;~uL zo1{35j+eeR7Sbyz{{l8ygzFSE0SMz+m(M=Ed8Z>fgh18JXWoo=#ZK8Oyl2oRC z(Dp&`kGbzez&mXr_G1|i>;(EEG>C9HmSobDd`xu;rU8R1m|<8SFecCHqwV2%83={m z;6ul?g~aZv&Th>zQEQHm!jhy;pfUHX>b%s)NEk;KK!)$=F7dO~#(7B2GJWe;({D=k zdi<2w{*6#K6nc^wHoPno)oUBYyC1dp+}fqkA>{}jjugIo)>-F&#a% zRoXMpbis|G@mu13@Y<=I2h*!;(uBn>P3)tY4jj*wVHr(fVoytKtGA&|CwVe1ah8Tw z^ROxw^;j8Vfb3H+&u`8a7Rs42-hd^;>88t*{zQQ+8GYve2!{zOlLW&5q9fELXwst>5SNSo}6X(~H2(?32Q zWOi8Me@D;?Zm@WaJ`VKnCDag)U!2QQRXrRCoAYB*4NG8sOcqZWkZdAUmc?uTmJ`&L zF6~uu(;;syMVS2N{ilX&+9DkYoj#RI1d1s#3s=@5)PMi+-QGa+v<{5SL;?=9+WWDySSoY;Pt3bd64B`!l8(v0K!j{1{CC|Kj*u&AT;dV+Pp}x7*Ui_ z&NkOUmi8oP6rNTAlh)$Yq=whU+s|>`9sKq}QS%B%uAsNoPYxda+>VuJYelAnz7(Zq z@uBV)iRp2IXy}~MR&(`&xQw1zSH+r)5nG!2<9NtqHk|i-%{atULf~jd{WbGJV2p91 z0NVo!4jov&@bbBtA`eu_W*m}&>zt%)W8SwAU|b;$jjp`n2?&O_4xE3mq@D)2c`z88 z)W84;&12&us(+A(dEKfok>liD^tMksN>d5*G|EL>Hd%L28 z-cCJBmYOCgWyBI>xF(&C7V9!&tcKwsKs{)P)WN@$IO-ytzbf*XXh~em7&;xQN6l3% z+Rvt^kuoz;a`f~(zg)KIx_afTMZnPe3N*7xNLN=GBj!uM=w|3M^?gR~7qaKF09?)^ zH>ZsKb>Q=AGo0OYKF>BQE}uonI%HZjFFAoIiIm?*jO|=z>fu#WNY}u|zo?VKRJ{6+ zI$6)Ikl`Zb;Op{1N!W#BMLC_!jV(N!wpy4cdcXd`)$Zu_f2t%9vS5fHS%`S^ewkt0 z7}7x|^x+PT^FkK9(bozm{Mcr8-^wUJ6Gv}PQg)$UdT z!I%1vUJ~uin>i%5{aedH_-2Jhw8U16o}k*{TJ@TgLzbKwoMuY}hb7IA6o9Vfx-VE( z8XH^HcdPlpwn7qY)6r2NXisQ)MLO_%5-+93w;|^mqXK`yn0DUaqsUA+%mM$8`MSJ~ zt=H)2AKjdUM$) zklQ2Lg^z!gK>?&mk0WYmV1Vg7`x9nHFKLUry!cKQBXRZ?e{eeguoA$xk41{}>a_D- z)TL`!9TCl#lkK0VLn07hEJC{=bJ(`G8!?`lYO{8swX1eqW$kk9EgqTcPr+K6WnA{h z{uf&ZsNzbvGgSkR9KZxKEOrxy0TvsP8DtXVQ2pw%I~{9tw9NGJrUK~iM`uZ#7i}=P z=(_gp>PD%yU)84G-I!Ts0ti!DjP#lQ!pDFwu0dDVQ&SBzd~&Wq^U>=xeBgSD(P5>X z8j>-gQh;M;RZWjd9H{nHjfBIjE);{jOp@S!i>@QQsaetz0}P37*-*-~D?2Q3Tgk6l zhz&;q3*n9EWGBt8CAsmY_y?{m8@(*ra8|S_o5$KF$S}FvH-_bXNLpiJ0z;cKu5wi& zQy3yO=wXLn&6Z9iuQW9mrx{QrP6QW$F~W8YtS3gN^Ynj+|EuBZ#D5fqL?tfE zxb8}aogD_GU+e#e(}CK)Hrh(73OM*!b>+Y02^v3A+XydcDvb-A^SVYBsyI@Al$1PD zObn#UHhUvVzgWhK@lXvD%2kblAO!&r)V2zJNLRk`&GjhceDyyqV%YBsE&B@JGb>## zxvkHPrA6H0IyZc;{szMJ)Gj8>y=dee#e^j=-Ay_@W zb{)jLhjZr5t@~y*aA{cXn)K7JvxiXkcXApaeos5|ylv02p!ORPoPhE8@!`dTf{^+HA0Jr)qH8rz4pxN1DeLUYk?Rf6zZsK(%E)9o+hjVN_-@PV_r|h z$d=n|y-@LV?W|B~BgM`VhFLD9Eb7FkizX|FM-Y3zE$OM@TXdZ!wk%MO*zNkRlIM0S z+)iNMI(%d^>0Kq9Er4P03KixNW9_J$+cS=bWxI4W(c^D}9F#5ap6`C3MP+x<**l zI2w3CSj9NNpOgV`{aaMZ_!<74;qK<>%Ajp?rg&l5k=&i>^8isH9U%{{gI=@VvFZ9>n=^(3lFb} z4X59fDWng5z`AB(ey$t;peupV_hiNp_l+P83C~3fCaaiYmG}#X!RnuNTz1EAW$ zq|6uM(r~vp=SkjXQ-)PKaCHbaui3>;7{*OLO+FO716=F69;1u#`EXv~AmS)FO@F_; zC>`OH74Wca{}h8};K@0QLMTh2njZ>Bvk{bCU4uiSH~@YT{cJORlti5^zj$Q4V(rE_ z|Hl7kyXFo7@%Ynyxxbh4NU@y?laC*%vguKS<9?eal(%?e#gVfO{c>?#P~Od#Gl1Qe z3ml9~otDFpLf2V~QK0p->pBsQ*z6&y%&W_e1240lfYVji#dgrF>S_+!Xs!ikonMwf zzlR;<5poYaL9@MD0vR=)?M>Kp%Mz;{5O-Xb7==t4`Wllika#tq}k z30q_t6w6ygsh}Lv;$~2Kl3Y?rzWZ$CFAL+!70;dX-95WEOl9PFW0+6Cnjb3^xKyGT zY;|abn(bRzEpo3Qd0E$>5-zu|`)f@G=OJN$r~fgZ@Oz6wHX3qoV~eW+allcj1{B7> z=Lu~9i!2zGu}8zD+o2rY93N75>i(Jv&zo23V!!gR zE>5B`)c74ph$MCs0#b9HYxnA+!q7)__|Yn&XKy#&XecD2yCd~tk{B^}2&lX!$Ks2P+mF%%%1&+WRAhT2iiU{ zc23O0woc4p|KtC}_)FEb4kz8MQ_CCn+iO)~AD1oX_KnDPzK=uoqArp0!{`DkB;^L7 zHYiYc{%kO%i*fYIb!$660O#F6`3}$v^fnuj!}a*MHyH~963*PD%8#8}BuJ-G%HK8# zMN)YUSnwJzrp}^|CEDL``X6gIUmfDYHL#DI@OdMxhet92xUF`6EquFSu-2S9&u&FV z-e@?#XY3C*&!w4uW8i=MpV+EAZ031;8xVQi5`ScXA*PiA8Z90mg8QIs&jPcmvtSZOSLoWH0}xQi@S2l zGN`~7AusLfKuK@Y7w3}$bj?7Q|M==^92hS6CR`q)9#3?>y`U2SsDZsBQ2F|A>>hzm zmf+xHoTC8+#M3}P?1P3|2;oi&Wdn=b%oY*~M$W>b$Un0VA}Bn7~rgM3f}5_l~|_b_kneTz7KyT7nHTPK&N- zAL&XJI}J=S#*tzc_il;@E?L zX!9oc*4RnGZ)VHX3A-81vxv7`^o8<23?CwR1it5g2vA-Wy+d z4H~93xLNB~{C0DCKQVMVn`Ir;VxgZxX-1Immj4vWFPwCw8P%~CN>Y?{^xrUY=aC2? z+Fxn?#Q4RV$QWQ$iLGF&u^aJ)ckE7gAl!SCoaPw-5|w9(+?(?cKN4rv?EdOa!?O$; z$=3r^(!MMmr`uY7tn?Z)el$mD|K`twui(|&ZVNBlBPKZ=scHG`$YAzUGS!|ZILcpJ z-+CC*P$`ZkOFq28-^FDN0Wb_h>v!bs?2hjx)tNs2;IMp(&zZxf(@R)dJ`3~oOm%tr{M;0dsmpSx z>Gd)Ew=`h1T{`hZnTSB}ob*eN*Qz@Zy_fXWRM5^=KH;Nj224{Jc%KJ&pz+ zMgx)+ifvIg;EI`1blq4>sop~WCPb?M(*EH)4Y>}~)S zh9#dvHb*!F!evPo0k9aacJo>Mj1lTv*Y2;6i6O_dAJDD@Od6_MN==VB&+TW=e3q{T z_(A2-I9DvtnUNN6K-!F+b71O^79z1?cg-K27?jVaApZT?Oz5SJoT%+Xp}hQX8GdHM z_+98}*NKVQ?`PkLm1c^E&YPQ(Yhttce!;CKS{2)jX?F>)AOBqj9EPVXX^@}?>oXPJ zF-()xj%QNpOfpH zC2n&$RJHgYa*IR6ihX?xLzpP$);4<^7Uat|dvMk+J2rcn-q{lz&X7amb)EJ&0!th> z0!6al7xZDYu-QX~{m+6#YK!Q)`Fl4q{kzLK>AOk2a5wV9^lzK&6h46aZ4Cd|-mMvm zsm1w7hpY66ZvjZdqQ;!v`R*k-py&DA41}ZxR@KEX|KtXGRoir2th?2){RS{53KO zex#tS{sAM=SX>?>%W!785Yv%PUKl9P0BZ86(oJb+bhhKxtiLo`Rz7kBSC_v*H$JeN zB%z6ND6}iLE>1A|y@bd<9rk!O!u0#Bf~Wf=m3yV6;8n^%0ox9T#v({1aRzj-pfbT9 zs5~aJXHz9bg!_Fj5z$T@ZA7>|%VF3Rqpb*ZXjn^3MS4x&hvu0l`c#kJNHEUDv2!XO z%+DT*N)RCN2B2u2`ETHpeZVs~`6&RayRvSkgEwES<51Ifpyjx5U2a5Lw)mx;*TUh> z2tC%qHPI@O0ki6&eV-wVZs?-^UZuKx)=0BUaRDj28OYT6u&}p`DBvWJp+#QjhlucK zE;6(rmxn6^cKj5(q@Zta8$l9Mkw^1;>d*7YssFF7uKDt}J-Q696y9Wp?79_a4 zLm;@z;_mJ)!QI^*f_n(=?!hka`^)`q)t#E&({s*rS9f*QIcIiyo=0b@d$Z53KOZ?D zH7Tk)3M&X1Gv(R84a=}aFT4#a?k)_!3sKj`FBj+y4NDs!CL4$0^q*!c5I9cYcfeHy6kkk=YBM?FzxuM;cfN%#rW~W^@$o|sY3lBdx}Jz= zf@QCMxJ*O`M!_63My=8})wW?S=EpCGD6DtF3$Vr$`!8Xhs{DDb=?29WQsx2=7)L~5 zzW51qFk7yvjmSqvk&bjnrC#{u*4|BuR5;!kM?+!zBL{;@5cFT2PrxxfeDnbg<9I4p zg2T10_srQ}PASvu;xiXBF{AQM4cKoeD1jsh;IJOYE*iyosIjZRO`Rx@L5LW&gJ~_@ zC>x%8?e^_Fv$I8bqi=HsR|N>0_LDXmHREf@S*V`n#%YOpj(shc_Ln?%v+Z5BGD8fy z>$sbt{JmuFuFL7I{;zZ(3yn;3;Rpu6Zr4ez#SU!Fai{gu|KF^^T~lHHu|X%PBpI4tw5phV0XxL9@g zZ(u#X3^nApn3&R~^L&NaB_C*{@R>6g_l<-X!D*LO3qce7-Nkq#l(3rWWh)gMzlm|g zeiM|*&T)xZi)23aczcClC6*J!hT5ULgDYb9S_y8Z?Ho@fSZW(zyWkTU#BeSXFd_L` zOI4oI5QPPyA$0v+O#gw5c2F7`4r;7s9no5ZTK3csni6M2r1_vDPk+!L0&S5EWt1j8|! zlZU}EGqStV&Sc7mnoDXQT(mTX1y}+l*IAl;yy)QapvY>~*!&(FWwLAM<1WjZkjAn8 zB0TTp+I|<+^_so->MIQBx?y`=ivqcYr6#5&y>`4G>uJ9oAD!fhh+sv{EhE6Wj@-z~ ztUX_pVuTHVPFArdkqlcriuN(V2D${4S`}dG?~%Vu14q7wxKmh5hqxvzZ*3I1y782N z(36(|tEYKM&x!4VjT7z%Wch+(NvtGz-z!$)L*iU>#3Cqu^p>xMAO2I6zWX0B`8mz01l z_RfM{{4X^Fx+j5waPUrFc=cEd!Q& z!c)RKIZSG~Q8^=JhlJmW>ya7pJF^)AIALk5_GmpsOPW%|N1xAR-erd>aOxj<(;d_6YZG<<1fzlqNjulS6pD9#Gk)$ z;r~jwYUNr6T@PvHVnt$pj(*pM${i7NjkkuMz+VqihxswF_}U*i)zyL*?-`4DB?~9!sBwd+-j3GxDQ@BT@bPc!we7 zzW>5%OzY3HY%BMzZSZer&agtt>eID)w=q80w+}1R9*=(Mar5%=K*7h@KXP|X9?iq7 zX#bO(%rJUJjFo~GkVbA(s)?I-PN|DvW9UBWT_?EOHOXPHwHmb>!9($U@p^|%gT64O z@b|SDe2!0iY`%Y4?b@gfo|r&j6B^X#SES;ItGRgAt9AF1W3-bG_7s*1g?Oln&G9Fk z4S~9!vj(cis^1B=haQs!WM$pt$@96`F;sMVc*3scjo~=cDVr>7X$Tt})(yb;NH_TD z&)WP+0TDh@$0g|au$&$qeB zGF?NUnbcM9VmM-%tJwWu7A(2!z&_>u6w*%+y?U@f&WwB;z*QUt zn%W!8n4=<~=Uck$W@p=MpgC6;OU?zc1hjQYrB3`l13500rgco`o$1bchUd=1=G(#j z$4@gusW=a|3*Ic?XRJ}BDd-Y+oRXrS*_H%AeChwGKm@!D_0Fqne9--)ZdXV1vyub` zO_$fW#m!Ubl*ClghA_I(RY4@2x+Ey@b8itC1MaFk5|9A{WpU_Ve&M$^*M2Q%OR+?h z#qs!7Rbumu4BD@NfC)0Z=)(n7H~N0b=6PZK?AjP%;M23xJDEt|03Ws! z05C|K2=YXM!i`0xk<~AfcjlT;bVf!kW;F?4NH5AX!^=%D8Gc$j{vJe$s)_ z+N_}TqLT>}JDz*K(8p_z9*@U3m{^8FOFvxbb{(dEI8SxEh(7vPU_A3cO1=JW{{f3z zoh_~yAN`mU^uXxM4LQTz&$d?9-{9;8_9B4QV$hBxs!^`Fd2zKdn+?5~{WT$`o5bF8 z6OVOklO4Ug14E?q{f|ocvr}KI_HeUi-E$leH|pd3liJp4Dn@HUazYG+y*VO7bIo`6 z@(s^g3)?xnn?c~_-J-a%P05*FetD|3kGZ(@swZnt;CQ&Zj6F(s8_aV5W^oCw2C?Ho zz4|cLyxo87Ap109M+-uB6`a2b#vc<(j4#=?#&7I+iE{7#Z~_pISV0sPCQpFo5yC=OFXs_G z?E6iu1Uvtl_hyIdtu3I=-u-N;Y~a8O^XnENE?DMguj1(=hClm`7Z}#n@kPrdp=0j? z1XF)1-q&u6mqM4;Yrv>DFc!v-NdqhWX;cX%Nh8*z4#>(lb1FvF)f3<=ev;e%H5IbZ z47rL6YOL7%K!hETIJX?ZShZZFoL)1LStKdsHB9RtSziCJ+0EPDw84b6{8t(N{=1oR zQ7%0k@=unD^U*JB_h8<*?yu%iy_*j(h!7*cjk3?G$@d}=8#ADP(W2!i8NxeMer_&1 z*v1JR`9Pf|ww*N7i67!)XXWFPWRIxPWY$gzT?CD$GizY(Sy6nOVNi{@j%~uOOWV^t z_dayW)3S2mFuZUPPOT*RramabpLFM1Z|jdv%#eP1*FdV$egw9`SFNj4@T$ScW(u!D z_!8o%A{7(4eQxULGLD@?<=)a%S>UkP=G9c_f?Ml^+v$K?Ylq8LuIIYKJZjF?iyBVq z+2lc+9L%MP=Ol+IODrmCxr0@mYL;nUM8_TJGV&18d}5_=XqorP2JM3{?Hyo#08_uS z!1&Zz;fqFKbOx@YY8DI|GQRrevr_{gMmzNP$X|K-Wxx^Txgop5?i#q-Iq#H*zXDN8 zl$~qgM*%ZJ5D?3T;ibNg`D7$!#v;aY7=_6cN+Gro=`0>>Zx8yDii5^WGYlDRx#eq| zUTs^!hsWB9o!@gU3agQDJy&F?xnK>-l)z=oMY(KnQ# zd`ttWZS{Tf1iWh?;_o7K zm`tE-oq$+3Y$lI9%#Zow2Ye3E#eOg79k- z=%tw8v&;NBZxNuO5x#{X|K5P{TU>NQG%Ky#6Jl6&$eC$aH#cE=NW<89;#jr!SPZ#7 zsV+ci+)S47_~j#Da(}zQhXy`thNcpm_u-oRlI1(kM%?hdI~_hx_E}XDHfy!|hjsa^ z54MqZ!F@UUnpNXw)8Vi6!fE$^1qYQ1n|xn~>6OUPND2+nNKt4+y04)Ql< zZvBPshkRb*YyV^v_b>7x9l1qfdcPo!Sv;ge0`HwUK3?Q7z|pFc>aBuZRHN#45C1y8 z8Z_z(6;hnlEv60>j%yi9MD*xyGL=!D40r|(y0X_v^`08-ddvg`?v)e9#JaW#>(R1{ zK@M@pb~NMUQn48cyTAAcu8Ue{Wzhc-wY?5-rn1@$>o_4<;Iho%`2@rguv$3JE5?%8( zpC#05V8cDZKP}WdA41~Fc`B=Ka6m9_4@0xzr_h(%tHtP39j&4O$6{FFQsEwlGl^(# z+x9bw+OE?KbNQM(y;n9OmSO*fL6bAOkb^-*lxfS4GWt=#mbEX_miIFUop|;TIp5LL zu*{vxniHBd)g}dV_Gzs7!(bBX=ZTUrnksYDyD{Cx8g5N{mB;Rxx$fMwbhM4WmNT(Y zFD0kWTFJ;-?!gpy&L^W;YG>}jW(tj^eI4gonDnx4%;URl@o2fSWfJgjYMA7=#M+K; z8=X|Nk0cWW7g%e(33aBOav1SwriY+^nQdE8ca)E-x;}JfED=4&Wq%tzjJp6*A_!gTSTT*ob=Fg>d9dip;J|M z@SF59YIur#yMqXe-V@}Xa}fGnYeDQ*M^`$H%2@aa8{DZyNaW4V51;P8(#3I#H_4b=Q6|bzxA} zBOHSPMN2riPVeQHF!@u7Dg}o)f8G}vz+B6ZTE@?hFh?dS%}85;U_ZV=_U-!6Xdf9I z33SOu`allX-Ye$u5%P^BS`yx;n;N#z&zIYi$)r@+#ndZ2C^-+o_`nPSU_B+b?_N3`}se5SGlXz82T#bh(xm^wv`!i|`B+MIP@Vw^P;2u}0W z6j?1N%GZ#YTCN_tww}<{)vR4V!{S07GxvP|WkSAi{gI2Y`Z5yh7I_@8ZmhJtVgSJ6 z`FGdB9&{w8!32#^AMhf*{je+w-xn&$-S_*)x4`whD=QfA>359ONm zdeuXq%=cz`B|)>VnVV0k``mx<6&BA0rFw5E2+NS_*habW_J*X6M z74jA9Z2A%#^w#L7lGsTW&Gu{|H_Z$!q=o{3UWN|SuGGm##kLcAe~0<#nBu_;_Egnk zX6rQ;{i)`RL^v9Loh>{%_i3$%DuLW)8bO*vtN9?DYy#nmemEpKaE+SJ<5}7xDwK0r zxBMPB+Rr2WE-Sf#u&t}$)u5M{3vLWroW9_k~ zy6*07^Rcu$q=e*jGWy?VS9A~OyT|6U+wJVy5E(aw>f#xYOi z$8z%bYF)%@3nTQ;(}#CoTW1hcP$5$!;T@FpyWh6I&Sh=k0d!s`@SQHX=9%xR(Cb&Kyw7_c`V#TxOnA33jU}ieiI<$+Na@^t?h+ zC2*@A6OYsE%dzd(Ka2mV_*2y7JLxbts;qM)+tU2{r^{hI>w!VyK-&kW%J%fz z43ew&!r|J3*h{X_W6`wx*Uq@+YPHDLYaWB)3Q?Ahg+6*`cmk0bHcyFkAUnLCY<Li@0c9K?#O00h2nJfR41j=9Wt?307qKHL+6 zx~v_=*g{OUJcWFM(8!+BcU&k%(klUJT`}rb+5WHoHdoXm>%Ho^>?mpwBK5%icEjGE zm-CNkYI2%XFh;x2;VV-%&@qs?ilPD$)SPc2Irs?ikr;kaG1}u=Jx^zXQ&~d`yN28I zZi7n`jGlfBLMvimcmu@Zge7WREL+VUL2XuBH~*r>3SV+1%HYN1uZc-N-TErxgZkj- z3MjkY|43}|-w3aZZ)OKGKq>pu$&$(k-6O!Q;?qC|;6>;JJhXrQWg4!qdamw3PH}Lnvc2dv#ro$r3myOk`Fc z)t`oJ@t}t0s7HCb1bhdXDH#Yvc>Ky_PQ$JWVBE%}g>&E+yi*VcttuMoT$Y9~ubrO1 z48C#B7DIzGHod4w92;ROG3gB7kI=iDz{#x$SHapUY2?GyK!0N+-#@7&WV|#maM58x z0rnX``P*9A;4@N#tWBYD4jPZeW7NJYk?7x^&bX@o?lfe1bT|v$t85OS<4Uld?3X&J zUd9N1NeU9M=jw5;q(T|4W#Vz)g3?$GW6TJ&HUA72YoRWy+J)+oU6%KoQtuU;z#yq} z)nUN%mp&k;i3>>ukr-L+k!Kcww+VV^x!diTp65=7-uvdwNt(1(admcI%2y8j-b{PP zs4HkpH61K9@pvY_RcLmrU`8_$RXy?J?t=T)VYI7S_8*^Z-$lugPzEl#Uvq%VnAvNE zZpGjcayb>0fC%-vPMEIs;PF&B-tmSOn$bkHc$2SHQtU<8RB5xvakAR;7kG2-2;s{d z(yjQ`_=xm(n;Wgxi*kdUpZC;`9dQ})XPbM-SbqS9f`(wR>xmVLTHC0?8xhp0Gr#^c zrb^dG@ZjS0{+VVM*1A&Zqv%ksk7j#^__q@5lSd`uhbq>7%5n=sXE!C#ZXal9wm%x* zy%p&Wkn^s-{I%$+u_QDvU4dIPur;|F7^{;Hp(!gdd{DCBcIu|{8B8IQ`MYP3@FBpj z?~es@ngDtH(>z&#;UW~}9e@f^sL^-us!*3>h95xIdbX-_dk~cxrD+t*8fFHU@FN)f zue1ne{n#JuTe{qZ%lA8d(#v+pKNnF9RIW-)&QfZFiKZqIKg#ih+13nYiX~+qn)*fQ;pD=_cd|P!Se=7TpQ0Af`HYm~@Y#1%`bv`_`+!8(e&;e}#(v@%*FA@fXwb zm#ein4m)I?1e_vZJV?5PAvg#B%^as?amZWmJ2dGhawFeevQvLl z^qed3%{O!epdZd^tvpFPWK%srX~79MABc_36QSl`Jw_odjC!7Z{1ZFKmjipReh*zQ z`b7JUeJoe-*zebf7kD>*^e}(hk=;78ia5t}MpCRBO?7<|B7264!a*4EBP9XN@N1Dt zb;2obX!_k&92%hfefX}?*o(TjGW$24h|OpHTuhQzx+UJ2B{PYRH4L^>VL(gkp;m!< zyR*XSM)f6ndYf@c#y)49il6t~0$aZBXuJ37W1Hn0L>@2K8+gJRv5c?ho9m%=6BBBk zQ>$ICyZ;A)hM+ev$!N#VFdwg?95YOQC~dN{scaW&Z9e8Kx&kV~&`D8zCLSE#%jK8g=1tmxun zD=fi)T%Ae^F4$6G5=#c*I3^7GZur*!ud&gWSGL;RHx0)x-Ui_}o^R{5=2aKfW{2>H zh3MhMMZ`$170wcY6)K>@N0n^9gp3HKrtS`VL78yQD)7NFj8|-9gxH5oJGHbaKju=! z(FJ$R2k+9}TA~^{@B{hRjBL0GL}o0A20_kfVSrQ(9%nIX=+w~gtARP^prt?Iv*mW@ zh~{G2(om)tPM_slOdP2#21Ro%OxG%%ZJX5Thlpln-w~6qS)r9^2tb8)AQF6;iIwEq zl4=|*IaQ%m0(D_B9S4dau^;rg9^ijcUI#v!*D@$!&QCsCNLz-m)i(5}>a7~eR=f+* z(0E0Gxt8pFF$3csIVRGg3y>PVQ>=tkXB$>ihjl3m}!mdV@?3jME00n+ipNKGG>kIwbH|ytiRv_ zs;rU;S>d(KuLc4B-SQJT%I^=RQD(yeV+umzxs}7z5s6_CH~)D;R54SxXy%b`*0JVR zZ_Ql8xnZ_-zg`^9ECQ1S`Z;SOl^AVUQRw7?bU5R6CvO!62{OeNl{D zKD(lDs2E03W(+agjTWICOggtBDqr%ld2RLrzuk*-ONLgWM8z9ggETxYI0LP9IdE!_ z2E@!w?oca@suRhufi~zQj0j4UKR}U{ix6a#P+QZ|6RDc=%E*K!uEDL(3v@Obut?Ta z3q2-!*jvPMaeEtAlqMPp#e-$fANGq3wI`!AA{zNAmkCl5iNwv4o2Z?PvxSo+BFp00O0ch#FlkHOP9{`^eqDdR~I_QYyv8hTD()RVtkd+oU3y$k)rI6f#WUCpg!ydAiLGS}rMym_S-^vwlh*uP1a7-&niS-Ald`%u0B`#dxF zlef)_V?+Y{Lmo*kX$YB|W&m3QC}+l{^yKKIU8%x^IBma;Sre}9#|ys%8PD3Wt@;wC z=}|(_9|s@xbbQPOhNM9w`>qy2Nv=v2+aEvZN7p8mNcRH2#i%A#`IIA|H;12sgXdF0 znrGYFW$|yFnl=WOzc&;+*UvRbPog-!7Yz+L5{7X7SfVKs9$Oc&=yY%Lu|{=Nr%1X} zM~SG+kpsA(e88$fmnfPftPeko65(UwvQlq6DPJ4wO5G86H8f&3)!$8c?t|nQ z=Wg@3*<;VSB<(4wx2`X5T)hhe&xUa5Ad%%x1TIF7emW#ZHU<1$m@DwgYyc zd>4)%!DG7=Ma?Gi3g-~*bVqUn?uH}3A7nC~U{ssV7LLOfU2oB#9%1~O@?mLH zv#&0h`iVR`X(~^lRj6WE%8vpx*u=#DQr@ z{0H5q5jBVtTJ>wmNW8_QOLFRZ-yB|{pJcYd_t?jwQiDk^g;lM$;0&gm`<2T8!C&U+ zKb!jO;Anm`U5P*TAu7$D%h3#YFy}vwOjJnETVxo0yDV)8(6|x;>o;#CatGH1OKkzw zK1kWaPs(XhWGkb?0OTVw2CI4eVnFc)^KdyPro-q{hcgPk9In`WG?f&2j>uHoxj|?c z3}H>xDl`~+4ohLYz$}QhK2{S?>OD7=MyMD;x&E|#dALMcZ+a}W4mz!}Rih-|UTCEA zD|opGaT+zd>g9Ye&)c_$LTWPDvAV3}87$>gdFFUslU{&^uhJ=bC0z)zuf}Np6o-W6 z*kTE<^^W1&NPl2*2Hdq+fFdbZGm(;@9D3Qov|^9!;!Bt1fFtjzc?EJ#1*7{R?hmsV z*&$g@?3&gHL9tSIfEAR?jcCVmLgM1CAZ`a;3YHJ4Pe32oRwmyRr^QGDB1qhV9f*|; z(DvDUWOQ&u`Ua;%WuC`eIar9A|Jbka@PTf~tV}8EF@*z%8vuQj-x3fn`$GN5*HwAM zOc>Cj4`y~jOP*3u>a=t$iW;<7)pVkoS;b4tkUbn6a*@y__%zr}1j^O5(oT8PskD_8 zR>=H3nRW^up57zzoVAHZ~ePN0QE z=*(PG8`|z33?xNVKl*G^eX08=)dqjEiF8WxzV|2itp5*?ejaMfKR@e4LFID%%k3G9SRwee!m+=Q5Z&1Nzm?Xs(1HyLTvOgx^x~`v+)Uv ziM(=_qcb@p#Z|;kZS1z1v2ZTCXEXM*t>Ne8gJt-`?9+zv4egWkxNHBaL>LD9@2C1# zF~^rPhm8Fu2JiiPm*IT-aL}-DeXp1HpP>N&dvd`4>#*gCLH0?_*?2%t2nbHz6hcB^ z3Ni;1JDUm{7e5C(KO09%HzAM$k&O$a!Y0MeA;-aUTuy|IO%gQ2mLsl)#md0F|`I4M|CdWnIg&0@sB7>Iv- zc=G}&(D`4to+3vM{5N!@1ds#8kUwnlWd!#2+&}<8BxQ~q$VB>&>OTVzBH%v{@)S}E zAi=+JL68DS2od<4qDcXy|5q{bkD}{2!TN8GBN+9jO z*WpwjtqfigP+m!pfe=`L{|$C2xs)H4)R&Y_N+8p}x1Rl@Sa?Z6paT9I*;4*#3uH{u zqXK^V-@bq*Da9YxWdF>g;lW}S`eSMVkN^PEe@+9C`I>S;_1_agq6QN3ue|{Pj!y2@ zrjE>RHr5I<|1}giIJke}uKa&4@c-M9A4ZBHHIP8{pS%89Y#dks;Ggmlu>a$D#03KW mS;+ri-&De)aU36m%!2{|u>YeC0Kl2@iyBA=Q%3e-1^gc^PZG8O diff --git a/doc/OpenSTA.pdf b/doc/OpenSTA.pdf index 8e7a3b33a207efc3da5cb9b3f9d085d8da858a03..69304a8c25a532d1af64ea83a39673fd543fabe6 100644 GIT binary patch delta 30628 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 Z`3E@o1#It+;3yoF;?atVY8qa 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

6feFgg&g5UK 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 diff --git a/graph/Delay.hh b/graph/Delay.hh index 6294695d..03b7e46a 100644 --- a/graph/Delay.hh +++ b/graph/Delay.hh @@ -20,7 +20,7 @@ #define STA_DELAY_H #if (SSTA == 1) - // Delays are Normal PDFs with early/late sigma. + // Delays are Normal PDFs. #include "DelayNormal1.hh" #elif (SSTA == 2) // Delays are Normal PDFs with early/late sigma. diff --git a/graph/DelayNormal1.cc b/graph/DelayNormal1.cc index 1c52a889..975b1812 100644 --- a/graph/DelayNormal1.cc +++ b/graph/DelayNormal1.cc @@ -52,20 +52,20 @@ delayInitValue(const MinMax *min_max) Delay::Delay() : mean_(0.0), - sigma2_{0.0} + sigma2_(0.0) { } Delay::Delay(float mean) : mean_(mean), - sigma2_{0.0} + sigma2_(0.0) { } Delay::Delay(float mean, float sigma2) : mean_(mean), - sigma2_{sigma2} + sigma2_(sigma2) { } @@ -155,7 +155,7 @@ void Delay::operator-=(const Delay &delay) { mean_ -= delay.mean_; - sigma2_ -= delay.sigma2_; + sigma2_ += delay.sigma2_; } bool @@ -348,11 +348,10 @@ operator/(float delay1, Delay operator*(const Delay &delay1, - float scale) + float delay2) { - float scale2 = square(scale); - return Delay(delay1.mean() * scale, - delay1.sigma2() * scale2); + return Delay(delay1.mean() * delay2, + delay1.sigma2() * delay2); } float diff --git a/graph/DelayNormal2.cc b/graph/DelayNormal2.cc index b18c470f..d4b6978b 100644 --- a/graph/DelayNormal2.cc +++ b/graph/DelayNormal2.cc @@ -174,8 +174,8 @@ void Delay::operator-=(const Delay &delay) { mean_ -= delay.mean_; - sigma2_[early_index] -= delay.sigma2_[early_index]; - sigma2_[late_index] -= delay.sigma2_[late_index]; + sigma2_[early_index] += delay.sigma2_[early_index]; + sigma2_[late_index] += delay.sigma2_[late_index]; } bool @@ -374,12 +374,11 @@ operator/(float delay1, Delay operator*(const Delay &delay1, - float scale) + float delay2) { - float scale2 = square(scale); - return Delay(delay1.mean() * scale, - delay1.sigma2Early() * scale2, - delay1.sigma2Late() * scale2); + return Delay(delay1.mean() * delay2, + delay1.sigma2()Early * delay2, + delay1.sigma2Late() * delay2); } float diff --git a/liberty/Liberty.cc b/liberty/Liberty.cc index 24aba0e8..5a267ba8 100644 --- a/liberty/Liberty.cc +++ b/liberty/Liberty.cc @@ -878,9 +878,6 @@ LibertyCell::~LibertyCell() pg_port_map_.deleteContents(); } -// Multiple timing arc sets (buses bits or a related_ports list) -// can share the same TimingAttrs values (model, cond, and sdf_conds), -// so collect them into a set so they are only deleted once. void LibertyCell::deleteTimingArcAttrs() { @@ -1176,6 +1173,7 @@ LibertyCell::makeTimingArcMap(Report *) // match->from()->name(), // match->to()->name(), // match->role()->asString()); + delete arc_set; } else // Shift arc sets down to fill holes left by removed duplicates. diff --git a/search/Power.cc b/search/Power.cc index 90f8650e..b56b7fba 100644 --- a/search/Power.cc +++ b/search/Power.cc @@ -17,23 +17,30 @@ #include // max #include "Machine.hh" #include "Debug.hh" +#include "EnumNameMap.hh" #include "Units.hh" #include "Transition.hh" #include "MinMax.hh" +#include "Clock.hh" +#include "TimingRole.hh" #include "Liberty.hh" #include "InternalPower.hh" #include "LeakagePower.hh" +#include "Sequential.hh" #include "TimingArc.hh" #include "FuncExpr.hh" #include "PortDirection.hh" #include "Network.hh" #include "Graph.hh" -#include "Sim.hh" #include "Corner.hh" +#include "Sdc.hh" #include "DcalcAnalysisPt.hh" #include "GraphDelayCalc.hh" #include "PathVertex.hh" -#include "Clock.hh" +#include "Levelize.hh" +#include "Sim.hh" +#include "Search.hh" +#include "Bfs.hh" #include "Power.hh" // Related liberty not supported: @@ -54,23 +61,65 @@ typedef Map SupplySumCounts; Power::Power(Sta *sta) : StaState(sta), - sta_(sta), - default_signal_toggle_rate_(.1) + global_activity_{0.0, 0.0, PwrActivityOrigin::unknown}, + input_activity_{0.1, 0.5, PwrActivityOrigin::input}, + default_activity_(.1), + activities_valid_(false) { } -float -Power::defaultSignalToggleRate() -{ - return default_signal_toggle_rate_; -} - void -Power::setDefaultSignalToggleRate(float rate) +Power::setGlobalActivity(float activity, + float duty) { - default_signal_toggle_rate_ = rate; + global_activity_.set(activity, duty, PwrActivityOrigin::global); + activities_valid_ = false; +} + +void +Power::setInputActivity(float activity, + float duty) +{ + input_activity_.set(activity, duty, PwrActivityOrigin::input); + activities_valid_ = false; } +void +Power::setInputPortActivity(const Port *input_port, + float activity, + float duty) +{ + Instance *top_inst = network_->topInstance(); + const Pin *pin = network_->findPin(top_inst, input_port); + if (pin) { + activity_map_[pin] = {activity, duty, PwrActivityOrigin::user}; + activities_valid_ = false; + } +} + +PwrActivity & +Power::pinActivity(const Pin *pin) +{ + return activity_map_[pin]; +} + +void +Power::setPinActivity(const Pin *pin, + float activity, + float duty, + PwrActivityOrigin origin) +{ + activity_map_[pin] = {activity, duty, origin}; + activities_valid_ = false; +} + +void +Power::setPinActivity(const Pin *pin, + PwrActivity &activity) +{ + activity_map_[pin] = activity; + activities_valid_ = false; +} void Power::power(const Corner *corner, @@ -86,6 +135,8 @@ Power::power(const Corner *corner, combinational.clear(); macro.clear(); pad.clear(); + + preamble(); LeafInstanceIterator *inst_iter = network_->leafInstanceIterator(); while (inst_iter->hasNext()) { Instance *inst = inst_iter->next(); @@ -107,8 +158,6 @@ Power::power(const Corner *corner, delete inst_iter; } -//////////////////////////////////////////////////////////////// - void Power::power(const Instance *inst, const Corner *corner, @@ -116,10 +165,268 @@ Power::power(const Instance *inst, PowerResult &result) { LibertyCell *cell = network_->libertyCell(inst); - if (cell) + if (cell) { + preamble(); power(inst, cell, corner, result); + } } +//////////////////////////////////////////////////////////////// + +class ActivitySrchPred : public SearchPred +{ +public: + explicit ActivitySrchPred(const StaState *sta); + virtual bool searchFrom(const Vertex *from_vertex); + virtual bool searchThru(Edge *edge); + virtual bool searchTo(const Vertex *); + +protected: + const StaState *sta_; +}; + +ActivitySrchPred::ActivitySrchPred(const StaState *sta) : + sta_(sta) +{ +} + +bool +ActivitySrchPred::searchFrom(const Vertex *) +{ + return true; +} + +bool +ActivitySrchPred::searchThru(Edge *edge) +{ + auto role = edge->role(); + return !(edge->isDisabledLoop() + || role->isTimingCheck() + || role == TimingRole::regClkToQ()); +} + +bool +ActivitySrchPred::searchTo(const Vertex *) +{ + return true; +} + +//////////////////////////////////////////////////////////////// + +class PropActivityVisitor : public VertexVisitor, StaState +{ +public: + PropActivityVisitor(Power *power, + BfsFwdIterator *bfs); + virtual VertexVisitor *copy(); + virtual void visit(Vertex *vertex); + +private: + Power *power_; + BfsFwdIterator *bfs_; +}; + +PropActivityVisitor::PropActivityVisitor(Power *power, + BfsFwdIterator *bfs) : + StaState(power), + power_(power), + bfs_(bfs) +{ +} + +VertexVisitor * +PropActivityVisitor::copy() +{ + return new PropActivityVisitor(power_, bfs_); +} + +PwrActivity +Power::evalActivity(FuncExpr *expr, + const Instance *inst) +{ + switch (expr->op()) { + case FuncExpr::op_port: { + Pin *pin = network_->findPin(inst, expr->port()->name()); + if (pin) + return pinActivity(pin); + } + case FuncExpr::op_not: { + PwrActivity activity1 = evalActivity(expr->left(), inst); + return PwrActivity(activity1.activity(), + 1.0 - activity1.duty(), + PwrActivityOrigin::propagated); + } + case FuncExpr::op_or: { + PwrActivity activity1 = evalActivity(expr->left(), inst); + PwrActivity activity2 = evalActivity(expr->right(), inst); + float p1 = 1.0 - activity1.duty(); + float p2 = 1.0 - activity2.duty(); + return PwrActivity(activity1.activity() * p2 + + activity2.activity() * p1, + 1.0 - p1 * p2, + PwrActivityOrigin::propagated); + } + case FuncExpr::op_and: { + PwrActivity activity1 = evalActivity(expr->left(), inst); + PwrActivity activity2 = evalActivity(expr->right(), inst); + float p1 = activity1.duty(); + float p2 = activity2.duty(); + return PwrActivity(activity1.activity() * p2 + activity2.activity() * p1, + p1 * p2, + PwrActivityOrigin::propagated); + } + case FuncExpr::op_xor: { + PwrActivity activity1 = evalActivity(expr->left(), inst); + PwrActivity activity2 = evalActivity(expr->right(), inst); + float p1 = activity1.duty() * (1.0 - activity2.duty()); + float p2 = activity2.duty() * (1.0 - activity1.duty()); + return PwrActivity(activity1.activity() * p1 + activity2.activity() * p2, + p1 + p2, + PwrActivityOrigin::propagated); + } + case FuncExpr::op_one: + return PwrActivity(0.0, 1.0, PwrActivityOrigin::constant); + case FuncExpr::op_zero: + return PwrActivity(0.0, 0.0, PwrActivityOrigin::constant); + } + return PwrActivity(); +} + +void +PropActivityVisitor::visit(Vertex *vertex) +{ + auto pin = vertex->pin(); + debugPrint1(debug_, "power", 3, "activity %s\n", + vertex->name(network_)); + if (network_->isLoad(pin)) { + VertexInEdgeIterator edge_iter(vertex, graph_); + if (edge_iter.hasNext()) { + Edge *edge = edge_iter.next(); + if (edge->isWire()) { + Vertex *from_vertex = edge->from(graph_); + const Pin *from_pin = from_vertex->pin(); + PwrActivity &from_activity = power_->pinActivity(from_pin); + PwrActivity to_activity(from_activity.activity(), + from_activity.duty(), + PwrActivityOrigin::propagated); + power_->setPinActivity(pin, to_activity); + } + } + } + if (network_->isDriver(pin)) { + LibertyPort *port = network_->libertyPort(pin); + if (port) { + FuncExpr *func = port->function(); + Instance *inst = network_->instance(pin); + PwrActivity activity = power_->evalActivity(func, inst); + power_->setPinActivity(pin, activity); + } + } + bfs_->enqueueAdjacentVertices(vertex); +} + +//////////////////////////////////////////////////////////////// + +void +Power::preamble() +{ + ensureActivities(); +} + +void +Power::ensureActivities() +{ + if (!global_activity_.isSet()) { + if (!activities_valid_) { + ActivitySrchPred activity_srch_pred(this); + BfsFwdIterator bfs(BfsIndex::other, &activity_srch_pred, this); + seedActivities(bfs); + PropActivityVisitor visitor(this, &bfs); + bfs.visit(levelize_->maxLevel(), &visitor); + // Propagate activiities across register D->Q. + seedRegOutputActivities(bfs); + bfs.visit(levelize_->maxLevel(), &visitor); + activities_valid_ = true; + } + } +} + +void +Power::seedActivities(BfsFwdIterator &bfs) +{ + Instance *top_inst = network_->topInstance(); + InstancePinIterator *pin_iter = network_->pinIterator(top_inst); + while (pin_iter->hasNext()) { + const Pin *pin = pin_iter->next(); + if (network_->direction(pin)->isAnyInput()) { + // Clock activities are baked in. + if (!sdc_->isClock(pin)) { + PwrActivity &activity = pinActivity(pin); + PwrActivityOrigin origin = activity.origin(); + // Default inputs without explicit activities to the input default. + if (origin != PwrActivityOrigin::user) + setPinActivity(pin, input_activity_); + Vertex *vertex = graph_->pinDrvrVertex(pin); + bfs.enqueueAdjacentVertices(vertex); + } + } + } + delete pin_iter; +} + +void +Power::seedRegOutputActivities(BfsFwdIterator &bfs) +{ + LeafInstanceIterator *leaf_iter = network_->leafInstanceIterator(); + while (leaf_iter->hasNext()) { + auto inst = leaf_iter->next(); + auto cell = network_->libertyCell(inst); + if (cell) { + LibertyCellSequentialIterator seq_iter(cell); + while (seq_iter.hasNext()) { + Sequential *seq = seq_iter.next(); + seedRegOutputActivities(inst, seq, seq->output(), false); + seedRegOutputActivities(inst, seq, seq->outputInv(), true); + // Enqueue register output pins with functions that reference + // the sequential internal pins (IQ, IQN). + InstancePinIterator *pin_iter = network_->pinIterator(inst); + while (pin_iter->hasNext()) { + auto pin = pin_iter->next(); + auto port = network_->libertyPort(pin); + auto func = port->function(); + if (func) { + Vertex *vertex = graph_->pinDrvrVertex(pin); + if (func->port() == seq->output() + || func->port() == seq->outputInv()) + bfs.enqueue(vertex); + } + } + delete pin_iter; + } + } + } + delete leaf_iter; +} + +void +Power::seedRegOutputActivities(Instance *reg, + Sequential *seq, + LibertyPort *output, + bool invert) +{ + const Pin *pin = network_->findPin(reg, output); + if (pin) { + PwrActivity activity = evalActivity(seq->data(), reg); + if (invert) + activity.set(activity.activity(), + 1.0 - activity.duty(), + activity.origin()); + setPinActivity(pin, activity); + } +} + +//////////////////////////////////////////////////////////////// + void Power::power(const Instance *inst, LibertyCell *cell, @@ -137,13 +444,11 @@ Power::power(const Instance *inst, float load_cap = to_port->direction()->isAnyOutput() ? graph_delay_calc_->loadCap(to_pin, TransRiseFall::rise(), dcalc_ap) : 0.0; - float activity1; - bool is_clk; - activity(to_pin, inst_clk, activity1, is_clk); + PwrActivity activity = findActivity(to_pin, inst_clk); if (to_port->direction()->isAnyOutput()) - findSwitchingPower(cell, to_port, activity1, load_cap, + findSwitchingPower(cell, to_port, activity, load_cap, dcalc_ap, result); - findInternalPower(inst, cell, to_port, activity1, + findInternalPower(inst, cell, to_port, activity, load_cap, dcalc_ap, result); } delete pin_iter; @@ -157,10 +462,8 @@ Power::findInstClk(const Instance *inst) InstancePinIterator *pin_iter = network_->pinIterator(inst); while (pin_iter->hasNext()) { const Pin *pin = pin_iter->next(); - const Clock *clk = nullptr; - bool is_clk; - findClk(pin, clk, is_clk); - if (is_clk) + const Clock *clk = findClk(pin); + if (clk) inst_clk = clk; } delete pin_iter; @@ -171,7 +474,7 @@ void Power::findInternalPower(const Instance *inst, LibertyCell *cell, const LibertyPort *to_port, - float activity, + PwrActivity &activity, float load_cap, const DcalcAnalysisPt *dcalc_ap, // Return values. @@ -183,10 +486,9 @@ Power::findInternalPower(const Instance *inst, cell->name()); SupplySumCounts supply_sum_counts; const Pvt *pvt = dcalc_ap->operatingConditions(); - float duty = 1.0; - debugPrint2(debug_, "power", 2, " cap = %s duty = %.1f\n", - units_->capacitanceUnit()->asString(load_cap), - duty); + debugPrint1(debug_, "power", 2, " cap = %s\n", + units_->capacitanceUnit()->asString(load_cap)); + debugPrint0(debug_, "power", 2, " when act/ns duty energy power\n"); LibertyCellInternalPowerIterator pwr_iter(cell); while (pwr_iter.hasNext()) { InternalPower *pwr = pwr_iter.next(); @@ -197,33 +499,37 @@ Power::findInternalPower(const Instance *inst, from_port = to_port; const Pin *from_pin = network_->findPin(inst, from_port); Vertex *from_vertex = graph_->pinLoadVertex(from_pin); + FuncExpr *when = pwr->when(); + PwrActivity when_activity = when ? evalActivity(when, inst) + : findActivity(from_pin); + float duty = when_activity.duty(); + float port_energy = 0.0; float port_internal = 0.0; TransRiseFallIterator tr_iter; while (tr_iter.hasNext()) { TransRiseFall *to_tr = tr_iter.next(); // Should use unateness to find from_tr. TransRiseFall *from_tr = to_tr; - float slew = delayAsFloat(sta_->vertexSlew(from_vertex, - from_tr, dcalc_ap)); - float energy; - if (from_port) - energy = pwr->power(to_tr, pvt, slew, load_cap); - else - energy = pwr->power(to_tr, pvt, 0.0, 0.0); - float tr_internal = energy * activity * duty; + float slew = delayAsFloat(graph_->slew(from_vertex, + from_tr, + dcalc_ap->index())); + float tr_energy = (from_port) + ? pwr->power(to_tr, pvt, slew, load_cap) + : pwr->power(to_tr, pvt, 0.0, 0.0); + float tr_internal = tr_energy * activity.activity(); + port_energy += tr_energy; port_internal += tr_internal; - debugPrint5(debug_, "power", 2, " %s -> %s %s %s (%s)\n", - from_port->name(), - to_tr->shortName(), - to_port->name(), - pwr->when() ? pwr->when()->asString() : "", - related_pg_pin ? related_pg_pin : "(no pg_pin)"); - debugPrint4(debug_, "power", 2, " slew = %s activity = %.2f/ns energy = %.5g pwr = %.5g\n", - units_->timeUnit()->asString(slew), - activity * 1e-9, - energy, - tr_internal); } + debugPrint8(debug_, "power", 2, " %s -> %s %s %.2f %.2f %9.2e %9.2e %s\n", + from_port->name(), + to_port->name(), + pwr->when() ? pwr->when()->asString() : " ", + activity.activity() * 1e-9, + duty, + port_energy, + port_internal, + related_pg_pin ? related_pg_pin : "no pg_pin"); + // Sum/count internal power arcs by supply to average across conditions. SumCount &supply_sum_count = supply_sum_counts[related_pg_pin]; // Average rise/fall internal power. @@ -239,7 +545,9 @@ Power::findInternalPower(const Instance *inst, internal += supply_internal / (supply_count > 0 ? supply_count : 1); } - debugPrint1(debug_, "power", 2, " internal = %.5g\n", internal); + debugPrint2(debug_, "power", 2, " %s internal = %.3e\n", + to_port->name(), + internal); result.setInternal(result.internal() + internal); } @@ -303,43 +611,62 @@ Power::findLeakagePower(const Instance *, void Power::findSwitchingPower(LibertyCell *cell, const LibertyPort *to_port, - float activity, + PwrActivity &activity, float load_cap, const DcalcAnalysisPt *dcalc_ap, // Return values. PowerResult &result) { float volt = voltage(cell, to_port, dcalc_ap); - float switching = .5 * load_cap * volt * volt * activity; + float switching = .5 * load_cap * volt * volt * activity.activity(); debugPrint5(debug_, "power", 2, "switching %s/%s activity = %.2e volt = %.2f %.3e\n", cell->name(), to_port->name(), - activity, + activity.activity(), volt, switching); volt = voltage(cell, to_port, dcalc_ap); result.setSwitching(result.switching() + switching); } -void -Power::activity(const Pin *pin, - const Clock *inst_clk, - // Return values. - float &activity, - bool &is_clk) +PwrActivity +Power::findActivity(const Pin *pin) { - const Clock *clk = inst_clk; - findClk(pin, clk, is_clk); - activity = 0.0; + const Instance *inst = network_->instance(pin); + const Clock *inst_clk = findInstClk(inst); + return findActivity(pin, inst_clk); +} + +PwrActivity +Power::findActivity(const Pin *pin, + const Clock *inst_clk) +{ + const Clock *clk = findClk(pin); + if (clk == nullptr) + clk = inst_clk; if (clk) { float period = clk->period(); if (period > 0.0) { - if (is_clk) - activity = 2.0 / period; - else - activity = default_signal_toggle_rate_ / period; + Vertex *vertex = graph_->pinLoadVertex(pin); + if (search_->isClock(vertex)) + return PwrActivity(2.0 / period, 0.5, PwrActivityOrigin::clock); + else if (global_activity_.isSet()) + return PwrActivity(global_activity_.activity() / period, + 0.5, PwrActivityOrigin::global); + else { + if (activity_map_.hasKey(pin)) { + PwrActivity &activity = activity_map_[pin]; + if (activity.origin() != PwrActivityOrigin::unknown) + return PwrActivity(activity.activity() / period, + activity.duty(), + activity.origin()); + } + return PwrActivity(default_activity_ / period, + 0.5, PwrActivityOrigin::defaulted); + } } } + return PwrActivity(); } float @@ -370,13 +697,10 @@ Power::voltage(LibertyCell *cell, return 0.0; } -void -Power::findClk(const Pin *to_pin, - // Return values. - const Clock *&clk, - bool &is_clk) +const Clock * +Power::findClk(const Pin *to_pin) { - is_clk = false; + const Clock *clk = nullptr; Vertex *to_vertex = graph_->pinDrvrVertex(to_pin); VertexPathIterator path_iter(to_vertex, this); while (path_iter.hasNext()) { @@ -386,9 +710,8 @@ Power::findClk(const Pin *to_pin, && (clk == nullptr || path_clk->period() < clk->period())) clk = path_clk; - if (path->isClock(this)) - is_clk = true; } + return clk; } //////////////////////////////////////////////////////////////// @@ -440,4 +763,54 @@ PowerResult::incr(PowerResult &result) leakage_ += result.leakage_; } +//////////////////////////////////////////////////////////////// + +static EnumNameMap pwr_activity_origin_map = + {{PwrActivityOrigin::global, "global"}, + {PwrActivityOrigin::input, "input"}, + {PwrActivityOrigin::user, "user"}, + {PwrActivityOrigin::propagated, "propagated"}, + {PwrActivityOrigin::clock, "clock"}, + {PwrActivityOrigin::constant, "constant"}, + {PwrActivityOrigin::defaulted, "defaulted"}, + {PwrActivityOrigin::unknown, "unknown"}}; + +PwrActivity::PwrActivity(float activity, + float duty, + PwrActivityOrigin origin) : + activity_(activity), + duty_(duty), + origin_(origin) +{ +} + +PwrActivity::PwrActivity() : + activity_(0.0), + duty_(0.0), + origin_(PwrActivityOrigin::unknown) +{ +} + +void +PwrActivity::set(float activity, + float duty, + PwrActivityOrigin origin) +{ + activity_ = activity; + duty_ = duty; + origin_ = origin; +} + +bool +PwrActivity::isSet() const +{ + return origin_ != PwrActivityOrigin::unknown; +} + +const char * +PwrActivity::originName() const +{ + return pwr_activity_origin_map.find(origin_); +} + } // namespace diff --git a/search/Power.hh b/search/Power.hh index 45a996ac..052e155c 100644 --- a/search/Power.hh +++ b/search/Power.hh @@ -22,6 +22,46 @@ namespace sta { class PowerResult; +class PwrActivity; +class PropActivityVisitor; +class BfsFwdIterator; + +typedef UnorderedMap PwrActivityMap; + +enum class PwrActivityOrigin +{ + global, + input, + user, + propagated, + clock, + constant, + defaulted, // temporary + unknown +}; + +class PwrActivity +{ +public: + PwrActivity(); + PwrActivity(float activity, + float duty, + PwrActivityOrigin origin); + float activity() const { return activity_; } + float duty() const { return duty_; } + PwrActivityOrigin origin() { return origin_; } + const char *originName() const; + void set(float activity, + float duty, + PwrActivityOrigin origin); + bool isSet() const; + +private: + // In general activity is per clock cycle, NOT per second. + float activity_; + float duty_; + PwrActivityOrigin origin_; +}; // The Power class has access to Sta components directly for // convenience but also requires access to the Sta class member functions. @@ -40,10 +80,27 @@ public: const Corner *corner, // Return values. PowerResult &result); - float defaultSignalToggleRate(); - void setDefaultSignalToggleRate(float rate); + void setGlobalActivity(float activity, + float duty); + void setInputActivity(float activity, + float duty); + void setInputPortActivity(const Port *input_port, + float activity, + float duty); + PwrActivity &pinActivity(const Pin *pin); + void setPinActivity(const Pin *pin, + float activity, + float duty, + PwrActivityOrigin origin); + void setPinActivity(const Pin *pin, + PwrActivity &activity); + // Activity is toggles per second. + PwrActivity findActivity(const Pin *pin); protected: + void preamble(); + void ensureActivities(); + void power(const Instance *inst, LibertyCell *cell, const Corner *corner, @@ -52,7 +109,7 @@ protected: void findInternalPower(const Instance *inst, LibertyCell *cell, const LibertyPort *to_port, - float activity, + PwrActivity &activity, float load_cap, const DcalcAnalysisPt *dcalc_ap, // Return values. @@ -63,28 +120,35 @@ protected: PowerResult &result); void findSwitchingPower(LibertyCell *cell, const LibertyPort *to_port, - float activity, + PwrActivity &activity, float load_cap, const DcalcAnalysisPt *dcalc_ap, // Return values. PowerResult &result); const Clock *findInstClk(const Instance *inst); - void findClk(const Pin *to_pin, - // Return values. - const Clock *&clk, - bool &is_clk); - void activity(const Pin *pin, - const Clock *inst_clk, - // Return values. - float &activity, - bool &is_clk); + const Clock *findClk(const Pin *to_pin); + PwrActivity findActivity(const Pin *pin, + const Clock *inst_clk); float voltage(LibertyCell *cell, const LibertyPort *port, const DcalcAnalysisPt *dcalc_ap); + void seedActivities(BfsFwdIterator &bfs); + void seedRegOutputActivities(BfsFwdIterator &bfs); + void seedRegOutputActivities(Instance *reg, + Sequential *seq, + LibertyPort *output, + bool invert); + PwrActivity evalActivity(FuncExpr *expr, + const Instance *inst); private: - Sta *sta_; - float default_signal_toggle_rate_; + PwrActivity global_activity_; + PwrActivity input_activity_; + float default_activity_; + PwrActivityMap activity_map_; + bool activities_valid_; + + friend class PropActivityVisitor; }; class PowerResult diff --git a/search/Property.cc b/search/Property.cc index 5d38021b..27e78b3e 100644 --- a/search/Property.cc +++ b/search/Property.cc @@ -29,7 +29,7 @@ #include "PathEnd.hh" #include "PathExpanded.hh" #include "PathRef.hh" -#include "Property.hh" +#include "Power.hh" #include "Sta.hh" #include "Property.hh" @@ -208,6 +208,12 @@ PropertyValue::PropertyValue(PathRefSeq *value) : { } +PropertyValue::PropertyValue(PwrActivity *value) : + type_(type_pwr_activity), + pwr_activity_(*value) +{ +} + PropertyValue::PropertyValue(const PropertyValue &value) : type_(value.type_) { @@ -253,6 +259,9 @@ PropertyValue::PropertyValue(const PropertyValue &value) : case Type::type_path_refs: path_refs_ = value.path_refs_ ? new PathRefSeq(*value.path_refs_) : nullptr; break; + case Type::type_pwr_activity: + pwr_activity_ = value.pwr_activity_; + break; } } @@ -299,12 +308,17 @@ PropertyValue::PropertyValue(PropertyValue &&value) : break; case Type::type_clks: clks_ = value.clks_; + // Steal the value. value.clks_ = nullptr; break; case Type::type_path_refs: path_refs_ = value.path_refs_; + // Steal the value. value.clks_ = nullptr; break; + case Type::type_pwr_activity: + pwr_activity_ = value.pwr_activity_; + break; } } @@ -374,6 +388,9 @@ PropertyValue::operator=(const PropertyValue &value) case Type::type_path_refs: path_refs_ = value.path_refs_ ? new PathRefSeq(*value.path_refs_) : nullptr; break; + case Type::type_pwr_activity: + pwr_activity_ = value.pwr_activity_; + break; } return *this; } @@ -428,6 +445,9 @@ PropertyValue::operator=(PropertyValue &&value) path_refs_ = value.path_refs_; value.clks_ = nullptr; break; + case Type::type_pwr_activity: + pwr_activity_ = value.pwr_activity_; + break; } return *this; } @@ -534,6 +554,12 @@ getProperty(const Port *port, return PropertyValue(network->name(port)); else if (stringEqual(property, "direction")) return PropertyValue(network->direction(port)->name()); + else if (stringEqual(property, "activity")) { + const Instance *top_inst = network->topInstance(); + const Pin *pin = network->findPin(top_inst, port); + PwrActivity activity = sta->power()->findActivity(pin); + return PropertyValue(&activity); + } else if (stringEqual(property, "actual_fall_transition_min")) return portSlewProperty(port, TransRiseFall::fall(), MinMax::min(), sta); @@ -637,6 +663,10 @@ getProperty(const Pin *pin, sta->clocks(pin, clks); return PropertyValue(&clks); } + else if (stringEqual(property, "activity")) { + PwrActivity activity = sta->power()->findActivity(pin); + return PropertyValue(&activity); + } else if (stringEqual(property, "max_fall_slack")) return pinSlackProperty(pin, TransRiseFall::fall(), MinMax::max(), sta); diff --git a/search/Property.hh b/search/Property.hh index 2e906fbb..cdaeee3b 100644 --- a/search/Property.hh +++ b/search/Property.hh @@ -28,6 +28,7 @@ namespace sta { using std::string; class Sta; +class PwrActivity; class PropertyValue { @@ -36,7 +37,7 @@ public: type_liberty_library, type_liberty_cell, type_library, type_cell, type_instance, type_pin, type_pins, type_net, - type_clk, type_clks, type_path_refs }; + type_clk, type_clks, type_path_refs, type_pwr_activity }; PropertyValue(); PropertyValue(const char *value); PropertyValue(string &value); @@ -54,6 +55,7 @@ public: PropertyValue(ClockSeq *value); PropertyValue(ClockSet *value); PropertyValue(PathRefSeq *value); + PropertyValue(PwrActivity *value); // Copy constructor. PropertyValue(const PropertyValue &props); // Move constructor. @@ -73,6 +75,7 @@ public: Clock *clock() const { return clk_; } ClockSeq *clocks() const { return clks_; } PathRefSeq *pathRefs() const { return path_refs_; } + PwrActivity pwrActivity() const { return pwr_activity_; } // Copy assignment. PropertyValue &operator=(const PropertyValue &); // Move assignment. @@ -94,6 +97,7 @@ private: Clock *clk_; ClockSeq *clks_; PathRefSeq *path_refs_; + PwrActivity pwr_activity_; }; }; diff --git a/tcl/Power.tcl b/tcl/Power.tcl index 28035766..765c852b 100644 --- a/tcl/Power.tcl +++ b/tcl/Power.tcl @@ -33,7 +33,7 @@ proc_redirect report_power { parse_key_args "report_power" args keys {-instances -corner -digits} flags {} 1 - if [info exists keys(-digits)] { + if { [info exists keys(-digits)] } { set digits $keys(-digits) check_positive_integer "-digits" $digits } else { @@ -191,22 +191,55 @@ proc report_power_inst { inst power_result field_width digits } { ################################################################ -set ::power_default_signal_toggle_rate 0.1 +define_cmd_args "set_power_activity" { [-global]\ + [-input]\ + [-input_ports ports]\ + [-pins pins]\ + [-activiity activity]\ + [-duty duty] } -trace variable ::power_default_signal_toggle_rate "rw" \ - sta::trace_power_default_signal_toggle_rate +proc set_power_activity { args } { + parse_key_args "set_power_activity" args \ + keys {-input_ports -pins -activity -duty} \ + flags {-global -input} 1 -proc trace_power_default_signal_toggle_rate { name1 name2 op } { - global power_default_signal_toggle_rate + set activity 0.0 + if { [info exists keys(-activity)] } { + set activity $keys(-activity) + check_float "activity" $activity + if { $activity < 0.0 } { + sta_warn "activity should be 0.0 to 1.0 or 2.0" + } + } + set duty 0.5 + if { [info exists keys(-duty)] } { + set duty $keys(-duty) + check_float "duty" $duty + if { $duty < 0.0 || $duty > 1.0 } { + sta_warn "duty should be 0.0 to 1.0" + } + } - if { $op == "r" } { - set power_default_signal_toggle_rate [power_default_signal_toggle_rate] - } elseif { $op == "w" } { - if { [string is double $power_default_signal_toggle_rate] \ - && $power_default_signal_toggle_rate >= 0.0 } { - set_power_default_signal_toggle_rate $power_default_signal_toggle_rate - } else { - sta_error "power_default_signal_toggle_rate must be a positive float." + if { [info exists flags(-global)] } { + set_power_global_activity $activity $duty + } + if { [info exists flags(-input)] } { + set_power_input_activity $activity $duty + } + if { [info exists keys(-input_ports)] } { + set ports [get_ports_error "input_ports" $keys(-input_ports)] + foreach port $ports { + if { [get_property $port "direction"] == "input" } { + set_power_input_port_activity $port $activity $duty + } + } + } + if { [info exists keys(-pins)] } { + set ports [get_pins_error "pins" $keys(-pins)] + foreach pin $pins { + if { [get_property $pin "direction"] == "input" } { + set_power_pin_activity $pin $activity $duty + } } } } diff --git a/tcl/StaTcl.i b/tcl/StaTcl.i index eec7996f..dabd06ad 100644 --- a/tcl/StaTcl.i +++ b/tcl/StaTcl.i @@ -1619,6 +1619,27 @@ using namespace sta; Tcl_Obj *obj = SWIG_NewInstanceObj(copy, SWIGTYPE_p_PathRef, false); Tcl_ListObjAppendElement(interp, list, obj); } + Tcl_SetObjResult(interp, list); + } + break; + case PropertyValue::Type::type_pwr_activity: { + PwrActivity activity = value.pwrActivity(); + Tcl_Obj *list = Tcl_NewListObj(0, nullptr); + Tcl_Obj *obj; + const char *str; + + str = stringPrintTmp("%.5e", activity.activity()); + obj = Tcl_NewStringObj(str, strlen(str)); + Tcl_ListObjAppendElement(interp, list, obj); + + str = stringPrintTmp("%.3f", activity.duty()); + obj = Tcl_NewStringObj(str, strlen(str)); + Tcl_ListObjAppendElement(interp, list, obj); + + str = activity.originName(); + obj = Tcl_NewStringObj(str, strlen(str)); + Tcl_ListObjAppendElement(interp, list, obj); + Tcl_SetObjResult(interp, list); } break; @@ -4670,16 +4691,35 @@ instance_power(Instance *inst, return floats; } -float -power_default_signal_toggle_rate() +void +set_power_global_activity(float activity, + float duty) { - return Sta::sta()->power()->defaultSignalToggleRate(); + Sta::sta()->power()->setGlobalActivity(activity, duty); } void -set_power_default_signal_toggle_rate(float rate) +set_power_input_activity(float activity, + float duty) { - return Sta::sta()->power()->setDefaultSignalToggleRate(rate); + return Sta::sta()->power()->setInputActivity(activity, duty); +} + +void +set_power_input_port_activity(const Port *input_port, + float activity, + float duty) +{ + return Sta::sta()->power()->setInputPortActivity(input_port, activity, duty); +} + +void +set_power_pin_activity(const Pin *pin, + float activity, + float duty) +{ + return Sta::sta()->power()->setPinActivity(pin, activity, duty, + PwrActivityOrigin::user); } ////////////////////////////////////////////////////////////////