* Check SER_CLK more
* Use connectPorts
* move rewire code
* Move data structures
* move placement decision for later
* cleanups
* find working layout
* clangformat
* Inverted input on ODDR
* Fix some tests
* Copy clocks for multi die
* cleanup
* reporting
* bugfix
* handle PLL special inputs
* Fix user globals
* Proper DDR per bank and cleanup
* Add extra data for die regions and create them
* Better forced_die implementation
* Copy region to newly generated cells, and update when constrained
* Update PLL error messages
* Add TODO comment
* Add log output
* Optimize CC_LUT1
* Update tests
* Optimize CC_LUT2 as well
* Use init enumerations
* Merge DFF in MX4
* Move repack code
* Move ramio code to pack_cpe
* Merge LUT1/2 to ADDF inputs
* Note actual CPE ports
* Merge DFF in ADDF
* Update FF params and ports first
* Check if DFFs are compatible before merging
* Optimize DFF/Latch
* Add reporting of optimized cells
* Optimize MX2/4
* Add statistics
* Use special nets for VCC/GND to skip using name
* Add warning for carry chain split
* Merge FFs where possible
* Cleanup
* Keep statistics out for now
* Add logs for packing sections
* review fixes
---------
Co-authored-by: Lofty <dan.ravensloft@gmail.com>
* CPE mapping improvements
* Use CP_OUT for adders
* Fixes
* Small fixes
* Cleanups
* Cleanup
* Cleanups
* Fixes
* Fixes
* Optimize
* Cleanup
* clangformat
* Cleanup
* Cleanup
* Bump required version of database
* Cleanup
* Resolve name conflicts
* Fix signal routing
* Make CPE_LATCH separate
* Add more timings models, need updated values
* Fixed warning
* multiplier support from lofty/gatemate-mult
* explicitly zero some params in B passthrough
* comment the relevant CPE inputs in check_multipliers
* Rename some of bels
* remove _lower from name
* refactor multiplier checking
* Revert "remove _lower from name"
This reverts commit daa1041bdf.
* Fixe net name to be unique
* Make sure we at least generate bitstream with all info
* Simplify zero
* Bounded cell type in gui
* typo fix
* Remove A passthrough inversion option
* Clean up CarryGenCell config
* Update a passthru to use new primitives
* Cleanup for adders
* Clean up MsbRoutingCell
* Cleanup
* Refactor A connection code
* Make it more as in PR #1513
* Added cplines to bpassthru and fixed constant driver for A
* Add parts
* Added comp out connections
* clangformat
* clangformat
* Clean up B passthrough connections
* wire up a bunch of intermediate signals
* Bit of cleanup
* handing of C_EN_IN
* C_EN_CIN fixes
* connect f_route to its lines
* fix cite for FRoutingCell
* fixup, oops
* connect multfab to its lines
* Commented line
* Connect CPOUTs
* Handle C_I params
* connect CINY1 for CarryGenCell
* fix carry gen CINX
* Update L2T4 model
* Updates for ADDCIN
* clangformat
* fix some issues with multfab and f_route
* look at C_I when doing inversion
* Only set some C_I signals when used
* Fix one more place
* do not use cplines so we can merge in one cell
* Cover cases that could be optimized out
* clangformat
* Cleanups
* Disable multiplier usage for now
---------
Co-authored-by: Lofty <dan.ravensloft@gmail.com>
* SER_CLK support
* Update constids
* wip
* CLK_FEEDBACK
* Handle SER_CLK and SER_CLK_N
* clangformat
* Cleanup
* Use _ as separator for PLL CFGs
* Remove unused clocking cells
* Do not use same name for IO models
* Fix IDDR merge
* Cleanup
* Properly handle user global signals
* Move signal inversion in bitstream creation
* Start adding multi die support
* Display die location for pins used
* Do not use constant s as locations
* Cleanup SB_DRIVE handling
* Use DDR locations from chip database
* Place only in prefered die for now
* Set D2D
* Fixed typos
* Initial code for GateMate
* Initial work on forming bitstream
* Add CCF parsing
* Use CCF to set IO location
* Propagate errors
* Restructure code
* Add support for reading from config
* Start adding infrastructure for reading bitstream
* Fix script
* GPIO initial work
* Add IN1->RAM_O2 propagation
* Fixed typo
* Cleanup
* More parameter checks
* Add LVDS support
* Cleanup
* Keep just used connections for now
* Naive lut tree CPE pack
* Naive pack CC_DFF
* pack DFF fixes
* Handle MUX flags
* Fix DFF pack
* Prevent pass trough issues
* Cleanup
* Use device wrapper class
* Update due to API changes
* Use pin connection aliases
* Start work on BUFG support
* Fix CC_L2T5 pack
* Add CPE input inverters
* Constrain routes to have correct inversion state
* Add clock inversion pip
* Added MX2 and MX4 support
* Fix script
* BUFG support
* debug print if route found with wrong polarity
* Some CC_DFF improvements
* Create reproducible chip database
* Simplify inversion of special signals
* Few more DFF features
* Add forgotten virtual port renames
* Handle muxes with constant inputs
* Allow inversion for muxes
* cleanup
* DFF input can be constant
* init DFF only when needed
* cleanup
* Add basic PLL support
* Add some timings
* Add USR_RSTN support
* Display few more primitives
* Use pass trough signals to validate architecture data
* Use extra tile information from chip database
* Updates needed for a build system changes
* Implement SB_DRIVE support
* Properly named configuration bits
* autogenerated constids.inc
* small fix
* Initial code for CPE halfs
* Some cleanup
* make sure FFs are compatible
* reverted due to db change
* Merge DFF where applicable
* memory allocation issue
* fix
* better MX2
* ram_i handling
* Cleanup MX4
* Support latches
* compare L_D flag as well
* Move virtual pips
* Naive addf pack
* carry chains grouping
* Keep chip database reproducible
* split addf vectors
* Block CPEs when GPIO is used
* Prepare placement code
* RAM_I/RAM_O rewrite
* fix ram_i/o index
* Display RAM and add new primitives
* PLL wip code
* CC_PLL_ADV packing
* PLL handling cleanup
* Add PLL comments
* Keep only high fan-out BUFG
* Add skeleton for tests
* Utilize move_ram_o
* GPIO wip
* GPIO wip
* PLL fixes
* cleanup
* FF_OBF support
* Handle FF_IBF
* Make SLEW FAST if not defined as in latest p_r
* Make sure FF_OBF only driving GPIO
* Moved pll calc into separate file
* IDDR handling and started ODDR
* Route DDR input for CC_ODDR
* Notify error in case ODDR or IDDR are used but not with I/O pin
* cleanup for CC_USR_RSTN
* Extract proper RAM location for bitstream
* Code cleanup
* Allow auto place of pads
* Use clock source flag
* Configure GPIO clock signals
* Handle conflicting clk
* Use BUGF in proper order
* Connected CLK, works without but good for debugging
* CC_CFG_CTRL placement
* Group RAM data 40 bytes per row
* Write BRAM content
* RAM wip
* Use relative constraints from chipdb
* fix broken build
* Memory wip
* Handle custom clock for memories
* Support FIFO
* optimize move_ram_io
* Fix SR signal handling acorrding to findings
* set placer beta
* Pre place what we can
* Revert "debug print if route found with wrong polarity"
This reverts commit cf9ded2f18.
* Revert "Constrain routes to have correct inversion state"
This reverts commit 795c284d48.
* Remove virtual pips
* Implement post processing inversion
* ADDF add ability to route additional CO
* Merge two ADDFs in one CPE
* Added TODO
* clangformat
* Cleanup
* Add serdes handling in config file
* Cleanup
* Cleanup
* Cleanup
* Fix in PLL handling
* Fixed ADDF edge case
* No need for this
* Fix latch
* Sanity checks
* Support CC_BRAM_20K merge
* Start creating testing environment
* LVDS fixes
* Add connection helper
* Cleanup
* Fix tabs
* Formatting fix
* Remove optimization tests for now
* remove read_bitstream
* removed .c_str()
* Removed config parsing
* using snake_case
* Use bool_or_default where applicable
* refactored bitstream write code
* Add allow-unconstrained option
* Update DFF related messages
* Add clock constraint propagation
---------
Co-authored-by: Lofty <dan.ravensloft@gmail.com>