| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -126,6 +126,10 @@ class VerilogTransformer(Transformer): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                n = Node(c, stmt.name, kind=stmt.type) | 
					 | 
					 | 
					 | 
					                n = Node(c, stmt.name, kind=stmt.type) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                for p, s in stmt.pins.items(): | 
					 | 
					 | 
					 | 
					                for p, s in stmt.pins.items(): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if self.tlib.pin_is_output(n.kind, p): | 
					 | 
					 | 
					 | 
					                    if self.tlib.pin_is_output(n.kind, p): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        if s in sig_decls: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            s = sig_decls[s].names | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            if isinstance(s, list) and len(s) == 1: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                                s = s[0] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        Line(c, (n, self.tlib.pin_index(stmt.type, p)), Node(c, s)) | 
					 | 
					 | 
					 | 
					                        Line(c, (n, self.tlib.pin_index(stmt.type, p)), Node(c, s)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            elif hasattr(stmt, 'data') and stmt.data == 'assign': | 
					 | 
					 | 
					 | 
					            elif hasattr(stmt, 'data') and stmt.data == 'assign': | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                assignments.append((stmt.children[0], stmt.children[1])) | 
					 | 
					 | 
					 | 
					                assignments.append((stmt.children[0], stmt.children[1])) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -175,8 +179,11 @@ class VerilogTransformer(Transformer): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        s = cname | 
					 | 
					 | 
					 | 
					                        s = cname | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        Line(c, cnode, Node(c, s)) | 
					 | 
					 | 
					 | 
					                        Line(c, cnode, Node(c, s)) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if s not in c.forks: | 
					 | 
					 | 
					 | 
					                    if s not in c.forks: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        log.warn(f'Signal not driven: {s}') | 
					 | 
					 | 
					 | 
					                        if f'{s}[0]' in c.forks:  # actually a 1-bit bus? | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        Node(c, s)  # generate fork here | 
					 | 
					 | 
					 | 
					                            s = f'{s}[0]' | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                        else: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            log.warn(f'Signal not driven: {s}') | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            Node(c, s)  # generate fork here | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    fork = c.forks[s] | 
					 | 
					 | 
					 | 
					                    fork = c.forks[s] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if self.branchforks: | 
					 | 
					 | 
					 | 
					                    if self.branchforks: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        branchfork = Node(c, fork.name + "~" + n.name + "/" + p) | 
					 | 
					 | 
					 | 
					                        branchfork = Node(c, fork.name + "~" + n.name + "/" + p) | 
				
			
			
		
	
	
		
		
			
				
					| 
						
						
						
							
								
							
						
					 | 
					 | 
					@ -187,9 +194,12 @@ class VerilogTransformer(Transformer): | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					            if sd.kind == 'output': | 
					 | 
					 | 
					 | 
					            if sd.kind == 'output': | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                for name in sd.names: | 
					 | 
					 | 
					 | 
					                for name in sd.names: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    if name not in c.forks: | 
					 | 
					 | 
					 | 
					                    if name not in c.forks: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        log.warn(f'Output not driven: {name}') | 
					 | 
					 | 
					 | 
					                        if f'{name}[0]' in c.forks:  # actually a 1-bit bus? | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                    else: | 
					 | 
					 | 
					 | 
					                            name = f'{name}[0]' | 
				
			
			
				
				
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					                        Line(c, c.forks[name], c.cells[name]) | 
					 | 
					 | 
					 | 
					                        else: | 
				
			
			
				
				
			
		
	
		
		
	
		
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            log.warn(f'Output not driven: {name}') | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                            continue | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					                    Line(c, c.forks[name], c.cells[name]) | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return c | 
					 | 
					 | 
					 | 
					        return c | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					    @staticmethod | 
					 | 
					 | 
					 | 
					    @staticmethod | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |