tree 7425c53e576cee845cde8e89347cc36dbaed065a
parent e01d9d3bf24f87b190adb9b63fbfc0fa9bd82458
author Darryl L. Miles <darryl.miles@darrylmiles.org> 1681574593 +0000
committer Tim Edwards <tim@opencircuitdesign.com> 1682189126 -0400

sky130_{ef,fd}_io*.lib: partial fix for unmatched end comment tokens

Add a line where necessary:
  /* no_internal_power () {

This is what the perl script is doing.

None of these '*/' sequences have a matching opening '/*' before them.

-#!/usr/bin/perl
use strict;

my @window;

sub fix_window() {
    my @n;
    my $found = 0;
    while($_ = shift(@window)) {
        my $insert_after;
        if(/^\s*}\s*/) {
            $found++;
            if($found > 1) {
                $found = 0;
                #next;  ## remove 2nd one found in window
                $insert_after = sprintf("\t\t\t/* no_internal_power () {\n");
            }
        } else {
            $found = 0;
        }
        push(@n, $_);
        push(@n, $insert_after) if($insert_after);
    }
    @window = @n;
    1;
}

while(<>) {
    my $line = $_;
    if(/^(\s+})\*\/$/) {
        fix_window();
        # can edit it here (but we want to keep '*/')
        #$line = $1 . "\n";
    }

    push(@window, $line);

    if(scalar(@window) > 11) {
        $line = shift @window;
        print $line;
    }
}

while($_ = shift(@window)) {
    print $_;
}
