[PCB_FORUM] Re: Allegro error

  • From: "Mitch S. Morey" <cadpro2k@xxxxxxxxxx>
  • To: icu-pcb-forum@xxxxxxxxxxxxx
  • Date: Wed, 22 Sep 2004 10:03:34 -0700 (PDT)

If all else fails, and you need a GOOD routine to create a script file
from a .jrl file, use the attached file. It's a perl script file (when you
cut out the perl code from the text file) that does it. Used it MANY
times. The text file is plenty informational. If you don't know how to
invoke PERL, let me know. It's easy, since Cadence installs perl with the
toolset.

Good day.

Mitch

>
> OK, great!  What is the name of the skill routine and is it on sourcelink?
> Thanks
> Tony Cosentino



-----------------------------------------
Stay ahead of the information curve.
Receive PCB news and jobs on your desktop daily.
Subscribe today to the PCB CafeNews newsletter.
[ http://www10.pcbcafe.com/nl/newsletter_subscribe.php ]
It's informative and essential.
### Location is C:\Public\Cadence\perl ###

*Problem Statement:
Problem:
In cases where a session replay is required (allegro crash, system failure),
and a journal file (allegro_layout.jrl, allegro_interactive.jrl) has been 
created, a simple UNIX command can extract and modify the commands in the
.jrl file for replay as a script.

In both cases, the designer should edit the jrl file and search for the
last save of the board. Remove the data from the beginning of the script
up to and including the save, leaving the next command as the first line
of the jrl file.


Solution 2 (UNIX or NT)
-----------------------
Use a perl script to convert the jrl file into a script file. To do
this, you must have the perl executable in your path. 
PE13.x releases ship perl in the install dir/tools/perl5 directory.

The following perl script requires a change to the top line. It must
contain the path to "perl" on your UNIX system. Removing the top
line may be needed on NT. This script name is 

                       replay_jrl.pl

---------------Script -------- Cut Here-------------------------
#!/usr/local/bin/perl

$prog_name = $0;
$prog_name =~ s|^.*/(.*)|$1|;   # Keep only base name
$| = 1;                             # don't buffer output

{
    # make sure we have an argument - <ALLEGRO_APPLICATION>.jrl file name
    die "Usage: $prog_name jrl_file\n" if ($#ARGV != 0);

    $jrl_file = $ARGV[0];
    open (FILE, "$jrl_file") || die "Cannot find or open $jrl_file\n";
    while (<FILE>) {
        #  look for records beginning with \i
        if (/\i \(\S+\) (.+)/) {
            print "$1 \n";
        }
    }
}
---------------------------Script end-------------Cut Here----------------

The perl script should be executable, and in the search path. To use the script:

perl replay_jrl.pl journal file name >  new script name

If using allegro_layout, the journal file name is allegro_layout.jrl and
the command would be: replay_jrl.pl allegro_layout.jrl > allegro_layout.scr

(replace allegro_layout.jrl with the .jrl file created from the allegro
editor used).

For NT: redirecting input to perl requires a different format for the command:

perl.exe -F replay_jrl.pl allegro.jrl > allegro.scr

Other related posts: