perl help to split big verilog file into smaller ones for each module


 
Thread Tools Search this Thread
Top Forums Shell Programming and Scripting perl help to split big verilog file into smaller ones for each module
# 1  
Old 05-12-2009
perl help to split big verilog file into smaller ones for each module

Hi
I have a big verilog file with multiple modules. Each module begin with the code word 'module <module-name>(ports,...)'
and end with the
'endmodule' keyword.
Could you please suggest the best way to split each of these modules into multiple files?

Thank you for the help.

Example of the file:
-----begine file------
module mod1 (port1, port2);
input port1;
output port2;

buf (port2, port1);
endmodule

module mod2 (port1, port2, port3);
input port1, port3;
output port2;

and (port2, port1, port3);
endmodule
----end file-----
I wanted each module above mod1 & mod2 into two files. with corresponding module name as the names for the smaller files
eg. mod1.v & mod2.v are the new filenames of the split files

Last edited by return_user; 05-12-2009 at 08:03 PM..
# 2  
Old 05-12-2009
Hi
Could anybody help me? I got this below code but its not working:


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

my ($line, $nr);

my $thebigfile = "intxt.txt"; # input file location
#my $log = "$\.v"; # output files basename

# open input file
open(INFILE, "<$thebigfile");

foreach $line (<INFILE>) { # for each line
if( $line =~ /^module[" "]+[0-9]+[a-z]+\($/ ) {
$nr = $line;
$nr =~ s/^module//;
$nr =~ s/\(//;
close(OUTFILE);
open(OUTFILE, ">$nr\.v");
}
print OUTFILE $line;
}

close OUTFILE;
close INFILE;
# 3  
Old 05-12-2009
Code:
nawk '$1 == "module" { close(file);file= $2 ".v" } {print > file}' myFile

# 4  
Old 05-12-2009
Quote:
Originally Posted by vgersh99
Code:
nawk '$1 == "module" { close(file);file= $2 ".v" } {print > file}' myFile


I don't have nawk so tried awk but got following error:
123 temp > awk '$1 == "module" { close(file);file= $2 ".v" } {print > file}' intxt.txt
awk: (FILENAME=intxt.txt FNR=1) fatal: expression for `>' redirection has null string value

Anything you could suggest?
thank you for the prompt help.
# 5  
Old 05-12-2009
You probably have line(s) before the first "module" line.
Code:
awk '$1 == "module" { file= $2 ".v" } file != ""{print > file} $1 == "endmodule" {close(file); file=""}' intxt.txt

# 6  
Old 05-12-2009
Quote:
Originally Posted by vgersh99
You probably have line(s) before the first "module" line.
Code:
awk '$1 == "module" { file= $2 ".v" } file != ""{print > file} $1 == "endmodule" {close(file); file=""}' intxt.txt

Thanks this one works better but what if my module line is like
module 1a_ext(a, b);
I just want the output filename to be
1a_ext.v
but its putting
1a_ext(a,.v
So how do we specify the output filename as the string between module and '(' ?
Thank you .
# 7  
Old 05-12-2009
Code:
awk -F '[ (]' '$1 == "module" { file= $2 ".v" } file != ""{print > file} $1 == "endmodule" {close(file); file=""}' intxt.txt

Login or Register to Ask a Question

Previous Thread | Next Thread

10 More Discussions You Might Find Interesting

1. UNIX for Beginners Questions & Answers

Split large file into smaller files without disturbing the entry chunks

Dears, Need you help with the below file manipulation. I want to split the file into 8 smaller files but without cutting/disturbing the entries (meaning every small file should start with a entry and end with an empty line). It will be helpful if you can provide a one liner command for this... (12 Replies)
Discussion started by: Kamesh G
12 Replies

2. UNIX for Dummies Questions & Answers

Split files into smaller ones with 1000 hierarchies in a single file.

input file: AD,00,--,---,---,---,---,---,---,--,--,--- AM,000,---,---,---,---,---,--- AR, ,---,--,---,--- AA,---,---,---,--- AT,--- AU,---,---,--- AS,---,--- AP,---,---,--- AI,--- AD,00,---,---,---, ,---,---,---,---,---,--- AM,000,---,---,--- AR,... (6 Replies)
Discussion started by: kcdg859
6 Replies

3. UNIX for Dummies Questions & Answers

Split large file to smaller fastly

hi , I have a requirement input file: 1 1111111111111 108 1 1111111111111 109 1 1111111111111 109 1 1111111111111 110 1 1111111111111 111 1 1111111111111 111 1 1111111111111 111 1 1111111111111 112 1 1111111111111 112 1 1111111111111 112 The output should be, (19 Replies)
Discussion started by: mechvijays
19 Replies

4. HP-UX

How to split big file on HP-UX and join on Windows?

Hi HP-admins, I have 120GB file on HP-UX and need to split to 4GB pieces and join them on Windows. As I don't want to use zipsplit, tried to use split command and join on windows using "copy /b" but it doesn't work (It merges and creates new file but file is corrupt) What is the correct... (6 Replies)
Discussion started by: prvnrk
6 Replies

5. Shell Programming and Scripting

Help needed - Split large file into smaller files based on pattern match

Help needed urgently please. I have a large file - a few hundred thousand lines. Sample CP START ACCOUNT 1234556 name 1 CP END ACCOUNT CP START ACCOUNT 2224444 name 1 CP END ACCOUNT CP START ACCOUNT 333344444 name 1 CP END ACCOUNT I need to split this file each time "CP START... (7 Replies)
Discussion started by: frustrated1
7 Replies

6. Shell Programming and Scripting

How to split a file into smaller files

Hi, I have a big text file with m columns and n rows. The format is like: STF123450001000200030004STF123450005000600070008STF123450009001000110012 STF234560345002208330154STF234590705620600070080STF234567804094562357688 STF356780001000200030004STF356780005000600070080STF356780800094562657687... (2 Replies)
Discussion started by: wintersnow2011
2 Replies

7. Shell Programming and Scripting

Split large file into smaller file

hi Guys i need some help here.. i have a file which has > 800,000 lines in it. I need to split this file into smaller files with 25000 lines each. please help thanks (1 Reply)
Discussion started by: sitaldip
1 Replies

8. Shell Programming and Scripting

parsing data from a big file using keys from another smaller file

Hi, I have 2 files format of file 1 is: a1 b2 a2 c2 d1 f3 format of file 2 is (tab delimited): a1 1.2 0.5 0.06 0.7 0.9 1 0.023 a3 0.91 0.007 0.12 0.34 0.45 1 0.7 a2 1.05 2.3 0.25 1 0.9 0.3 0.091 b1 1 5.4 0.3 9.2 0.3 0.2 0.1 b2 3 5 7 0.9 1 9 0 1 b3 0.001 1 2.3 4.6 8.9 10 0 1 0... (10 Replies)
Discussion started by: Lucky Ali
10 Replies

9. Shell Programming and Scripting

Segment a big file into smaller ones

Greeting to all. I have big text file that I would like to segment into many smaller files. Each file should be maximum 10 000 lines. The file is called time.txt. after the execution of the file I would like to have. time_01.txt, time_02, txt, ...,time_n.txt Can anybody help. Br. (2 Replies)
Discussion started by: flash80
2 Replies

10. UNIX for Advanced & Expert Users

Split a big file into two others files

Hello, i have a very big file that has more then 80 MBytes (100MBytes). So with my CVS Application I cannot commit this file (too Big) because it must have < 80 MBytes. How can I split this file into two others files, i think the AIX Unix command : split -b can do that, buit how is the right... (2 Replies)
Discussion started by: steiner
2 Replies
Login or Register to Ask a Question