INPI-France/Brevets-Francais-2024-Chunked huggingface dataset:
D'autres voies sont également étudiées mais leur maturité actuelle les cantonnent aux laboratoires. démarche générale consiste à utiliser un substrat de silicium massif afin de tirer parti du faible coût et la grande taille de ces substrats. On peut ainsi obtenir du GaN sur du SiC recouvrant du silicium. Ces techniques, développées en laboratoire, reposent sur 'utilisation d'une couche de SiC cubique épitaxiée soit sur un substrat SOI, soit directement sur un substrat de silicium massif. Cette couche de SiC doit permettre de faciliter l'épitaxie en diminuant la différence de paramètre de maille entre et le silicium, c'est-à-dire de se retrouver dans une configuration d'épitaxie GaN sur SiC. En plus de la difficulté présentée par la réalisation de 'epitaxie de GaN, la première épitaxie de SiC présente des difficultés techniques importantes. Cependant, la croissance de GaN sur une telle structure revêt un intérêt particulier car elle permettrait d'obtenir du en structure cubique (le saphir procure une structure hexagonale) qui, par ses proprietes, est intéressant pour des applications optoélectroniques. Pour l'instant cette voie reste au stade de la recherche.
Tableau 1 (- : pas d'activité ; #, +, ++ : activité spécifique)
Un des intérêts de ces glycosidases est leur disponibilité relativement aisée et leur stabilité vis-à-vis des variations de température.
Elles sont par conséquent plus particulièrement aptes à entrer dans la préparation de compositions appropriées pour l'administration topique. Par l'identification des kératines après coloration au nitrate d'argent des gels SDS-PAGE et immunodétection, les résultats présentés dans la figure 4 montrent que ces glycosidases favorisent la desquamation. La spécificité de ces glycosidases vis-à-vis de leurs substrats est plus ou moins étroite.
Les résultats montrent un optimum d'efficacité avec la glycosidase Gly 10, avec par ordre d'efficacité, Gly10 > Gly07 > Gly02.
1. 2.3 Etude de l'effet des cellulases sur la desquamation Les cellulases coupent les liaisons p1-4 situées entre deux glucoses internes (endoglycosidases). La présence de cellulose ou de structures proches n'a pas été décrite dans l'épiderme humain. Néanmoins, il reste possible que des structures saccharidiques au niveau du stratum corneum constituent des cibles de cellulase. L'effet de la cellulase commercialisée par Boehringer a été testée pour sa capacité à favoriser la desquamation. Les résultats présentés dans la figure 5 montrent de manière surprenante un effet important (similaire à l'urée) de la cellulase sur la desquamation.
Des résultats similaires ont été obtenus avec plusieurs cellulases recombinantes commercialisées par CloneZyme, avec par ordre d'efficacité cell03 > cellO4, cellO1 (figure 4).
Le tableau 2 présente la spécificité de substrats des différentes cellulases testées vis-à-vis des glycosides.
CELLULASES (CLONEZYME) Substrat CEL-CEL-CEL-CEL-CEL-CELCEL-001 002 003 004 005 006 007 ss-D-cellobiose ++ ++ - ++ -- -ss-D-galactose + - - - α-D-glucose - - - - ss-D-glucose ++ - - - ss-N-acetyl- - -- -D-glucosaminide ss-D-fucose ++ - - - ss-L-fucose - - - P-D-g) ucuronide a-D-galactose ss-D-mannose ++ - ++ ++ - - - α-D-mannose - - - - - - - ss-D-xylose + - - - - - - α-L-arabinofuranoside - - - - - - a-L-arabinopyranoside + ss-D-lactose ++ ++ - ++ a-L-rhamnose a-D-N-acetylneuramide P-D-N-acetylchitobioside a-L-fucose
Tableau 2 (+ : 1-10% activité relative ; 10-100% activité relative)
1. 2. 4 Effets de différentes exo-glycosidases et des O-glycanases Certaines exo-glycosidases ont été testées pour leur effet sur la desquamation. En particulier, 40 U de ss-galactosidase, d'a-fucosidase, 1 U d'N-acétyl-glucosaminidase, 0,5 U d'a-galactosidase, 0,3 U d'a- mannosidase, 0,2 U de ss-mannosidase, 50 U de glucuronidase, 5 U de ss- glucosidase et 5 U d'a-glucosidase ont été testées in vitro. Prises séparément, les exoglycosidases n'affectent que très faiblement la desquamation. La combinaison qui montre un effet significatif sur la desquamation est le mélange de ss-galactosidase, N-acétyl- glucosaminidase et N-acétyl-galactosaminidase. La figure 6 montre l'effet de cette combinaison d'enzymes sur le détachement des cornéocytes.
La O-glycanase permet de cliver spécifiquement les chaines a-liée.
La O-glycanase a été testée pour sa capacité à favoriser la desquamation.
Les résultats obtenus en tests in vitro montrent que la O-glycanase ne semble pas ou peu affecter la desquamation (10% d'augmentation observée). De plus, l'utilisation simultanée de O-glycanase et de sialidase à large spectre d'action (Arthrobacter ureafaciens) ou de O-glycanase + Nglycanase et sialidase ne montre pas d'effet supérieur à celui observé avec la N-glycanase seule.
2. Exemples de formulations de compositions selon l'invention Composition 1 : Lait pour le visage - Huile de vaseline 7,0 g - N-glycanase (Endo-F de Flavobacterium meningosepticum)...... 0,1 g Monostéarate de glycéryle, stéarate de polyéthylène glycol (100 OE)........................................................ 3,0 g - Polymère carboxyvinylique.......................................................... 0,4 g
Aicool stéarylique......................................................................... 0, 7 g Protéines de soja......................................................................... 3,0 g NaOH........................................................................................... 0,4 g -Conservateur qs Eau...................................................................................... qsp 100 g Cette composition se présente sous forme d'un lait pour le visage, ayant de bonnes propriétés cosmétiques, et étant doux et confortable à utiliser.
Le pH de la composition est d'environ 5,5.
Les spécialistes de la technique constateront que ces variantes et d'autres variantes sont possibles tout en restant dans le cadre de l'invention.
ANNEXE /*I1 existe 8 transistors FET dans le modèle et je peux les disposer suivant des indices allant de 1 à 8*/ #define NUM~CKLATCH~FETS 7 #define NUM~PASSCKT~FETS 7 #define ALL~SPICE~FET~PARAMETERS \ fprintf(MYDECK," (m1 w ml 1 m2 w m2 1 m3 w m3-1 m4 w m4-1 m5 w m5-1 m6~w m6~1)\n") ; void declare~vth~ckt(MYDECK, lmodel) FILE* MYDECK ; int lmodel[NUM~CKLATCH~FETS] ; { fprintf(MYDECK,".subckt vth~ckt 100 %%\"GND\""); ALL~SPICE~FET~PARAMETERS ; fprintf (MYDECK, "Ml 3 3 0 0 N%s L=ml~l*le-6 W=ml~w*le-6 AD=1. 5 AS=1.5 PD=1. 5 PS=1. 5\n", lmodel[l] ? "L" : ""); fprintf(MYDECK,"M2 3 3 100 0 P%s L=m2~l*le-6 W=m2~w*le-6 AD=1.5 AS=1.5 PD=1. 5 PS=1. 5\n", lmodel[2] ? "L" : ""); fprintf(MYDECK,".ends vth~ckt\n"); } #define NOPASSFET~R 1.0e-3 void declare~passfet~ckt(MYDECK, ckt name, ppass~fets, npass~fets) FILE* MYDECK ; char* ckt~name ; elem~pr npass-fets[NUM-PASSCKT-FETS], ppass~fets[NUM~PASSCKT~FETS] ; { int i, left, right, left~portnum, levels = 0; /* determination du nombre de niveaux de transistors FET de transfert. */ for (i = 1 ; 2*i-1, left, right, npass~fets[i]->len > CheckLatchLongNLength~ReqERC ? "L" : "", npass~fets[i]->len, npassa~fets[i]->wid); if (ppass~fets[i]) P%s L=%.2f*le-6 W=%.2f*le-6 Ad=1.5 fprintf(MYDECK,"M%d %d 0 %d 0 P%s L=%.2f*le-6 W=%.2f*le-6 AD=1. 5 AS=1. 5 PD=1. 5 PS=1. 5\n", 2*i, left, right, ppass~fets[i]->len > CheckLatchLongPLength~ReqERC ? "L" : "", ppass~fets[i]->len, ppass~fets[i]->wid); } fprintf(MYDECK,".ends %s\n", ckt~name); } void declare~set0~ckt(MYDECK, lmodel) FILE* MYDECK ; int Imodel[NUM~CKLATCH~FETS] ;
fprintf(MYDECK,".subckt setO~ckt 100 %%\"GND\"") ; ALL~SPICE~FET~PARAMETERS fprintf(MYDECK,"Ml 4 3 0 0 N%s L=ml~l*le-6 W=ml~w*le-6 AD=1.5 AS=1.5 PD=1. 5 PS=1. 5\n", lmodel[l] ? "L" : ""); fprintf(MYDECK,"M2 4 3 100 0 P%s L=m2 1*le-6 W=m2 w*le-6 AD=1.5 AS=1. 5 PD=1. 5 PS=1. 5\n", lmodel[2] ? "L" : ""); fprintf(MYDECK,"M4 3 0 100 0 P%s L=m4~l*le-6 W=m4~w*le-6 AD=1.5 AS=1.5 PD=1.5 PS=1.5\n", lmodel[4] ? "L" : ""); fprintf(MYDECK,"XO 100 2 3 %%\"GND\" pulldown~passfet~ckt \n") ; fprintf(MYDECK,"M5 2 100 0 0 N%s L=m5~l*le-6 W=m5~w*le-6 AD=1.5 AS=1. 5 PD=1. 5 PS=1. 5\n", lmodel[5] ? "L" : ""); fprintf(MYDECK,".endsset0 ckt\n"); } void declare~setl~ckt(MYDECK, lmodel) FILE* MYDECK ; int Imodel[NUM~CKLATCH~FETS] ; { fprintf(MYDECK,".subckt setl~ckt 100 %%\"GND\"") ; ALL~SPICE~FET~PARAMETERS fprintf(MYDECK,"M1 4 3 00 N%s L=ml~l*le-6 W=ml~w*le-6 AD=1.5 AS=1. 5 PD=1. 5 PS=1. 5\n", lmodel[1] ? "L" : ""); fprintf(MYDECK,"M2 4 3 100 0 P%s L=m2~l*le-6 W=m2 w*le-6 AD=1. 5 AS=1. 5 PD=1. 5 PS=1.5\n", lmodel[2] ? "L" : ""); fprintf(MYDECK,"M3 3 100 0 0 N%s L=m3~l*le-6 W=m3 w*le-6 AD=1. 5 AS=1. 5 PD=1. 5 PS=1.5\n", lmodel[3] ? "L" : ""); fprintf(MYDECK,"XO 100 2 3 %%\"GND\" pullup~passfet~ckt \n") ; fprintf(MYDECK,"M6 2 0 100 0 P%s L=m6~l*le-6 W=m6~w*le-6 AD=1.5 AS=1.5 PD=1. 5 PS=1.5\n", lmodel[6] ? "L" : ""); fprintf(MYDECK,".ends setl~ckt\n"); } void add~vth ckt~to~deck(MYDECK, m-w, m-1) FILE *MYDECK; double m~w[NUM~CKLATCH~FETS] ; double m~l[NUM~CKLATCH~FETS] ; { fprintf(MYDECK,"XO 100 %%\"GND\" vth~ckt (") ; fprintf(MYDECK,"%.2f %. 2f ",m~w[l], m~l[l]) ; fprintf(MYDECK,"%.2f %.2f ",m~w[2], m~l[2]) ; fprintf(MYDECK,"%.2f %.2f ",m~w[3], m~l[3]) ; fprintf(MYDECK,"%.2f %.2f ",m~w[4], m~l[4]) ; fprintf(MYDECK,"%.2f %. 2f ",m~w[5], m~l[5]) ; fprintf(MYDECK,"%.2f %. 2f ",m~w[6], m~l[6]) ; fprintf(MYDECK,")\n") ; } void add~set0~ckt~to~deck(MYDECK, m~w, m~1) FILE *MYDECK; double m~w[NUM~CKLATCH~FETS] ; double m~l[NUM~CKLATCH~FETS] ; { fprintf(MYDECK,"X1 100 %%\"GND\" set0~ckt ("); fprintf(MYDECK,"%.2f %. 2f ",m~w[l], m~l[l]) ; fprintf(MYDECK,"%.2f %.2f ",m~w[2], m~l[2]) ; fprintf(MYDECK,"%.2f%.2f ",m~w[3], m~l[3]) ; fprintf(MYDECK,"%.2f %. 2f ",m~w[4], m~1 [4]) ;
fprintf(MYDECK,"%.2f %. 2f ",m~w[5], m~l[5]) ; fprintf(MYDECK,"%.2f %. 2f ",m~w[6], m~l[6]) ; fprintf(MYDECK,")\n") ; } void add~setl~ckt~to~deck(MYDECK, m~w, m~1) FILE *MYDECK; double m~w[NUM~CKLATCH~FETS] ; double m~l[NUM~CKLATCH~FETS] ; { fprintf(MYDECK,"X2 100 %%\"GND\" setl~ckt (") ; fprintf(MYDECK,"%.2f %. 2f ",m~w[l], m~l[l]) ; fprintf(MYDECK,"%.2f %. 2f ",m~w[2], m~l[2]) fprintf(MYDECK,"%.2f %. 2f ",m~w[3], m~l[3]) fprintf(MYDECK,"%.2f %. 2f ",m~w[4], m~l[4]) ; fprintf(MYDECK,"%.2f %. 2f ",m w[5], m~l[5]) fprintf(MYDECK,"%.2f %. 2f ",m~w[6], m~l[6]) fprintf(MYDECK,")\n") ; } /* Retourne VRAI si ce circuit de verrouillage présente une réaction trois-états. */ int latch~has~tristate~feedback(node) node~pr node ; { ~ ~ node~pr output, inv~output, tsinv~node ; elem~pr elem ; if (!NIsLatch(node)) return FALSE ; tsinv~node = NTriStateInvOf(node) ; for~gate~elems(elem, node) { output = get~output(elem) ; if (!output} continue ; inv~output = NStatInvOf(output) ; if (NSame(inv~output, node) && NSame(output, tsinv~node)) { return TRUE ; } } end~gate~elems return FALSE ; } /* Pour un noeud du circuit de verrouillage retourne le noeud de réaction trois-états. */ node~pr get~tristate~feedback(node) node~pr node ; { elem~pr elem ; node~pr output, inv~output, tsinv~node ; if (!NIsLatch(node)) return NULL ; tsinv~node = NTriStateInvOf(node) ; for~gate~elems(elem, node) { output = get~output(elem) ; if (!output) continue ; inv~output = NStatInvOf(output) ; if (NSame(inv~output, node) && NSame(output, tsinv~node)) { return output ; } } end~gate~elems return NULL ; } /* Trouver les largeurs et les longueurs des transistors FET pour ce mode. Retourne un non zéro s'il existe un problème de fonctionnement.
*/ #define ABSENT~FEEDBACK~FET~L~MULT 20. 0 int find~checklatch~latchfets(node, m~w, m~l) node~pr node ; double *m~w, *m~l ; { elem~pr elem, nelem;
node~pr output, inv~output, inv~node, tsinv node, gate, inv gate, ngate, inv~ngate, ts feedback, other~side; int has~tsfeedback, has~single~feedback, has~inv~feedback ; inv~node = NStatInvOf(node) ; tsinv~node = NTriStateInvOf(node) ; has~tsfeedback = latch~has~tristate~feedback(node) ; has~single~feedback (!inv~node && !tsinv~node) ? TRUE : FALSE ; has~inv~feedback = (!has~tsfeedback && !has~single~feedback) ? TRUE : FALSE ; /* Trouver les transistors FET de l'inverseur à action directe. */ if (has~single~feedback) { for~gate~elems(elem, node) { output = get~output(elem) ; if (!output) continue ; inv~output = NStatInvOf(output) ; if (NSame(inv~output, node)) { if (ETypeIsP(elem)) { m~w[2] = elem->wid ; m~l[2] = elem->len ; } if (ETypeIsN(elem)) { m~w[l] = elem->wid ; m~l[l] = elem->len ; } end~gate~elems } if (has~inv~feedback # has~tsfeedback) { for~gate~elems(elem, node) { output = get~output(elem) ; if (!output) continue ; inv~output = NStatInvOf(output) ; if ( (NSame(inv~output, node) && NSame(output, inv~node)) # (NSame(inv~output, node) && NSame(output, tsinv node)) ) { if (ETypeIsP(elem)) { m~w[2] = elem->wid ; m~1[2] = elem->len ; } if (ETypeIsN(elem)) { m~w[l] = elem->wid ; m~l[l] = elem->len ; } } } end~gate~elems } if (m w[l] == 0 Il m~w[2] == 0) return 1 ; /* Détermination des transistors FET de l'inverseur de réaction. */ if (has~single~feedback) { for~chan~fets(elem, node) { gate = EGate (elem) ; inv gate = NStatInvOf(gate) ; if (NSame(node, inv~gate)) { if (ETypeIsP(elem)) { m w[4] = elem->wid ; m 1[4] = elem->len ; } if (ETypeIsN(elem)) { m w[3] = elem->wid ; m 1[3] = elem->len ; } } end~chan~fets } if (has~tsfeedback) { ts~feedback = get~tristate~feedback(node) ; for~chan~fets(elem, node) { gate = EGate (elem) ; inv~gate = NStatInvOf(gate) ; if (NSame(node, inv~gate) && NSame(ts~feedback, gate) && ETypeIsP(elem)) { m w[4] = elem->wid ; m 1[4] = elem->len ; }
if (ETypeIsN(elem)) { /* Inverseur trois-état type I. */ if (NSame(node, inv~gate) && NSame(ts~feedback, gate)) { m~w[3] = elem->wid ; m~l[3] = elem->len ; } /* Inverseur trois-état type II. */ else { other~side = EOtherChan(elem, node) ; nested~for~chan~elems(nelem, other~side) { if (ETypeIsN(nelem)) { ngate = EGate(nelem) ; inv~ngate = NStatInvOf(ngate) ; if (NSame(node, inv~ngate) && NSame(ts-feedback, ngate) ) { m~w[3] = nelem->wid ; m~l[3] = nelem->len ; } } } nested~end~chan~elems } ~ ~ ~ } end~chan~fets } if (has~inv~feedback) { for~chan~fets(elem, node) gate = EGate(elem) ; inv~gate = NStatInvOf(gate) ; if (NSame(node, inv~gate) && NSame(inv~node, gâte)) { if (ETypeIsP(elem)) { m~w[4] = elem->wid ; m~l[4] = elem->len ; } if (ETypeIsN(elem)) { m~w[3] = elem->wid ; m~l[3] = elem->len ; } } } end chan fets } /* Certains circuits de verrouillage ne comportent pas des transistors FET de réaction */ if (m~w[3] ==0 && m~w[4] == 0) return 1 ; if (m~w[3] == 0) { m~w[3] = MinGateZ~ReqERC ; m~l[3] = ABSENT~FEEDBACK~FET~L~MULT * DeviceL~ReqERC ; } if (m~w[4] == 0) { m~w[4] = MinGateZ~ReqERC ; m~l[4] = ABSENT~FEEDBACK~FET~L~MULT * DeviceL~ReqERC ; } return 0 ; } /* Pour un arbre donné, écrire au sommet les noms des éléments. C'est un sous-programme récursif. */ void add~fet~tree~comments~to~deck(DECK, dlnode~ptr) FILE* DECK ; dlnodeptr dlnode~ptr; { char message[MAXSTRING] ; elem~pr this~elem, parallel~elem ; /* Aller à travers */ if (dlnode~ptr->next) { add~fet~tree~comments~to~deck(DECK, dlnode~ptr->next); } /* Allez en dessous si un transitor FET existe là */ if (dlnode~ptr->down) { add~fet~tree~comments~to~deck (DECK, dlnode~ptr->down); } this~elem = dlnode~ptr->elem ; sprintf(message, "%s grille : %s source: %s drain : %s largeur : %.4f",this~elem->name, this~elem->gate->name, this~elem->source->name, this~elem->drain->name, this~elem->wid) ; add~comment~to~deck(DECK, message) ; /* Un élément parallèle de canal n'est pas présent dans l'arbre, mais est utilisé dans effective w calc from tree */
parallel~elem = this~elem->chan~parallel ; if (parallel~elem && !ESame(parallel elem, this elem)) sprintf(message, "%s grille : %s source : %s drain : largeur: %. 4f", parallel~elem->name, parallel~elem->gate->name, parallel~elem->source->name, parallel~elem->drain->name, parallel~elem->wid) ; add~comment~to~deck(DECK, message) ; /* Annotation du sommet avec les transistors FET utilisés dans build~generic~tree. Enregistrement également, dans le sommet de tous les transistors FET de transfert contenus dans les modèles élévateurs et abaisseurs. */ void add-checklatch comments to deck(MYDECK, pulldown~ppass~fets, pulldown~npass~fets, pullup~ppass~fets, pullup~npass~fets, ndriver~node, pdriver~node) elem~pr pulldown~npass~fets[NUM~PASSCKT~FETS], pulldown~ppass~fets[NUM~PASSCKT~FETS] ; elem~pr pullup~npass~fets[NUM~PASSCKT~FETS], pullup~ppass~fets[NUM~PASSCKT~FETS] ; node pr pdriver~node, ndriver~node ; FILE* MYDECK ; { elem~pr elem, this~elem; dlnodeptr nfet tree ptr,pfet tree ptr; double nfet~max~1~over w,nfet~min~1~over w,nfet in parallel; double pfet~max~1~over~w,pfet~min~1-over~w,pfet~in~parallel; int node~type~flag, i; char message[MAXSTRING] ; add~comment~to~deck(MYDECK, " Info transistor FET de transfert élévateur: ") ; if (pullup npass fets[l] && pullup ppass fets[l]) add~comment~to~deck(MYDECK, " Structure de transistor FET de transfert élévateur du circuit de verrouillage : ") ; else if (pullup npass fets[l]) add~comment~to~deck(MYDECK, " Structure de transistor FET de transfert élévateur du circuit de verrouillage : ") ; else if (pullup ppass fets[l]) add~comment~to~deck(MYDECK, " Structure de transistor FET de transfert élévateur du circuit de verrouillage : ") ; else add~comment~to~deck(MYDECK, " Structure de transistor FET de transfert élévateur du circuit de verrouillage: AUCUN") ; for (i = 1; i name, this elem->gate->name, this-elem->source->name, this~elem->drain->name, this elem->wid) ; add~comment~to~deck (MYDECK, message) ; } if (pullup~ppass~fets[i]) { this~elem = pullup~ppass~fets[i] ; sprintf(message, "%s grille : %s source : drain: %s largeur : %.4f", this elem->name, this elem->gate->name, this~elem->source->name, this~elem->drain->name, this~elem->wid) ; add~comment~to~deck (MYDECK, message) ; }
} add~comment~to~deck(MYDECK, " " Info transistor FET de transfert abaisseur : ") ; if (pulldown~npass~fets[1] && pulldown~ppass~fets [1] ) add~comment~to~deck(MYDECK, Structure de transistor FET de transfert abaisseur du circuit de verrouillage : COMPLEMENTAIRE ") ; else if (pulldown~npass~fets[l]) add comment to deck(MYDECK, " Structure de transistor FET de transfert abaisseur du circuit de verrouillage : NFET ") ; else if (pulldown~ppass~fets[l]) add~comment~to~deck(MYDECK, " Structure de transistor FET de transfert abaisseur du circuit de verrouillage :PFET ") ; else add~comment~to~deck(MYDECK, " Structure de transistor FET de transfert abaisseur du circuit de verrouillage : AUCUN ") ; for (i = 1 ; name, this~elem->gate->name, this~elem->source->name, this~elem->drain->name, this~elem->wid) ; add~comment~to~deck(MYDECK, message) ; } if (pulldown~ppass~fets[i]) { this~elem = pulldown~ppass~fets[i] ; sprintf(message, "%s grille : %s source: %s drain : %s largeur: %.4f", this~elem->name, this elem->gate->name, this elem->source->name, this~elem->drain->name, this~elem->wid) ; add comment to deck(MYDECK, message) ; } /* inclure en tant que commentaires tous les transistors FET qui constituent les arbres génériques. */ nfet~tree~ptr = build~generic~tree(ndriver node,NTYPE,O,&node type~flag); pfet~tree~ptr = build~generic tree(pdriver node,PTYPE,O,&node type-flag); if (nfet~tree~ptr) { add~comment~to~deck(MYDECK, " valeurs de l'étage d'attaque NFET:") add~fet~tree~comments~to~deck(MYDECK,nfet~tree~ptr); free-fet~tree(nfet tree ptr,nfet tree ptr); } else { add~comment~to~deck(MYDECK, " Utilisation de la valeur de l'étage d'attaque NFET à ports ") ; if (pfet~tree~ptr) { add~comment~to~deck(MYDECK, " valeurs de l'étage d'attaque à PFET:") ; add~fet~tree~comments~to~deck(MYDECK,pfet~tree~ptr); free fet tree(pfet tree ptr,pfet tree ptr); } ~ ~ else { add comment to deck(MYDECK, Utilisation de la valeur de l'étage d'attaque PFET à ports ") ; }} /* Pour deux noeuds donnés, trouver un transistor FET de transfert de type P et un transistor FET de transfert de type N entre ces deux noeuds, s'il en existe un. S'il existe plus d'une part de N et P, alors ce sous-programme revient aux deux premiers qu'il trouve. */ void find~passfets~between~nodes (node, other~node, n elem, p elem) node~pr node, other~node ; elem~pr *n~elem, *p~elem ;
{ elem~pr elem ; node~pr other~node2 ; *n~elem = *p~elem = NULL ; for chan elems(elem, other~node) il (EIsPassFet(elem)) { other~node2 = EOtherChan(elem,other~node) ; if (NSame(other node2,node)) { if (ETypeIsN(elem)) *n~elem = elem ; if (ETypeIsP(elem)) *p~elem = elem ; } end~chan~elems } } /* Pour un noeud donné, trouver le noeud qui fournit à son tour à une élévation dans le pire des cas jusqu'à VDD ou à un abaissement dans le pire des cas à GND. On suppose que ce noeud est une sortie d'un transistor à effet de champ de transfert. Ce sous-programme s'appelle lui-même jusqu'à ce qu'il soit présent sur un noeud qui est une entrée de transistor FET de transfert et non une sortie de transistor FET de transfert. Il maintient le suivi de l'étage d'attaque actuel pour le pire des cas et met à jour un enregistrement à niveau plus élevé de la caractéristique d'étage d'attaque dans le pire des cas, qui le suit. La recherche uniquement dans la direction de circulation du signal.
*/ void find~checklatch~driver~r(node, wc~node, type, wc~width, wc~loverw, ppass~fets, npass~fets, level, wc~ppass~fets, wc~npass~fets, wc~levels) node pr node ; node pr* wc~node ; int type, level ; int *wc levels ; elem~pr *ppass~fets, *npass~fets ; elem~pr *wc~ppass~fets, *wc~npass~fets ; double *wc~width, *wc~loverw ; { elem~pr elem ; node~pr other~node ; dlnodeptr fet~tree~ptr,pfet~tree~ptr; double fet -max-1-over-w,fet-min-1-over-w,fet~in~parallel; int is npass, is~ppass, i, node~type~flag, nfet-vt-drop, pfet~vt~drop double node~width, total~loverw, stage~loverw, nscale, pscale ; elem~pr n~elem, p~elem ; double nfet~loverw, pfet~loverw ; for~chan~fets(elem, node) { other node = EOtherChan(elem,node) ; if (NIsPassGateIn(other~node) && !NIsMarked(other~node) && NSame(other node, EInputChan(elem))) { push node set mark(other node) ; /* Le calcul de 1~over~w~cumulée dépend du type du fet de transfert. */ find~passfets~between~nodes(node, other~node, &n~elem, &p~elem) ; if (level fet~tree~ptr = build generic tree(node,type,0,&node type~flag); if (fet~tree~ptr) { combine shared~diffusions(fet~tree~ptr,fet~tree~ptr); effective~w~calc~from~tree(fet~tree~ptr, &fet~max~l~over~w,