diff options
Diffstat (limited to 'techlibs/intel_alm')
| -rw-r--r-- | techlibs/intel_alm/common/alm_map.v | 1 | ||||
| -rw-r--r-- | techlibs/intel_alm/common/arith_alm_map.v | 7 | ||||
| -rw-r--r-- | techlibs/intel_alm/synth_intel_alm.cc | 11 | 
3 files changed, 13 insertions, 6 deletions
| diff --git a/techlibs/intel_alm/common/alm_map.v b/techlibs/intel_alm/common/alm_map.v index fe646c5d6..6697b2e78 100644 --- a/techlibs/intel_alm/common/alm_map.v +++ b/techlibs/intel_alm/common/alm_map.v @@ -3,6 +3,7 @@ module \$lut (A, Y);  parameter WIDTH = 1;  parameter LUT = 0; +(* force_downto *)  input [WIDTH-1:0] A;  output Y; diff --git a/techlibs/intel_alm/common/arith_alm_map.v b/techlibs/intel_alm/common/arith_alm_map.v index ddf81d9d0..8515eeb56 100644 --- a/techlibs/intel_alm/common/arith_alm_map.v +++ b/techlibs/intel_alm/common/arith_alm_map.v @@ -11,17 +11,24 @@ parameter Y_WIDTH = 1;  parameter _TECHMAP_CONSTMSK_CI_ = 0;  parameter _TECHMAP_CONSTVAL_CI_ = 0; +(* force_downto *)  input [A_WIDTH-1:0] A; +(* force_downto *)  input [B_WIDTH-1:0] B;  input CI, BI; +(* force_downto *)  output [Y_WIDTH-1:0] X, Y, CO; +(* force_downto *)  wire [Y_WIDTH-1:0] A_buf, B_buf;  \$pos #(.A_SIGNED(A_SIGNED), .A_WIDTH(A_WIDTH), .Y_WIDTH(Y_WIDTH)) A_conv (.A(A), .Y(A_buf));  \$pos #(.A_SIGNED(B_SIGNED), .A_WIDTH(B_WIDTH), .Y_WIDTH(Y_WIDTH)) B_conv (.A(B), .Y(B_buf)); +(* force_downto *)  wire [Y_WIDTH-1:0] AA = A_buf; +(* force_downto *)  wire [Y_WIDTH-1:0] BB = BI ? ~B_buf : B_buf; +(* force_downto *)  wire [Y_WIDTH-1:0] BX = B_buf;  wire [Y_WIDTH:0] ALM_CARRY; diff --git a/techlibs/intel_alm/synth_intel_alm.cc b/techlibs/intel_alm/synth_intel_alm.cc index bf9e746b8..fabfc9003 100644 --- a/techlibs/intel_alm/synth_intel_alm.cc +++ b/techlibs/intel_alm/synth_intel_alm.cc @@ -29,7 +29,7 @@ PRIVATE_NAMESPACE_BEGIN  struct SynthIntelALMPass : public ScriptPass {  	SynthIntelALMPass() : ScriptPass("synth_intel_alm", "synthesis for ALM-based Intel (Altera) FPGAs.") {} -	void help() YS_OVERRIDE +	void help() override  	{  		//   |---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|---v---|  		log("\n"); @@ -74,7 +74,7 @@ struct SynthIntelALMPass : public ScriptPass {  	string top_opt, family_opt, bram_type, vout_file;  	bool flatten, quartus, nolutram, nobram; -	void clear_flags() YS_OVERRIDE +	void clear_flags() override  	{  		top_opt = "-auto-top";  		family_opt = "cyclonev"; @@ -86,7 +86,7 @@ struct SynthIntelALMPass : public ScriptPass {  		nobram = false;  	} -	void execute(std::vector<std::string> args, RTLIL::Design *design) YS_OVERRIDE +	void execute(std::vector<std::string> args, RTLIL::Design *design) override  	{  		string run_from, run_to;  		clear_flags(); @@ -153,7 +153,7 @@ struct SynthIntelALMPass : public ScriptPass {  		log_pop();  	} -	void script() YS_OVERRIDE +	void script() override  	{  		if (help_mode) {  			family_opt = "<family>"; @@ -199,7 +199,7 @@ struct SynthIntelALMPass : public ScriptPass {  		}  		if (check_label("map_ffs")) { -			run("dff2dffe -direct-match $_DFF_*"); +			run("dff2dffe");  			// As mentioned in common/dff_sim.v, Intel flops power up to zero,  			// so use `zinit` to add inverters where needed.  			run("zinit"); @@ -209,7 +209,6 @@ struct SynthIntelALMPass : public ScriptPass {  		}  		if (check_label("map_luts")) { -			run("read_verilog -icells -specify -lib +/abc9_model.v");  			run("abc9 -maxlut 6 -W 200");  			run("techmap -map +/intel_alm/common/alm_map.v");  			run("opt -fast"); | 
