mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-10-31 11:42:30 +00:00 
			
		
		
		
	synth_xilinx: Support init values on Spartan 6 flip-flops properly.
This commit is contained in:
		
							parent
							
								
									a82e8df7d3
								
							
						
					
					
						commit
						fda94311ee
					
				
					 5 changed files with 219 additions and 53 deletions
				
			
		|  | @ -35,7 +35,8 @@ $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/xc7_brams_bb.v)) | |||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/lutrams.txt)) | ||||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/lutrams_map.v)) | ||||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/arith_map.v)) | ||||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/ff_map.v)) | ||||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/xc6s_ff_map.v)) | ||||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/xc7_ff_map.v)) | ||||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/lut_map.v)) | ||||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/mux_map.v)) | ||||
| 
 | ||||
|  |  | |||
|  | @ -1,42 +0,0 @@ | |||
| /* | ||||
|  *  yosys -- Yosys Open SYnthesis Suite | ||||
|  * | ||||
|  *  Copyright (C) 2012  Clifford Wolf <clifford@clifford.at> | ||||
|  * | ||||
|  *  Permission to use, copy, modify, and/or distribute this software for any | ||||
|  *  purpose with or without fee is hereby granted, provided that the above | ||||
|  *  copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  *  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  *  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
|  *  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
|  *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||
|  *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| // ============================================================================ | ||||
| // FF mapping | ||||
| 
 | ||||
| `ifndef _NO_FFS | ||||
| 
 | ||||
| module  \$_DFF_N_   (input D, C, output Q);    FDRE_1 #(.INIT(|0)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .R(1'b0)); endmodule | ||||
| module  \$_DFF_P_   (input D, C, output Q);    FDRE   #(.INIT(|0)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .R(1'b0)); endmodule | ||||
| 
 | ||||
| module  \$_DFFE_NP_ (input D, C, E, output Q); FDRE_1 #(.INIT(|0)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E),    .R(1'b0)); endmodule | ||||
| module  \$_DFFE_PP_ (input D, C, E, output Q); FDRE   #(.INIT(|0)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E),    .R(1'b0)); endmodule | ||||
| 
 | ||||
| module  \$_DFF_NN0_ (input D, C, R, output Q); FDCE_1 #(.INIT(|0)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR(!R)); endmodule | ||||
| module  \$_DFF_NP0_ (input D, C, R, output Q); FDCE_1 #(.INIT(|0)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR( R)); endmodule | ||||
| module  \$_DFF_PN0_ (input D, C, R, output Q); FDCE   #(.INIT(|0)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR(!R)); endmodule | ||||
| module  \$_DFF_PP0_ (input D, C, R, output Q); FDCE   #(.INIT(|0)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR( R)); endmodule | ||||
| 
 | ||||
| module  \$_DFF_NN1_ (input D, C, R, output Q); FDPE_1 #(.INIT(|1)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE(!R)); endmodule | ||||
| module  \$_DFF_NP1_ (input D, C, R, output Q); FDPE_1 #(.INIT(|1)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE( R)); endmodule | ||||
| module  \$_DFF_PN1_ (input D, C, R, output Q); FDPE   #(.INIT(|1)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE(!R)); endmodule | ||||
| module  \$_DFF_PP1_ (input D, C, R, output Q); FDPE   #(.INIT(|1)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE( R)); endmodule | ||||
| 
 | ||||
| `endif | ||||
| 
 | ||||
|  | @ -266,6 +266,14 @@ struct SynthXilinxPass : public ScriptPass | |||
| 
 | ||||
| 	void script() YS_OVERRIDE | ||||
| 	{ | ||||
| 		std::string ff_map_file; | ||||
| 		if (help_mode) | ||||
| 			ff_map_file = "+/xilinx/xc6s_ff_map.v"; | ||||
| 		else if (family == "xc6s") | ||||
| 			ff_map_file = "+/xilinx/xc6s_ff_map.v"; | ||||
| 		else | ||||
| 			ff_map_file = "+/xilinx/xc7_ff_map.v"; | ||||
| 
 | ||||
| 		if (check_label("begin")) { | ||||
| 			if (vpr) | ||||
| 				run("read_verilog -lib -D_EXPLICIT_CARRY +/xilinx/cells_sim.v"); | ||||
|  | @ -417,9 +425,7 @@ struct SynthXilinxPass : public ScriptPass | |||
| 
 | ||||
| 		if (check_label("map_ffs")) { | ||||
| 			if (abc9 || help_mode) { | ||||
| 						run("techmap -map +/xilinx/ff_map.v", "('-abc9' only)"); | ||||
| 						run("dffinit -ff FDRE Q INIT -ff FDCE Q INIT -ff FDPE Q INIT -ff FDSE Q INIT " | ||||
| 										"-ff FDRE_1 Q INIT -ff FDCE_1 Q INIT -ff FDPE_1 Q INIT -ff FDSE_1 Q INIT", "('-abc9' only)"); | ||||
| 				run("techmap -map " + ff_map_file, "('-abc9' only)"); | ||||
| 			} | ||||
| 		} | ||||
| 
 | ||||
|  | @ -453,15 +459,12 @@ struct SynthXilinxPass : public ScriptPass | |||
| 				run("xilinx_srl -fixed -minlen 3", "(skip if '-nosrl')"); | ||||
| 			std::string techmap_args = "-map +/xilinx/lut_map.v -map +/xilinx/cells_map.v"; | ||||
| 			if (help_mode) | ||||
| 				techmap_args += " [-map +/xilinx/ff_map.v]"; | ||||
| 				techmap_args += " [-map " + ff_map_file + "]"; | ||||
| 			else if (abc9) | ||||
| 				techmap_args += " -map +/xilinx/abc_unmap.v"; | ||||
| 			else | ||||
| 				techmap_args += " -map +/xilinx/ff_map.v"; | ||||
| 				techmap_args += " -map " + ff_map_file; | ||||
| 			run("techmap " + techmap_args); | ||||
| 			if (!abc9 || help_mode) | ||||
| 				run("dffinit -ff FDRE Q INIT -ff FDCE Q INIT -ff FDPE Q INIT -ff FDSE Q INIT " | ||||
| 						"-ff FDRE_1 Q INIT -ff FDCE_1 Q INIT -ff FDPE_1 Q INIT -ff FDSE_1 Q INIT", "(without '-abc9' only)"); | ||||
| 			run("clean"); | ||||
| 		} | ||||
| 
 | ||||
|  |  | |||
							
								
								
									
										126
									
								
								techlibs/xilinx/xc6s_ff_map.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										126
									
								
								techlibs/xilinx/xc6s_ff_map.v
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,126 @@ | |||
| /* | ||||
|  *  yosys -- Yosys Open SYnthesis Suite | ||||
|  * | ||||
|  *  Copyright (C) 2012  Clifford Wolf <clifford@clifford.at> | ||||
|  * | ||||
|  *  Permission to use, copy, modify, and/or distribute this software for any | ||||
|  *  purpose with or without fee is hereby granted, provided that the above | ||||
|  *  copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  *  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  *  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
|  *  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
|  *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||
|  *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| // ============================================================================ | ||||
| // FF mapping | ||||
| 
 | ||||
| `ifndef _NO_FFS | ||||
| 
 | ||||
| module  \$_DFF_N_   (input D, C, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) | ||||
|     FDSE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .S(1'b0)); | ||||
|   else | ||||
|     FDRE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .R(1'b0)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| module  \$_DFF_P_   (input D, C, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) | ||||
|     FDSE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .S(1'b0)); | ||||
|   else | ||||
|     FDRE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .R(1'b0)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFE_NP_ (input D, C, E, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) | ||||
|     FDSE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E),    .S(1'b0)); | ||||
|   else | ||||
|     FDRE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E),    .R(1'b0)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| module  \$_DFFE_PP_ (input D, C, E, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) | ||||
|     FDSE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E),    .S(1'b0)); | ||||
|   else | ||||
|     FDRE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E),    .R(1'b0)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFF_NN0_ (input D, C, R, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) | ||||
|     $error("Spartan 6 doesn't support FFs with asynchronous reset initialized to 1"); | ||||
|   else | ||||
|     FDCE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR(!R)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| module  \$_DFF_NP0_ (input D, C, R, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) | ||||
|     $error("Spartan 6 doesn't support FFs with asynchronous reset initialized to 1"); | ||||
|   else | ||||
|     FDCE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR( R)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| module  \$_DFF_PN0_ (input D, C, R, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) | ||||
|     $error("Spartan 6 doesn't support FFs with asynchronous reset initialized to 1"); | ||||
|   else | ||||
|     FDCE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR(!R)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| module  \$_DFF_PP0_ (input D, C, R, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b1) | ||||
|     $error("Spartan 6 doesn't support FFs with asynchronous reset initialized to 1"); | ||||
|   else | ||||
|     FDCE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR( R)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFF_NN1_ (input D, C, R, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b0) | ||||
|     $error("Spartan 6 doesn't support FFs with asynchronous set initialized to 0"); | ||||
|   else | ||||
|     FDPE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE(!R)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| module  \$_DFF_NP1_ (input D, C, R, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b0) | ||||
|     $error("Spartan 6 doesn't support FFs with asynchronous set initialized to 0"); | ||||
|   else | ||||
|     FDPE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE( R)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| module  \$_DFF_PN1_ (input D, C, R, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b0) | ||||
|     $error("Spartan 6 doesn't support FFs with asynchronous set initialized to 0"); | ||||
|   else | ||||
|     FDPE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE(!R)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| module  \$_DFF_PP1_ (input D, C, R, output Q); | ||||
|   parameter [0:0] _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   generate if (_TECHMAP_WIREINIT_Q_ === 1'b0) | ||||
|     $error("Spartan 6 doesn't support FFs with asynchronous set initialized to 0"); | ||||
|   else | ||||
|     FDPE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE( R)); | ||||
|   endgenerate | ||||
| endmodule | ||||
| 
 | ||||
| `endif | ||||
| 
 | ||||
							
								
								
									
										78
									
								
								techlibs/xilinx/xc7_ff_map.v
									
										
									
									
									
										Normal file
									
								
							
							
						
						
									
										78
									
								
								techlibs/xilinx/xc7_ff_map.v
									
										
									
									
									
										Normal file
									
								
							|  | @ -0,0 +1,78 @@ | |||
| /* | ||||
|  *  yosys -- Yosys Open SYnthesis Suite | ||||
|  * | ||||
|  *  Copyright (C) 2012  Clifford Wolf <clifford@clifford.at> | ||||
|  * | ||||
|  *  Permission to use, copy, modify, and/or distribute this software for any | ||||
|  *  purpose with or without fee is hereby granted, provided that the above | ||||
|  *  copyright notice and this permission notice appear in all copies. | ||||
|  * | ||||
|  *  THE SOFTWARE IS PROVIDED "AS IS" AND THE AUTHOR DISCLAIMS ALL WARRANTIES | ||||
|  *  WITH REGARD TO THIS SOFTWARE INCLUDING ALL IMPLIED WARRANTIES OF | ||||
|  *  MERCHANTABILITY AND FITNESS. IN NO EVENT SHALL THE AUTHOR BE LIABLE FOR | ||||
|  *  ANY SPECIAL, DIRECT, INDIRECT, OR CONSEQUENTIAL DAMAGES OR ANY DAMAGES | ||||
|  *  WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER IN AN | ||||
|  *  ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||||
|  *  OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||||
|  * | ||||
|  */ | ||||
| 
 | ||||
