Baumeister Mediasoft Engineering BME - Baumeister Mediasoft Engineering  USERLIST - English Version USERLIST - Deutsche Version
Baumeister Mediasoft Engineering
Bartels AutoEngineerCarLogServicesResourcesCompany ProfileContact Us
Baumeister Mediasoft Engineering » Bartels AutoEngineer » BAE Documentation » BAE User Manual » Utilities » USERLIST
Bartels AutoEngineer® - User Manual

7.17 USERLIST

Bartels AutoEngineer® Documentation

Name

userlist - User Programmable List Generator

Synopsis

userlist scriptfile projectfile jobname

Description

The userlist utility program is a user-programmable ASCII list generator. userlist interprets the user-defined userlist script <scriptfile>.usf, analyzes the net list named <jobname> from the requested job file <projectfile>.ddb, and produces a text output listing file named <projectfile>.<ext>. The listing file extension <ext>, the output format and the type of net list information to be extracted are defined in the <scriptfile>.usf userlist script.

Input File Format

Start Data, End Data, Comments

The userlist script file must start with the definition of the output file name extension which is defined with the command

EXTENSION = "<ext>";

where <ext> is the file name extension (a maximum length of up to three characters is allowed). The userlist script must end with the ENDSPEC keyword. Commentary text can be placed between /* and */.

FOR Command

The FOR command is used for selecting elements of a certain class. The formal syntax of the FOR command is:

FOR (ALL <class> ) { <commands> }

where <class> specifies the class of the objects to be scanned. Valid classes can be selected with the keywords NETS, PARTS, PINS, ATTRIBUTES or <attname>. NETS iterates the net list object class, PARTS iterates the part list object class, PINS iterates pin lists and ATTRIBUTES iterates attribute lists. <attname> is used for scanning the attribute value list of the attributes named <attname>. The command list <commands> is processed once for each element of the specified object class. FOR commands can be nested to give more control. The nested FOR loop in

FOR (ALL NETS) { FOR (ALL PINS) {...}}

would for example find the first net, and then for all pins of that net perform <commands>. It would then repeat the operation on the second net and so on until it has completed processing of all nets.

Output Commands

The output commands are PRINT and PRINTFOR. The formal syntax of the PRINT command is:

PRINT(<parameters>);

where <parameters> specify the list of output items separated by commas. Output items enclosed in quotation marks are printed as literal text. QUOTES keyword can be used to print quotation marks. The TAB keyword prints a tab character. The CR keyword prints a newline. Other output items can be specified with attribute names (as listed below) followed by

:<length>:<decimals>

where <length> is the output length and <decimals> is the output precision for the corresponding number and/or string value. Negative <length> values apply for left-aligned output, and

%<length>:<decimals>

will include leading zeros. Default values are 3 for <decimals> and output item length for the <length> value. The <length> value is adjusted to the output item length if necessary. Distance values can be converted to mm or inch units by appending " MM" or " INCH", respectively. The PRINT command can be applied as in

PRINT(QUOTES,PINWIDTH:7:3,QUOTES);	/* output: "  3.756" */
PRINT(QUOTES,PINWIDTH%7:3,QUOTES);	/* output: "003.756" */
PRINT(QUOTES,PINWIDTH:-7:3,QUOTES);     /* output: "3.756  " */

The PRINT command syntax allows for uppercase and/or lowercase name and/or attribute value outputs by adding blank-separated UPPER or LOWER keywords after name or attribute specifications.

The PRINTFOR command is used to scan through a particular object class and print a list of elements with a defined separator. The formal syntax of the PRINTFOR command is:

PRINTFOR (ALL <class>) SEPERATOR(<sep>),ELEMENTS(<elements>);

where <class> is the object class to be scanned (as defined in the FOR command), <sep> is the separator to be used (e.g., ",", "CR", etc.), and <elements> are the elements to be listed. The syntax of the parameter lists in <sep> and <elements> is the same as for the PRINT parameter list. If PRINTFOR is nested in a FOR loop, then the output is automatically restricted to the current element of the FOR loop.

IF Command

The IF command allows commands to operate conditionally. The formal syntax of the IF command is:

IF (<expr>) { <commands> }

and/or

IF (<expr>) { <commands> } ELSE { <commands> }

The formal syntax of the IF expression <expr> is given either by

? <attr>

or by the comparison expression

<attr> <operator> <attr|constant>

The ? <attr> expression is used to check whether the attribute specified by <attr> is available. Available operators for comparison expression are = (equal), <> (not equal), < (less than), > (greater than), <= (less than or equal), >= (greater than or equal).

Counter

The commands

CLEARCOUNTER;

and

COUNTUP;

are used for controlling an internal counter. CLEARCOUNTER sets the counter value to zero. COUNTUP increments the counter value. The current counter value can be accessed via the COUNTVALUE attribute (see also below).

Attributes

The following attributes can be accessed:

Net DataNETNAME Net Name
NETPINCOUNT Number of Pins connected to Net
PRIORITY Net Priority (for the Router)
MINDIST Net Minimum Clearance (for the Router)
NETNUMBER Net Number
Part DataPARTNAME Part Name
PINCOUNT Number of Pins defined on Part
FREEPINS Number of unconnected Pins in the Part
PARTATTRIBCOUNT Number of Attributes in the Part
$attributname Value of selected Attribute in the Part
Pin DataPINNAME Pin Name
PINWIDTH Pin Routing Width
General DataPROJECTNAME Project and/or Design Name
ATTRIBCOUNT Number of Attributes matching current Name/Value Combination
ATTRIBNAME Name of selected Attribute
ATTRIBVALUE Value of selected Attribute
COUNTVALUE Current Counter Value

Examples

Net list generator conconv.usf:

/* Connection List Generator */
EXTENSION = ".con";
PRINT ("LAYOUT ", PROJECTNAME, ";", CR);
PRINT ("PARTS",CR);
FOR (ALL PARTS)
{
    PRINT ("  ",PARTNAME," : ",$plname,";",CR);
}
PRINT ("CONNECT",CR);
FOR (ALL NETS)
{
    PRINT ("  /", NETNAME,"/ ");
    PRINTFOR (ALL PINS)
        SEPERATOR ("="), ELEMENTS (PARTNAME,".",PINNAME);
    PRINT (";",CR);
}
PRINT ("END.",CR);
ENDSPEC

The userlist script conconv.usf can be applied as in

>  userlist conconv design board Return/Enter Key (CR)

where net list board of the job file design.ddb is analyzed, and the output net list file design.con with the following contents is produced:

LAYOUT board;
PARTS
        ic1 : dil14;
        ic2 : dil14;
        ic3 : dil16;
CONNECT
        /gnd/ ic1.1=ic2.2=ic3.9;
        /vcc/ ic1.11=ic2.5=ic3.7;
END.

The part list generator partlist.usf

EXTENSION = ".ptl";
FOR (ALL $plname)
{
    PRINT (ATTRIBCOUNT," ",ATTRIBVALUE,CR);
}
ENDSPEC

would create output file <job>.ptl with the following contents:

3 cap50
4 dil14
2 dil16
1 r75

Diagnosis

The error messages issued by userlist are intended to be self-explanatory.

Baumeister Mediasoft Engineering » Bartels AutoEngineer » BAE Documentation » BAE User Manual » Utilities » USERLIST

USERLIST • © 1985-2024 Oliver Bartels F+E • Updated: 14 August 2009, 22:49 [UTC]

Baumeister Mediasoft Engineering, Clontarf, Dublin 3, D03 HA22, Ireland
© 2024 Manfred Baumeister

USERLIST - English Version USERLIST - Deutsche Version