All: I am trying to fully understand the AMI file syntax and its constraints from just a parser developer perpective. After attempting a spread sheet, and then a formal syntax approach, I opted for a psuedo formal definition in a quick reference style format to show all of the allowable choices. I did not add some special cases and exceptions since my top priority is to understand just the basic rules. The first cut is a blend of the existing V5.0 syntax and the proposed syntax with some changes to assist graceful migration of the Reserved_parameters. I have included parameters that might be dropped and some others that were originally proposed but withdrawn in the new BIRD just to keep them visible. A few technical questions and concerns will arise from this, and there are probably several mistakes. The Model_specific portion still needs more development since the (tree) structure might support a very general hierarchical structure. So I expect to revise this file as we decide and clarify what we want. Bob -- Bob Ross Teraspeed Consulting Group LLC Teraspeed Labs 121 North River Drive 13610 SW Harness Lane Narragansett, RI 02882 Beaverton, OR 97008 401-284-1827 503-430-1065 http://www.teraspeed.com 503-246-8048 Direct bob@xxxxxxxxxxxxx Teraspeed is a registered service mark of Teraspeed Consulting Group LLC
Reference flow -------------- (Usage {In | InOut}) EDA ----------------------> DLL or other Executable File Tool <---------------------- ^ (Usage {Out | InOut}) | | | (Usage {Info | In | Out |InOut}) | AMI File EDA Tool Interface for user control Redirect commands internally Reformat into tree string for DLL Apply more rigorous typing per standard (C? style format rules) Process Info commands BNF-like abbreviated syntax for AMI file: ---------------------------------------- AMI Syntax Notation | - exclusive OR [ ] - required grouping - perhaps with internal choice { }? - optional { }+ - one or more { }* - zero or more < > - actual value entry ::= - definition || - Comment for this file AMI_file ::= (file_name || First Entry, does not have to be same as actual file_name ((Description}* || Can be in any location) (parameter_syntax) ) parameter_syntax ::= Reserved_parameters {Model_specific_parameters}*} Reserved_parameters ------------------- reserved_parameter_name: Init_Returns_Impulse | || Required GetWave_Exists | || Required Use_Init_Output | Init_Returns_Filter | || New Max_Init_Aggressors | Ignore_Bits | Tx_Jitter | || suggested removal Tx_DCD | Rx_Receiver_Sensitivity | Rx_Clock_PDF | || suggested removal Tx_Dj | || suggested addition Rx_Dj | || suggested addition Rx_Clock_Recovery_Mean | || suggested addition?? Rx_Clock_recovery_Rj || suggested addition?? ---- Syntax enumeration: (reserved_par_name (Usage [In | Out | InOut | Info]) (Type [Float | Integer | UI | Boolean | String]) (<format_values>) {(Default <value>)}? {(Description "<string>")}? ) (default_description_option::= {(Default <value>)}? {(Description "<string>")}? || either or both Default and Description are optional ----- (Init_Returns_Impulse || Required (Usage Info) (Type Boolean) [(Value [True | False]) | (Default <value>)] || either Value or Default? {(Description "<string>")}? ) (GetWave_Exists || Required (Usage Info) (Type Boolean) [(Value [True | False]) | (Default <value>)] || either Value or Default? {(Description "<string>")}? ) || Illegal: Init_Returns_Impulse and GetWave_exists BOTH False (Use_Init_Output (Usage Info) (Type Boolean) [(Value [True | False]) | (Default <value>)] || either Value or Default? {(Description "<string>")}? ) (Init_Returns_Filter || New (Usage Info) (Type Integer) (Value <value> {default_description_option) ) (Max_Init_Aggressors (Usage Info) (Type Integer) (Value <value> {default_description_option) ) (Ignore_Bits (Usage [Info | Out]) (Type [Integer | Float]) || should be Integer only??? [(Value [True | False]) | (Default <value>)] || either Value or Default? {(Description "<string>")}? ) (Tx_Jitter || Remove ??? (Usage Info | Out) (Type [Float | UI]) ([Gaussian | Dual-Dirac | DjRj | Table]) {default_description_option) ) (Tx_DCD (Usage Info | Out | In) || In was added (Type Integer) ([Value | Range | Corner | Table]) {default_description_option) ) (Tx_Receiver_Sensitivity (Usage Info | Out) (Type Integer) ([Value | Range | Corner]) {default_description_option) (Rx_Clock_PDF || Remove ??? (Usage Info | Out) (Type [Float | UI]) ([Gaussian | Dual-Dirac | DjRj | Table]) {default_description_option) ) (AMI_Returns_Init (Usage Info) (Type Boolean) {default_description_option) ) (Rx_Clock_Recovery_Mean || suggested addition?? (Usage Info | Out) (Type Integer) ([Value | Range | Corner]) {default_description_option) ) (Rx_Clock_recovery_Rj || suggested addition?? (Usage Info | Out) (Type Integer) ([Value | Range | Corner]) {default_description_option) ) ----------------------------------------- Model_specific_parameters ------------------------- standard_parameter_syntax: (parameter_name (usage) (non_tap_type) {(default)} {(description)} (format_choice)) tap_parameter_syntax (tap_param_name {(<tap_number> (usage) (Type Tap) {(default)} {(description)} (tap_format_choice))}+) usage ::= Usage [In | Out | InOut | Info] non_tap_type ::= Type [Float | UI | Integer | String | Boolean] tap_number ::= unique positive, negative integer or 0 format_choice ::= Value <value> | Range <typ> <min> <max> | List <val1> <val2> ... <valN> | List (Labels <label1> <label2> ... <labelN>) <val1> <val2> ... <valN> Corner <typ> <slow> <fast> | Increment <typ> <min> <max> <delta> | Steps <typ> <min> <max> <number_steps> | || NOT SUPPORTED ?? Table {(Labels {<label_text>}+)}+ {({<value>}+)}+ | Gaussian <mean> <sigma> | Dual-Dirac <mean> <mean> <sigma> | DjRj <minDj> <maxDj> <sigma> | Scale <value> Limit <value> Array ?? || Syntax Fixed ???? || (Array (Usage Info)(Type Boolean) (Value True) || {(default)} {(description)} (format_choice)) Label ?? || Rules for Range, List, Corner ONLY ??? tap_format_choice ::= Value <value> | Range <typ> <min> <max> | List <val1> <val2> ... <valN> | List (Labels <label1> <label2> ... <labelN>) <val1> <val2> ... <valN> Corner <typ> <slow> <fast> | Increment <typ> <min> <max> <delta> | Steps <typ> <min> <max> <number_steps> | -------------- Rules for V5.0 compatibility Null ::= omitted_parameter || Read but ignored and not stored or used. Format ::= Null Reserved_parameters ::= NULL Model_specific ::= Null Table || Not supported and declared illegal in a future || parser because of an impossible syntax and no || known adoption 5 (now 6?) reserved parameters: Default required, Value illegal in 5.0. The 5.1 resolution should make either Default or Value legal.