aboutsummaryrefslogtreecommitdiffstats
Commit message (Collapse)AuthorAgeFilesLines
...
* | Merge pull request #1085 from yrabbit/gw1nr-9c-pllmyrtle2023-01-277-104/+125
|\ \ | | | | | | gowin: Add PLL support for the GW1NR-9C chip
| * | gowin: Add PLL support for the GW1NR-9C chipYRabbit2023-01-267-104/+125
|/ / | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | This chip is used in the Tangnano9k board. * all parameters of the rPLL primitive are supported; * all PLL outputs are treated as clock sources and optimized routing is applied to them; * primitive rPLL on different chips has a completely different structure: for example in GW1N-1 it takes two cells, and in GW1NR-9C as many as four, despite this unification was carried out and different chips are processed by the same functions, but this led to the fact that you can not use the PLL chip GW1N-1 with the old apicula bases - will issue a warning and refuse to encode primitive. In other cases compatibility is supported. * Cosmetic change: the usage report shows the rPLL names without any service bels. * I use ctx->idf() on occasion, it's not a total redesign. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* / clangformatgatecat2023-01-255-68/+47
|/ | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Merge pull request #1081 from danc86/eigen-cmake-imported-targetmyrtle2023-01-241-2/+1
|\ | | | | use eigen as an IMPORTED target in CMake
| * use eigen as an IMPORTED target in CMakeDan Callaghan2023-01-241-2/+1
|/ | | | | | | | | | Eigen considers the EIGEN3_INCLUDE_DIRS and EIGEN3_DEFINITIONS variables to be deprecated and they will no longer be exported in the next release after 3.4.0: https://gitlab.com/libeigen/eigen/-/commit/f2984cd0778dd0a1d7e74216d826eaff2bc6bfab Use the IMPORTED target instead, which seems to be the preferred way of consuming third-party CMake libraries.
* Merge pull request #1080 from YosysHQ/gatecat/missing-includesmyrtle2023-01-239-3/+13
|\ | | | | Add missing <set> includes
| * Add missing <set> includesgatecat2023-01-209-3/+13
|/ | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Merge pull request #1077 from yrabbit/gw1nsr-4c_0myrtle2023-01-197-38/+209
|\ | | | | gowin: add a PLL primitive for the GW1NS-4 series
| * gowin: improve error messageYRabbit2023-01-191-1/+2
| | | | | | | | Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
| * gowin: to use the FB network detection functionYRabbit2023-01-191-0/+6
| | | | | | | | | | | | | | The chip used in tangnano4k does not have such pins, but we call the function anyway in the expectation of other chips. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
| * gowin: add a PLL primitive for the GW1NS-4 seriesYRabbit2023-01-187-38/+202
| | | | | | | | | | | | | | | | | | | | * both instances of the new PLLVR type are supported; * primitive placement is optimized for the use of dedicated PLL clock pins; * all 4 outputs of each primitive can use the clock nets (only 5 lines in total at the same time so far). Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* | Merge pull request #1078 from YosysHQ/gatecat/route-delay-quadmyrtle2023-01-183-1/+49
|\ \ | |/ |/| context: Add getNetinfoRouteDelayQuad
| * context: Add getNetinfoRouteDelayQuadgatecat2023-01-183-1/+49
|/ | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Merge pull request #1076 from adamgreig/ecp5-dsp-remapmyrtle2023-01-044-1/+281
|\ | | | | ECP5: Add DSP signal remapping
| * Add remapping of DSP clk/ce/rst signals in a block.Adam Greig2023-01-044-0/+280
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | Each DSP block contains two slices, and each slice contains multiple MULT18X18D and ALU54B units. Each unit configures each register to use any of CLK0/1/2/3, CE0/1/2/3, and RST0/1/2/3 ports, and the ports are connected per unit (so for example, two MULTs in the same block could connect their CLK0s to different external signals). However, the hardware only has one actual port per block, so it's required that all CLK0 signals within a block are the same. Because the packer is in general allowed to combine two unrelated units into one block, it may end up combining units that use different signals for the same port, which would eventually have caused a router failure. This commit adds validity checks which ensure only unique signals are used per block, and adds remapping so that conflicting signals are automatically reassigned when possible and required.
| * Include ALU54B in cell types with wire location overridesAdam Greig2023-01-041-1/+1
|/
* clangformatgatecat2023-01-022-4/+8
| | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Merge pull request #1075 from YosysHQ/gatecat/ecp5-lpf-errorsmyrtle2023-01-021-9/+10
|\ | | | | ecp5: Improve error handling for missing end-"
| * ecp5: Improve error handling for missing end-"gatecat2023-01-021-9/+10
|/ | | | Signed-off-by: gatecat <gatecat@ds0.me>
* Merge pull request #1073 from yrabbit/docmyrtle2023-01-011-3/+3
|\ | | | | doc: fix the list format
| * doc: fix the list formatYRabbit2023-01-011-3/+3
|/ | | | Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* Merge pull request #1071 from yrabbit/to-floatmyrtle2022-12-305-50/+85
|\ | | | | gowin: bugfix and improved clock router
| * gowin: improve clock wire routingYRabbit2022-12-305-45/+69
| | | | | | | | | | | | | | | | | | | | | | | | | | | | The dedicated router for clock wires now understands not only the IO pins but also the rPLL outputs as clock sources. This simple router sets an optimal route, so it is now the default router. It can be disabled with the --disable-globals command line flag if desired, but this is not recommended due to possible clock skew. Still for GW1N-4C there is no good router for clock wires as there external quartz resonator is connected via PLL. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
| * gowin: correct the delay calculationYRabbit2022-12-291-5/+16
|/ | | | | | | And do a full enumeration when searching for a delay because it is not yet clear whether the orderliness of the vector is guaranteed. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* Merge pull request #1069 from yrabbit/mistypemyrtle2022-12-271-2/+1
|\ | | | | doc: fix a mistype
| * doc: fix a mistypeYRabbit2022-12-231-2/+1
|/ | | | Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* Merge pull request #1068 from YosysHQ/cleanup_and_syncmyrtle2022-12-226-30/+14
|\ | | | | Cleanup and sync
| * initialize netShareWeightMiodrag Milanovic2022-12-221-0/+1
| |
| * propagate netShareWeightMiodrag Milanovic2022-12-222-1/+6
| |
| * Remove deprecated functionsMiodrag Milanovic2022-12-224-29/+7
|/
* Merge pull request #1066 from arjenroodselaar/place_timeoutmyrtle2022-12-213-6/+26
|\ | | | | Timeout when legal placement can't be found for cell
| * Set divisor instead of absolute valueArjen Roodselaar2022-12-202-5/+10
| |
| * Allow setting cell placement timeoutArjen Roodselaar2022-12-203-13/+16
| |
| * Add --no-placer-timeout flag to override timeout during refinementArjen Roodselaar2022-12-193-5/+12
| |
| * Increase timeoutArjen Roodselaar2022-12-191-2/+4
| |
| * Timeout when legal placement can't be found for cellArjen Roodselaar2022-12-171-3/+6
| |
* | Merge pull request #1067 from yrabbit/wasmmyrtle2022-12-213-0/+12
|\ \ | | | | | | gowin: fix build for wasm
| * | gowin: fix build for wasmYRabbit2022-12-213-0/+12
|/ / | | | | | | | | | | | | | | A large number of global variables are not suitable for WASM, so completely disable the graphics part where the main array of them is used. For other architectures GUI is still possible. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* | Merge pull request #1065 from YosysHQ/gatecat/heap-chains-fixmyrtle2022-12-191-2/+2
|\ \ | |/ |/| heap: encourage more spreading of heterogenous chains
| * heap: encourage more spreading of heterogenous chainsgatecat2022-12-171-2/+2
| | | | | | | | Signed-off-by: gatecat <gatecat@ds0.me>
* | Merge pull request #1064 from YosysHQ/gatecat/ecp5-main-fixmyrtle2022-12-171-5/+4
|\ \ | | | | | | ecp5: Only write bitstream if --textcfg passed
| * | ecp5: Only write bitstream if --textcfg passedgatecat2022-12-171-5/+4
| |/ | | | | | | Signed-off-by: gatecat <gatecat@ds0.me>
* | Merge pull request #1061 from yrabbit/fix-clock-guimyrtle2022-12-141-1/+1
|\ \ | | | | | | gowin: not crush on unknown clock tap's sources
| * | gowin: not crush on unknown clock tap's sourcesYRabbit2022-12-141-1/+1
|/ / | | | | | | | | | | As preparation for possible changes to the clock wiring system. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* | Merge pull request #1060 from yrabbit/pll-inputsmyrtle2022-12-092-13/+14
|\ \ | |/ |/| gowin: BUGFIX: Correctly handle resets
| * gowin: BUGFIX: Correctly handle resetsYRabbit2022-12-092-13/+14
|/ | | | | | | | | | When a single primitive occupies several cells, care must be taken when manipulating the parameters of that primitive: when creating cells, each cell must receive a copy of all the parameters and not modify them unnecessarily. That is, if possible, it is better to make all parameter changes before dividing the primitive into cells. Signed-off-by: YRabbit <rabbit@yrabbit.cyou>
* Merge pull request #1059 from YosysHQ/gatecat/validity-errorsmyrtle2022-12-0726-34/+59
|\ | | | | Add new option for verbose validity errors, use for ice40
| * ice40: Add debugs to isBelLocationValid for SB_IOSean Anderson2022-12-071-4/+22
| | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | | When there is a constraint conflict while placing IOs, the user gets an error message such as ERROR: Bel 'X0/Y27/io1' of type 'SB_IO' is not valid for cell 'my_pin' of type 'SB_IO' While this identifies the problematic cell, it does not explain why there is a problem. Add some verbose messages to allow users to determine where the problem is. This can result in something like Info: Net '$PACKER_VCC_NET' for cell 'my_pin' conflicts with net 'ce' for 'ce_pin' which provides something actionable. Signed-off-by: Sean Anderson <seanga2@gmail.com>
| * api: add explain_invalid option to isBelLocationValidgatecat2022-12-0726-30/+37
| | | | | | | | Signed-off-by: gatecat <gatecat@ds0.me>
* | Merge pull request #1058 from YosysHQ/gatecat/bounds-refactormyrtle2022-12-0727-63/+57
|\| | | | | refactor: rename ArcBounds -> BoundingBox and use this in HeAP