| // ============================================================================ | ||||
| // FF mapping | ||||
| 
 | ||||
| `ifndef _NO_FFS | ||||
| 
 | ||||
| module  \$_DFF_N_   (input D, C, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDRE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .R(1'b0)); | ||||
| endmodule | ||||
| module  \$_DFF_P_   (input D, C, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDRE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .R(1'b0)); | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFFE_NP_ (input D, C, E, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDRE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E),    .R(1'b0)); | ||||
| endmodule | ||||
| module  \$_DFFE_PP_ (input D, C, E, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDRE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(E),    .R(1'b0)); | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFF_NN0_ (input D, C, R, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDCE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR(!R)); | ||||
| endmodule | ||||
| module  \$_DFF_NP0_ (input D, C, R, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDCE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR( R)); | ||||
| endmodule | ||||
| module  \$_DFF_PN0_ (input D, C, R, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDCE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR(!R)); | ||||
| endmodule | ||||
| module  \$_DFF_PP0_ (input D, C, R, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDCE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .CLR( R)); | ||||
| endmodule | ||||
| 
 | ||||
| module  \$_DFF_NN1_ (input D, C, R, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDPE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE(!R)); | ||||
| endmodule | ||||
| module  \$_DFF_NP1_ (input D, C, R, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDPE_1 #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE( R)); | ||||
| endmodule | ||||
| module  \$_DFF_PN1_ (input D, C, R, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDPE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE(!R)); | ||||
| endmodule | ||||
| module  \$_DFF_PP1_ (input D, C, R, output Q); | ||||
|   parameter _TECHMAP_WIREINIT_Q_ = 1'bx; | ||||
|   FDPE   #(.INIT(_TECHMAP_WIREINIT_Q_)) _TECHMAP_REPLACE_ (.D(D), .Q(Q), .C(C), .CE(1'b1), .PRE( R)); | ||||
| endmodule | ||||
| 
 | ||||
| `endif | ||||
| 
 | ||||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue