Initial version of donated sources by Avertec, 3.4p5.
[tas-yagle.git] / distrib / sources / tas / xtas / xtas_simu_path.c
1 /****************************************************************************/
2 /* */
3 /* Produit : XTAS Version 5 */
4 /* Fichier : xtas_simu_path.c */
5 /* */
6 /* Author(s) : Caroline BLED Date : 02/25/2003 */
7 /* */
8 /* */
9 /****************************************************************************/
10 #include "xtas.h"
11 #include GEN_H
12
13 char XTAS_SIMU_RES = 'N';
14 Widget XtasSimuParamWidget = NULL;
15 xtas_simu_param_struct *XtasSimuParams = NULL;
16 char XTAS_SIMU_NEW_NETLIST = 'N';
17 Widget XtasSimuMessageWidget = NULL ;
18
19 /*--------------------------------------------------------------------------*/
20 /* */
21 /* XtasSimuCancelCallback */
22 /* */
23 /*--------------------------------------------------------------------------*/
24 void XtasSimuCancelCallback (widget, client_data, call_data)
25 Widget widget;
26 XtPointer client_data;
27 XtPointer call_data;
28 {
29 XtUnmanageChild ((Widget) client_data);
30 }
31
32 /*--------------------------------------------------------------------------*/
33 /* */
34 /* XtasSimuSetParamString */
35 /* */
36 /*--------------------------------------------------------------------------*/
37 void XtasSimuSetParamString (dest, text)
38 char **dest;
39 char *text;
40 {
41 if ((*dest) == NULL)
42 *dest = (char*) mbkalloc (sizeof (char) * (strlen(text)+1));
43 else
44 *dest = (char*) mbkrealloc (*dest, sizeof (char) * (strlen(text)+1));
45
46 strcpy (*dest, text);
47 }
48
49 /*--------------------------------------------------------------------------*/
50 /* */
51 /* XtasSimuFreeParams */
52 /* */
53 /*--------------------------------------------------------------------------*/
54 void XtasSimuFreeParams (void)
55 {
56 mbkfree (XtasSimuParams->tec);
57 mbkfree (XtasSimuParams);
58 XtasSimuParams = NULL;
59 }
60
61 /*--------------------------------------------------------------------------*/
62 /* */
63 /* XtasDestroySimuParams */
64 /* */
65 /*--------------------------------------------------------------------------*/
66 void XtasDestroySimuParams (void)
67 {
68 if (XtasSimuParamWidget) {
69 XtDestroyWidget (XtasSimuParamWidget);
70 XtasSimuParamWidget = NULL;
71 }
72 if (XtasSimuParams)
73 XtasSimuFreeParams ();
74 }
75
76 /*--------------------------------------------------------------------------*/
77 /* */
78 /* XtasSimuUpdateMessageWindow */
79 /* */
80 /*--------------------------------------------------------------------------*/
81 void XtasSimuUpdateMessageWindow (parent, message, display)
82 Widget parent;
83 char *message;
84 int display;
85 {
86 static Widget XtasSimuMessageLabel = NULL ;
87 XmString text, textLabel;
88 int n;
89 Arg args[10];
90 Widget form;
91
92 textLabel = XmStringCreateSimple ("");
93 if (message)
94 textLabel = XmStringCreateSimple (message);
95
96 if (!XtasSimuMessageWidget) {
97 text = XmStringCreateSimple( "Simulation in progress..." ) ;
98 n = 0;
99 XtSetArg( args[n], XmNtitle, XTAS_NAME": Simulation " ) ; n++ ;
100 XtSetArg( args[n], XmNmessageString, text ) ; n++ ;
101 XtSetArg( args[n], XmNwidth, 300) ; n++ ;
102 XtSetArg( args[n], XmNnoResize, True) ; n++ ;
103 XtSetArg( args[n], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL) ; n++ ;
104 XtasSimuMessageWidget = XmCreateWorkingDialog (parent, "XtasInfosBox",args, n) ;
105 HelpFather = XtasSimuMessageWidget ;
106 XtUnmanageChild (XtNameToWidget (XtasSimuMessageWidget,"Help"));
107 XtUnmanageChild (XtNameToWidget (XtasSimuMessageWidget,"Cancel"));
108 XtUnmanageChild (XtNameToWidget (XtasSimuMessageWidget,"OK"));
109 XtUnmanageChild (XmMessageBoxGetChild (XtasSimuMessageWidget,XmDIALOG_SEPARATOR));
110 //XmAddTabGroup( XtasStbInProgressWidget ) ;
111 XmStringFree(text);
112
113 n = 0 ;
114 XtSetArg( args[n], XmNborderWidth, 0 ) ; n++ ;
115 form = XtCreateManagedWidget( "XtasTitleForm", xmFormWidgetClass, XtasSimuMessageWidget, args, n ) ;
116
117 n = 0 ;
118 XtSetArg( args[n], XmNtopAttachment, XmATTACH_FORM ) ; n++ ;
119 XtSetArg( args[n], XmNleftAttachment, XmATTACH_FORM ) ; n++ ;
120 XtSetArg( args[n], XmNrightAttachment, XmATTACH_FORM ) ; n++ ;
121 XtSetArg( args[n], XmNbottomAttachment, XmATTACH_FORM ) ; n++ ;
122 XtSetArg( args[n], XmNalignment, XmALIGNMENT_CENTER) ; n++ ;
123 XtSetArg( args[n], XmNlabelString, textLabel ) ; n++ ;
124 XtasSimuMessageLabel = XtCreateManagedWidget( "XtasMainTitles", xmLabelGadgetClass, form, args, n ) ;
125
126 }
127 else {
128 if (message) {
129 XtVaSetValues(XtasSimuMessageLabel, XmNlabelString, textLabel, NULL);
130 // XtVaSetValues(XtasSimuMessageWidget, XmNwidth, 300, NULL);
131 }
132 }
133
134 if (display) {
135 XtManageChild( XtasSimuMessageWidget ) ;
136 XalForceUpdate(XtasSimuMessageWidget) ;
137 sleep (1);
138 }
139 XmStringFree(textLabel);
140
141 }
142
143 /*--------------------------------------------------------------------------*/
144 /* */
145 /* XtasSimuDestroyMessageWindow */
146 /* */
147 /*--------------------------------------------------------------------------*/
148 void XtasSimuDestroyMessageWindow ()
149 {
150
151 if(XtasSimuMessageWidget) {
152 XtUnmanageChild (XtasSimuMessageWidget);
153 XmUpdateDisplay (XtParent(XtasSimuMessageWidget));
154 XtDestroyWidget(XtasSimuMessageWidget) ;
155 }
156 XtasSimuMessageWidget = NULL;
157 }
158
159 /*--------------------------------------------------------------------------*/
160 /* */
161 /* XtasSimuPath */
162 /* */
163 /*--------------------------------------------------------------------------*/
164 void XtasSimuPath (tas_winfos)
165 XtasWindowStruct *tas_winfos;
166 {
167 XtasDetailPathSetStruct *detail_set;
168 chain_list *head;
169 ttvcritic_list *critic;
170 // static char *prevfigname = NULL;
171 static lofig_list *lofig = NULL;
172 static cnsfig_list *cnsfig = NULL;
173 char buf[512];
174 int cns_exist = 0;
175 int gns_exist = 0;
176 int spi_exist = 0;
177 int res_simu = 0;
178 chain_list *chcritic;
179
180 detail_set = (XtasDetailPathSetStruct *) tas_winfos->userdata;
181 head = detail_set->CUR_DETAIL->DATA;
182 critic = head->DATA;
183
184 XtasPasqua();
185 if (sigsetjmp( XtasMyEnv , 1 ) == 0)
186 {
187 XtasSimuUpdateMessageWindow (detail_set->TOP_LEVEL, " ", 0);
188 if (!lofig || (XTAS_SIMU_NEW_NETLIST == 'Y')) {
189 if (filepath (XtasMainParam->ttvfig->INFO->FIGNAME,"cns"))
190 cns_exist = 1;
191 if ((filepath (XtasMainParam->ttvfig->INFO->FIGNAME,"gns")))
192 gns_exist = 1;
193 if ((filepath (XtasMainParam->ttvfig->INFO->FIGNAME,IN_LO)))
194 spi_exist = 1;
195 if (cns_exist) {
196 XtasSimuUpdateMessageWindow (NULL, "Loading cns figure", 1);
197 if((cnsfig =getloadedcnsfig(XtasMainParam->ttvfig->INFO->FIGNAME)) == NULL)
198 {
199 cnsfig = getcnsfig(XtasMainParam->ttvfig->INFO->FIGNAME, NULL);
200 cns_addmultivoltage(getloadedinffig(cnsfig->NAME),cnsfig) ;
201 }
202 lofig = getloadedlofig (XtasMainParam->ttvfig->INFO->FIGNAME);
203 }
204 else {
205 if ( spi_exist ) {
206 lofig = getlofig(XtasMainParam->ttvfig->INFO->FIGNAME,'A');
207 lofigchain (lofig);
208 }
209 }
210 if ( !lofig ) {
211 sprintf (buf, "Can't get description of figure %s.\nSimulation aborted.",XtasMainParam->ttvfig->INFO->FIGNAME);
212 XalDrawMessage (tas_winfos->errwidget, buf);
213 return;
214 }
215 // if a gns file exist, create corresponding table
216 if ( gns_exist ) {
217 LoadDynamicLibraries (NULL);
218 LATEST_GNS_RUN = gnsParseCorrespondanceTables(XtasMainParam->ttvfig->INFO->FIGNAME);
219 UpdateTransistorsForYagle(LATEST_GNS_RUN,TRUE);
220 }
221 }
222
223 // prevfigname = XtasMainParam->ttvfig->INFO->FIGNAME;
224 XTAS_SIMU_NEW_NETLIST = 'N';
225
226 XtasSetLabelString( detail_set->INFO_HELP, XTAS_NULINFO );
227 XtasSetLabelString( detail_set->INFO_HELP, "Simulation is running..." );
228
229
230 // XtasCleanStates();
231 // XalSetCursor( detail_set->TOP_LEVEL, WAIT );
232 // XalForceUpdate( detail_set->TOP_LEVEL );
233
234 tas_simu_set_progression (XtasSimuUpdateMessageWindow);
235
236 chcritic = addchain( NULL, critic );
237 if((detail_set->PARENT->PARAM->SCAN_TYPE & TTV_FIND_MAX ) == TTV_FIND_MAX)
238 res_simu = tas_simu_netlist(XtasMainParam->ttvfig, lofig, cnsfig, NULL, chcritic, SIM_MAX, 1, NULL, NULL, NULL, 0 , 0 );
239 else
240 res_simu = tas_simu_netlist(XtasMainParam->ttvfig, lofig, cnsfig, NULL, chcritic, SIM_MAX, 1, NULL, NULL, NULL, 0 , 0 );
241 // on appelle toujours avec SIM_MAX car TAS ne gere pas les bons delay min
242 // pour certain design
243 freechain( chcritic );
244
245 }
246 XtasSimuDestroyMessageWindow ();
247 XtasGetWarningMess() ;
248 XtasFirePasqua() ;
249
250
251 if ( !res_simu ) {
252 XtasSetLabelString( detail_set->INFO_HELP, XTAS_NULINFO );
253 XtasSetLabelString( detail_set->INFO_HELP, "Simulation failed" );
254 XTAS_SIMU_RES = 'N';
255 }
256 else {
257 XtasSetLabelString( detail_set->INFO_HELP, XTAS_NULINFO );
258 XtasSetLabelString( detail_set->INFO_HELP, "Simulation is finished" );
259 XTAS_SIMU_RES = 'Y';
260 }
261
262 XalSetCursor( detail_set->TOP_LEVEL, NORMAL );
263 XalForceUpdate( detail_set->TOP_LEVEL );
264
265 if ( (res_simu) )
266 XtasPathDetailList( detail_set->PARENT->TOP_LEVEL,
267 detail_set->PARENT );
268 }
269
270
271 /*--------------------------------------------------------------------------*/
272 /* */
273 /* XtasSimuUpdateVariables */
274 /* */
275 /*--------------------------------------------------------------------------*/
276 void XtasSimuUpdateVariables (void)
277 {
278 char pt[1024], buf[1024];
279
280 /* Techno File */
281 SIM_TECHFILE = sensitive_namealloc (XtasSimuParams->tec);
282 avt_sethashvar ("simTechnologyName", SIM_TECHFILE);
283
284 /* Tool */
285 V_INT_TAB[__SIM_TOOL].VALUE = XtasSimuParams->tool;
286 SIM_SPICESTRING = sensitive_namealloc (XtasSimuParams->spicestr);
287 avt_sethashvar ("avtSpiceString", SIM_SPICESTRING);
288 SIM_SPICEOUT = sensitive_namealloc (XtasSimuParams->spice_out);
289 avt_sethashvar ("avtSpiceOutFile", SIM_SPICEOUT);
290 SIM_SPICESTDOUT = sensitive_namealloc (XtasSimuParams->spice_stdout);
291 avt_sethashvar ("avtSpiceStdoutFile", SIM_SPICESTDOUT);
292 V_BOOL_TAB[__SIM_USE_PRINT].VALUE = XtasSimuParams->use_print==SIM_NO?0:1;
293 V_BOOL_TAB[__SIM_USE_MEAS].VALUE = XtasSimuParams->use_meas==SIM_NO?0:1;
294
295 /* Conditions */
296 V_FLOAT_TAB[__SIM_TIME].VALUE = XtasSimuParams->trans_time*1e-9;
297 V_FLOAT_TAB[__SIM_POWER_SUPPLY].VALUE = XtasSimuParams->vdd;
298 sprintf (buf, "%f", V_FLOAT_TAB[__SIM_POWER_SUPPLY].VALUE);
299 avt_sethashvar ("simPowerSupply", buf);
300 V_FLOAT_TAB[__SIM_TEMP].VALUE = XtasSimuParams->temp;
301 sprintf (buf, "%f", V_FLOAT_TAB[__SIM_TEMP].VALUE);
302 avt_sethashvar ("simTemperature", buf);
303 SIM_SPICE_OPTIONS = sensitive_namealloc (XtasSimuParams->spice_options);
304 avt_sethashvar ("simSpiceOptions", SIM_SPICE_OPTIONS);
305
306 /* Transient */
307 V_FLOAT_TAB[__SIM_TRAN_STEP].VALUE = XtasSimuParams->trans_step * 1e-12 ;
308
309 /* Input/Output Constraints */
310 SIM_INPUT_START = XtasSimuParams->input_start * (1.0e-12);
311 sprintf (buf, "%f", SIM_INPUT_START);
312 avt_sethashvar ("simInputStartTime", buf);
313 SIM_SLOP = XtasSimuParams->input_slope;
314 sprintf (buf, "%fe-12", SIM_SLOP);
315 avt_sethashvar ("simSlope", buf);
316 SIM_OUT_CAPA_VAL = XtasSimuParams->out_capa_val;
317 sprintf (buf, "%f", SIM_OUT_CAPA_VAL);
318 avt_sethashvar ("simOutCapaValue", buf);
319
320 /* Thresholds */
321 SIM_VTH = XtasSimuParams->vth / 100.0;
322 sprintf (buf, "%f", SIM_VTH);
323 avt_sethashvar ("simVth", buf);
324 SIM_VTH_HIGH = XtasSimuParams->vth_high / 100.0;
325 sprintf (buf, "%f", SIM_VTH_HIGH);
326 avt_sethashvar ("simVthHigh", buf);
327 SIM_VTH_LOW = XtasSimuParams->vth_low / 100.0;
328 sprintf (buf, "%f", SIM_VTH_LOW);
329 avt_sethashvar ("simVthLow", buf);
330
331 }
332
333 /*--------------------------------------------------------------------------*/
334 /* */
335 /* XtasSimuGetParamsValues */
336 /* */
337 /*--------------------------------------------------------------------------*/
338 int XtasSimuGetParamsValues (void)
339 {
340 char *text, *ptend;
341 double value;
342 Widget text_w;
343
344
345 /***** Get Technology File *****/
346 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuTechnoFileText");
347 text = XmTextGetString (text_w);
348 if (text) {
349 XtasSimuSetParamString (&(XtasSimuParams->tec), text);
350 XtFree (text);
351 }
352
353 /***** Get Command Line *****/
354 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuCmdLineText");
355 text = XmTextGetString (text_w);
356 if (text) {
357 XtasSimuSetParamString (&(XtasSimuParams->spicestr), text);
358 XtFree (text);
359 }
360
361 /***** Get output Format *****/
362 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuOutFormatText");
363 text = XmTextGetString (text_w);
364 if (text) {
365 XtasSimuSetParamString (&(XtasSimuParams->spice_out), text);
366 XtFree (text);
367 }
368
369 /***** Get stdout Format *****/
370 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuStdoutFormatText");
371 text = XmTextGetString (text_w);
372 if (text) {
373 XtasSimuSetParamString (&(XtasSimuParams->spice_stdout), text);
374 XtFree (text);
375 }
376
377 /***** Get Transient Values *****/
378 /* Get Time Value */
379 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuTimeText");
380 text = XmTextGetString (text_w);
381 if (text) {
382 value = strtod (text, &ptend);
383 if((*ptend != '\0') || (value < 0)) {
384 XalDrawMessage (XtasErrorWidget, "Bad value for Time.\nIt must be a positive floating number.");
385 XtFree (text);
386 return 1;
387 }
388 XtasSimuParams->trans_time = value;
389 XtFree (text);
390 }
391
392 /* Get Step Value */
393 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuStepText");
394 text = XmTextGetString (text_w);
395 if (text) {
396 value = strtod (text, &ptend);
397 if((*ptend != '\0') || (value <= 0)) {
398 XalDrawMessage (XtasErrorWidget, "Bad value for Step.\nIt must be a positive floating number.");
399 XtFree (text);
400 return 1;
401 }
402 XtasSimuParams->trans_step = value;
403 XtFree (text);
404 }
405
406 /***** Get Constraints Values *****/
407 /* Get Input Start Time Value */
408 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuInputStartText");
409 text = XmTextGetString (text_w);
410 if (text) {
411 value = strtod (text, &ptend);
412 if((*ptend != '\0') || (value < 0)) {
413 XalDrawMessage (XtasErrorWidget, "Bad value for Input Start Time.\nIt must be a positive floating number.");
414 XtFree (text);
415 return 1;
416 }
417 XtasSimuParams->input_start = value;
418 XtFree (text);
419 }
420
421 /* Get Input Slope Time Value */
422 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuInputSlopeText");
423 text = XmTextGetString (text_w);
424 if (text) {
425 value = strtod (text, &ptend);
426 if((*ptend != '\0') || (value < 0)) {
427 XalDrawMessage (XtasErrorWidget, "Bad value for Input Slope Time.\nIt must be a positive floating number.");
428 XtFree (text);
429 return 1;
430 }
431 XtasSimuParams->input_slope = value;
432 XtFree (text);
433 }
434
435 /* Get Out Capacitance Value Value */
436 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuOutCapaValText");
437 text = XmTextGetString (text_w);
438 if (text) {
439 value = strtod (text, &ptend);
440 if((*ptend != '\0') || (value < 0)) {
441 XalDrawMessage (XtasErrorWidget, "Bad value for Output Capacitance Value.\nIt must be a positive floating number.");
442 XtFree (text);
443 return 1;
444 }
445 XtasSimuParams->out_capa_val = value;
446 XtFree (text);
447 }
448
449 /***** Get General Values *****/
450 /* Get VDD Value */
451 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuVddText");
452 text = XmTextGetString (text_w);
453 if (text) {
454 value = strtod (text, &ptend);
455 if((*ptend != '\0')) {
456 XalDrawMessage (XtasErrorWidget, "Bad value for VDD.\nIt must be a floating number.");
457 XtFree (text);
458 return 1;
459 }
460 XtasSimuParams->vdd = value;
461 XtFree (text);
462 }
463
464 /* Get VTH Value */
465 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuVthText");
466 text = XmTextGetString (text_w);
467 if (text) {
468 value = strtod (text, &ptend);
469 if((*ptend != '\0') || (value < 0) || (value > 100)) {
470 XalDrawMessage (XtasErrorWidget, "Bad value for VTH.\nIt must be a floating number\nbetween 0 and 100.");
471 XtFree (text);
472 return 1;
473 }
474 XtasSimuParams->vth = value;
475 XtFree (text);
476 }
477
478 /* Get VTH high Value */
479 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuVthhText");
480 text = XmTextGetString (text_w);
481 if (text) {
482 value = strtod (text, &ptend);
483 if((*ptend != '\0') || (value < 0) || (value > 100)) {
484 XalDrawMessage (XtasErrorWidget, "Bad value for VTH high.\nIt must be a floating number\nbetween 0 and 100.");
485 XtFree (text);
486 return 1;
487 }
488 XtasSimuParams->vth_high = value;
489 XtFree (text);
490 }
491
492 /* Get VTH low Value */
493 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuVthlText");
494 text = XmTextGetString (text_w);
495 if (text) {
496 value = strtod (text, &ptend);
497 if((*ptend != '\0') || (value < 0) || (value > 100)) {
498 XalDrawMessage (XtasErrorWidget, "Bad value for VTH low.\nIt must be a floating number\nbetween 0 and 100.");
499 XtFree (text);
500 return 1;
501 }
502 XtasSimuParams->vth_low = value;
503 XtFree (text);
504 }
505
506
507 /* Get temperature Value */
508 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuTempText");
509 text = XmTextGetString (text_w);
510 if (text) {
511 value = strtod (text, &ptend);
512 if((*ptend != '\0')) {
513 XalDrawMessage (XtasErrorWidget, "Bad value for Temperature.\nMust a floating number.");
514 XtFree (text);
515 return 1;
516 }
517 XtasSimuParams->temp = value;
518 XtFree (text);
519 }
520
521 /* Get Simulator's options string */
522 text_w = XtNameToWidget (XtasSimuParamWidget, "*XtasSimuOptionsText");
523 text = XmTextGetString (text_w);
524 if (text) {
525 XtasSimuSetParamString (&(XtasSimuParams->spice_options), text);
526 XtFree (text);
527 }
528
529 return 0;
530
531 }
532
533 /*--------------------------------------------------------------------------*/
534 /* */
535 /* XtasSimuPathOkCallback */
536 /* */
537 /*--------------------------------------------------------------------------*/
538 void XtasSimuPathOkCallback (widget, client_data, call_data)
539 Widget widget ;
540 XtPointer client_data ;
541 XtPointer call_data ;
542 {
543
544 if (XtasSimuGetParamsValues () == 0) {
545 XtUnmanageChild (XtasSimuParamWidget);
546 XalSetCursor( ((XtasWindowStruct*)client_data)->topwidget, WAIT );
547 XalForceUpdate (((XtasWindowStruct*)client_data)->topwidget);
548 XtasSimuUpdateVariables ();
549 XtasSimuPath ((XtasWindowStruct *)client_data);
550 }
551 else
552 XtManageChild (XtasSimuParamWidget);
553
554 }
555
556 /*--------------------------------------------------------------------------*/
557 /* */
558 /* XtasSimuAdvancedParamCallback */
559 /* */
560 /*--------------------------------------------------------------------------*/
561 void XtasSimuAdvancedParamCallback (widget, client_data, call_data)
562 Widget widget ;
563 XtPointer client_data ;
564 XtPointer call_data ;
565 {
566
567
568
569 }
570
571 /*--------------------------------------------------------------------------*/
572 /* */
573 /* XtasSimuPathParamsToolCallback */
574 /* */
575 /*--------------------------------------------------------------------------*/
576 void XtasSimuPathParamsToolCallback (widget, tool, call_data)
577 Widget widget;
578 XtPointer tool;
579 XtPointer call_data;
580 {
581 XmToggleButtonCallbackStruct *state = (XmToggleButtonCallbackStruct *) call_data;
582
583 if (state->set) {
584 XtasSimuParams->tool = (int)(long)tool;
585 }
586 }
587
588 /*--------------------------------------------------------------------------*/
589 /* */
590 /* XtasSimuPathUsePrintCallback */
591 /* */
592 /*--------------------------------------------------------------------------*/
593 void XtasSimuPathUsePrintCallback (widget, client_data, call_data)
594 Widget widget;
595 XtPointer client_data;
596 XtPointer call_data;
597 {
598 XmToggleButtonCallbackStruct *state = (XmToggleButtonCallbackStruct *) call_data;
599
600 if (state->set)
601 XtasSimuParams->use_print = SIM_YES;
602 else
603 XtasSimuParams->use_print = SIM_NO;
604 }
605
606 /*--------------------------------------------------------------------------*/
607 /* */
608 /* XtasSimuPathUseMeasCallback */
609 /* */
610 /*--------------------------------------------------------------------------*/
611 void XtasSimuPathUseMeasCallback (widget, client_data, call_data)
612 Widget widget;
613 XtPointer client_data;
614 XtPointer call_data;
615 {
616 XmToggleButtonCallbackStruct *state = (XmToggleButtonCallbackStruct *) call_data;
617
618 if (state->set)
619 XtasSimuParams->use_meas = SIM_YES;
620 else
621 XtasSimuParams->use_meas = SIM_NO;
622 }
623
624 /*--------------------------------------------------------------------------*/
625 /* */
626 /* XtasSimuSelectTechnoFileOkCallback */
627 /* */
628 /*--------------------------------------------------------------------------*/
629 void XtasSimuSelectTechnoFileOkCallback (widget, text_w, call_data)
630 Widget widget;
631 XtPointer text_w;
632 XtPointer call_data;
633 {
634 XmFileSelectionBoxCallbackStruct *file_struct = (XmFileSelectionBoxCallbackStruct *) call_data ;
635 char *filepath ;
636
637
638 XmStringGetLtoR (file_struct->value, XmSTRING_DEFAULT_CHARSET, &filepath);
639 XmTextSetString ((Widget) text_w, filepath);
640 XmTextSetCursorPosition ((Widget) text_w, (XmTextPosition) strlen(filepath));
641 XmTextSetTopCharacter ((Widget) text_w, (XmTextPosition) 0);
642
643 XtUnmanageChild (widget);
644 }
645
646 /*--------------------------------------------------------------------------*/
647 /* */
648 /* XtasSimuSelectTechnoFileCallback */
649 /* */
650 /*--------------------------------------------------------------------------*/
651 void XtasSimuSelectTechnoFileCallback (widget, text_w, call_data)
652 Widget widget;
653 XtPointer text_w; /* the TextWidget to print file path when it is selected */
654 XtPointer call_data;
655 {
656 Arg args[10] ;
657 int n ;
658 Atom WM_DELETE_WINDOW ;
659 static Widget file_select = NULL ;
660
661 // XalLeaveLimitedLoop ();
662
663
664 if (!file_select) {
665 n = 0;
666 XtSetArg ( args[n], XmNtitle, XTAS_NAME": Simulation Technology File" ); n++;
667 XtSetArg ( args[n], XmNminWidth, 330 ); n++;
668 XtSetArg ( args[n], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL ); n++;
669
670 file_select = XmCreateFileSelectionDialog (XtasSimuParamWidget, "XtasFileSelect", args, n);
671 XtUnmanageChild (XmSelectionBoxGetChild (file_select, XmDIALOG_HELP_BUTTON));
672 XtAddCallback (file_select, XmNokCallback, XtasSimuSelectTechnoFileOkCallback, (XtPointer) text_w);
673 XtAddCallback (file_select, XmNcancelCallback, XtasCancelCallback, (XtPointer) file_select);
674
675
676 WM_DELETE_WINDOW = XmInternAtom (XtDisplay (widget), "WM_DELETE_WINDOW", False);
677 XmAddWMProtocolCallback (XtParent (file_select), WM_DELETE_WINDOW,
678 XtasCancelCallback, (XtPointer) file_select);
679 }
680
681 XtManageChild (file_select);
682 }
683
684 /*--------------------------------------------------------------------------*/
685 /* */
686 /* XtasSimuParamsInit */
687 /* */
688 /*--------------------------------------------------------------------------*/
689 void XtasSimuParamsInit (void)
690 {
691 /* char *env; */
692
693 XtasSimuParams = (xtas_simu_param_struct*) mbkalloc (sizeof (xtas_simu_param_struct));
694
695 /* Techno File */
696 XtasSimuParams->tec = NULL;
697 if (SIM_TECHFILE)
698 XtasSimuSetParamString (&(XtasSimuParams->tec), SIM_TECHFILE);
699 else
700 XtasSimuParams->tec = NULL;
701
702 /* Tool */
703 XtasSimuParams->tool = V_INT_TAB[__SIM_TOOL].VALUE;
704 XtasSimuParams->spicestr = NULL;
705 if (SIM_SPICESTRING)
706 XtasSimuSetParamString (&(XtasSimuParams->spicestr), SIM_SPICESTRING);
707 else
708 XtasSimuParams->spicestr = NULL;
709
710 XtasSimuParams->spice_out = NULL;
711 if (SIM_SPICEOUT)
712 XtasSimuSetParamString (&(XtasSimuParams->spice_out), SIM_SPICEOUT);
713 else
714 XtasSimuParams->spice_out = NULL;
715
716 XtasSimuParams->spice_stdout = NULL;
717 if (SIM_SPICESTDOUT)
718 XtasSimuSetParamString (&(XtasSimuParams->spice_stdout), SIM_SPICESTDOUT);
719 else
720 XtasSimuParams->spice_stdout = NULL;
721
722 XtasSimuParams->use_print = V_BOOL_TAB[__SIM_USE_PRINT].VALUE ;
723 XtasSimuParams->use_meas = V_BOOL_TAB[__SIM_USE_MEAS].VALUE ;
724
725 /* Conditions */
726 XtasSimuParams->trans_time = V_FLOAT_TAB[ __SIM_TIME ].VALUE * 1e9 ;
727 XtasSimuParams->vdd = V_FLOAT_TAB[__SIM_POWER_SUPPLY].VALUE ;
728 XtasSimuParams->temp = V_FLOAT_TAB[__SIM_TEMP].VALUE ;
729 XtasSimuParams->spice_options = NULL ;
730 if (SIM_SPICE_OPTIONS)
731 XtasSimuSetParamString (&(XtasSimuParams->spice_options), SIM_SPICE_OPTIONS);
732 else
733 XtasSimuParams->spice_options = NULL ;
734
735 /* Transient */
736 XtasSimuParams->trans_step = V_FLOAT_TAB[__SIM_TRAN_STEP].VALUE*1e12;
737
738 /* Input/Output Constraints */
739 XtasSimuParams->input_start = SIM_INPUT_START * (1.0e+12);
740 XtasSimuParams->input_slope = SIM_SLOP ;
741 if (SIM_OUT_CAPA_VAL > 0)
742 XtasSimuParams->out_capa_val= SIM_OUT_CAPA_VAL ;
743 else
744 XtasSimuParams->out_capa_val= 0.0 ;
745
746 /* Thresholds */
747 if (SIM_VTH != ELPINITTHR)
748 XtasSimuParams->vth = SIM_VTH * 100 ;
749 else
750 XtasSimuParams->vth = 0.5 * 100 ;
751 if (SIM_VTH_HIGH != ELPINITTHR)
752 XtasSimuParams->vth_high = SIM_VTH_HIGH * 100;
753 else
754 XtasSimuParams->vth_high = 0.8 * 100 ;
755 if (SIM_VTH_LOW != ELPINITTHR)
756 XtasSimuParams->vth_low = SIM_VTH_LOW * 100 ;
757 else
758 XtasSimuParams->vth_low = 0.2 * 100 ;
759
760 /* Data Extraction */
761 /* if ((env = V_STR_TAB[__SIM_MEAS_CMD].VALUE) != NULL)
762 XtasSimuSetParamString (&(XtasSimuParams->meas_cmd), env);
763 else
764 XtasSimuParams->meas_cmd = NULL;
765 if ((env = V_STR_TAB[__SIM_EXTRACT_RULE].VALUE) != NULL)
766 XtasSimuSetParamString (&(XtasSimuParams->extract_rule), env);
767 else
768 XtasSimuParams->extract_rule = NULL;*/
769 }
770
771 /*--------------------------------------------------------------------------*/
772 /* */
773 /* XtasSimuPathCallback */
774 /* */
775 /*--------------------------------------------------------------------------*/
776 void XtasSimuPathCallback (widget, client_data, call_data)
777 Widget widget ;
778 XtPointer client_data ;
779 XtPointer call_data ;
780 {
781 /* Variables for motif */
782 Arg args[20];
783 int n;
784 Widget frame, frame_top;
785 Widget win_form, frame_form, form;
786 Widget label_w, text_w, row_w, toggle, button;
787 XmString motif_str;
788 Pixmap pixmap, open_pixmap, f_pixmap, r_pixmap;
789 Pixel fg, bg;
790 Atom WM_DELETE_WINDOW;
791 char buf[1024];
792
793 /* Variables for treatment */
794 XtasWindowStruct *tas_winfos = (XtasWindowStruct *)client_data;
795 XtasDetailPathSetStruct *detail_set = (XtasDetailPathSetStruct *)tas_winfos->userdata;
796 chain_list *head = detail_set->CUR_DETAIL->DATA;
797 ttvcritic_list *critic = head->DATA;
798
799 if (!XtasSimuParamWidget) {
800
801 XtasSimuParamsInit ();
802
803 XtasSimuParams->input_slope = tas_get_input_slope ( critic );
804
805 n = 0;
806 XtSetArg ( args[n], XmNtitle, XTAS_NAME": Simulation Parameterization" ); n++;
807 XtSetArg ( args[n], XmNdialogStyle, XmDIALOG_APPLICATION_MODAL ); n++;
808 XtSetArg ( args[n], XmNwidth, 570); n++;
809 XtSetArg ( args[n], XmNmaxWidth, 570); n++;
810 XtasSimuParamWidget = XmCreatePromptDialog (XtasDeskMainForm, "XtasParamBox", args, n);
811 XtUnmanageChild (XmSelectionBoxGetChild (XtasSimuParamWidget, XmDIALOG_TEXT));
812 XtUnmanageChild (XmSelectionBoxGetChild (XtasSimuParamWidget, XmDIALOG_PROMPT_LABEL));
813 XtAddCallback (XtasSimuParamWidget, XmNokCallback, XtasSimuPathOkCallback, (XtPointer)client_data);
814 XtAddCallback (XtasSimuParamWidget, XmNcancelCallback, XtasSimuCancelCallback, (XtPointer)XtasSimuParamWidget);
815 XtAddCallback (XtasSimuParamWidget, XmNhelpCallback, XtasHelpCallback, (XtPointer)(XTAS_SRC_SIMUPARAM|XTAS_HELP_MAIN));
816 WM_DELETE_WINDOW = XmInternAtom(XtDisplay(XtasDeskMainForm), "WM_DELETE_WINDOW", False);
817 XmAddWMProtocolCallback(XtParent(XtasSimuParamWidget), WM_DELETE_WINDOW, XtasCancelCallback, (XtPointer)XtasSimuParamWidget);
818
819
820 n = 0;
821 win_form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, XtasSimuParamWidget, args, n);
822
823 XtVaGetValues (win_form, XmNforeground, &fg, XmNbackground, &bg, NULL);
824 r_pixmap = XalGetPixmap (win_form, XTAS_REDG_MAP, fg, bg);
825 f_pixmap = XalGetPixmap (win_form, XTAS_FEDG_MAP, fg, bg);
826 open_pixmap = XalGetPixmap (win_form, XTAS_OPEN_MAP, fg, bg);
827
828
829 /***** Frame: Simulated Path *****/
830 n = 0;
831 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
832 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
833 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
834 frame_top = XtCreateManagedWidget ("XtasFrame", xmFrameWidgetClass, win_form, args, n);
835
836 motif_str = XmStringCreateSimple("Simulated Path");
837 n = 0;
838 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
839 #if XTAS_MOTIF_VERSION >= 20000
840 XtSetArg ( args[n], XmNframeChildType, XmFRAME_TITLE_CHILD ); n++;
841 #else
842 XtSetArg ( args[n], XmNchildType, XmFRAME_TITLE_CHILD ); n++;
843 #endif
844 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame_top, args, n);
845 XmStringFree (motif_str);
846
847 n = 0;
848 #if XTAS_MOTIF_VERSION >= 20000
849 XtSetArg ( args[n], XmNframeChildType, XmFRAME_WORKAREA_CHILD ); n++;
850 #else
851 XtSetArg ( args[n], XmNchildType, XmFRAME_WORKAREA_CHILD ); n++;
852 #endif
853 frame_form = XtCreateManagedWidget ("XtasSubForm", xmFormWidgetClass, frame_top, args, n);
854
855
856 motif_str = XmStringCreateSimple ("From:");
857 n = 0;
858 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
859 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
860 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
861 XtSetArg ( args[n], XmNheight, 30 ); n++;
862 XtSetArg ( args[n], XmNwidth, 40 ); n++;
863 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
864 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
865 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame_form, args, n);
866 XmStringFree (motif_str);
867
868 if ((r_pixmap == XmUNSPECIFIED_PIXMAP) || (f_pixmap == XmUNSPECIFIED_PIXMAP))
869 {
870 motif_str = ((critic->SNODE & TTV_NODE_UP) == TTV_NODE_UP) ? XmStringCreateSimple("(Rising)") : XmStringCreateSimple("(Falling)");
871 n = 0;
872 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
873 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
874 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
875 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
876 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
877 XtSetArg ( args[n], XmNleftWidget, label_w ); n++;
878 XtSetArg ( args[n], XmNwidth, 40 ); n++;
879 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
880 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame_form, args, n);
881 XmStringFree (motif_str);
882 }
883 else
884 {
885 pixmap = ((critic->SNODE & TTV_NODE_UP) == TTV_NODE_UP) ? r_pixmap : f_pixmap;
886 n = 0;
887 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
888 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
889 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
890 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
891 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
892 XtSetArg ( args[n], XmNleftWidget, label_w ); n++;
893 XtSetArg ( args[n], XmNwidth, 40 ); n++;
894 XtSetArg ( args[n], XmNlabelType, XmPIXMAP ); n++;
895 XtSetArg ( args[n], XmNlabelPixmap, pixmap ); n++;
896 label_w = XtCreateManagedWidget( "XtasLabels", xmLabelWidgetClass, frame_form, args, n);
897 }
898
899 n = 0;
900 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
901 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
902 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
903 XtSetArg ( args[n], XmNrightOffset, 2 ); n++;
904 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
905 XtSetArg ( args[n], XmNleftWidget, label_w ); n++;
906 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
907 XtSetArg ( args[n], XmNwidth, 490 ); n++;
908 XtSetArg ( args[n], XmNvalue, critic->NAME ); n++;
909 XtSetArg ( args[n], XmNeditable, False ); n++;
910 XtSetArg ( args[n], XmNeditMode, XmMULTI_LINE_EDIT ); n++;
911 XtSetArg ( args[n], XmNresizeHeight, True ); n++;
912 XtSetArg ( args[n], XmNwordWrap, True ); n++;
913 XtSetArg ( args[n], XmNbackground, bg ); n++;
914 XtSetArg ( args[n], XmNbottomShadowColor, bg ); n++;
915 XtSetArg ( args[n], XmNbottomShadowPixmap,XmUNSPECIFIED_PIXMAP ); n++;
916 XtSetArg ( args[n], XmNtopShadowColor, bg ); n++;
917 XtSetArg ( args[n], XmNtopShadowPixmap, XmUNSPECIFIED_PIXMAP ); n++;
918 XtSetArg ( args[n], XmNcursorPositionVisible, False ); n++;
919 label_w = XtCreateManagedWidget ("XtasLabels", xmTextWidgetClass, frame_form, args, n);
920
921 motif_str = XmStringCreateSimple ("To:");
922 n = 0;
923 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
924 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
925 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
926 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
927 XtSetArg ( args[n], XmNheight, 30 ); n++;
928 XtSetArg ( args[n], XmNwidth, 40 ); n++;
929 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
930 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
931 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame_form, args, n);
932 XmStringFree (motif_str);
933
934 /* recherche du point d'arrivee */
935 while (critic->NEXT !=NULL)
936 critic=critic->NEXT;
937
938 if ((r_pixmap == XmUNSPECIFIED_PIXMAP) || (f_pixmap == XmUNSPECIFIED_PIXMAP))
939 {
940 motif_str = ((critic->SNODE & TTV_NODE_UP) == TTV_NODE_UP) ? XmStringCreateSimple("(Rising)") : XmStringCreateSimple("(Falling)");
941 n = 0;
942 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
943 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
944 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
945 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
946 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
947 XtSetArg ( args[n], XmNleftWidget, label_w ); n++;
948 XtSetArg ( args[n], XmNwidth, 40 ); n++;
949 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
950 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame_form, args, n);
951 XmStringFree (motif_str);
952 }
953 else
954 {
955 pixmap = ((critic->SNODE & TTV_NODE_UP) == TTV_NODE_UP) ? r_pixmap : f_pixmap;
956 n = 0;
957 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
958 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
959 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
960 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
961 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
962 XtSetArg ( args[n], XmNleftWidget, label_w ); n++;
963 XtSetArg ( args[n], XmNwidth, 40 ); n++;
964 XtSetArg ( args[n], XmNlabelType, XmPIXMAP ); n++;
965 XtSetArg ( args[n], XmNlabelPixmap, pixmap ); n++;
966 label_w = XtCreateManagedWidget( "XtasLabels", xmLabelWidgetClass, frame_form, args, n);
967 }
968
969 n = 0;
970 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
971 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
972 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
973 XtSetArg ( args[n], XmNrightOffset, 2 ); n++;
974 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
975 XtSetArg ( args[n], XmNleftWidget, label_w ); n++;
976 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
977 XtSetArg ( args[n], XmNwidth, 490 ); n++;
978 XtSetArg ( args[n], XmNvalue, critic->NAME ); n++;
979 XtSetArg ( args[n], XmNeditable, False ); n++;
980 XtSetArg ( args[n], XmNeditMode, XmMULTI_LINE_EDIT ); n++;
981 XtSetArg ( args[n], XmNresizeHeight, True ); n++;
982 XtSetArg ( args[n], XmNwordWrap, True ); n++;
983 XtSetArg ( args[n], XmNbackground, bg ); n++;
984 XtSetArg ( args[n], XmNbottomShadowColor, bg ); n++;
985 XtSetArg ( args[n], XmNbottomShadowPixmap,XmUNSPECIFIED_PIXMAP ); n++;
986 XtSetArg ( args[n], XmNtopShadowColor, bg ); n++;
987 XtSetArg ( args[n], XmNtopShadowPixmap, XmUNSPECIFIED_PIXMAP ); n++;
988 XtSetArg ( args[n], XmNcursorPositionVisible, False ); n++;
989 label_w = XtCreateManagedWidget ("XtasLabels", xmTextWidgetClass, frame_form, args, n);
990
991
992 /***** Frame: Technology Name *****/
993 n = 0;
994 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
995 XtSetArg ( args[n], XmNtopWidget, frame_top ); n++;
996 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
997 XtSetArg ( args[n], XmNleftWidget, frame_top ); n++;
998 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
999 XtSetArg ( args[n], XmNrightWidget, frame_top ); n++;
1000 frame_top = XtCreateManagedWidget ("XtasFrame", xmFrameWidgetClass, win_form, args, n);
1001
1002 motif_str = XmStringCreateSimple ("Technology File");
1003 n = 0;
1004 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1005 #if XTAS_MOTIF_VERSION >= 20000
1006 XtSetArg ( args[n], XmNframeChildType, XmFRAME_TITLE_CHILD ); n++;
1007 #else
1008 XtSetArg ( args[n], XmNchildType, XmFRAME_TITLE_CHILD ); n++;
1009 #endif
1010 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame_top, args, n);
1011 XmStringFree (motif_str);
1012
1013 n = 0;
1014 #if XTAS_MOTIF_VERSION >= 20000
1015 XtSetArg ( args[n], XmNframeChildType, XmFRAME_WORKAREA_CHILD ); n++;
1016 #else
1017 XtSetArg ( args[n], XmNchildType, XmFRAME_WORKAREA_CHILD ); n++;
1018 #endif
1019 frame_form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, frame_top, args, n);
1020
1021 n = 0;
1022 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1023 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1024 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1025 XtSetArg ( args[n], XmNbottomOffset, 5 ); n++;
1026 XtSetArg ( args[n], XmNheight, 35 ); n++;
1027 XtSetArg ( args[n], XmNwidth, 40 ); n++;
1028 XtSetArg ( args[n], XmNlabelType, XmPIXMAP ); n++;
1029 XtSetArg ( args[n], XmNlabelPixmap, open_pixmap ); n++;
1030 XtSetArg ( args[n], XmNpushButtonEnabled, True ); n++;
1031 XtSetArg ( args[n], XmNshadowType, XmSHADOW_ETCHED_OUT ); n++;
1032 XtSetArg ( args[n], XmNshadowThickness, 2 ); n++;
1033 button = XtCreateManagedWidget ("dbutton", xmDrawnButtonWidgetClass, frame_form, args, n);
1034
1035 n = 0;
1036 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1037 XtSetArg ( args[n], XmNtopWidget, button ); n++;
1038 XtSetArg ( args[n], XmNtopOffset, 2 ); n++;
1039 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1040 XtSetArg ( args[n], XmNbottomWidget, button ); n++;
1041 XtSetArg ( args[n], XmNbottomOffset, 2 ); n++;
1042 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1043 XtSetArg ( args[n], XmNrightWidget, button ); n++;
1044 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1045 XtSetArg ( args[n], XmNwidth, 375 ); n++;
1046 text_w = XtCreateManagedWidget ("XtasSimuTechnoFileText", xmTextWidgetClass, frame_form, args, n);
1047 XmTextSetString (text_w, XtasSimuParams->tec);
1048 XtAddCallback(button, XmNactivateCallback, XtasSimuSelectTechnoFileCallback, (XtPointer)text_w);
1049
1050
1051 motif_str = XmStringCreateSimple ("Technology File:");
1052 n = 0;
1053 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1054 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1055 XtSetArg ( args[n], XmNtopWidget, text_w ); n++;
1056 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1057 XtSetArg ( args[n], XmNbottomWidget, text_w ); n++;
1058 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1059 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
1060 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1061 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1062 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1063 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1064 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame_form, args, n);
1065 XmStringFree (motif_str);
1066
1067
1068 /***** Frame : Simulation Tool *****/
1069 n = 0;
1070 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1071 XtSetArg ( args[n], XmNtopWidget, frame_top ); n++;
1072 XtSetArg ( args[n], XmNtopOffset, 5 ); n++;
1073 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1074 frame = XtCreateManagedWidget ("XtasFrame", xmFrameWidgetClass, win_form, args, n);
1075
1076 motif_str = XmStringCreateSimple ("Simulation Tool");
1077 n = 0;
1078 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1079 #if XTAS_MOTIF_VERSION >= 20000
1080 XtSetArg ( args[n], XmNframeChildType, XmFRAME_TITLE_CHILD ); n++;
1081 #else
1082 XtSetArg ( args[n], XmNchildType, XmFRAME_TITLE_CHILD ); n++;
1083 #endif
1084 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame, args, n);
1085 XmStringFree (motif_str);
1086
1087
1088 n = 0;
1089 #if XTAS_MOTIF_VERSION >= 20000
1090 XtSetArg ( args[n], XmNframeChildType, XmFRAME_WORKAREA_CHILD ); n++;
1091 #else
1092 XtSetArg ( args[n], XmNchildType, XmFRAME_WORKAREA_CHILD ); n++;
1093 #endif
1094 frame_form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, frame, args, n);
1095
1096 n = 0;
1097 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1098 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1099 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1100 XtSetArg ( args[n], XmNpacking, XmPACK_COLUMN ); n++;
1101 XtSetArg ( args[n], XmNorientation, XmVERTICAL ); n++;
1102 XtSetArg ( args[n], XmNnumColumns, 2 ); n++;
1103 XtSetArg ( args[n], XmNradioBehavior, True ); n++;
1104 XtSetArg ( args[n], XmNradioAlwaysOne, True ); n++;
1105 XtSetArg ( args[n], XmNisAligned, True ); n++;
1106 XtSetArg ( args[n], XmNmarginHeight, 5 ); n++;
1107 XtSetArg ( args[n], XmNmarginWidth, 60 ); n++;
1108 XtSetArg ( args[n], XmNspacing, 25 ); n++;
1109 // XtSetArg ( args[n], XmNadjustLast, False ); n++;
1110 row_w = XtCreateManagedWidget ("XtasRow", xmRowColumnWidgetClass, frame_form, args, n);
1111
1112 motif_str = XmStringCreateSimple ("Eldo");
1113 n = 0;
1114 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1115 XtSetArg ( args[n], XmNset, XtasSimuParams->tool == SIM_TOOL_ELDO ? True:False ); n++;
1116 toggle = XtCreateManagedWidget ("XtasToggle", xmToggleButtonWidgetClass, row_w, args, n);
1117 XmStringFree ( motif_str);
1118 XtAddCallback (toggle, XmNvalueChangedCallback, XtasSimuPathParamsToolCallback, (XtPointer)SIM_TOOL_ELDO);
1119
1120 motif_str = XmStringCreateSimple ("NgSpice");
1121 n = 0;
1122 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1123 XtSetArg ( args[n], XmNset, XtasSimuParams->tool == SIM_TOOL_NGSPICE ? True:False); n++;
1124 toggle = XtCreateManagedWidget ("XtasToggle", xmToggleButtonWidgetClass, row_w, args, n);
1125 XmStringFree ( motif_str);
1126 XtAddCallback (toggle, XmNvalueChangedCallback, XtasSimuPathParamsToolCallback, (XtPointer)SIM_TOOL_NGSPICE);
1127
1128 motif_str = XmStringCreateSimple ("LtSpice");
1129 n = 0;
1130 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1131 XtSetArg ( args[n], XmNset, XtasSimuParams->tool == SIM_TOOL_LTSPICE ? True:False); n++;
1132 toggle = XtCreateManagedWidget ("XtasToggle", xmToggleButtonWidgetClass, row_w, args, n);
1133 XmStringFree ( motif_str);
1134 XtAddCallback (toggle, XmNvalueChangedCallback, XtasSimuPathParamsToolCallback, (XtPointer)SIM_TOOL_LTSPICE);
1135
1136 motif_str = XmStringCreateSimple ("MSpice");
1137 n = 0;
1138 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1139 XtSetArg ( args[n], XmNset, XtasSimuParams->tool == SIM_TOOL_MSPICE ? True:False); n++;
1140 toggle = XtCreateManagedWidget ("XtasToggle", xmToggleButtonWidgetClass, row_w, args, n);
1141 XmStringFree ( motif_str);
1142 XtAddCallback (toggle, XmNvalueChangedCallback, XtasSimuPathParamsToolCallback, (XtPointer)SIM_TOOL_MSPICE);
1143
1144 motif_str = XmStringCreateSimple ("HSpice");
1145 n = 0;
1146 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1147 XtSetArg ( args[n], XmNset, XtasSimuParams->tool == SIM_TOOL_HSPICE ? True:False); n++;
1148 toggle = XtCreateManagedWidget ("XtasToggle", xmToggleButtonWidgetClass, row_w, args, n);
1149 XmStringFree ( motif_str);
1150 XtAddCallback (toggle, XmNvalueChangedCallback, XtasSimuPathParamsToolCallback, (XtPointer)SIM_TOOL_HSPICE);
1151
1152 motif_str = XmStringCreateSimple ("Other");
1153 n = 0;
1154 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1155 XtSetArg ( args[n], XmNset, ((XtasSimuParams->tool == SIM_TOOL_TITAN)||(XtasSimuParams->tool == SIM_TOOL_TITAN)) ? True:False); n++;
1156 toggle = XtCreateManagedWidget ("XtasToggle", xmToggleButtonWidgetClass, row_w, args, n);
1157 XmStringFree ( motif_str);
1158 XtAddCallback (toggle, XmNvalueChangedCallback, XtasSimuPathParamsToolCallback, (XtPointer)V_INT_TAB[__SIM_TOOL].VALUE);
1159
1160 n = 0;
1161 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1162 XtSetArg ( args[n], XmNtopWidget, row_w ); n++;
1163 XtSetArg ( args[n], XmNtopOffset, 5 ); n++;
1164 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1165 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1166 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1167 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, frame_form, args, n);
1168
1169 motif_str = XmStringCreateSimple ("Command line:");
1170 n = 0;
1171 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1172 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1173 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
1174 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1175 XtSetArg ( args[n], XmNheight, 30 ); n++;
1176 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1177 XmStringFree (motif_str);
1178
1179 n = 0;
1180 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1181 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1182 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1183 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1184 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1185 XtSetArg ( args[n], XmNleftWidget, label_w ); n++;
1186 XtSetArg ( args[n], XmNleftOffset, 10 ); n++;
1187 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1188 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1189 text_w = XtCreateManagedWidget ("XtasSimuCmdLineText", xmTextWidgetClass, form, args, n);
1190 XmTextSetString (text_w, XtasSimuParams->spicestr);
1191
1192 motif_str = XmStringCreateSimple ("Output File Format:");
1193 n = 0;
1194 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1195 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1196 XtSetArg ( args[n], XmNtopOffset, 5 ); n++;
1197 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1198 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
1199 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1200 XtSetArg ( args[n], XmNheight, 30 ); n++;
1201 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1202 XmStringFree (motif_str);
1203
1204 n = 0;
1205 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1206 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1207 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1208 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1209 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1210 XtSetArg ( args[n], XmNleftWidget, label_w ); n++;
1211 XtSetArg ( args[n], XmNleftOffset, 10 ); n++;
1212 XtSetArg ( args[n], XmNwidth, 50 ); n++;
1213 text_w = XtCreateManagedWidget ("XtasSimuOutFormatText", xmTextWidgetClass, form, args, n);
1214 XmTextSetString (text_w, XtasSimuParams->spice_out);
1215
1216 motif_str = XmStringCreateSimple ("Stdout Redirection File Format:");
1217 n = 0;
1218 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1219 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1220 XtSetArg ( args[n], XmNtopOffset, 5 ); n++;
1221 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1222 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
1223 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1224 XtSetArg ( args[n], XmNheight, 30 ); n++;
1225 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1226 XmStringFree (motif_str);
1227
1228 n = 0;
1229 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1230 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1231 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1232 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1233 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1234 XtSetArg ( args[n], XmNleftWidget, label_w ); n++;
1235 XtSetArg ( args[n], XmNleftOffset, 10 ); n++;
1236 XtSetArg ( args[n], XmNwidth, 50 ); n++;
1237 text_w = XtCreateManagedWidget ("XtasSimuStdoutFormatText", xmTextWidgetClass, form, args, n);
1238 XmTextSetString (text_w, XtasSimuParams->spice_stdout);
1239
1240 motif_str = XmStringCreateSimple( "Use Print" ) ;
1241 toggle = XtVaCreateManagedWidget( "XtasSubTitles", xmToggleButtonWidgetClass, form,
1242 XmNset, (XtasSimuParams->use_print == SIM_YES) ? True:False,
1243 XmNtopAttachment, XmATTACH_WIDGET,
1244 XmNtopWidget, label_w,
1245 XmNtopOffset, 5,
1246 XmNleftAttachment,XmATTACH_FORM,
1247 XmNleftOffset, 5,
1248 XmNheight, 20,
1249 XmNlabelString, motif_str,
1250 NULL) ;
1251 XmStringFree( motif_str ) ;
1252 XtAddCallback( toggle, XmNvalueChangedCallback, XtasSimuPathUsePrintCallback, NULL) ;
1253
1254 motif_str = XmStringCreateSimple( "Use Measure" ) ;
1255 toggle = XtVaCreateManagedWidget( "XtasSubTitles", xmToggleButtonWidgetClass, form,
1256 XmNset, (XtasSimuParams->use_meas == SIM_YES) ? True:False,
1257 XmNtopAttachment, XmATTACH_WIDGET,
1258 XmNtopWidget, toggle,
1259 XmNtopOffset, 5,
1260 XmNleftAttachment,XmATTACH_FORM,
1261 XmNleftOffset, 5,
1262 XmNbottomAttachment,XmATTACH_FORM,
1263 XmNbottomOffset, 5,
1264 XmNheight, 20,
1265 XmNlabelString, motif_str,
1266 NULL) ;
1267 XmStringFree( motif_str ) ;
1268 XtAddCallback( toggle, XmNvalueChangedCallback, XtasSimuPathUseMeasCallback, NULL) ;
1269
1270
1271 /***** Frame: Input/Output Constraints *****/
1272 n = 0;
1273 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1274 XtSetArg ( args[n], XmNtopWidget, frame ); n++;
1275 XtSetArg ( args[n], XmNtopOffset, 5 ); n++;
1276 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1277 XtSetArg ( args[n], XmNleftWidget, frame ); n++;
1278 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1279 XtSetArg ( args[n], XmNrightWidget, frame ); n++;
1280 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_FORM ); n++;
1281 frame = XtCreateManagedWidget ("XtasFrame", xmFrameWidgetClass, win_form, args, n);
1282
1283
1284 motif_str = XmStringCreateSimple ("Input/Output Constraints");
1285 n = 0;
1286 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1287 #if XTAS_MOTIF_VERSION >= 20000
1288 XtSetArg ( args[n], XmNframeChildType, XmFRAME_TITLE_CHILD ); n++;
1289 #else
1290 XtSetArg ( args[n], XmNchildType, XmFRAME_TITLE_CHILD ); n++;
1291 #endif
1292 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame, args, n);
1293 XmStringFree (motif_str);
1294
1295 n = 0;
1296 #if XTAS_MOTIF_VERSION >= 20000
1297 XtSetArg ( args[n], XmNframeChildType, XmFRAME_WORKAREA_CHILD ); n++;
1298 #else
1299 XtSetArg ( args[n], XmNchildType, XmFRAME_WORKAREA_CHILD ); n++;
1300 #endif
1301 XtSetArg ( args[n], XmNpacking, XmPACK_COLUMN ); n++;
1302 XtSetArg ( args[n], XmNorientation, XmVERTICAL ); n++;
1303 XtSetArg ( args[n], XmNnumColumns, 1 ); n++;
1304 XtSetArg ( args[n], XmNisAligned, True ); n++;
1305 XtSetArg ( args[n], XmNmarginHeight, 5 ); n++;
1306 XtSetArg ( args[n], XmNmarginWidth, 17 ); n++;
1307 XtSetArg ( args[n], XmNspacing, 5 ); n++;
1308 row_w = XtCreateManagedWidget ("XtasRow", xmRowColumnWidgetClass, frame, args, n);
1309
1310 /* FORM: Input Start Time */
1311 n = 0;
1312 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1313
1314 motif_str = XmStringCreateSimple ("ps");
1315 n = 0;
1316 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1317 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1318 XtSetArg ( args[n], XmNheight, 30 ); n++;
1319 XtSetArg ( args[n], XmNwidth, 3*7 ); n++;
1320 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1321 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1322 XmStringFree (motif_str);
1323
1324 n = 0;
1325 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1326 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1327 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1328 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1329 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1330 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1331 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1332 XtSetArg ( args[n], XmNwidth, 60 ); n++;
1333 text_w = XtCreateManagedWidget ("XtasSimuInputStartText", xmTextWidgetClass, form, args, n);
1334 sprintf (buf, "%.2f", XtasSimuParams->input_start);
1335 XmTextSetString (text_w, buf);
1336
1337 motif_str = XmStringCreateSimple ("Input Start Time =");
1338 n = 0;
1339 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1340 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1341 XtSetArg ( args[n], XmNtopWidget, text_w ); n++;
1342 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1343 XtSetArg ( args[n], XmNbottomWidget, text_w ); n++;
1344 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1345 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1346 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1347 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1348 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1349 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1350 XmStringFree (motif_str);
1351
1352 /* FORM: Input Slope Time */
1353 n = 0;
1354 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1355
1356 motif_str = XmStringCreateSimple ("ps");
1357 n = 0;
1358 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1359 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1360 XtSetArg ( args[n], XmNheight, 30 ); n++;
1361 XtSetArg ( args[n], XmNwidth, 3*7 ); n++;
1362 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1363 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1364 XmStringFree (motif_str);
1365
1366 n = 0;
1367 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1368 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1369 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1370 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1371 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1372 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1373 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1374 XtSetArg ( args[n], XmNwidth, 60 ); n++;
1375 text_w = XtCreateManagedWidget ("XtasSimuInputSlopeText", xmTextWidgetClass, form, args, n);
1376 sprintf (buf, "%.2f", XtasSimuParams->input_slope);
1377 XmTextSetString (text_w, buf);
1378
1379 motif_str = XmStringCreateSimple ("Input Slope Time =");
1380 n = 0;
1381 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1382 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1383 XtSetArg ( args[n], XmNtopWidget, text_w ); n++;
1384 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1385 XtSetArg ( args[n], XmNbottomWidget, text_w ); n++;
1386 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1387 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1388 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1389 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1390 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1391 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1392 XmStringFree (motif_str);
1393
1394 /* FORM: Input Slope Time */
1395 n = 0;
1396 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1397
1398 motif_str = XmStringCreateSimple ("fF");
1399 n = 0;
1400 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1401 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1402 XtSetArg ( args[n], XmNheight, 30 ); n++;
1403 XtSetArg ( args[n], XmNwidth, 3*7 ); n++;
1404 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1405 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1406 XmStringFree (motif_str);
1407
1408 n = 0;
1409 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1410 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1411 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1412 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1413 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1414 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1415 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1416 XtSetArg ( args[n], XmNwidth, 60 ); n++;
1417 text_w = XtCreateManagedWidget ("XtasSimuOutCapaValText", xmTextWidgetClass, form, args, n);
1418 sprintf (buf, "%.2f", XtasSimuParams->out_capa_val);
1419 XmTextSetString (text_w, buf);
1420
1421 motif_str = XmStringCreateSimple ("Output Capacitance Value =");
1422 n = 0;
1423 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1424 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1425 XtSetArg ( args[n], XmNtopWidget, text_w ); n++;
1426 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1427 XtSetArg ( args[n], XmNbottomWidget, text_w ); n++;
1428 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1429 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1430 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1431 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1432 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1433 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1434 XmStringFree (motif_str);
1435
1436
1437 /***** Frame : Step *****/
1438 n = 0;
1439 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_WIDGET ); n++;
1440 XtSetArg ( args[n], XmNleftWidget, frame ); n++;
1441 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
1442 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1443 XtSetArg ( args[n], XmNbottomWidget, frame ); n++;
1444 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1445 frame = XtCreateManagedWidget ("XtasFrame", xmFrameWidgetClass, win_form, args, n);
1446
1447 motif_str = XmStringCreateSimple ("Step");
1448 n = 0;
1449 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1450 #if XTAS_MOTIF_VERSION >= 20000
1451 XtSetArg ( args[n], XmNframeChildType, XmFRAME_TITLE_CHILD ); n++;
1452 #else
1453 XtSetArg ( args[n], XmNchildType, XmFRAME_TITLE_CHILD ); n++;
1454 #endif
1455 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame, args, n);
1456 XmStringFree (motif_str);
1457
1458
1459 n = 0;
1460 #if XTAS_MOTIF_VERSION >= 20000
1461 XtSetArg ( args[n], XmNframeChildType, XmFRAME_WORKAREA_CHILD ); n++;
1462 #else
1463 XtSetArg ( args[n], XmNchildType, XmFRAME_WORKAREA_CHILD ); n++;
1464 #endif
1465 XtSetArg ( args[n], XmNpacking, XmPACK_COLUMN ); n++;
1466 XtSetArg ( args[n], XmNorientation, XmVERTICAL ); n++;
1467 XtSetArg ( args[n], XmNnumColumns, 1 ); n++;
1468 XtSetArg ( args[n], XmNisAligned, True ); n++;
1469 XtSetArg ( args[n], XmNmarginHeight, 5 ); n++;
1470 XtSetArg ( args[n], XmNmarginWidth, 25 ); n++;
1471 XtSetArg ( args[n], XmNspacing, 5 ); n++;
1472 row_w = XtCreateManagedWidget ("XtasRow", xmRowColumnWidgetClass, frame, args, n);
1473
1474
1475
1476 /* FORM: Step */
1477 n = 0;
1478 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1479
1480 motif_str = XmStringCreateSimple ("ps");
1481 n = 0;
1482 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1483 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1484 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1485 XtSetArg ( args[n], XmNrightOffset, 24 ); n++;
1486 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1487 XtSetArg ( args[n], XmNheight, 30 ); n++;
1488 XtSetArg ( args[n], XmNwidth, 3*7 ); n++; /* 7 = largeur moyenne d'un caractere */
1489 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1490 XmStringFree (motif_str);
1491
1492 n = 0;
1493 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1494 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1495 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1496 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1497 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1498 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1499 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1500 XtSetArg ( args[n], XmNwidth, 70 ); n++;
1501 text_w = XtCreateManagedWidget ("XtasSimuStepText", xmTextWidgetClass, form, args, n);
1502 sprintf (buf , "%.3f", XtasSimuParams->trans_step);
1503 XmTextSetString (text_w, buf);
1504
1505 motif_str = XmStringCreateSimple ("Step =");
1506 n = 0;
1507 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1508 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1509 XtSetArg ( args[n], XmNtopWidget, text_w ); n++;
1510 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1511 XtSetArg ( args[n], XmNbottomWidget, text_w ); n++;
1512 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1513 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1514 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1515 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1516 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1517 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1518 XmStringFree (motif_str);
1519
1520
1521 /***** Frame: Thresholds *****/
1522 n = 0;
1523 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1524 XtSetArg ( args[n], XmNrightWidget, frame ); n++;
1525 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1526 XtSetArg ( args[n], XmNleftWidget, frame ); n++;
1527 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_WIDGET ); n++;
1528 XtSetArg ( args[n], XmNbottomWidget, frame ); n++;
1529 XtSetArg ( args[n], XmNbottomOffset, 5 ); n++;
1530 frame = XtCreateManagedWidget ("XtasFrame", xmFrameWidgetClass, win_form, args, n);
1531
1532 motif_str = XmStringCreateSimple ("Thresholds");
1533 n = 0;
1534 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1535 #if XTAS_MOTIF_VERSION >= 20000
1536 XtSetArg ( args[n], XmNframeChildType, XmFRAME_TITLE_CHILD ); n++;
1537 #else
1538 XtSetArg ( args[n], XmNchildType, XmFRAME_TITLE_CHILD ); n++;
1539 #endif
1540 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame, args, n);
1541 XmStringFree (motif_str);
1542
1543 n = 0;
1544 #if XTAS_MOTIF_VERSION >= 20000
1545 XtSetArg ( args[n], XmNframeChildType, XmFRAME_WORKAREA_CHILD ); n++;
1546 #else
1547 XtSetArg ( args[n], XmNchildType, XmFRAME_WORKAREA_CHILD ); n++;
1548 #endif
1549 XtSetArg ( args[n], XmNpacking, XmPACK_COLUMN ); n++;
1550 XtSetArg ( args[n], XmNorientation, XmVERTICAL ); n++;
1551 XtSetArg ( args[n], XmNnumColumns, 1 ); n++;
1552 XtSetArg ( args[n], XmNisAligned, True ); n++;
1553 XtSetArg ( args[n], XmNmarginHeight, 10 ); n++;
1554 XtSetArg ( args[n], XmNmarginWidth, 17 ); n++;
1555 XtSetArg ( args[n], XmNspacing, 5 ); n++;
1556 row_w = XtCreateManagedWidget ("XtasRow", xmRowColumnWidgetClass, frame, args, n);
1557
1558
1559 /* FORM: VTH */
1560 n = 0;
1561 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1562
1563 motif_str = XmStringCreateSimple ("%");
1564 n = 0;
1565 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1566 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1567 XtSetArg ( args[n], XmNrightOffset, 28 ); n++;
1568 XtSetArg ( args[n], XmNheight, 30 ); n++;
1569 XtSetArg ( args[n], XmNwidth, 15 ); n++;
1570 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1571 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1572 XmStringFree (motif_str);
1573
1574 n = 0;
1575 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1576 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1577 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1578 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1579 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1580 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1581 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1582 XtSetArg ( args[n], XmNwidth, 60 ); n++;
1583 text_w = XtCreateManagedWidget ("XtasSimuVthText", xmTextWidgetClass, form, args, n);
1584 sprintf (buf, "%.2f", XtasSimuParams->vth);
1585 XmTextSetString (text_w, buf);
1586
1587 motif_str = XmStringCreateSimple ("VTH =");
1588 n = 0;
1589 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1590 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1591 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1592 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1593 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1594 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1595 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1596 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1597 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1598 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1599 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1600 XmStringFree (motif_str);
1601
1602 /* FORM: VTHh */
1603 n = 0;
1604 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1605
1606 motif_str = XmStringCreateSimple ("%");
1607 n = 0;
1608 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1609 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1610 XtSetArg ( args[n], XmNrightOffset, 28 ); n++;
1611 XtSetArg ( args[n], XmNheight, 30 ); n++;
1612 XtSetArg ( args[n], XmNwidth, 15 ); n++;
1613 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1614 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1615 XmStringFree (motif_str);
1616
1617 n = 0;
1618 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1619 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1620 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1621 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1622 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1623 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1624 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1625 XtSetArg ( args[n], XmNwidth, 60 ); n++;
1626 text_w = XtCreateManagedWidget ("XtasSimuVthhText", xmTextWidgetClass, form, args, n);
1627 sprintf (buf, "%.2f", XtasSimuParams->vth_high);
1628 XmTextSetString (text_w, buf);
1629
1630 motif_str = XmStringCreateSimple ("VTH high =");
1631 n = 0;
1632 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1633 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1634 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1635 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1636 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1637 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1638 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1639 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1640 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1641 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1642 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1643 XmStringFree (motif_str);
1644
1645 /* FORM: VTHl */
1646 n = 0;
1647 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1648
1649 motif_str = XmStringCreateSimple ("%");
1650 n = 0;
1651 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1652 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1653 XtSetArg ( args[n], XmNrightOffset, 28 ); n++;
1654 XtSetArg ( args[n], XmNheight, 30 ); n++;
1655 XtSetArg ( args[n], XmNwidth, 15 ); n++;
1656 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1657 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1658 XmStringFree (motif_str);
1659
1660 n = 0;
1661 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1662 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1663 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1664 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1665 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1666 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1667 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1668 XtSetArg ( args[n], XmNwidth, 60 ); n++;
1669 text_w = XtCreateManagedWidget ("XtasSimuVthlText", xmTextWidgetClass, form, args, n);
1670 sprintf (buf, "%.2f", XtasSimuParams->vth_low);
1671 XmTextSetString (text_w, buf);
1672
1673 motif_str = XmStringCreateSimple ("VTH low =");
1674 n = 0;
1675 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1676 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1677 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1678 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1679 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1680 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1681 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1682 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1683 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1684 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1685 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1686 XmStringFree (motif_str);
1687
1688
1689
1690 /***** Frame: Conditions *****/
1691 n = 0;
1692 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1693 XtSetArg ( args[n], XmNrightWidget, frame ); n++;
1694 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1695 XtSetArg ( args[n], XmNleftWidget, frame ); n++;
1696 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_WIDGET ); n++;
1697 XtSetArg ( args[n], XmNbottomWidget, frame ); n++;
1698 XtSetArg ( args[n], XmNbottomOffset, 5 ); n++;
1699 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1700 XtSetArg ( args[n], XmNtopWidget, frame_top ); n++;
1701 XtSetArg ( args[n], XmNtopOffset, 5 ); n++;
1702 frame = XtCreateManagedWidget ("XtasFrame", xmFrameWidgetClass, win_form, args, n);
1703
1704 motif_str = XmStringCreateSimple ("Conditions");
1705 n = 0;
1706 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1707 #if XTAS_MOTIF_VERSION >= 20000
1708 XtSetArg ( args[n], XmNframeChildType, XmFRAME_TITLE_CHILD ); n++;
1709 #else
1710 XtSetArg ( args[n], XmNchildType, XmFRAME_TITLE_CHILD ); n++;
1711 #endif
1712 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, frame, args, n);
1713 XmStringFree (motif_str);
1714
1715 /* FORM: Time */
1716 n = 0;
1717 #if XTAS_MOTIF_VERSION >= 20000
1718 XtSetArg ( args[n], XmNframeChildType, XmFRAME_WORKAREA_CHILD ); n++;
1719 #else
1720 XtSetArg ( args[n], XmNchildType, XmFRAME_WORKAREA_CHILD ); n++;
1721 #endif
1722 frame_form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, frame, args, n);
1723
1724 n = 0;
1725 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1726 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1727 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1728 XtSetArg ( args[n], XmNpacking, XmPACK_COLUMN ); n++;
1729 XtSetArg ( args[n], XmNorientation, XmVERTICAL ); n++;
1730 XtSetArg ( args[n], XmNnumColumns, 1 ); n++;
1731 XtSetArg ( args[n], XmNisAligned, True ); n++;
1732 XtSetArg ( args[n], XmNmarginHeight, 10 ); n++;
1733 XtSetArg ( args[n], XmNmarginWidth, 5 ); n++;
1734 XtSetArg ( args[n], XmNspacing, 5 ); n++;
1735 row_w = XtCreateManagedWidget ("XtasRow", xmRowColumnWidgetClass, frame_form, args, n);
1736
1737 /* FORM: Time */
1738 n = 0;
1739 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1740
1741 motif_str = XmStringCreateSimple ("ns");
1742 n = 0;
1743 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1744 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1745 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1746 XtSetArg ( args[n], XmNrightOffset, 24 ); n++;
1747 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1748 XtSetArg ( args[n], XmNheight, 30 ); n++;
1749 XtSetArg ( args[n], XmNwidth, 3*7 ); n++; /* 7 = largeur moyenne d'un caractere */
1750 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1751 XmStringFree (motif_str);
1752
1753 n = 0;
1754 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1755 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1756 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1757 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1758 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1759 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1760 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1761 XtSetArg ( args[n], XmNwidth, 60 ); n++;
1762 text_w = XtCreateManagedWidget ("XtasSimuTimeText", xmTextWidgetClass, form, args, n);
1763 sprintf (buf , "%.2f", XtasSimuParams->trans_time);
1764 XmTextSetString (text_w, buf);
1765
1766 motif_str = XmStringCreateSimple ("Time =");
1767 n = 0;
1768 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1769 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1770 XtSetArg ( args[n], XmNtopWidget, text_w ); n++;
1771 XtSetArg ( args[n], XmNbottomAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1772 XtSetArg ( args[n], XmNbottomWidget, text_w ); n++;
1773 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1774 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1775 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1776 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1777 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1778 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1779 XmStringFree (motif_str);
1780
1781 /* FORM: VDD */
1782 n = 0;
1783 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1784
1785 motif_str = XmStringCreateSimple ("V");
1786 n = 0;
1787 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1788 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1789 XtSetArg ( args[n], XmNrightOffset, 30 ); n++;
1790 XtSetArg ( args[n], XmNheight, 30 ); n++;
1791 XtSetArg ( args[n], XmNwidth, 15 ); n++;
1792 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1793 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1794 XmStringFree (motif_str);
1795
1796 n = 0;
1797 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1798 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1799 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1800 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1801 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1802 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1803 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1804 XtSetArg ( args[n], XmNwidth, 60 ); n++;
1805 text_w = XtCreateManagedWidget ("XtasSimuVddText", xmTextWidgetClass, form, args, n);
1806 sprintf (buf, "%.2f", XtasSimuParams->vdd);
1807 XmTextSetString (text_w, buf);
1808
1809 motif_str = XmStringCreateSimple ("VDD =");
1810 n = 0;
1811 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1812 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1813 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1814 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1815 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1816 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1817 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1818 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1819 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1820 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1821 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1822 XmStringFree (motif_str);
1823
1824 /* FORM: TEMP */
1825 n = 0;
1826 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, row_w, args, n);
1827
1828 motif_str = XmStringCreateSimple ("°C");
1829 n = 0;
1830 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1831 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1832 XtSetArg ( args[n], XmNrightOffset, 30 ); n++;
1833 XtSetArg ( args[n], XmNheight, 30 ); n++;
1834 XtSetArg ( args[n], XmNwidth, 15 ); n++;
1835 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1836 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1837 XmStringFree (motif_str);
1838
1839 n = 0;
1840 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1841 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1842 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1843 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1844 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1845 XtSetArg ( args[n], XmNrightWidget, label_w ); n++;
1846 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1847 XtSetArg ( args[n], XmNwidth, 60 ); n++;
1848 text_w = XtCreateManagedWidget ("XtasSimuTempText", xmTextWidgetClass, form, args, n);
1849 sprintf (buf, "%.2f", XtasSimuParams->temp);
1850 XmTextSetString (text_w, buf);
1851
1852 motif_str = XmStringCreateSimple ("Temperature =");
1853 n = 0;
1854 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1855 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_OPPOSITE_WIDGET ); n++;
1856 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1857 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_OPPOSITE_WIDGET ); n++;
1858 XtSetArg ( args[n], XmNbottomWidget, label_w ); n++;
1859 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1860 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_WIDGET ); n++;
1861 XtSetArg ( args[n], XmNrightWidget, text_w ); n++;
1862 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1863 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_END ); n++;
1864 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1865 XmStringFree (motif_str);
1866
1867 /* FORM: OPTIONS1 */
1868 n = 0;
1869 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1870 XtSetArg ( args[n], XmNtopWidget, row_w ); n++;
1871 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1872 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1873 XtSetArg ( args[n], XmNbottomAttachment,XmATTACH_FORM ); n++;
1874 XtSetArg ( args[n], XmNbottomOffset, 5 ); n++;
1875 form = XtCreateManagedWidget ("XtasForm", xmFormWidgetClass, frame_form, args, n);
1876
1877 motif_str = XmStringCreateSimple ("Simulator's options:");
1878 n = 0;
1879 XtSetArg ( args[n], XmNlabelString, motif_str ); n++;
1880 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_FORM ); n++;
1881 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1882 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
1883 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1884 XtSetArg ( args[n], XmNalignment, XmALIGNMENT_BEGINNING ); n++;
1885 label_w = XtCreateManagedWidget ("XtasLabels", xmLabelWidgetClass, form, args, n);
1886 XmStringFree (motif_str);
1887
1888 n = 0;
1889 XtSetArg ( args[n], XmNtopAttachment, XmATTACH_WIDGET ); n++;
1890 XtSetArg ( args[n], XmNtopWidget, label_w ); n++;
1891 XtSetArg ( args[n], XmNrightAttachment, XmATTACH_FORM ); n++;
1892 XtSetArg ( args[n], XmNrightOffset, 5 ); n++;
1893 XtSetArg ( args[n], XmNleftAttachment, XmATTACH_FORM ); n++;
1894 XtSetArg ( args[n], XmNleftOffset, 5 ); n++;
1895 XtSetArg ( args[n], XmNheight, 30 ); n++;
1896 text_w = XtCreateManagedWidget ("XtasSimuOptionsText", xmTextWidgetClass, form, args, n);
1897 XmTextSetString (text_w, XtasSimuParams->spice_options);
1898
1899 }
1900
1901 XtManageChild (XtasSimuParamWidget);
1902 // XalLimitedLoop (XtasSimuParamWidget);
1903
1904
1905
1906 }
1907
1908