3
3
def verilogFileParser (verilogFile ):
4
4
import re
5
5
6
- moduleRegex = re .compile (r'(module )(.*)( (#)?\()' )
6
+ moduleRegex = re .compile (r'(module )(.*)((\s)+ (#)?\()' )
7
7
8
8
portRegex = re .compile (r'''(
9
9
((in|out)put) #port declaration
10
10
(\s)+
11
- (\w{3,4})* #wire/reg
11
+ (reg|wire|logic|bit)? #wire/reg
12
12
(\s)*
13
- (\[[A-Z-]*(\d)* : [A-Z-]*(\d)* ])? #if vector
13
+ (\[[A-Z-_0-9\s]*: [A-Z-_0-9\s]*\ ])? #if vector
14
14
(\s)*
15
- (\w+) #name
16
- (,|;)? #seperator
15
+ (\w+) #name
16
+ (,|;|\) )? #seperator
17
17
)''' , re .VERBOSE )
18
-
19
- #CHANGE: think about what to do for declarations like input clk, reset..
20
18
21
19
parameterRegex = re .compile (r'''(
22
20
(parameter) #declaration
23
21
(\s)+
24
- [A-Z_0-9]+ #name
22
+ ( [A-Z_0-9]+) #name
25
23
(\s)*
26
- =
24
+ (=)
27
25
(\s)*
28
26
([A-Za-z0-9']+) #value
29
- (,|\; )+ #end
27
+ (,|;|\) )+ #end
30
28
)''' , re .VERBOSE )
31
29
32
30
#access Verilog file
@@ -45,28 +43,38 @@ def verilogFileParser (verilogFile):
45
43
#ports
46
44
po = portRegex .findall (text )
47
45
ports = []
46
+
48
47
for i in po :
49
- ports .append (i [0 ])
48
+ item = [i [1 ], i [4 ], i [6 ], i [8 ]]
49
+ for x in item :
50
+ if '' in item :
51
+ item .remove ('' )
52
+ item = " " .join (item )
53
+ ports .append (item )
50
54
inputs = []
51
55
outputs = []
52
- for i in ports :
53
- name = str ( i )
56
+ for name in ports :
57
+
54
58
if name [0 :5 ] == 'input' :
55
- inputs .append (name )
59
+ inputs .append (name [ 6 :] )
56
60
else :
57
- outputs .append (i )
61
+ outputs .append (name [ 7 :] )
58
62
writeFileObject .write ("List of input ports:\n \t %s\n " % inputs )
59
63
writeFileObject .write ("List of output ports:\n \t %s\n " % outputs )
60
64
61
- #CHANGE: format the ports how they are saved using groups
62
-
65
+
63
66
#parameters
64
67
lo = parameterRegex .findall (text )
65
68
parameters = []
66
69
for i in lo :
67
- parameters .append (i [0 ])
70
+ item = [i [3 ], i [5 ], i [7 ]]
71
+ if '' in item : item .remove ('' )
72
+ item = " " .join (item )
73
+ parameters .append (item )
68
74
writeFileObject .write ("List of parameters:\n \t %s" % parameters )
69
75
76
+ print ("Results can be viewed from %s" % fileName )
77
+
70
78
71
79
72
80
import sys
0 commit comments