hsluoyz / Atalanta

Atalanta is a modified ATPG (Automatic Test Pattern Generation) tool and fault simulator, orginally from VirginiaTech University.
72 stars 34 forks source link

Support filename strings longer than 100 characters long #12

Closed huttsMichael closed 2 months ago

huttsMichael commented 2 months ago

Problem Description

Filename strings are currently defined with the arbitrary size [100]. This creates unexpected failures when passing any file path to atalanta that's nested deeper in a filesystem or uses longer descriptive names.

Failure Example

Before:

atalanta -f fault.flt -D 2 ../testcases/CAC_longnameeeeeeeeeeeeeeeeeeeeeeee/DC_Basic/b14_C/b14_C_CAC_k_128_1_syn_modified.bench
*** buffer overflow detected ***: terminated
Aborted

After:

../atalanta/fix/atalanta -f fault.flt -D 2 ../testcases/CAC_longn
ameeeeeeeeeeeeeeeeeeeeeeee/DC_Basic/b14_C/b14_C_CAC_k_128_1_syn_modified.bench
before
after
end initialazition
iLastUndetectedFault=0
        *******************************************************
        *                                                     *
        *          Welcome to atalanta (version 2.0)          *
        *                                                     *
        *               Dong S. Ha (ha@vt.edu)                *
        *            Web: http://www.ee.vt.edu/ha             *
        *  Virginia Polytechnic Institute & State University  *
        *                                                     *
        *******************************************************

******   SUMMARY OF TEST PATTERN GENERATION RESULTS   ******
1. Circuit structure
   Name of the circuit                       :
   Number of primary inputs                  : 403
   Number of primary outputs                 : 246
   Number of gates                           : 4079
   Level of the circuit                      : 62

2. ATPG parameters
   Test pattern generation Mode              : DTPG + TC
   Backtrack limit                           : 10
   Initial random number generator seed      : 1715091717
   Test pattern compaction Mode              : NONE

3. Test pattern generation results
   Number of test patterns                   : 2
   Fault coverage                            : 100.000 %
   Number of collapsed faults                : 1
   Number of identified redundant faults     : 0
   Number of aborted faults                  : 0
   Total number of backtrackings             : 0

4. Memory used                               : 0.000 MB

5. CPU time
   Initialization                            : 0.000 Secs
   Fault simulation                          : 0.000 Secs
   FAN                                       : 0.000 Secs
   Total                                     : 0.000 Secs

Solution Description

This is just a simple find-and-replace of all examples of this I could find in the code. As far as I'm aware this replaces all instances of this behavior, and runs perfectly on all my use cases, but I'm no expert on the ins-and-outs of this project, so a second opinion is appreciated. I used the C-standard FILENAME_MAX as it should work consistently across all platforms, but alternatives like POSIX PATH_MAX may be preferred. Thank you :)