| 
						
						
							
								
							
						
						
					 | 
					 | 
					@ -64,6 +64,44 @@ class TechLib: | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					        return self.cells[kind][1][pin][1] | 
					 | 
					 | 
					 | 
					        return self.cells[kind][1][pin][1] | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					KYUPY = TechLib(r""" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					BUF1    input(i0)          output(o) o=BUF1(i0)          ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					INV1    input(i0)          output(o) o=INV1(i0)          ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					AND2    input(i0,i1)       output(o) o=AND2(i0,i1)       ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					AND3    input(i0,i1,i2)    output(o) o=AND3(i0,i1,i2)    ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					AND4    input(i0,i1,i2,i3) output(o) o=AND4(i0,i1,i2,i3) ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					NAND2   input(i0,i1)       output(o) o=NAND2(i0,i1)      ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					NAND3   input(i0,i1,i2)    output(o) o=NAND3(i0,i1,i2)   ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					NAND4   input(i0,i1,i2,i3) output(o) o=NAND4(i0,i1,i2,i3); | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					OR2     input(i0,i1)       output(o) o=OR2(i0,i1)        ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					OR3     input(i0,i1,i2)    output(o) o=OR3(i0,i1,i2)     ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					OR4     input(i0,i1,i2,i3) output(o) o=OR4(i0,i1,i2,i3)  ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					NOR2    input(i0,i1)       output(o) o=NOR2(i0,i1)       ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					NOR3    input(i0,i1,i2)    output(o) o=NOR3(i0,i1,i2)    ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					NOR4    input(i0,i1,i2,i3) output(o) o=NOR4(i0,i1,i2,i3) ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					XOR2    input(i0,i1)       output(o) o=XOR2(i0,i1)       ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					XOR3    input(i0,i1,i2)    output(o) o=XOR3(i0,i1,i2)    ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					XOR4    input(i0,i1,i2,i3) output(o) o=XOR4(i0,i1,i2,i3) ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					XNOR2   input(i0,i1)       output(o) o=XNOR2(i0,i1)      ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					XNOR3   input(i0,i1,i2)    output(o) o=XNOR3(i0,i1,i2)   ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					XNOR4   input(i0,i1,i2,i3) output(o) o=XNOR4(i0,i1,i2,i3)  ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					AO21    input(i0,i1,i2)    output(o) o=AO21(i0,i1,i2)      ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					AO22    input(i0,i1,i2,i3) output(o) o=AO22(i0,i1,i2,i3)   ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					OA21    input(i0,i1,i2)    output(o) o=OA21(i0,i1,i2)      ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					OA22    input(i0,i1,i2,i3) output(o) o=OA22(i0,i1,i2,i3)   ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					AOI21   input(i0,i1,i2)    output(o) o=AOI21(i0,i1,i2)     ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					AOI22   input(i0,i1,i2,i3) output(o) o=AOI22(i0,i1,i2,i3)  ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					OAI21   input(i0,i1,i2)    output(o) o=OAI21(i0,i1,i2)     ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					OAI22   input(i0,i1,i2,i3) output(o) o=OAI22(i0,i1,i2,i3)  ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					AO211   input(i0,i1,i2,i3) output(o) o=AO211(i0,i1,i2,i3)  ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					OA211   input(i0,i1,i2,i3) output(o) o=OA211(i0,i1,i2,i3)  ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					AOI211  input(i0,i1,i2,i3) output(o) o=AOI211(i0,i1,i2,i3) ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					OAI211  input(i0,i1,i2,i3) output(o) o=OAI211(i0,i1,i2,i3) ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					MUX21   input(i0,i1,i2)    output(o) o=MUX21(i0,i1,i2)     ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					""") | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					"""A synthetic library of all KyuPy simulation primitives. | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					""" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					GSC180 = TechLib(r""" | 
					 | 
					 | 
					 | 
					GSC180 = TechLib(r""" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					BUFX{1,3}      input(A)    output(Y) Y=BUF1(A)    ; | 
					 | 
					 | 
					 | 
					BUFX{1,3}      input(A)    output(Y) Y=BUF1(A)    ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					CLKBUFX{1,2,3} input(A)    output(Y) Y=BUF1(A)    ; | 
					 | 
					 | 
					 | 
					CLKBUFX{1,2,3} input(A)    output(Y) Y=BUF1(A)    ; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
							
								
							
						
						
					 | 
					 | 
					@ -326,7 +364,7 @@ It defines all cells except: negative-edge flip-flops, tri-state, latches, clock | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					SAED90 = TechLib(r""" | 
					 | 
					 | 
					 | 
					SAED90 = TechLib(r""" | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					NBUFFX{2,4,8,16,32}$ input(INP) output(Z) Z=BUF1(INP) ; | 
					 | 
					 | 
					 | 
					NBUFFX{2,4,8,16,32}$ input(INP) output(Z) Z=BUF1(INP) ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					AOBUFX{1,2,4}$       input(INP) output(Z) Z=BUF1(INP) ; | 
					 | 
					 | 
					 | 
					AOBUFX{1,2,4}$       input(INP) output(Z) Z=BUF1(INP) ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					DELLN{1,2,3}X2$      input(INP) output(Z)Z=BUF1(INP) ; | 
					 | 
					 | 
					 | 
					DELLN{1,2,3}X2$      input(INP) output(Z) Z=BUF1(INP) ; | 
				
			
			
				
				
			
		
	
		
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					
 | 
					 | 
					 | 
					 | 
					
 | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					INVX{0,1,2,4,8,16,32}$ input(INP) output(ZN) ZN=INV1(INP) ; | 
					 | 
					 | 
					 | 
					INVX{0,1,2,4,8,16,32}$ input(INP) output(ZN) ZN=INV1(INP) ; | 
				
			
			
		
	
		
		
			
				
					
					 | 
					 | 
					 | 
					AOINVX{1,2,4}$         input(INP) output(ZN) ZN=INV1(INP) ; | 
					 | 
					 | 
					 | 
					AOINVX{1,2,4}$         input(INP) output(ZN) ZN=INV1(INP) ; | 
				
			
			
		
	
	
		
		
			
				
					| 
						
							
								
							
						
						
						
					 | 
					 | 
					
  |