Merge remote-tracking branch 'origin/eddie/peepopt_dffmuxext' into xc7dsp

This commit is contained in:
Eddie Hung 2019-09-05 13:01:34 -07:00
commit 38e73a3788
4 changed files with 64 additions and 25 deletions

View File

@ -985,7 +985,7 @@ void AigerReader::post_process()
// operate (and run checks on) this one module // operate (and run checks on) this one module
RTLIL::Design *mapped_design = new RTLIL::Design; RTLIL::Design *mapped_design = new RTLIL::Design;
mapped_design->add(module); mapped_design->add(module);
Pass::call(mapped_design, "clean -purge"); Pass::call(mapped_design, "clean");
mapped_design->modules_.erase(module->name); mapped_design->modules_.erase(module->name);
delete mapped_design; delete mapped_design;

View File

@ -22,9 +22,6 @@ endmatch
code code
did_something = true; did_something = true;
log_cell(dff);
log_cell(mux);
SigSpec &D = mux->connections_.at(muxAB); SigSpec &D = mux->connections_.at(muxAB);
SigSpec &Q = dff->connections_.at(\Q); SigSpec &Q = dff->connections_.at(\Q);
int width = GetSize(D); int width = GetSize(D);

View File

@ -1,21 +0,0 @@
module peepopt_shiftmul_0 #(parameter N=3, parameter W=3) (input [N*W-1:0] i, input [$clog2(N)-1:0] s, output [W-1:0] o);
assign o = i[s*W+:W];
endmodule
module peepopt_shiftmul_1 (output y, input [2:0] w);
assign y = 1'b1 >> (w * (3'b110));
endmodule
module peepopt_muldiv_0(input [1:0] i, output [1:0] o);
wire [3:0] t;
assign t = i * 3;
assign o = t / 3;
endmodule
module peepopt_dffmuxext_signed(input clk, ce, input signed [1:0] i, output reg signed [3:0] o);
always @(posedge clk) if (ce) o <= i;
endmodule
module peepopt_dffmuxext_unsigned(input clk, ce, input [1:0] i, output reg [3:0] o);
always @(posedge clk) if (ce) o <= i;
endmodule

63
tests/various/peepopt.ys Normal file
View File

@ -0,0 +1,63 @@
read_verilog <<EOT
module peepopt_shiftmul_0 #(parameter N=3, parameter W=3) (input [N*W-1:0] i, input [$clog2(N)-1:0] s, output [W-1:0] o);
assign o = i[s*W+:W];
endmodule
EOT
prep -nokeepdc
equiv_opt peepopt
design -load postopt
clean
select -assert-count 1 t:$shiftx
select -assert-count 0 t:$shiftx t:* %D
####################
design -reset
read_verilog <<EOT
module peepopt_shiftmul_1 (output [7:0] y, input [2:0] w);
assign y = 1'b1 >> (w * (3'b110));
endmodule
EOT
prep -nokeepdc
equiv_opt peepopt
design -load postopt
clean
select -assert-count 1 t:$shr
select -assert-count 1 t:$mul
select -assert-count 0 t:$shr t:$mul %% t:* %D
####################
design -reset
read_verilog <<EOT
module peepopt_muldiv_0(input [1:0] i, output [1:0] o);
wire [3:0] t;
assign t = i * 3;
assign o = t / 3;
endmodule
EOT
prep -nokeepdc
equiv_opt peepopt
design -load postopt
clean
select -assert-count 0 t:*
####################
design -reset
read_verilog <<EOT
module peepopt_dffmuxext_signed(input clk, ce, input signed [1:0] i, output reg signed [3:0] o);
always @(posedge clk) if (ce) o <= i;
endmodule
EOT
prep -nokeepdc
equiv_opt peepopt
design -load postopt
clean
select -assert-count 1 t:$dff r:WIDTH=2 %i
select -assert-count 1 t:$mux r:WIDTH=2 %i
select -assert-count 0 t:$dff t:$mux %% t:* %D