mirror of
				https://github.com/YosysHQ/yosys
				synced 2025-11-04 05:19:11 +00:00 
			
		
		
		
	Add more DFF types
This commit is contained in:
		
							parent
							
								
									d5a405d3b4
								
							
						
					
					
						commit
						9e9fae1966
					
				
					 5 changed files with 102 additions and 48 deletions
				
			
		| 
						 | 
				
			
			@ -5,8 +5,9 @@ $(eval $(call add_share_file,share/machxo2,techlibs/ecp5/cells_io.vh))
 | 
			
		|||
$(eval $(call add_share_file,share/machxo2,techlibs/machxo2/cells_map.v))
 | 
			
		||||
$(eval $(call add_share_file,share/machxo2,techlibs/machxo2/cells_sim.v))
 | 
			
		||||
 | 
			
		||||
$(eval $(call add_share_file,share/machxo2,techlibs/machxo2/lutrams.txt))
 | 
			
		||||
$(eval $(call add_share_file,share/machxo2,techlibs/machxo2/lutrams_map.v))
 | 
			
		||||
$(eval $(call add_share_file,share/machxo2,techlibs/ecp5/lutrams.txt))
 | 
			
		||||
$(eval $(call add_share_file,share/machxo2,techlibs/ecp5/lutrams_map.v))
 | 
			
		||||
 | 
			
		||||
$(eval $(call add_share_file,share/machxo2,techlibs/machxo2/brams.txt))
 | 
			
		||||
$(eval $(call add_share_file,share/machxo2,techlibs/machxo2/brams_map.v))
 | 
			
		||||
$(eval $(call add_share_file,share/machxo2,techlibs/machxo2/arith_map.v))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,3 +1,93 @@
 | 
			
		|||
