@@ -79,30 +79,31 @@ def make_cnt_event_all(self):
79
79
end
80
80
cnt_event_dict[3,'Eq)] = (reg1 <= 1'd1,)
81
81
"""
82
-
82
+ #self.make_term_reffered_dict()
83
83
m_setter = MothernodeSetter (self .binds )
84
84
85
85
for cnt_name , counter in self .cnt_dict .items ():
86
86
cnt_ref_dict = {}
87
87
for term_name in self .term_ref_dict [cnt_name ]:
88
- if term_name == cnt_name : continue
88
+ if term_name == cnt_name : continue #exclude self reference
89
89
scope = self .binds .get_scope (term_name )
90
90
target_tree = self .makeTree (scope )
91
91
funcdict = splitter .split (target_tree )
92
92
funcdict = splitter .remove_reset_condition (funcdict )
93
+ if not funcdict : continue
93
94
branch_dict = {func [- 1 ]: value for func , value in funcdict .items ()}#extract last condition
94
95
96
+ cnt_ref_branch = []
97
+ m_setter .disable_dfxxx_eq ()
95
98
for branch , value in branch_dict .items ():
96
- cnt_ref_branch = []
97
- ref_cnt_set = set ([])
98
- ref_cnt_set = ref_cnt_set | m_setter .extract_all_dfxxx (branch , set ([]), 0 , pyverilog .dataflow .dataflow .DFTerminal )
99
+ ref_cnt_set = m_setter .extract_all_dfxxx (branch , set ([]), 0 , pyverilog .dataflow .dataflow .DFTerminal )
99
100
ref_cnt_set = set ([term [0 ] for term in ref_cnt_set ])
100
101
ref_cnt_set = set ([term for term in ref_cnt_set if str (term ) == cnt_name ])
101
102
cnt_ref_branch .append ((ref_cnt_set , value ))
102
- cnt_ref_dict [term_name ] = cnt_ref_branch
103
+ if cnt_ref_branch :
104
+ cnt_ref_dict [term_name ] = cnt_ref_branch
105
+ m_setter .disable_dfxxx_eq ()
103
106
counter .make_cnt_event_dict (cnt_ref_dict )
104
- #m_setter.enable_dfxxx_eq()
105
- del m_setter
106
107
107
108
def get_reset_value (self , cnt_name , target_tree , reset_name ):
108
109
if target_tree .condnode .operator == 'Ulnot' :
@@ -259,26 +260,26 @@ def make_cnt_event_dict(self, cnt_ref_dict):
259
260
"""
260
261
self .cnt_event_dict = {}
261
262
for term_name , ref_cnt_set in cnt_ref_dict .items ():
263
+ root_ope = None
262
264
for ref_cnt ,value in ref_cnt_set :
263
265
if len (ref_cnt ) != 1 :
264
266
raise Exception ('Found redundunt condition description @' + term_name )
265
267
ref_cnt = tuple (ref_cnt )[0 ]
266
268
267
- if str ( ref_cnt .mother_node ) in self .compare_ope :
269
+ if ref_cnt .mother_node . operator in self .compare_ope :
268
270
root_ope = ref_cnt .mother_node
269
271
cond_lsb = 0
270
272
diff_list = [1 ,]
271
273
elif isinstance (ref_cnt .mother_node , pyverilog .dataflow .dataflow .DFPartselect ):
272
- if str ( ref_cnt .mother_node .mother_node ) in compare_ope :
274
+ if ref_cnt .mother_node .mother_node . operator in self . compare_ope :
273
275
root_ope = ref_cnt .mother_node .mother_node
274
276
cond_lsb = ref_cnt .mother_node .lsb
275
277
if ref_cnt .mother_node .msb == self .msb :
276
278
diff_list = [1 ,]
277
279
else :
278
280
diff_list = [i for i in range (1 ,self .msb - ref_cnt .mother_node .msb )]
279
- else :
280
- continue
281
281
282
+ if root_ope is None : continue
282
283
if str (root_ope .nextnodes [0 ]) == str (ref_cnt .name ):
283
284
comp_pair = eval_value (root_ope .nextnodes [1 ])
284
285
elif str (root_ope .nextnodes [1 ]) == str (ref_cnt .name ):
0 commit comments