mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 03:32:29 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			121 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
			
		
		
	
	
			121 lines
		
	
	
	
		
			3 KiB
		
	
	
	
		
			Text
		
	
	
	
	
	
| #!/usr/bin/env splrun
 | |
| //
 | |
| // Test procedure for matching Gates with shorted inputs, as suggested in
 | |
| // "SubCircuit Extraction with SubGraph Isomorphism. Zong Ling, Ph. D. IBM
 | |
| // Almaden Research Center -- EDA Shape Processing zling@us.ibm.com.":
 | |
| //
 | |
| // Four NAND gates and a NOR gate. One NAND gate (G1) has no shorted inputs,
 | |
| // one (G2) has an input shorted to VSS, one (G3) has an input shorted to VDD,
 | |
| // and one (G4) has both inputs shorted together. Th last gate (G5) is a NOR
 | |
| // gate.
 | |
| 
 | |
| var net;
 | |
| 
 | |
| function makeNAND(id)
 | |
| {
 | |
| 	net["${id}_VDD"] = "${id}_pa S";
 | |
| 	net["${id}_VSS"] = "${id}_nb S";
 | |
| 
 | |
| 	net["${id}_A"] = "${id}_pa G";
 | |
| 	net["${id}_B"] = "${id}_pb G";
 | |
| 	net["${id}_Y"] = "${id}_pb D";
 | |
| 
 | |
| 	return <:>
 | |
| 		:   node ${id}_pa pmos S 1 D 1 G 1
 | |
| 		:   node ${id}_pb pmos S 1 D 1 G 1
 | |
| 		:   node ${id}_na nmos S 1 D 1 G 1
 | |
| 		:   node ${id}_nb nmos S 1 D 1 G 1
 | |
| 		:   connect ${id}_pa S ${id}_pb S
 | |
| 		:   connect ${id}_pa D ${id}_pb D
 | |
| 		:   connect ${id}_pa D ${id}_na D
 | |
| 		:   connect ${id}_na S ${id}_nb D
 | |
| 		:   connect ${id}_pa G ${id}_na G
 | |
| 		:   connect ${id}_pb G ${id}_nb G
 | |
| 	</>;
 | |
| }
 | |
| 
 | |
| function makeNOR(id)
 | |
| {
 | |
| 	net["${id}_VDD"] = "${id}_pa S";
 | |
| 	net["${id}_VSS"] = "${id}_nb S";
 | |
| 
 | |
| 	net["${id}_A"] = "${id}_pa G";
 | |
| 	net["${id}_B"] = "${id}_pb G";
 | |
| 	net["${id}_Y"] = "${id}_pb D";
 | |
| 
 | |
| 	return <:>
 | |
| 		:   node ${id}_pa pmos S 1 D 1 G 1
 | |
| 		:   node ${id}_pb pmos S 1 D 1 G 1
 | |
| 		:   node ${id}_na nmos S 1 D 1 G 1
 | |
| 		:   node ${id}_nb nmos S 1 D 1 G 1
 | |
| 		:   connect ${id}_pa D ${id}_pb S
 | |
| 		:   connect ${id}_pb D ${id}_na D
 | |
| 		:   connect ${id}_pb D ${id}_nb D
 | |
| 		:   connect ${id}_na S ${id}_nb S
 | |
| 		:   connect ${id}_pa G ${id}_na G
 | |
| 		:   connect ${id}_pb G ${id}_nb G
 | |
| 	</>;
 | |
| }
 | |
| 
 | |
| write(<:>
 | |
| 	: graph nand
 | |
| 	: ${ makeNAND("G0") }
 | |
| 	:   extern ${net["G0_VDD"]}
 | |
| 	:   extern ${net["G0_VSS"]}
 | |
| 	:   extern ${net["G0_A"]}
 | |
| 	:   extern ${net["G0_B"]}
 | |
| 	:   extern ${net["G0_Y"]}
 | |
| 	: endgraph
 | |
| 	:
 | |
| 	: graph nor
 | |
| 	: ${ makeNOR("G0") }
 | |
| 	:   extern ${net["G0_VDD"]}
 | |
| 	:   extern ${net["G0_VSS"]}
 | |
| 	:   extern ${net["G0_A"]}
 | |
| 	:   extern ${net["G0_B"]}
 | |
| 	:   extern ${net["G0_Y"]}
 | |
| 	: endgraph
 | |
| 	:
 | |
| 	: graph haystack
 | |
| 	: ${ makeNAND("G1") }
 | |
| 	: ${ makeNAND("G2") }
 | |
| 	: ${ makeNAND("G3") }
 | |
| 	: ${ makeNAND("G4") }
 | |
| 	  ${ makeNOR("G5") }
 | |
| 	:
 | |
| 	:   node vdd vsupply V 1
 | |
| 	:   connect vdd V ${net["G1_VDD"]}
 | |
| 	:   connect vdd V ${net["G2_VDD"]}
 | |
| 	:   connect vdd V ${net["G3_VDD"]}
 | |
| 	:   connect vdd V ${net["G4_VDD"]}
 | |
| 	:   connect vdd V ${net["G5_VDD"]}
 | |
| 	:
 | |
| 	:   node vss vsupply V 1
 | |
| 	:   connect vss V ${net["G1_VSS"]}
 | |
| 	:   connect vss V ${net["G2_VSS"]}
 | |
| 	:   connect vss V ${net["G3_VSS"]}
 | |
| 	:   connect vss V ${net["G4_VSS"]}
 | |
| 	:   connect vss V ${net["G5_VSS"]}
 | |
| 	:
 | |
| 	:   connect ${net["G2_A"]} ${net["G1_A"]}
 | |
| 	:   connect ${net["G2_B"]} ${net["G2_VSS"]}
 | |
| 	:
 | |
| 	:   connect ${net["G3_A"]} ${net["G1_VDD"]}
 | |
| 	:   connect ${net["G3_B"]} ${net["G2_Y"]}
 | |
| 	:
 | |
| 	:   connect ${net["G4_A"]} ${net["G1_Y"]}
 | |
| 	:   connect ${net["G4_B"]} ${net["G1_Y"]}
 | |
| 	:
 | |
| 	:   connect ${net["G5_A"]} ${net["G3_Y"]}
 | |
| 	:   connect ${net["G5_B"]} ${net["G4_Y"]}
 | |
| 	: endgraph
 | |
| 	:
 | |
| 	: solve nand haystack false
 | |
| 	: clearoverlap
 | |
| 	: expect 4
 | |
| 	:
 | |
| 	: solve nor haystack false
 | |
| 	: clearoverlap
 | |
| 	: expect 1
 | |
| </>);
 | |
| 
 |