From 6ba6b137dd567d15c2d38ddec4489da3d966b4a8 Mon Sep 17 00:00:00 2001 From: chaopower Date: Fri, 23 Feb 2024 16:45:58 +0800 Subject: [PATCH] =?UTF-8?q?=E6=B7=BB=E5=8A=A0=E4=BA=92=E6=96=A5=E7=9A=84?= =?UTF-8?q?=E5=AE=A2=E6=88=B7?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- rule/exclusive_customer.xlsx | Bin 0 -> 9579 bytes tools/t7.py | 24 +++++++++++++++++++++++- 2 files changed, 23 insertions(+), 1 deletion(-) create mode 100644 rule/exclusive_customer.xlsx diff --git a/rule/exclusive_customer.xlsx b/rule/exclusive_customer.xlsx new file mode 100644 index 0000000000000000000000000000000000000000..790f3d1bd2ec208bdf979d28a443716536233f30 GIT binary patch literal 9579 zcmeHtgy-F?oU*EutLcAj}Z^PZWbse*_^2tWa#0RRA6fRsSksM9?F00|iYAON5t z7|S?2d4Qcf%yfNS!0x7;K8_AFMMwzDg#ZNj_5a)ci!D&0+wauH4Qw;ml#p%Lk9`qc zR)$8|LTL?`Pt+gc+mZ6rktGM^tk%t=VVH7&B_5tAmjZFv&7yVMpKobu}_kvG=`IZ7{ zOWtZ#qo>)GNZ5Evf?lDHgDg{%2%TMmh)&fU44am_6UQ$L8i)DuzeNr?0Y2`W$GF&&l<4Y=!J3q$s9XbwWpMM~@4&YGF?bD{?#XsX2Rp@0XJPtOh=iML7^Zh7*-d*0e*B=&7{rWRJ zV*L{&TleQo7U2MCLID79;g<1n;PQ5MgIGE{Lw?4w3cYcs=iG#W1@*y_L8a!>iebuS zNZK3|{Bn-7?XqQ*t4LfS*$>o;%5K{sXiAgsJ$5uLt*V4_-C-+kz750LtFirQ@uHGv zUGgY{Z(@AgF~+J}A#altv{OYH-}D)VcvZ+6bXS{k3P@LxNLOG3`UU|E%0%tpOkN8z z7B1ONw;1-wp_s6jCWc^Ive?0h2bnLQT0!$O@$!pNIYpj~GmWauH~d))p8kpI_~C{+E4OByy<$TzCanrk~=teLX5 zuQCVXF*9N=?qhpy{W@ODk7jA)_S3Cfv{`txwab)-h~g2a!e7qStRibNlv|qY6BZ@S zdZP4^-`^HZuL)U5*6y)ZC&ZMi>ah3UENIY6q+&!+by%#CAj-n}OjQHy3r*E5U>_jU ziq-1pl}wf3Dmfc|os+Jt$1)$QJPgjPJ7>F0b+5h+zlT13!7;YDXFsyMiRw4utj4c1 z5prmEM1>!yl25avx#)ANuTERtbofkXW3|`Dd1_z!-D>u%1!;B_#qrS1YwDb&Ns80f zHYvf5RT3b*SOEqwdz-E71>&0Y`G~YcUt^*9>epwx}R9`0*bs%)e`Kx3ul`t4haGKRJH5#{0<=4+>>g+E69;D--Y=0eBzb zH0mv@=#75i#yP5iB>SCo@a-s-LRzjvtxlGbtfHLOR9o7Vc*(py13j`%ZxyP`6L;Sg z;12W9YA-2C&+d&kTMRy6>C{Z5`GOhbU}(H!+Wi6U=KlmjsCY)!A^c1W91P?Dw0m$M z{1Gtz6Apg`k9%-#2Zz&t_g0~;rt%TaZ7^@5xxJrz5#h~yaM5k+ZQ-Kz*RwzwX&(k1 zEmN?zm_C|O;X-td@`VledY$s&d_^QU?qqu%hmYh(-~barb{;+)MntpRsk|SifJ}hD zy}4DsgNc*lPS7l#*2kVtDER%1nSm_2_!XV(QS(F;ul)$OCy%}R7}WrL@f@sQ3%Q8U z*{%$$fA@|ihvmt)+h!T)2}(hjFZK8#8M=}vwl83OeTtUttW)j;?cn{@6E)uvNN4c{ z);G#>mHTCUVgXSeG|_zu)WIxi?%#^CTlHWo9@3WsEFYi;?1M+JCu{w^)64Lg{-?_f zXV`~qz}=++o(GV^ulRHAbhibAJ>0o|?H>GGM03;oouJ&nC>Zhu4ib!*VcwOX(`{@9 zEzNk$LuhiUk8VhgfrSh0V3$hyF+vk6eVA;LU@oixPvPxlp1w8WhzdkGhk=E`JfgD1 zF!N}3Gcw=|ZG!WL*6iu3U0bC1xI<5lgje|? z*0jid)Mh0+5zD~mh%3#kP2wV&X&YoTNy+OL>9q;S*qG(Ys3#opGmb{;cj!B>yAtv0 zZ4yl7-1>l#uJ$ZEF#**_{u{LlORG@r!9#~DsktMh_<}*Ayb9%uocmRHBZia{hb~8L zhKpFUmqHG&3t&P^ktAllLnzsUS7#z^ku_V(>{8ZHs~Tq z2IPjfhSDCc&0zWw=N1Ynj78Wk+50SBCU%5&pq#ZyVP|H%JY4--AwirK8Jhbl)G>!A zU#OYPZYa9_hJ$}i{;#2qWkgYp!&Ql0ss1g?0G9!CogR;_HZ!N<5F1KeMM4H4E0!95 zdZjk2sdjw2&Y`kHCe~3x=C(tclrmMQeJEXzWKecqXd-+_4C2upK{p%$a+c!OBRdg| z`4m+mltmhY6P^&&<>KY&U7%6JT?_7YzXskUDU2>jEV*i)HNXrVopLF~k_RoCSf}lz zx+W8CVqE^`H*=6mz1a;J`SD>g(kzHD=>)9&X_5_p2tHK#Ho?j=j1Di^m} zINyI7k1hC;cH~{{RXfDRhJW=^6;CEwcpRfH)-meVDgFe=B&BJ5VSP?a$!1Y!ZU~cl zq=rb=WRelyy+f06S{JO)Z1lV;moA=U%QGQHKlop%g_=YNdjyKgKnTsz&4d{$^7x zFuu(`Q=^b2a?P;}>P z87-XMJq|}G4?R$chXuV|eof{x9BdWuE|4ODSS{Hc9E>SJDG!u`e-{$3`B-9@9PsPw zVwXUh)3P(U4{{uflE%BS$3Xs~V_Sg~vf^lcACbN2VZW94vQm5wWh!0|tlrG&LD2m^ z*3kk$DRffW3KhgYQH+{BctzH^ct2u>teD>;E0aY(souqIL%GV5Ff)AeUL0+_T&C1Bb1e%(^0dVo2wq&<*Vbthw-OQQJ;hZWbudcpl6HCz4)X# zkrMZ9oNXS&;XPp2#A@fLLIny^`S?e^#-8ndf<|p!$i@Gq^B}eJ7&P)U?2%tP5fjSZ zvj+=S*?fR^)@DW#3WFX_Fj3>pCV#ZN`HLh?dyr3!Nk|R;^FiiMD8sFUFA;`a<09z` zYIPDgiv1O1@Mf)e`bljbu84xvaq%FE^41Q7+IAj__C;fM zjNn*Xdi|^lpCB9E&Hm6gf^;%9(2Kl>+3=B2I`2%a*`5xw*4iSt3q|6|cM3WfEiUs? z_AV+C#YVdc+HQEoX2t+Qs>ai7hAh-)*|62P5uiRRVwrP{uk?gU=5^RBRBEHioy`Db zdnfNJapBLyF~^R=?+ZV-y4*?)?-qmoNV*|)Vm5(k+Zt&*H!ueO+17w#X;b@$eO}Gt z2Ia@rKP&^~nZ@wf;*y(;s@o`{g^OHqobs;$|Ng(0~`$Tz&VA^xArj z;chGc?zFmB)k!Y|VdBJ5(Kas|L{5x9>`8CE;t87StBR0=b`>!!RqHg2d}Sn*bWA6D z#3NKQw%HU~0K2xJh-A(m5dGE**xDXgGqHQ+jhwzo1lWr9M9#=|QmGP&W>Uz?TA;9A zpm~w`TuGX(n^etJEAPUhU+;U1>8q(iCYjnG3T5))ndrU-!c@!!NgY!b+s$0>#TvX0 z-#H`>;a#kg3zuy6La!#1O*-Ld#J9112P8M98Q@gcaRt#4#41@PgYXEnT%imQl>tt$ z4mPhIc~R5!CJh=jM>BulK(9PbniC`0=o25hqk0Gj&%`+gb3hf*OzFVYQs+b(2kjEm z{?Q`YB-jgADi(P-2kT3Qi{QbVZ{xZ6g58T~hK9i;jIX4_?PWD-}PA5t-(G-aNt z@@|2DPkU1AUTIBmdRZ zCa9+MQG;99qiQz2mGWe&i&HfIAf&J3(do+!L?$os+xe~0hy%~(T{$WC;zWsi$nmOj z!Scep1YGMET4FJ*kJ(6ducBajMpEyzHc+IB`O)kje=rEfAc&7iH%bY%CF{Z?G$kr9 z*1eoz%CZg|@N(=*W7R3pEsJZqSko?t-K>2D0`r(G0_U9S{ViTDt>dr-eV8q)FRn4z zh}L>5v8^CgE*7vUY=g1wO_55CW0YA#EJq}91iIF5ojBS$u3Fx1L-&_{_LYXm(CCEF^-zp)2p$=rCl=GE}?~K>~obG{F@5XeTc052j zhp@WBR3mVikc~A)NDIO$rNhDz6IuTF;z=b7OQJuhi5j`Hk0e5Akxo@^UxFrV{rT_$ zTgD@TLE?mmt&kdS{GKCAmP|%W9NjG!MGW0&da4&jusq%g)F33bdY-a6rjV`jGE3w@ zMenZ~0os%)fO9)Vi*3|#t?h;&x{0w_k3o}jm#4bQM&TF@sr)^7Ku?xupB0a#zN;e> z?N-!%43IVMlESx?P{HWQlqXh3&4z%|&=!mq18@CKS4-cP#h3@oD$_IB#w}%|qrCB! zULLpYr(9Ic{r+G`N(L-fAKGX?j~$hKZnsFb*DDA^UdE_HYWb+m;XYQh8_;GflYvj( z@)EO5p)xCHyNh{OY>y(^uuiij;@(2(61a&7j9!`swK!YGcg2~}FlKG2%~PkF z=8{!+9lr}$A&9l7Wie4*Lu7-LT?@xzQ*&PtOG0 z7_kL~64(;`ECS1or~l<8l*D!n2Z4h>!I<$@nv{F+A|b z8yl7PgmK?tx2OBt1lChZRTIA5ED z{w78I`@B-DFL(cWJjGZ=nZ4tI8EQS3dIOAoEzlrbSWMgSW;-d6TGXld!-(R+XoQkb zin(}^qEMgQ&OwN!)Ry;2J|qwa>6PQq;Nc1SzgfWEJvXib{_g?I007e;7I1<4g9q46 z2khbT(=oX296#W+v~${i_CcjvlCbx~YzhBM8Pi27BoXF%{!Rr`0}1MFM!SmYq@{6!l0(=sWWt2A-ybG^y1SHof21a!@nk%VW0rGaEwbW5<4@BUbC+nR>!c2>h0c3uYhAtJ@|<5MP?7jYKDjg-u~E{18P2T`=QRH=DE z6BBa%iylE9bHkE5S&Efn%AHFdhF&c!&7?^661ww`K-|$C_VU&V(!k)4jdSy;zo)q+5Sqq)k`XB6HQY|Ki82AT)uVxf`=;^$K#i)_ay2Cw#2|mEBk?=SXya zGxhycT?_A;$33@w-5)xkQeolP)qW7SLBeJT=^SlyG!^TO3lxIo@+KoGhWz!Wu|aCO zI6viVzQQJuj|?Li(*n(Ps69$$res())h8AmEp|?oR168H3JgV3{KAE1O$~XhQUFP} zA#cb5H`tF^!Bri|nIrw%go{L}uqwkR+zK8A@!*9pYiBD>H)j`jE-Pm@@SnZS|JA?X zNC-$XRq5s?jf5fJ%Jc_54{~siYDCO56#`Z;e~w&R(svM7ELys0vum9m_&E6f$6CJ- zSHA)3IFgyUL#1_S8ngU8#aBKY-pGD$W>)Z#XSDk5ia~_yXvCERTjjZST^XTF#k`~j z;n<=|MqM7ECnI)YwP1hXl>BGfwkAD!%^%56qWQqo9;kwetH{J(m`jts;*f5p#;7Zf z$d}yks^NaYl0if$c`F!;f3@mq9&vprU9Fm1s%Ft!1(oZVm1eXYi z#6Dl>Q(tr#`VQ|>m+`Sq3T8*|(4A`)dGnt|IbTf;aMWb+@OXlkL1tIyJ|en`;Dv_^bx3TU3M&sIhs2tMs)o;*zq6 zEcBRJ82a>4WIvQ<$6oW&&Zlah&oP(qIyF_Z7OzZfU7}DPOo~dZ*2uXqWH4Dc_o4I} z#>4nH+IG(-hV4nv9>v82E5;2mw&Yeos_JM*c9uPoR!@JW~>pVj`xXs>h$rHg*$?vmtjq>oH-+nTLKRCoa1P(Zf`u7J${+hqP_W$zu zh^ETl75u%G{g>d+eJLCy|IygKD|olP_gi!b&UfxK`|b+=y(RKn6abipQ-%M3gXFHB zyLIy4n$WQR?cUSZ-H~uX; z126o;f7|^oQ@*R=E|L7LVT?c55&-xI6Syn>_m%rU#m(S3$N!1{xsGe9Aj5qS0KkI37~yWrMfdaQ{{aTJO^5&h literal 0 HcmV?d00001 diff --git a/tools/t7.py b/tools/t7.py index a6f4d9c..a6e3c1e 100644 --- a/tools/t7.py +++ b/tools/t7.py @@ -41,6 +41,7 @@ class AutoLayout: # 文库 self.chip_classification = defaultdict(set) self.rule = self.read_rule() + self.rule_exclusive_customer = self.read_rule_exclusive_customer() # 不平衡文库 self.chip_speciallib_size = dict() @@ -162,6 +163,15 @@ class AutoLayout: res = pd.concat([df, newdf]) return res.reset_index() + @staticmethod + def read_rule_exclusive_customer(): + df = pd.read_excel(os.path.join(basedir, 'rule', 'exclusive_customer.xlsx')) + newdf = pd.DataFrame() + newdf['customer1'] = df['customer2'] + newdf['customer2'] = df['customer1'] + res = pd.concat([df, newdf]) + return res.reset_index() + @staticmethod def read_cols(): df = pd.read_excel(os.path.join(basedir, 'rule', 'columns.xlsx')) @@ -230,12 +240,19 @@ class AutoLayout: return True return False + def use_rule_exclusive_customer(self, chipname, customer): + may_classfic = set(self.rule_exclusive_customer[self.rule_exclusive_customer['customer1'] == customer]['customer2']) + if self.chip_customer[chipname].intersection(may_classfic): + return True + return False + def judge_data(self, chipname, library_data): """ 约束条件 """ size = library_data['size'] classification = library_data['classification'] + customer = library_data['customer'] is_balance_lib = library_data['is_balance_lib'] # 芯片大小不能超过设定限制 @@ -257,6 +274,11 @@ class AutoLayout: if self.use_rule(chipname, classification): exclusive_classific = False + # 互斥的用户 + exclusive_customer = True + if self.use_rule_exclusive_customer(chipname, customer): + exclusive_customer = False + # 不平衡文库大于250G 不能添加 splibrary = True if is_balance_lib == '否' and self.chip_speciallib_size[chipname] + size > 250: @@ -282,7 +304,7 @@ class AutoLayout: if is_not_balance_list: base_balance = False - if sizelimit and notrepeatbarcode and exclusive_classific and splibrary and base_balance and spmethylibrary: + if sizelimit and notrepeatbarcode and exclusive_classific and exclusive_customer and splibrary and base_balance and spmethylibrary: return True return False