3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-10 11:17:09 +00:00
yosys/techlibs/xilinx
Marcin Kościelnicki f4c62f33ac Add clock buffer insertion pass, improve iopadmap.
A few new attributes are defined for use in cell libraries:

- iopad_external_pin: marks PAD cell's external-facing pin.  Pad
  insertion will be skipped for ports that are already connected
  to such a pin.
- clkbuf_sink: marks an input pin as a clock pin, requesting clock
  buffer insertion.
- clkbuf_driver: marks an output pin as a clock buffer output pin.
  Clock buffer insertion will be skipped for nets that are already
  driven by such a pin.

All three are module attributes that should be set to a comma-separeted
list of pin names.

Clock buffer insertion itself works as follows:

1. All cell ports, starting from bottom up, can be marked as clock sinks
   (requesting clock buffer insertion) or as clock buffer outputs.
2. If a wire in a given module is driven by a cell port that is a clock
   buffer output, it is in turn also considered a clock buffer output.
3. If an input port in a non-top module is connected to a clock sink in a
   contained cell, it is also in turn considered a clock sink.
4. If a wire in a module is driven by a non-clock-buffer cell, and is
   also connected to a clock sink port in a contained cell, a clock
   buffer is inserted in this module.
5. For the top module, a clock buffer is also inserted on input ports
   connected to clock sinks, optionally with a special kind of input
   PAD (such as IBUFG for Xilinx).
6. Clock buffer insertion on a given wire is skipped if the clkbuf_inhibit
   attribute is set on it.
2019-08-13 00:16:38 +02:00
..
tests Improved xilinx "bram1" test 2015-04-09 17:12:12 +02:00
.gitignore Added support for initialized xilinx brams 2015-04-06 17:07:10 +02:00
abc_xc7.box Fix $__XILINX_MUXF78 box timing 2019-07-01 14:04:06 -07:00
abc_xc7.lut Simplify comment 2019-06-17 19:14:41 -07:00
abc_xc7_nowide.lut Add _nowide variants of LUT libraries in -nowidelut flows 2019-06-26 10:23:29 -07:00
arith_map.v Instead of MUXCY/XORCY use CARRY4 (with timing) 2019-05-21 16:19:45 -07:00
brams_init.py synth_xilinx: Initial Spartan 6 block RAM inference support. 2019-07-11 14:45:48 +02:00
cells_map.v xilinx: Fix missing cell name underscore in cells_map.v 2019-07-25 08:19:07 +01:00
cells_sim.v Add clock buffer insertion pass, improve iopadmap. 2019-08-13 00:16:38 +02:00
cells_xtra.sh Add clock buffer insertion pass, improve iopadmap. 2019-08-13 00:16:38 +02:00
cells_xtra.v Add clock buffer insertion pass, improve iopadmap. 2019-08-13 00:16:38 +02:00
drams.txt Add RAM32X1D support 2019-06-24 16:16:50 -07:00
drams_map.v Add RAM32X1D support 2019-06-24 16:16:50 -07:00
ff_map.v xilinx: Fix the default values for FDPE/FDSE INIT attributes to match ISE/Vivado. 2019-07-11 21:13:12 +02:00
lut_map.v Really permute Xilinx LUT mappings as default LUT6.I5:A6 2019-06-18 11:48:48 -07:00
Makefile.inc synth_xilinx: Initial Spartan 6 block RAM inference support. 2019-07-11 14:45:48 +02:00
mux_map.v Change synth_xilinx's -nomux to -minmuxf <int> 2019-06-24 10:04:01 -07:00
synth_xilinx.cc Add clock buffer insertion pass, improve iopadmap. 2019-08-13 00:16:38 +02:00
xc6s_brams.txt synth_xilinx: Initial Spartan 6 block RAM inference support. 2019-07-11 14:45:48 +02:00
xc6s_brams_bb.v Add clock buffer insertion pass, improve iopadmap. 2019-08-13 00:16:38 +02:00
xc6s_brams_map.v RST -> RSTBRST for RAMB8BWER 2019-07-29 16:05:44 -07:00
xc7_brams.txt synth_xilinx: Initial Spartan 6 block RAM inference support. 2019-07-11 14:45:48 +02:00
xc7_brams_bb.v Add clock buffer insertion pass, improve iopadmap. 2019-08-13 00:16:38 +02:00
xc7_brams_map.v synth_xilinx: Initial Spartan 6 block RAM inference support. 2019-07-11 14:45:48 +02:00