3
0
Fork 0
mirror of https://github.com/YosysHQ/yosys synced 2025-04-08 18:31:51 +00:00
yosys/passes/techmap
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
..
.gitignore Renamed "stdcells.v" to "techmap.v" 2014-07-31 02:32:00 +02:00
abc.cc Merge pull request #1258 from YosysHQ/eddie/cleanup 2019-08-10 09:52:14 +02:00
abc9.cc Merge pull request #1258 from YosysHQ/eddie/cleanup 2019-08-10 09:52:14 +02:00
aigmap.cc Make liberal use of IdString.in() 2019-08-06 16:18:18 -07:00
alumacc.cc RTLIL::S{0,1} -> State::S{0,1} 2019-08-07 11:12:38 -07:00
attrmap.cc attrmap: also consider process, switch and case attributes. 2019-07-10 12:30:53 +00:00
attrmvcp.cc Consistent use of 'override' for virtual methods in derived classes. 2018-07-20 23:51:06 -07:00
clkbufmap.cc Add clock buffer insertion pass, improve iopadmap. 2019-08-13 00:16:38 +02:00
deminout.cc Make liberal use of IdString.in() 2019-08-06 16:18:18 -07:00
dff2dffe.cc substr() -> compare() 2019-08-07 12:20:08 -07:00
dff2dffs.cc Consistent use of 'override' for virtual methods in derived classes. 2018-07-20 23:51:06 -07:00
dffinit.cc If init is 1'bx, do not add to dict as per @cliffordwolf 2019-05-03 08:06:16 -07:00
dfflibmap.cc Add "whitebox" attribute, add "read_verilog -wb" 2019-04-18 17:45:47 +02:00
dffsr2dff.cc Consistent use of 'override' for virtual methods in derived classes. 2018-07-20 23:51:06 -07:00
extract.cc substr() -> compare() 2019-08-07 12:20:08 -07:00
extract_counter.cc stoi -> atoi 2019-08-07 11:09:17 -07:00
extract_fa.cc stoi -> atoi 2019-08-07 11:09:17 -07:00
extract_reduce.cc Merge pull request #591 from hzeller/virtual-override 2018-08-15 14:05:38 +02:00
filterlib.cc Moved dfflibmap from passes/dfflibmap to passes/techmap 2013-10-16 15:32:26 +02:00
flowmap.cc stoi -> atoi 2019-08-07 11:09:17 -07:00
hilomap.cc Consistent use of 'override' for virtual methods in derived classes. 2018-07-20 23:51:06 -07:00
insbuf.cc Consistent use of 'override' for virtual methods in derived classes. 2018-07-20 23:51:06 -07:00
iopadmap.cc Add clock buffer insertion pass, improve iopadmap. 2019-08-13 00:16:38 +02:00
libparse.cc Fix two instances of integer-assignment to string. 2019-05-14 22:01:15 -07:00
libparse.h Updated the liberty parser to accept [A:B] ranges (AST has not been updated). Liberty parser now also accepts key : value pair lines that do not end in ';'. 2019-03-24 22:54:18 +01:00
lut2mux.cc lut2mux: handle 1-bit INIT constant in $lut cells. 2018-12-05 19:27:48 +00:00
maccmap.cc RTLIL::S{0,1} -> State::S{0,1} 2019-08-07 11:12:38 -07:00
Makefile.inc Add clock buffer insertion pass, improve iopadmap. 2019-08-13 00:16:38 +02:00
muxcover.cc substr() -> compare() 2019-08-07 12:20:08 -07:00
nlutmap.cc stoi -> atoi 2019-08-07 11:09:17 -07:00
pmuxtree.cc Spelling fixes 2019-04-19 14:00:22 +02:00
shregmap.cc stoi -> atoi 2019-08-07 11:09:17 -07:00
simplemap.cc Use State::S{0,1} 2019-08-06 16:22:47 -07:00
simplemap.h Fixed trailing whitespaces 2015-07-02 11:14:30 +02:00
techmap.cc substr() -> compare() 2019-08-07 12:20:08 -07:00
tribuf.cc Consistent use of 'override' for virtual methods in derived classes. 2018-07-20 23:51:06 -07:00
zinit.cc Zinit option '-singleton' -> '-all' 2019-05-10 10:23:14 -07:00