Merge remote-tracking branch 'origin/master' into mwk/xilinx_bufgmap
authorEddie Hung <eddie@fpgeh.com>
Fri, 23 Aug 2019 17:00:50 +0000 (10:00 -0700)
committerEddie Hung <eddie@fpgeh.com>
Fri, 23 Aug 2019 17:00:50 +0000 (10:00 -0700)
1  2 
CHANGELOG
README.md
passes/techmap/iopadmap.cc
techlibs/xilinx/cells_sim.v
techlibs/xilinx/synth_xilinx.cc

diff --cc CHANGELOG
index bd4cd1b1b2bafe5bd699b0662b98d5e9e8212191,ca42df71e56b9d534e0e0dfe90ea03c21f89a977..b68f0bbfa919f2bbf2f45782fe8e87f105011f42
+++ b/CHANGELOG
@@@ -19,11 -23,10 +23,15 @@@ Yosys 0.9 .. Yosys 0.9-de
      - Added automatic gzip compression (based on filename extension) for backends
      - Improve attribute and parameter encoding in JSON to avoid ambiguities between
        bit vectors and strings containing [01xz]*
 +    - Added "clkbufmap" pass
 +    - Added "synth_xilinx -family xc6s" for Spartan 6 support (experimental)
 +    - Added "synth_xilinx -ise" (experimental)
 +    - Added "synth_xilinx -iopad"
 +    - "synth_xilinx" now automatically inserts clock buffers (add -noclkbuf to disable)
+     - Improvements in pmgen: subpattern and recursive matches
+     - Added "opt_share" pass, run as part of "opt -full"
+     - Added "ice40_wrapcarry" to encapsulate SB_LUT+SB_CARRY pairs for techmapping
+     - Removed "ice40_unlut"
  
  Yosys 0.8 .. Yosys 0.8-dev
  --------------------------
diff --cc README.md
Simple merge
Simple merge
index 27511a05f064b95850caeddc5ab1c326e6f10b9c,bec9ea1a0c783f56aec005dae8fc06e55467fca9..26df5bc938137850caeada17d9422687cace149a
@@@ -304,12 -295,12 +310,12 @@@ module FDPE_1 (output reg Q, (* clkbuf_
    always @(negedge C, posedge PRE) if (PRE) Q <= 1'b1; else if (CE) Q <= D;
  endmodule
  
- (* abc_box_id = 5, abc_scc_break="D,WE" *)
+ (* abc_box_id = 5 *)
  module RAM32X1D (
    output DPO, SPO,
-   (* clkbuf_sink *)
-   input  WCLK,
-   input  D, WE,
+   (* abc_scc_break *) input D,
 -  input  WCLK,
++  (* clkbuf_sink *) input  WCLK,
+   (* abc_scc_break *) input WE,
    input  A0, A1, A2, A3, A4,
    input  DPRA0, DPRA1, DPRA2, DPRA3, DPRA4
  );
    always @(posedge clk) if (WE) mem[a] <= D;
  endmodule
  
- (* abc_box_id = 6, abc_scc_break="D,WE" *)
+ (* abc_box_id = 6 *)
  module RAM64X1D (
    output DPO, SPO,
-   (* clkbuf_sink *)
-   input  WCLK,
-   input  D, WE,
+   (* abc_scc_break *) input D,
 -  input  WCLK,
++  (* clkbuf_sink *) input  WCLK,
+   (* abc_scc_break *) input WE,
    input  A0, A1, A2, A3, A4, A5,
    input  DPRA0, DPRA1, DPRA2, DPRA3, DPRA4, DPRA5
  );
    always @(posedge clk) if (WE) mem[a] <= D;
  endmodule
  
- (* abc_box_id = 7, abc_scc_break="D,WE" *)
+ (* abc_box_id = 7 *)
  module RAM128X1D (
    output       DPO, SPO,
-   input        D, WE,
-   (* clkbuf_sink *)
-   input        WCLK,
+   (* abc_scc_break *) input D,
 -  input        WCLK,
++  (* clkbuf_sink *) input WCLK,
+   (* abc_scc_break *) input WE,
    input  [6:0] A, DPRA
  );
    parameter INIT = 128'h0;
index 4069094a67d3225dfca6bbfe5191a0576c8f638e,7ba67409b5a368533304c1cc22eb78bf43953eb5..00849ad008d09e89c602fb10e4b4131af6f6e150
@@@ -63,17 -63,14 +63,17 @@@ struct SynthXilinxPass : public ScriptP
                log("        generate an output netlist (and BLIF file) suitable for VPR\n");
                log("        (this feature is experimental and incomplete)\n");
                log("\n");
 +              log("    -ise\n");
 +              log("        generate an output netlist suitable for ISE (enables -iopad)\n");
 +              log("\n");
                log("    -nobram\n");
-               log("        disable inference of block rams\n");
+               log("        do not use block RAM cells in output netlist\n");
                log("\n");
-               log("    -nodram\n");
-               log("        disable inference of distributed rams\n");
+               log("    -nolutram\n");
+               log("        do not use distributed RAM cells in output netlist\n");
                log("\n");
                log("    -nosrl\n");
-               log("        disable inference of shift registers\n");
+               log("        do not use distributed SRL cells in output netlist\n");
                log("\n");
                log("    -nocarry\n");
                log("        do not use XORCY/MUXCY/CARRY4 cells in output netlist\n");
        }
  
        std::string top_opt, edif_file, blif_file, family;
-       bool flatten, retime, vpr, ise, iopad, noiopad, noclkbuf, nobram, nodram, nosrl, nocarry, nowidelut, abc9;
 -      bool flatten, retime, vpr, nobram, nolutram, nosrl, nocarry, nowidelut, abc9;
++      bool flatten, retime, vpr, ise, iopad, noiopad, noclkbuf, nobram, nolutram, nosrl, nocarry, nowidelut, abc9;
        int widemux;
  
        void clear_flags() YS_OVERRIDE
                flatten = false;
                retime = false;
                vpr = false;
 +              ise = false;
 +              iopad = false;
 +              noiopad = false;
 +              noclkbuf = false;
                nocarry = false;
                nobram = false;
-               nodram = false;
+               nolutram = false;
                nosrl = false;
                nocarry = false;
                nowidelut = false;