aboutsummaryrefslogtreecommitdiffstats
path: root/nexus/pack.cc
Commit message (Collapse)AuthorAgeFilesLines
* clangformatgatecat2022-03-091-1/+2
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* nexus: DCCs cannot be cascadedMaciej Dudek2022-03-091-1/+1
| | | | | | This commit solves implicit cascading when clock signal drives DCC and logic Signed-off-by: Maciej Dudek <mdudek@antmicro.com>
* Switch to potentially-sparse net users arraygatecat2022-02-271-20/+23
| | | | | | | | This uses a new data structure for net.users that allows gaps, so removing a port from a net is no longer an O(n) operation on the number of users the net has. Signed-off-by: gatecat <gatecat@ds0.me>
* refactor: New member functions to replace design_utilsgatecat2022-02-181-155/+155
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* refactor: Use constids instead of id("..")gatecat2022-02-161-20/+20
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* nexus: reduce OSCA worst case to 7%Dan Callaghan2022-02-101-1/+1
| | | | | | | | | | | The current version of Crosslink-NX Family Data Sheet lists the high frequency oscillator maximum frequency as 481.5MHz (that is, 7% higher than its nominal 450MHz): https://www.latticesemi.com/-/media/LatticeSemi/Documents/DataSheets/CrossLink/FPGA-DS-02049-1-2-1-CrossLink-NX-Family.ashx?document_id=52780 Older documents listed a wider frequency range but ±7% is the range for production parts.
* Fixed correction of Nexus OSCA frequency constraintsMaciej Kurc2022-02-021-2/+2
| | | | Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* Added honoring OSCA output frequency tolerance during constraints generationMaciej Kurc2022-01-281-2/+3
| | | | Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* Removed the need for MULT36_CORE bel for implementing the MULTADDSUB9X9WIDE ↵Maciej Kurc2022-01-251-1/+1
| | | | | | macro Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* clangformatgatecat2021-12-121-15/+11
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Added checking if all FFs added to an existing cluster have matching ↵Maciej Kurc2021-11-231-0/+44
| | | | | | configuration Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* Fixed potential issues with carry-chain cluster expansion, added a parameter ↵Maciej Kurc2021-11-221-14/+15
| | | | | | controlling the ratio of FFs that got glued to carry-chain clusters. Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* Added appending FFs to other existing LUT cluster types (carry, widefn)Maciej Kurc2021-11-221-18/+67
| | | | Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* Added an option to control LUT and FF packingMaciej Kurc2021-11-221-1/+5
| | | | Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* Added clustering free LUTs and FFsMaciej Kurc2021-11-221-0/+73
| | | | Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* nexus: Fix DSP macro placementgatecat2021-09-221-32/+32
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Added support for syn_useioff for enabling tri-state control FF integration ↵Maciej Kurc2021-09-201-13/+23
| | | | | | into IOLOGIC. Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* Use correct names for IDDRX1_ODDRX1 FASM featuresMaciej Kurc2021-09-171-17/+3
| | | | Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* Added automatic inference and integration of FFs driving T pin into IOLOGICMaciej Kurc2021-09-171-16/+171
| | | | Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* Added handling of the case when tri-state control net bypasses SIOLOGIC belMaciej Kurc2021-09-171-2/+81
| | | | Signed-off-by: Maciej Kurc <mkurc@antmicro.com>
* nexus: Basic packer and FASM support for I/ODDRgatecat2021-07-281-0/+87
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Fixing old emails and names in copyrightsgatecat2021-06-121-1/+1
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Using hashlib in archesgatecat2021-06-021-32/+31
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Use hashlib for core netlist structuresgatecat2021-06-021-40/+40
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* nexus: Use new cluster APIgatecat2021-05-061-8/+12
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* nexus: Support for hard DPHYgatecat2021-03-081-1/+29
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Replace DelayInfo with DelayPair/DelayQuadgatecat2021-02-191-3/+6
| | | | | | | | | | | | | | | | | This replaces the arch-specific DelayInfo structure with new DelayPair (min/max only) and DelayQuad (min/max for both rise and fall) structures that form part of common code. This further reduces the amount of arch-specific code; and also provides useful data structures for timing analysis which will need to delay with pairs/quads of delays as it is improved. While there may be a small performance cost to arches that didn't separate the rise/fall cases (arches that aren't currently separating the min/max cases just need to be fixed...) in DelayInfo, my expectation is that inlining will mean this doesn't make much difference. Signed-off-by: gatecat <gatecat@ds0.me>
* Mark IdString and IdStringList single argument constructors explicit.Keith Rothman2021-02-041-1/+1
| | | | | | | | | Single argument constructors will silently convert to that type. This is typically not the right thing to do. For example, the nexus and ice40 arch_pybindings.h files were incorrectly parsing bel name strings, etc. Signed-off-by: Keith Rothman <537074+litghost@users.noreply.github.com>
* nexus: Implement IdStringList for all arch object namesD. Shah2021-02-021-1/+1
| | | | Signed-off-by: D. Shah <dave@ds0.me>
* cleanup: Fix compiler warningsD. Shah2021-01-281-2/+1
| | | | Signed-off-by: D. Shah <dave@ds0.me>
* nexus: Add MULTADDSUB9X9WIDE supportDavid Shah2020-12-081-28/+55
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add support for initialised LRAMDavid Shah2020-12-071-2/+5
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add basic LRAM support (no init)David Shah2020-12-021-2/+55
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add PLL supportDavid Shah2020-12-021-2/+74
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add support for deriving timing constraints in packerDavid Shah2020-12-021-0/+96
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Preliminary integration of DSP timing dataDavid Shah2020-11-301-4/+58
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Clocked MULTADDSUB36X36 fixDavid Shah2020-11-301-0/+2
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add MULTADDSUB36X36David Shah2020-11-301-4/+21
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add MULTADDSUB18X18 supportDavid Shah2020-11-301-17/+65
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: ACC54 definitionsDavid Shah2020-11-301-0/+32
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add DSP pre-adder supportDavid Shah2020-11-301-2/+17
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Fix DSP signed portsDavid Shah2020-11-301-2/+2
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Refactor DSP macro splitting to make it more genericDavid Shah2020-11-301-29/+110
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add support for clocked MULT9X9sDavid Shah2020-11-301-0/+36
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Support for unclocked 9x9 multipliesDavid Shah2020-11-301-13/+69
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: More DSP primitive configDavid Shah2020-11-301-0/+16
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Miscellaneous DSP infrastructureDavid Shah2020-11-301-0/+48
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add some infrastructure for DSP packingDavid Shah2020-11-301-5/+135
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add EBR timing analysisDavid Shah2020-11-301-0/+19
| | | | Signed-off-by: David Shah <dave@ds0.me>
* nexus: Add LUTRAM and WIDEFN9 timing supportDavid Shah2020-11-301-1/+10
| | | | Signed-off-by: David Shah <dave@ds0.me>