| #!/usr/bin/perl -w |
| |
| my $STDCELLLIB=$ENV{'STDCELLLIB'} || "/home/philipp/libresilicon/StdCellLib"; |
| |
| |
| |
| print <<EOF |
| `default_nettype none |
| |
| /* |
| *------------------------------------------------------------- |
| * |
| * user_proj_cells (LibreSilicon Testwafer #1) |
| * |
| */ |
| |
| EOF |
| ; |
| |
| our $nextla=0; |
| our $nextio=0; |
| |
| foreach my $mag(sort <$STDCELLLIB/Catalog/*.mag>) |
| { |
| next if((-s $mag)<=50); |
| #print `ls -la $mag`; |
| my $cell=$mag; $cell=~s/\.mag$/.cell/; |
| my $lib=$mag; $lib=~s/\.mag$/.lib/; |
| my $name=""; $name=$1 if($mag=~m/([\w\-\.]+)\.mag$/); |
| next unless(-f $cell); |
| next unless(-f $lib); |
| next unless(-f $ENV{'CARAVEL'}."/cells/mag/$name.mag"); |
| |
| open CELL,"<$cell"; |
| print "module $name(\n"; |
| |
| while(<CELL>) |
| { |
| if(m/^\.inputs (.*)/) |
| { |
| foreach my $inp(sort split " ",$1) |
| { |
| my $io=$nextio++; |
| print " inout $inp, // input\n"; |
| } |
| } |
| if(m/^\.outputs (.*)/) |
| { |
| foreach my $outp(sort split " ",$1) |
| { |
| my $io=$nextio++; |
| print " inout $outp, // output\n"; |
| } |
| } |
| |
| } |
| close CELL; |
| print " \`ifdef USE_POWER_PINS\n"; |
| print " inout VPWR, // cell power supply\n"; |
| print " inout VGND // cell ground supply\n"; |
| print " \`endif\n"; |
| print ");\n"; |
| print "endmodule\n\n"; |
| } |
| |