History of V2.77 Version Created May 1st 2003 Yves Leduc Motivation: Introduction of arrays of pointers Modification of a few related 'hdr' and 'net' files (dpll, biquad..) Modification of documentations accordingly Corrected July 28th 2003 Yves Leduc Request: Yves Leduc Type: Bug Object: Bad C code produced for the dump of a RAM or a ROM node Location: In source file "pr.c", line 2457 Old: fprintf(stdout, " fprintf(fp_dump, \" %s.length = %%d;\\n\", %s.len);\n", v1, v1); New: fprintf(stdout, " fprintf(fp_dump, \" %s.length = %%d;\\n\", %s.length);\n", v1, v1); Side Effect: None Corrected January 27th 2005 Yves Leduc Request: Yves Leduc Type: Improvement Object: Node name in the mail.box Location: In source file "pr.c" Side Effect: None Corrected April 10th 2005 Yves Leduc Request: Yves Leduc Type: Improvement Object: Slight modification in the command line of NAPA: option -b added Location: In source file "cl.c" Side Effect: None History of V2.80 Version Created April 25th 2005 Yves Leduc Motivation: Code consolidation and cleaning. Improved error detection and messages. Enhancement of the Windows Version Installation. Added: Memory guardband in dynamic memory manager of 'dm.h' Side Effect: None, although badly written header files with memory leak will have to be corrected. None has been detected. Modified: Extend node clock to include an aperiodic initialization Side Effect: None. Added: Default Suffix for NAPA files (hdr, net, dat, out, ...) Function IO_resources_manager() modified accordingly Header files modified by adding a string in calls of this function. Documentation is modified accordingly. Side Effect: Personal user's headers must be slightly modified <<<<<<< Modification: Method of convergence in 'freq.h'. Side Effect: Better convergence. Convergence still not granted. Added: A few new headers: see eye.hdr, lag0.hdr, pdetect.hdr Documentation is modified accordingly. Side Effect: None Modification: Physical constants file is updated with CODATA 2002 values Side Effect: Very small modifications of a few physical constants Modification: Directories of Windows version has been reworked. C Compiler based on freeware Dev-C++ which include MingW (Gnu Compiler). Side Effect: None. Modification: Installation of Windows version is reworked. Side Effect: Easier to install. Added: For Windows version, Checksum monitors NAPA Files Modifications. Side Effect: None. History of V2.80a Version Corrected: Win32. Misnamed directory name in script PFE2exe making this script non functional. Corrected: Bug in the comment of output files. In the C produced by the NAPA compiler, RANDOM_SEED is now zero when a standalone executable is produced. Corrected: In "math.hdr", bug in function 'round_it(x)' for very low x value. Corrected: Bad optimization of conditional update variables. Corrected: Bug in "sequence.hdr" introduced in V2.80 where option 'shuffle' was not operative. Corrected: "pink.hdr" and random.hdr" where function napa_rand() was not updated. History of V2.81 Version Modified: "record" and "count" of the IO resource manager are now global variables and renamed with prefix "napa_" in C source produced by NAPA. It will allow to get I/O files names with a user-defined function. Side Effect: None. Modified: Most of the global variables are renamed with prefix "napa_" in C source produced by NAPA. Side Effect: None. Removed: napa_loop_option() functions, now an option for the compilation of NAPA reserved for complex demand of users. Documentation updated. Modified: A few error messages are reformatted to be aligned with others. Modified: "random.hdr", "pink.hdr" to speed-up the computations. Side Effect: None. Modified: "pdetect.hdr" to allow individual definition of the sequence to be analyzed. Modified: Improved documentation of net file generated by generator "lfsr.c". Modified: In "array.hdr", pointing now to "random.hdr", removing reference to a file "noise.hdr" which is now obsolete in NAPA. Side Effect: "uniform", "normal" and "rel_normal" are now deprecated. Modified: Improved documentation produced by all generators in library Added: Macro "TERMINATE" containing the termination condition of the simulation Documentation updated. Side Effect: Word "TERMINATE" is now a reserved keyword. Added: Keyword "with" to improve modularity of the simulation with multiple NAPA files. Documentation updated. Side Effect: Word "with" is now a reserved keyword. Added: Keyword "before" to offer a dual to keyword "after". Documentation updated. Side Effect: Word "before" is now a reserved keyword. Added: Instruction "error" to prevent the simulation of a netlist, e.g. when the edition of the netlist is on going. Side Effect: Word "error" is now a reserved keyword. Added: Instruction "warning" to issue a warning during the parsing of the netlist. Side Effect: Word "warning" is now a reserved keyword. Added: Instruction "comment" to issue a comment during the parsing of the netlist. Side Effect: Word "comment" is now a reserved keyword. Added: Emit warning when a width is applied to some digital nodes too complex to describe at such a high level (wsum, sum of more than 2 nodes..) Side Effect: None. Added: IIR filter generator. Documentation updated. Added: Header "extrema.hdr" postprocessing a file to get local min and max. Documentation updated. Added: Header "peak.hdr" postprocessing a file containing a step response to compute the worst case of peak in a linear system. Documentation updated. Added: Instructions "nominal fs", "decimate fs..", "interpolate fs..", "drop fs.." These instructions refer to global sampling frequency and not on the sampling rate of the previous segment. Side Effect: "nominal" is now a reserved keyword. Added: Function 'invnorm' in "invnorm.h". Documentation updated. Added: Function 'gaussian' in "gaussian.h". Documentation updated. Added: Header "histogram.hdr" for synchronized fully automated histogram. compatible with cumulative normal plot. Modified: Harden the dynamic memory resource manager in 'dm.h' to track type of allocated data. Other dynamic manager 'sc.h' was reworked accordingly. Side Effect: QUERY returns the number of allocated elements and no more the number of bytes. Modified: Harden the I/O resource manager in "rm.c" to get more explicit error messages in Windows (case insensitive file naming). Modified: Speed-up the generation of cells in node "gen". Added: SHARE to the dynamic memory manager in 'dm.h' to track the number of references to allocated data. Side Effect: None. Added: File "number.h" containing function ot extract sign, mantissa and range of double float numbers. Added: File "metaphone.h" containing string compare using metaphone algorithm. The function "methaphone" is used to improve the error message in case of wrong spelling of the WINDOW directive. Side Effect: Much more user friendly error messages. Added: File "eng.h", improves engineering format of numbers in file "format.h". Side Effect: None. Added: Place the 'eng()' formatting function in "gen.h" file in the generator directory "net/gen". Side Effect: None. Added: Nodes "average" and "merge". Documentation updated. Modified: Qualifiers are defined now with parentheses to avoid identifier collision. (negative) (positive) (dual) (yes) (no) (expand) (noexpand) Documentation updated. Side Effect: None. Older style is still allowed. Added: iuser 'stable()' function detecting signal stabilization in file "stable.hdr" Documentation updated. Added: Add macro function RAND_01(), a uniform random noise generator 0..1 in the C produced by the NAPA compiler. Documentation updated. Side Effect: None, but RAND_01 is now a reserved keyword. Added: User function, user tool and postprocessors accept now OPTIONS. Files in directory "Napados/hdr" have been updated. Side Effect: Although older header files are still functional, new files must run with version V2.81. New files request options in the form (xxx). Exceptions: "select_i" and "select_o" postprocesses are replaced by "select" with options (inside) and (outside) Modified: The Goertzel algorithm does not limit the frequency to be located exactly to the bin of the corresponding FFT! Could be anywhere!! This is making the Goertzel algorithm much more attractive. Modification done in "hdr\resource\goertzel.h", "gft1.hdr" and "gft2.hdr" Side Effect: Input frequency is not moved to the next frequency bin anymore. Modified: Print of polynomial, moved from "pz.h" in "print_eq.h". Functionality added. Side Effect: "dpll.hdr" and "ilt.hdr" modified accordingly. Documentation updated. Added: ASSERT() in file "hdr\resource\assert.h" Added: It is now possible to input sampling frequency "fs" in the command line of standalone simulators. Side Effect: None. Documentation updated. Added: itool cgft in "cgft.hdr" Added: duser ifft in "ifft.hdr" Added: itool wcpk in "wcpk.hdr", using a variant of the L1 Norm to compute dynamic range History of V2.81a Version Modified: The check_option() in "co.c" with a new trivial case (case with only 1 option) Added: Metaphone algorithm to help user for spelling's error on instruction, node kind, output and update. Added: Second order resonator in "resonator.net" Added: Node kind "const". Side Effect: None. Documentation updated. Modified: Harden periodicity checking in "periodic.h". Side Effect: Better error tracking. Modified: I/O resources manager simplified when no user function is instantiated. Side Effect: None. Corrected: At line 387 of file "sweep.hdr" in directory "hdr" replace < long synchro_logsweep_index[SYNCHRO_LINSWEEP_MAX]; > [wrong] by < long synchro_logsweep_index[SYNCHRO_LOGSWEEP_MAX]; > [OK] Side Effect: None. Corrected: Missing declaration related to instruction "inject" in a single segment netlist at line 817 of file "bl.c", add a conditional statement based on the effective number of segments in the netlist. Side Effect: None. Added: Integrators without delay "int.net", "int1.net"..."int4.net" and "int1a.net"..."int4a.net". Added: Node "poly" is now chameleonic. Side Effect: None. Documentation updated. Enhance: 'event' instruction allows use of parenthesis around variable id. This is not necessary as an event is always considered as "used" but it removes unnecessary error messages. Side Effect: None. Added: RMS tool. Added: Output tool. Side Effect: None. Documentation updated. History of V2.81b Version Corrected: Dynamic memory manager did not show correct memory usage in debug mode. No impact on function, cosmetic issue. Added: New windowing functions Side Effect: None. Documentation updated. Enhance: It is possible to include directive in svar value with indirection # similarly to what is possible with var. Side Effect: None. Documentation updated. Enhance: Dynamic memory manager (in "dm.h") has a reset array option Side Effect: None. Documentation updated. Enhance: Add Damerau-Levenshtein distance to give the best hints when the user is making a typo in netlist (in "mp.c") Side Effect: Better error handling. Added: Many new functions in resource directory Side Effect: Documentation updated. Enhance: Plotdos functions. Side Effect: Improved but modified user interface, simplified access to plot <<<<<<< NAPA tool uses double blank line in output file as signal to gnuplot. Reorganize Directories: Many small changes to redirect file inclusion Side Effect: Some old simulations could have some file pathname to be corrected. Added: Dynamic memory manager for 2D matrix (in "dm2.h") Side Effect: None. Added: Node sets Side Effect: Documentation updated. Added: Qualifiers (normal) and (uniform) on node kind "noise" Side Effect: Documentation updated. Added: Quasi automated install from USB key Side Effect: Dos commands were reworked. Reworked: Internal coding to accommodate extension command_line instruction Side Effect: More capability added to command_line, esp. usage functionality for the end-user Modified: For consistency, instruction 'svar' is deprecated and replaced by 'string' qualifier (string) for instruction 'declare' is replaced by (char) Side Effect: A few very simple corrections may be necessary to run previous runs. Documentation updated. Update: NAPA installation greatly simplified. History of V2.82 Version Created Nov 11th 2008 Yves Leduc Added: Starting documentation of source code with DOxygen. Some comments inside the source code have been reworked accordingly. History of V2.82a Version A few small bugs corrected, documentation augmented and corrected History of V2.82b Version Modified: Rework of the "hdr" directory structure Side Effect: None if tools are called through the header file Added: A few new cells. History of V2.82c Version Created July 1st 2009 Yves Leduc Added: Node "differentiator" Side Effect: Documentation updated. Modified: Qualifier (nocheck) to nodes "div" and "mod" Rework of code to suppress division by zero when not necessary Side Effect: Documentation updated. Modified: Node "relay", rework of code to suppress condition when not necessary Side Effect: None. Modified: Rework of the "net" directory structure Side Effect: A few simple corrections may be necessary to run previous runs to update cell pathnames. Documentation updated. Modified: Integrator cells modeling gain and offset. Comparator cells modeling hysteresis and offset. Side Effect: Corrections are necessary to run previous runs or use previous versions of cells located in "/Simulate/Napados/Net/Deprecated_Cells" Documentation updated. Added: Many new cells and a few C functions. Modified: User function 'ilt' to accept jitter. Improved: Major rework of sine/cosine arrays generator to reduce memory footprint and processing speed. Side effect: Processing speed on large simulations by reducing access to hard disk History of V2.82d Version Created July 14th 2009 Yves Leduc Optimized: Compactness of generated code no more impacted by 'dc' ans 'const' definition Side Effect: Speed improvement. Added: Array of pointers are now accepting nodes. Side Effect: Documentation updated. Modified: Speed improvement of user function 'ilt' Add oversampling computations to solve convergence. Side Effect: Documentation updated. Modified: IO_resources_manager for total compatibility between UNIX and WINDOWS flavors Side Effect: Allows improvement of documentation triggered by directive LOGFILE. Modified: Improvement of directive LOGFILE in "napa.hdr" outputting a few new informations Added: Tool 'collect' collecitng data in array Example of tool to be used with 'collect': 'process' Added: Function 'create_unique_name' in "format.hdr" Modified: Nodes 'equal' and 'comp' accept now node, variable or number at the condition that at least one of the inputs is a node Side Effect: Documentation updated. Correct: Error message when a string is not correctly defined Added: User function 'sine' to produce sinewave signal at half clock period Added: Macro function PRINT_VAR() Modified: Compact the segment list during the compilation to optimize the C code Modified: Automatic nodes Ground, Zero and One disappear from the C code to optimize the C code. Side Effect: None. Rework: PlotDos to handle 3D Gnuplot. Tools to produce 3D Gnuplot compatible output. Augmented: The tool 'output' is now able to output up to 3 nodes, with an output compatible of 3D Guuplot. Side Effect: None. Added: Instruction 'alias'. Side Effect: None. Documentation updated. Modified: Instruction 'update' may be placed before variable declaration. Side Effect: None. Documentation updated. Improved: Detection of constants to drop unnecessary updates. Side Effect: Simulation speed improvement. Added: Macros REL_TIME and REL_LOOP_INDEX to complement the 3D Gnuplot. Side Effect: None. Documentation updated. Added: Tool 'inform'. Side Effect: None. Documentation updated. Added: New cells (moving average) and generators (DC removal 1, 2 and 4). History of V2.83 Version Created August 25th 2009 Yves Leduc Augmented: The node 'multdelay' accepts now constant variables as number of delays. Side Effect: None. Documentation updated. Modified: Prioritize the sorting of 'init' instruction to guarantee that tests are made as soon of possible if we want to catch errors Side Effect: None. Added: instruction declare (true) ... Side Effect: None. Documentation updated. Added: NAPA type X_TYPE. Structure defining Complex Number Side Effect: None. Documentation updated. Augmented: NAPA node 'mux' accepts void input node as empty slot. Side Effect: None. Documentation updated. Modified: No more necessary to define 'random_seed 0' for standalone simulator. It is done by default. Side Effect: None. Modified: Load files. Now copied in a specific ad-hoc function in C simulator Side Effect: None. Modified: Expand header files: comments and blank lines are not copied. Side Effect: None. Improved: Install on Windows System is simplified: only UNZIP DIRECTORIES is required. History of V2.83a Version Modified: Macro 'ISINTEGER()' to analyze around the integer value (EPSILON) Augmented: Postprocess 'histo' to output invnormed value File "invnorm.plt" added in Tool and Postprocess directories Improved: User defined function 'prn' replaced by 'multitone' with huge speed acceleration and additional options Side Effect: Function 'prn' is suppressed. Augmented: User defined function 'comb' has new options Side Effect: None. Augmented: IO_resources_manager() with a "RESET" command to compact registers by freeing memory Side Effect: None. Documentation updated. Improved: Memory allocated with IO and record is now released. Side Effect: ultimate compatibility with weird OS not releasing automatically dynamic memory at exit. Improved: Inverse Laplace transform 'ilt' is accepting now variable coefficients. Added: Lambert W-function(): exact and approximate solution. Added: 'diode_I()' and 'diode_R()' computing values according to the Schockley model. Added: Option (exponential) to function pulse(). Modified: 'dc' and 'const' nodes are now initialized at zero as all other nodes for consistency. Augmented: Instruction 'event (new)' is added. Side Effect: None. Documentation updated. Added: Macro constant ONEOVERTWOPI. Side Effect: Speed improvement. Documentation updated. Added: functions and macros defining several mathematical mean. History of V2.83b Version Added: 'cgaussian' iuser and duser functions for generation of correlated random gaussian variables. ====================================================================================== History of V3.00 MAJOR CHANGE: I_TYPE is now a 'long long' integer <<<<<<<<<<<<<<<<<<<<<<<<<<<<<<<< Side Effect: Integer must be input as nnnnLL esp. when larger than 2^16 Headers must comply with long long integer IO formats Modified: Type concerning the simulation time and the loop numbers are changed. Modified: Macros constants (Pi,...) are now (long double) and names are changed. Modified: Rework of batch commands to compile in Win32 or Win64 bits. Modified: 'DEBUG' macro to help arrays and record monitoring during simulation. Added: Check directive usage in header by defining (directive)_IS_REGISTERED Side Effect: Warning when directive is not registered in header. Added: Check debug usage in header by defining DEBUG_MODE(debug)_IS_REGISTERED Side Effect: Warning when debug macro is not registered in header. Added: "ping" instruction Side Effect: All user and tool functions are modified accordingly. Modified: 'int_format', 'doub_format' and 'str_format' instructions replaced resp. by format (analog), format (digital) and format (string). Modified: Declare type options are now (analog) (digital) (string) and (true). Other options like (long), (double), (char)... are now forbidden Added: Declare option (constant) Removed: X_TYPE in C generated by the NAPA compiler, and all references to this type. X_TYPE in resources 'dm.hdr" and "dm2.hdr" Added: COMPLEX_TYPE in resource "complex.hdr" Reworked: Directory structure of "Simulate" for better consistency Added: In instruction "output", suffix to scale individaul output (real type) or to force hexadecimal format (integer type): Scaling individual real type output with suffix like (u), (m), (k), .. Added: "sarc" user defined function. Side Effect: HEAVY rework of batch commands to integrate this function. Added: Instruction "ganging ...", alias of "array (pointer) ..." Modified: nodes 'sin' and 'cos' are now renamed 'sine' and 'cosine' resp. to avoid confusion with C language Added: optional simplified syntax replacing 'node void itool ...' by 'tool ...' Removed: node 'multdelay' is suppressed, replaced by 'delay' with the previous 'multdelay' syntax History of V3.01 Alignment: New release of MingW64 is C99 compliant. NAPA was therefore reworked to be C99 compliant Speed of floating point operations is multiplied by a factor 4! History of V3.02 Alignment: New SARC package with enhanced features and more homogeneous syntax Modified: External pseudo random generators in line with 64 bits operation Added: &export, &update and &constant short form History of V3.03 Improved: MAXIMA process to generate header uised in SARC Modified: (new) is restricted to event definition Added: impulse and step responses in multirate environment History of V3.03a Improved: Documentation, error handling Corrected: file "intreal.hdr" History of V3.03b Improved: Documentation, error handling Augmented: file "dpll.hdr" Augmented: file "fft3.hdr" addition of itool function 'ftrack' Augmented: file "fft6.hdr" addition of itool function 'ftrack2' History of V3.4 Several improvements in the verfication of the netlist and error messages have been implemented. Several headers have been added and/or augmented. Weighted histograms and statistics allow to analyze circuits at the edge of their statistical distributions. New circuit descriptions for SARC processing have been added. LFSR Galois generator has been added and the corresponding LFSR Fibonacci has been reworked and enhanced. Improvements in the DOS batches commands have been done to enhance the user friendliness. Augmented: file "fft2.hdr" 'tsnr' tool function includes now an optional plot template generation Augmented: file "collect.hdr" 'collect' tool function is improved but not yet frozen Added: file "jitter.hdr" 'jitter' computes the jitter of an analog waveform Improved: Maxima scripts and SARC engine have been significantly improved. Compiled Lisp adds also a lot of speed. History of V3.5 SARC Schematic Editor has been added to capture schematic. Small cosmetic modifications have been added to NAPA for compatibility. It is now possible to gang numbers and for 'user', 'tool' and 'post' to accept numbers as parameters in all kind of situations as numbers are replaced by constant variables which allows to transfer by addresses if needed. ====================================================================================== History of V4.00 **********MAJOR CHANGES: ********** It is EXTREMELY IMPORTANT to note that to initialize a node 'delay', you have to initialize now the OUTPUT and no more the input ! Macro OPTION() changed into ISOPTION(..) and ISNOTOPTION(..) Other changes Introduction of the short form '&delayed' and the possibility to check that delay has been applied or not to a user defined function with the macro ISDELAYED(). History of V4.01 Implementation of an optional 'passing arguments by names' in 'ganging' instruction History of V4.02 Implementation of an optional 'passing arguments by names' in 'data' instruction. Reduction of the compiler footprint in the stack to prevent issue on computers with a limited RAM size. History of V4.11 IMPORTANT: Instruction 'output' is now segment independent and will never downsample a signal. The instruction 'decimate' and 'interpolate' accepts a constant integer variable if it contains a pure number and if it is defined before these instructions. History of V4.12 IMPORTANT: Instruction 'num_initial' is now deprecated and replaced by a more efficient instruction 'interlude'. Macro NUM_INIIAL is no more defined (to be removed from user tool function C source and replaced by 0) History of V4.20 IMPORTANT: Creation of automatic generation of cells from the SARC schematic editor (S domain and Z domain) History of V4.30 The instruction 'string' with an empty definition creates a string with a unique name History of V4.40 IMPORTANT: The data and cell interfaces are now data_interface and cell_interface The schematics 'sch' are moved in the directory \Simulate\Napados\sch History of V4.50 Editor 'Crimson' is replaced by Notepad++