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.txt)) | ||||||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/lutrams_map.v)) | $(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/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/lut_map.v)) | ||||||
| $(eval $(call add_share_file,share/xilinx,techlibs/xilinx/mux_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 | 	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 (check_label("begin")) { | ||||||
| 			if (vpr) | 			if (vpr) | ||||||
| 				run("read_verilog -lib -D_EXPLICIT_CARRY +/xilinx/cells_sim.v"); | 				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 (check_label("map_ffs")) { | ||||||
| 			if (abc9 || help_mode) { | 			if (abc9 || help_mode) { | ||||||
| 						run("techmap -map +/xilinx/ff_map.v", "('-abc9' only)"); | 				run("techmap -map " + ff_map_file, "('-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)"); |  | ||||||
| 			} | 			} | ||||||
| 		} | 		} | ||||||
| 
 | 
 | ||||||
|  | @ -453,15 +459,12 @@ struct SynthXilinxPass : public ScriptPass | ||||||
| 				run("xilinx_srl -fixed -minlen 3", "(skip if '-nosrl')"); | 				run("xilinx_srl -fixed -minlen 3", "(skip if '-nosrl')"); | ||||||
| 			std::string techmap_args = "-map +/xilinx/lut_map.v -map +/xilinx/cells_map.v"; | 			std::string techmap_args = "-map +/xilinx/lut_map.v -map +/xilinx/cells_map.v"; | ||||||
| 			if (help_mode) | 			if (help_mode) | ||||||
| 				techmap_args += " [-map +/xilinx/ff_map.v]"; | 				techmap_args += " [-map " + ff_map_file + "]"; | ||||||
| 			else if (abc9) | 			else if (abc9) | ||||||
| 				techmap_args += " -map +/xilinx/abc_unmap.v"; | 				techmap_args += " -map +/xilinx/abc_unmap.v"; | ||||||
| 			else | 			else | ||||||
| 				techmap_args += " -map +/xilinx/ff_map.v"; | 				techmap_args += " -map " + ff_map_file; | ||||||
| 			run("techmap " + techmap_args); | 			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"); | 			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