|  |  |  | @ -123,6 +123,9 @@ class VerilogTransformer(Transformer):@@ -123,6 +123,9 @@ class VerilogTransformer(Transformer): | 
			
		
	
		
			
				
					|  |  |  |  |         assignments = [] | 
			
		
	
		
			
				
					|  |  |  |  |         for stmt in args[2:]:  # pass 1: instantiate cells and driven signals | 
			
		
	
		
			
				
					|  |  |  |  |             if isinstance(stmt, Instantiation): | 
			
		
	
		
			
				
					|  |  |  |  |                 if stmt.type not in self.tlib.cells: | 
			
		
	
		
			
				
					|  |  |  |  |                     log.warn(f'Ignoring cell of unknown kind "{stmt.type}"') | 
			
		
	
		
			
				
					|  |  |  |  |                     continue | 
			
		
	
		
			
				
					|  |  |  |  |                 n = Node(c, stmt.name, kind=stmt.type) | 
			
		
	
		
			
				
					|  |  |  |  |                 for p, s in stmt.pins.items(): | 
			
		
	
		
			
				
					|  |  |  |  |                     if self.tlib.pin_is_output(n.kind, p): | 
			
		
	
	
		
			
				
					|  |  |  | @ -141,6 +144,8 @@ class VerilogTransformer(Transformer):@@ -141,6 +144,8 @@ class VerilogTransformer(Transformer): | 
			
		
	
		
			
				
					|  |  |  |  |                         c.io_nodes[positions[name]] = n | 
			
		
	
		
			
				
					|  |  |  |  |                     if sd.kind == 'input': | 
			
		
	
		
			
				
					|  |  |  |  |                         Line(c, n, Node(c, name)) | 
			
		
	
		
			
				
					|  |  |  |  |         while len(assignments) > 0: | 
			
		
	
		
			
				
					|  |  |  |  |             more_assignments = [] | 
			
		
	
		
			
				
					|  |  |  |  |             for target, source in assignments:  # pass 1.5: process signal assignments | 
			
		
	
		
			
				
					|  |  |  |  |                 target_sigs = [] | 
			
		
	
		
			
				
					|  |  |  |  |                 if not isinstance(target, list): target = [target] | 
			
		
	
	
		
			
				
					|  |  |  | @ -167,9 +172,13 @@ class VerilogTransformer(Transformer):@@ -167,9 +172,13 @@ class VerilogTransformer(Transformer): | 
			
		
	
		
			
				
					|  |  |  |  |                         cnode = Node(c, f'__const{s[3]}_{const_count}__', f'__const{s[3]}__') | 
			
		
	
		
			
				
					|  |  |  |  |                         const_count += 1 | 
			
		
	
		
			
				
					|  |  |  |  |                         Line(c, cnode, Node(c, t)) | 
			
		
	
		
			
				
					|  |  |  |  |                     else: | 
			
		
	
		
			
				
					|  |  |  |  |                         more_assignments.append((target, source)) | 
			
		
	
		
			
				
					|  |  |  |  |             assignments = more_assignments | 
			
		
	
		
			
				
					|  |  |  |  |         for stmt in args[2:]:  # pass 2: connect signals to readers | 
			
		
	
		
			
				
					|  |  |  |  |             if isinstance(stmt, Instantiation): | 
			
		
	
		
			
				
					|  |  |  |  |                 for p, s in stmt.pins.items(): | 
			
		
	
		
			
				
					|  |  |  |  |                     if stmt.name not in c.cells: continue | 
			
		
	
		
			
				
					|  |  |  |  |                     n = c.cells[stmt.name] | 
			
		
	
		
			
				
					|  |  |  |  |                     if self.tlib.pin_is_output(n.kind, p): continue | 
			
		
	
		
			
				
					|  |  |  |  |                     if s.startswith("1'b"): | 
			
		
	
	
		
			
				
					|  |  |  | 
 |