diff options
author | Marcin KoĆcielnicki <mwk@0x04.net> | 2019-12-18 13:42:26 +0100 |
---|---|---|
committer | Marcin KoĆcielnicki <mwk@0x04.net> | 2019-12-18 13:43:43 +0100 |
commit | a2352504031ee69efd0aac214fc947737303eb5e (patch) | |
tree | ad93a4161ffce499d4623f0bf8dfeda44d86f734 /techlibs/xilinx/cells_sim.v | |
parent | aff6ad1ce09264fb7fbf43a7456a746a586bea90 (diff) | |
download | yosys-a2352504031ee69efd0aac214fc947737303eb5e.tar.gz yosys-a2352504031ee69efd0aac214fc947737303eb5e.tar.bz2 yosys-a2352504031ee69efd0aac214fc947737303eb5e.zip |
xilinx: Add xilinx_dffopt pass (#1557)
Diffstat (limited to 'techlibs/xilinx/cells_sim.v')
-rw-r--r-- | techlibs/xilinx/cells_sim.v | 35 |
1 files changed, 35 insertions, 0 deletions
diff --git a/techlibs/xilinx/cells_sim.v b/techlibs/xilinx/cells_sim.v index f9ce496ff..cf7923777 100644 --- a/techlibs/xilinx/cells_sim.v +++ b/techlibs/xilinx/cells_sim.v @@ -329,6 +329,41 @@ module FDSE ( endcase endgenerate endmodule +module FDRSE ( + output reg Q, + (* clkbuf_sink *) + (* invertible_pin = "IS_C_INVERTED" *) + input C, + (* invertible_pin = "IS_CE_INVERTED" *) + input CE, + (* invertible_pin = "IS_D_INVERTED" *) + input D, + (* invertible_pin = "IS_R_INVERTED" *) + input R, + (* invertible_pin = "IS_S_INVERTED" *) + input S +); + parameter [0:0] INIT = 1'b0; + parameter [0:0] IS_C_INVERTED = 1'b0; + parameter [0:0] IS_CE_INVERTED = 1'b0; + parameter [0:0] IS_D_INVERTED = 1'b0; + parameter [0:0] IS_R_INVERTED = 1'b0; + parameter [0:0] IS_S_INVERTED = 1'b0; + initial Q <= INIT; + wire c = C ^ IS_C_INVERTED; + wire ce = CE ^ IS_CE_INVERTED; + wire d = D ^ IS_D_INVERTED; + wire r = R ^ IS_R_INVERTED; + wire s = S ^ IS_S_INVERTED; + always @(posedge c) + if (r) + Q <= 0; + else if (s) + Q <= 1; + else if (ce) + Q <= d; +endmodule + module FDCE ( (* abc9_arrival=303 *) output reg Q, |