module  \$_DFF_N_ (input D, C, output Q);
 | 
			
		||||
    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
 | 
			
		||||
    generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    else
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    endgenerate
 | 
			
		||||
    wire _TECHMAP_REMOVEINIT_Q_ = 1'b1;
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_DFF_P_ (input D, C, output Q);
 | 
			
		||||
    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
 | 
			
		||||
    generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    else
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    endgenerate
 | 
			
		||||
    wire _TECHMAP_REMOVEINIT_Q_ = 1'b1;
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_DFFE_NN_ (input D, C, E, output Q);
 | 
			
		||||
    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
 | 
			
		||||
    generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    else
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    endgenerate
 | 
			
		||||
    wire _TECHMAP_REMOVEINIT_Q_ = 1'b1;
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_DFFE_PN_ (input D, C, E, output Q);
 | 
			
		||||
    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
 | 
			
		||||
    generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    else
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    endgenerate
 | 
			
		||||
    wire _TECHMAP_REMOVEINIT_Q_ = 1'b1;
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_DFFE_NP_ (input D, C, E, output Q);
 | 
			
		||||
    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
 | 
			
		||||
    generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    else
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    endgenerate
 | 
			
		||||
    wire _TECHMAP_REMOVEINIT_Q_ = 1'b1;
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_DFFE_PP_ (input D, C, E, output Q);
 | 
			
		||||
    parameter _TECHMAP_WIREINIT_Q_ = 1'bx;
 | 
			
		||||
    generate if (_TECHMAP_WIREINIT_Q_ === 1'b1)
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    else
 | 
			
		||||
        TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(1'b0), .DI(D), .Q(Q));
 | 
			
		||||
    endgenerate
 | 
			
		||||
    wire _TECHMAP_REMOVEINIT_Q_ = 1'b1;
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_DFF_NP0_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_DFF_NP1_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_DFF_PP0_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_DFF_PP1_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_SDFF_NP0_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_SDFF_NP1_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_SDFF_PP0_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_SDFF_PP1_ (input D, C, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_DFFE_NP0P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_DFFE_NP1P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_DFFE_PP0P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_DFFE_PP1P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_DFFE_NP0N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_DFFE_NP1N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_DFFE_PP0N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_DFFE_PP1N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("ASYNC"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_SDFFE_NP0P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_SDFFE_NP1P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_SDFFE_PP0P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_SDFFE_PP1P_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("CE"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
 | 
			
		||||
module  \$_SDFFE_NP0N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_SDFFE_NP1N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("INV"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_SDFFE_PP0N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
module  \$_SDFFE_PP1N_ (input D, C, E, R, output Q); TRELLIS_FF #(.GSR("AUTO"), .CEMUX("INV"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("SET"), .SRMODE("LSR_OVER_CE"))  _TECHMAP_REPLACE_ (.CLK(C), .CE(E), .LSR(R), .DI(D), .Q(Q)); wire _TECHMAP_REMOVEINIT_Q_ = 1'b1; endmodule
 | 
			
		||||
 | 
			
		||||
module \$lut (A, Y);
 | 
			
		||||
	parameter WIDTH = 0;
 | 
			
		||||
	parameter LUT = 0;
 | 
			
		||||
| 
						 | 
				
			
			@ -24,7 +114,4 @@ module \$lut (A, Y);
 | 
			
		|||
	LUT4 #(.INIT({rep{LUT}})) _TECHMAP_REPLACE_ (.A(I[0]), .B(I[1]), .C(I[2]), .D(I[3]), .Z(Y));
 | 
			
		||||
endmodule
 | 
			
		||||
 | 
			
		||||
// DFFs
 | 
			
		||||
module  \$_DFF_P_ (input D, C, output Q); TRELLIS_FF #(.CEMUX("1"), .CLKMUX("CLK"), .LSRMUX("LSR"), .REGSET("RESET")) _TECHMAP_REPLACE_ (.CLK(C), .LSR(1'b0), .DI(D), .Q(Q)); endmodule
 | 
			
		||||
 | 
			
		||||
`include "cells_io.vh"
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
| 
						 | 
				
			
			@ -1,12 +0,0 @@
 | 
			
		|||
ram distributed $__TRELLIS_DPR16X4_ {
 | 
			
		||||
	abits 4;
 | 
			
		||||
	width 4;
 | 
			
		||||
	cost 4;
 | 
			
		||||
	init any;
 | 
			
		||||
	prune_rom;
 | 
			
		||||
	port sw "W" {
 | 
			
		||||
		clock anyedge;
 | 
			
		||||
	}
 | 
			
		||||
	port ar "R" {
 | 
			
		||||
	}
 | 
			
		||||
}
 | 
			
		||||
| 
						 | 
				
			
			@ -1,30 +0,0 @@
 | 
			
		|||
module $__TRELLIS_DPR16X4_(...);
 | 
			
		||||
 | 
			
		||||
parameter INIT = 64'bx;
 | 
			
		||||
parameter PORT_W_CLK_POL = 1;
 | 
			
		||||
 | 
			
		||||
input PORT_W_CLK;
 | 
			
		||||
input [3:0] PORT_W_ADDR;
 | 
			
		||||
input [3:0] PORT_W_WR_DATA;
 | 
			
		||||
input PORT_W_WR_EN;
 | 
			
		||||
 | 
			
		||||
input [3:0] PORT_R_ADDR;
 | 
			
		||||
output [3:0] PORT_R_RD_DATA;
 | 
			
		||||
 | 
			
		||||
localparam WCKMUX = PORT_W_CLK_POL ? "WCK" : "INV";
 | 
			
		||||
 | 
			
		||||
TRELLIS_DPR16X4 #(
 | 
			
		||||
	.INITVAL(INIT),
 | 
			
		||||
	.WCKMUX(WCKMUX),
 | 
			
		||||
	.WREMUX("WRE")
 | 
			
		||||
) _TECHMAP_REPLACE_ (
 | 
			
		||||
	.RAD(PORT_R_ADDR),
 | 
			
		||||
	.DO(PORT_R_RD_DATA),
 | 
			
		||||
 | 
			
		||||
	.WAD(PORT_W_ADDR),
 | 
			
		||||
	.DI(PORT_W_WR_DATA),
 | 
			
		||||
	.WCK(PORT_W_CLK),
 | 
			
		||||
	.WRE(PORT_W_WR_EN)
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
endmodule
 | 
			
		||||
| 
						 | 
				
			
			@ -233,7 +233,15 @@ struct SynthMachXO2Pass : public ScriptPass
 | 
			
		|||
 | 
			
		||||
		if (check_label("map_ffs"))
 | 
			
		||||
		{
 | 
			
		||||
			run("dfflegalize -cell $_DFF_P_ 0");
 | 
			
		||||
			run("opt_clean");
 | 
			
		||||
			std::string dfflegalize_args = " -cell $_DFF_?_ 01 -cell $_DFF_?P?_ r -cell $_SDFF_?P?_ r";
 | 
			
		||||
			run("dfflegalize" + dfflegalize_args);
 | 
			
		||||
			run("techmap -D NO_LUT -map +/machxo2/cells_map.v");
 | 
			
		||||
			run("opt_expr -undriven -mux_undef");
 | 
			
		||||
			run("simplemap");
 | 
			
		||||
			run("ecp5_gsr");
 | 
			
		||||
			run("attrmvcp -copy -attr syn_useioff");
 | 
			
		||||
			run("opt_clean");
 | 
			
		||||
		}
 | 
			
		||||
 | 
			
		||||
		if (check_label("map_luts"))
 | 
			
		||||
| 
						 | 
				
			
			
 | 
			
		|||
		Loading…
	
	Add table
		Add a link
		
	
		Reference in a new issue