****************************************************************************** ********************* 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 ibis-bug@ibis.org. A list of reported bugs will be maintained on ibis.org. ****************************************************************************** PARSER VERSION NUMBER: IBISCHK6 V6.1.2 PLATFORM (SPARC, HP700, PC, etc.): PC OS AND VERSION: All REPORTED BY: Mike LaBonte, SiSoft; Bob Ross, Teraspeed Labs; Lance Wang, IO Methodology DATE: June 9, 2016 DESCRIPTION OF BUG: DLL/SO Checking is formally issued as a BUG report so that this technical addition to the parser is documented for the parser version in which it is implemented. Only an IBIS File (.ibs) is with [Algoritmic Model] is tested for DLL/SO Function Existence and for Platform Information, as documented below: DLL/SO Function Existence ------------------------- Each DLL/SO file must contain code symbols for exported functions in one of four possible combinations: A. Case 1: Executable model file has AMI_Init, AMI_GetWave and AMI_Close. (IBIS 5.0 and above) B. Case 2: Executable model file has AMI_Init and AMI_Close. (IBIS 5.0 and above) C. Case 3: Executable model file has AMI_Resolve, AMI_Resolve_Close, AMI_Init, AMI_GetWave and AMI_Close. (IBIS 6.0 and above) D. Case 4: Executable model file has AMI_Resolve, AMI_Resolve_Close, AMI_Init and AMI_Close. (IBIS 6.0 and above) These cases can be checked according to the following rules, which require parsing the AMI file associated with each DLL/SO file: 1. DLL/SO file must export AMI_Init() and AMI_Close() functions in symbol table. Example ERROR messages: o “Code file %s does not contain required AMI_Init() function” o “Code file %s does not contain required AMI_Close() function” 2. If the corresponding AMI file contains GetWave_Exists=True, DLL/SO file must export AMI_GetWave() function in symbol table. Example ERROR message: o “Code file %s does not contain AMI_GetWave() function, required because GetWave_Exists=True in AMI file %s” 3. If corresponding AMI file contains Resolve_Exists=True, DLL/SO file must export the AMI_Resolve() and AMI_Resolve_Close() functions in its symbol table. Example ERROR messages: o “Code file %s does not contain AMI_Resolve() function, required because Resolve_Exists=True in AMI file %s” o “Code file %s does not contain AMI_Resolve() function, required because Resolve_Exists=True in AMI file %s” Failure to conform to any of the four allowable cases above must result in an ERROR message. It is acceptable to check only those files of the machine architecture and address bit width of the currently running IBISCHK6 executable. It will be necessary to examine the AMI files associated with all IBIS file Executable, Executable_TX, and Executable_RX lines within an [Algorithmic Model] section to find the AMI file(s) associated with each DLL/SO and determine the status of GetWave_Exists and Resolve_Exists. Checks for the presence of exported code symbols can be implemented simply by using the same code used by EDA tools to find symbols in the DLL/SO files. For example, dlopen() and dlsym() on Linux, and LoadLibrary() and GetProcAddress() on Windows. A Linux example code fragment: #include … char *msg = dlerror(); // To reset. void *dll = dlopen( file_name, RTLD_NOW ); msg = dlerror(); void *func = dlsym( dll, func_name ); msg = dlerror(); A Windows example code fragment: #include … void *dll = LoadLibrary ( file_name ); void *func = GetProcAddress((HMODULE)dll, func_name ); Platform Information -------------------- For IBIS files containing one or more [Algorithmic Model] keywords, some means must be provided to summarize the degree of checking for Executable subparameter DLL/SO files by the running IBISCHK6 platform and/or bit width, particularly so that users are aware which files could not be checked. This can be reported during or at the end of execution. This will also serve to report the platform sets supported by the models. For example: NOTE: Status of [Algorithmic Model] Executables for Windows 64: ventura_tx_32.dll Windows 32: NOT CHECKED ventura_tx_64.dll Windows 64: 0 ERRORS, 0 WARNINGS ventura_tx_32.so Linux 32: NOT CHECKED ventura_tx_64.so Linux 64: NOT CHECKED NOTE: This IBISCHK6 executable supports Windows 64 bit only. The above is a sample report for IBISCHK6 running on Windows 64. The unique set of DLL/SO files found in the IBIS file are listed once each, there is no need to print this list for successive [Algorithmic Model] keywords containing a previously reported DLL/SO file. INSERT IBIS FILE DEMONSTRATING THE BUG: None ****************************************************************************** ******************** BELOW FOR ADMINISTRATION AND TRACKING ******************* ****************************************************************************** BUG NUMBER: 179 SEVERITY: [FATAL, SEVERE, MODERATE, ANNOYING, ENHANCEMENT] ENHANCEMENT PRIORITY: [HIGH, MEDIUM, LOW] MEDIUM STATUS: [OPEN, CLOSED, WILL NOT FIX, NOT A BUG] CLOSED FIXED VERSION: 6.1.3 FIXED DATE: December 2, 2016 NOTES ON BUG FIX: Classified at the June 10, 2016 IBIS Teleconference Meeting. To be implemented in the next release of ibischk6. The fixed code has features beyond what is stated in the Description. The test cases are extensive. Note, that bug179.ibs generates 23 errors with 32-bit platforms, but 25 errors with 64-bit platforms due to two missing Executable lines in the test case under [Algorithmic Model]. This is a minor issue, but will be reported to as a new BUG. ****************************************************************************** ******************************************************************************