****************************************************************************** ********************* IBIS GOLDEN PARSER BUG REPORT FORM ********************* ****************************************************************************** INSTRUCTIONS To report a bug in the IBIS golden parser. Please fill out the top part of the following form and send the complete form to info@ibis.org. A list of reported bugs is maintained at http://ibis.org/bugs/ibischk/ . ****************************************************************************** PARSER VERSION NUMBER: 7.0.2 PLATFORM (SPARC, HP700, PC, etc.): ALL OS AND VERSION: ALL REPORTED BY: Mike LaBonte, SiSoft (MathWorks); Randy Wolff, Micron Technology; Bob Ross, Teraspeed Labs, Lance Wang, Zuken USA DATE: November 25, 2020 DESCRIPTION OF BUG: This is an enhancement request to have ibischk perform checking of IBIS-ISS files against references to them in IBIS and IMS files, limited to subcircuit definitions and calls. A full set of requirements and tests will be in a parser development contract. The project should cover the following enhancements (** relate to multi-lingual checks): FLAGS: - No new command line flags are needed since the checks are initiated for IBIS-ISS syntax in .ibs or .ims (with -IMS flags) files. REFERENCES FROM .ibs FILES: - Multi-lingual references using [External Model], [External Circuit], and [Circuit Call] with Language IBIS-ISS ** - References from [Interconnect Model]s scoped by [Interconnect Model Set] REFERENCES FROM .ims FILES: - References from [Interconnect Model]s scoped by [Interconnect Model Set] NAME AND NUMBER OF TERMINALS: - Locate the files matching referenced file names (already partially checked) - Locate IBIS-ISS .SUBCKT definitions matching referenced subcircuit names - Check that the number of .SUBCKT terminals match those called from the .ibs and .ims files - IBIS-ISS "ground" terminals (0, GND, !GND, GROUND, and GND!) are prohibited as terminals on the .SUBCKT line in .iss files IBIS VERSION NUMBERS ([IBIS Ver]: - Multilingual checks in .ibs files apply for [IBIS Ver] 6.0 or higher when Language IBIS-ISS was added ** - Interconnect Model checks in .ibs and .ims apply for [IBIS Ver] 7.0 or higher PARAMETER PASSING INTO IBIS-ISS Files: - All parameters passed into IBIS-ISS are defined on the .SUBCKT line - Name Matching: Follow multilingual syntax to match "Parameters" names with those in IBIS-ISS and those from either [External Model], [External Circuit], and [Circuit Call] ** Parameters in [Circuit Call] are checked with the IBIS-ISS file referenced in [External Circuit] ** This check may be redundant, but it is permitted to define some or all Parameters only in [Circuit Call] ** - For Interconnect Models, parameter names and values are listed in the Param statement - Numerical Type Matching: With no value assignment in IBIS, there is no type check ** If a numerical value is assigned, check that IBIS numerical Parameters types (with or without scaling factors in IBIS Section 3.2) correspond to IBIS-ISS .SUBCKT definition numerical parameters (Note, IBIS-ISS scaling factors include those in IBIS, but are case insensitive, Several more IBIS-ISS numerical scaling factors exist including MEG, X, MIL and A. Both E and D are variations of exponent multipliers in IBIS-ISS. The numerical values passed do not need to be checked. IBIS-ISS parameters defined by equations are numerical (e.g., a='b+c' where b and c can be numerical parameters in IBIS.) Parameters defined in IBIS-AMI files do not support the IBIS scaling factors ** - String Type Matching: String Parameters types shall be string parameter types in .SUBCKT lines and shall be of the form string_name=str('string_value'). Spaces can exist in 'string_value'. As in IBIS, quoted string parameters are case-sensitive. - Issue Warnings for Parameters NOT on the .SUBCKT line Either the parameter is not used or it appears as an internal definition lines as given by .PARAM or .PARA statements inside a .SUBCKT/.END IBIS-ISS COVERAGE: - Line Continuations: -- The character "+" in the first non-blank column -- After the last "\\" sequence - Comment characters: -- Ignore content after a leading "*" character or after the "$" character - Ignore .INCLUDE or any substring that starts with .INC within a .SUBCKT/.ENDS block since only the .SUBCKT line is checked MEMORY AND DATA STRUCTURES: - There is no requirement to make memory structures publicly available for source code purchasers - Optionally, all .SUBCKT line information could be saved for efficient checking if the same .SUBCKT is called in several places in .ibs or .ims PLAN FOR FUTURE ENHANCEMENTS - If not implemented with a new Version that include the following BIRDs: - BIRD200 - under [C Comp Model] with File_ISS to IBIS-ISS links - BIRD202.x -- Under .emd file and [EMD Sets] scoping [EMD Model]s -- Under .ems file and [EMD Sets] scoping [EMD Model]s DEVELOPMENT CONTRACT SPECIFICATION - A development specification will contain full details and possible corrections and more examples - The quote can break out the multi-lingual portion in case we want to stage the release with ** items later - Some items above such as .iss file locations are already checked in ibischk7 Version 7.02. ------- INSERT IBIS FILE DEMONSTRATING THE BUG: The following snippet is copied from page 317 of the IBIS Version 7.0 document. This is an example of one complete testcase, but many other test cases need to be developed. INSERT IBIS FILE DEMONSTRATING THE BUG: The following example shows some of the required features above including - Aligning IBIS Terminals - Assigning IBIS Parameters - Parsing the .SUBCKT line split over several lines - Identifying parameters embedded within an equation on the .SUBCKT line ------------------------------------------------ IMS EXAMPLE WITH PARAM DEFINITIONS in bug214.ims ------------------------------------------------ [IBIS Ver] 7.0 [File Name] bug214.ims [File Rev] 1.0 [Date] November 25, 2020 | [Interconnect Model Set] BUG214 [Interconnect Model] BUG214_FULL | | Param name format value Param a Value 1m Param b Value 2m Param d Value "bug214.s2p" | File_IBIS-ISS bug214.iss BUG214_PULL_TYP Number_of_terminals = 11 1 Pin_I/O pin_name A1 | DQ1 DQ 2 Pin_I/O pin_name A2 | DQ2 DQ 3 Pin_I/O pin_name A3 | DQ3 DQ 4 Pin_I/O pin_name D1 | DQS+ DQS 5 Pin_I/O pin_name D2 | DQS- DQS 6 Buffer_I/O pin_name A1 | DQ1 DQ 7 Buffer_I/O pin_name A2 | DQ2 DQ 8 Buffer_I/O pin_name A3 | DQ3 DQ 9 Buffer_I/O pin_name D1 | DQS+ DQS 10 Buffer_I/O pin_name D2 | DQS- DQS 11 Pin_Rail signal_name VSS | VSS GND [End Interconnect Model] [End Interconnect Model Set] [End] ------------------------------------------------------- IBIS-ISS FILE bug214.iss WITH COMMENT CHARACTERS, LINE CONTINUATIONS, PARAMETERS ------------------------------------------------------- ***************************************************** * SUBCKT Comments, Line continuations, and Parameters ***************************************************** .SUBCKT BUG214_FULL_TYP + 1 2 3 4 5 \\ 6 7 8 9 10 ref $ Line Continuations + c = 'a+b' $ Line Continuation, Parameter Passing + tsfile=str(d) $ String Parameter for bug214.s2p * R16 1 6 R=a R27 2 7 R=b R38 3 8 R=c R49 4 9 R='2*c' * S5_10 5 10 ref MNAME = Smodel_name .MODEL Smodel_name S N=2 TSTONEFILE = str(tsfile) .ENDS ****************************************************** * Touchstone 2 bug214.s2p File referenced in .ims file ****************************************************** !2-port network, S-parameter !Default MA format, GHz frequencies, 50 ohm reference, S-parameters [Version] 2.0 # [Number of Ports] 2 [Two-Port Data Order] 21_12 [Number of Frequencies] 1 [Network Data] 0.0 0.0 0.0 1.0 0.0 1.0 0.0 0.0 0.0 [End] ****************************************************************************** ******************** BELOW FOR ADMINISTRATION AND TRACKING ******************* ****************************************************************************** BUG NUMBER: 214 SEVERITY: [FATAL, SEVERE, MODERATE, ANNOYING, ENHANCEMENT] ENHANCEMENT PRIORITY: [HIGH, MEDIUM, LOW] MEDIUM STATUS: [OPEN, CLOSED, WILL NOT FIX, NOT A BUG] CLOSED FIXED VERSION: 7.1.0 FIXED DATE: December 18, 2021 NOTES ON BUG FIX: Introduced at IBIS Open Forum on December 4, 2020 Classified at the IBIS Open Forum meeting on January 8, 2021. To be fixed in some future release since a potential security fix (per a possible BUG report) may be done ahead of this enhancement. Also, the BUG214 enhancement may be done with an ibishck7 V7.1.0 release or may be done separately later based on cost and scheduling considerations. December 18, 2021 - Some corrections to the test cases were made. ****************************************************************************** ******************************************************************************