forked from YosysHQ/nextpnr
-
Notifications
You must be signed in to change notification settings - Fork 2
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
[pull] master from YosysHQ:master #372
Open
pull
wants to merge
924
commits into
SymbiFlow:master
Choose a base branch
from
YosysHQ:master
base: master
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Signed-off-by: gatecat <[email protected]>
Signed-off-by: gatecat <[email protected]>
Signed-off-by: gatecat <[email protected]>
Signed-off-by: gatecat <[email protected]>
Signed-off-by: gatecat <[email protected]>
Signed-off-by: gatecat <[email protected]>
Signed-off-by: gatecat <[email protected]>
Signed-off-by: gatecat <[email protected]>
Fixed incorrect use of attributes instead of parameters. Signed-off-by: YRabbit <[email protected]>
* Add GroupId related calls to Himbaechel API * Example uarch using new API features * Update drawGroup to propagate only GroupId
* Adds attributes to the hierarchical cells * python: add binding for hierarchical cells attributes * frontend/base: import hierarchical cells attributes
Adds additional restrictions on the first PIP after the clock source - only connections to SPINEs are allowed. This allowed to correct the behaviour of DQCEs since the latter can only disable/enable SPINEs. Signed-off-by: YRabbit <[email protected]>
* Gowin. Add the ability to place registers in IOB IO blocks have registers: for input, for output and for OutputEnable signal - IREG, OREG and TREG respectively. Each of the registers has one implicit non-switched wire, which one depends on the type of register (IREG has a Q wire, OREG has a D wire). Although the registers can be activated independently of each other they share the CLK, ClockEnable and LocalSetReset wires and this places restrictions on the possible combinations of register types in a single IO. Register placement in IO blocks is enabled by specifying the command line keys --vopt ireg_in_iob, --vopt oreg_in_iob, or --vopt ioreg_in_iob. It should be noted that specifying these keys leads to attempts to place registers in IO blocks, but no errors are generated in case of failure. Signed-off-by: YRabbit <[email protected]> * Gowin. Registers in IO Check for unconnected ports. Signed-off-by: YRabbit <[email protected]> * Gowin. IO regs. Verbose warnings. If an attempt to place an FF in an IO block fails, issue a warning detailing the reason for the failure, whether it is a register type conflict, a network requirement violation, or a control signal conflict. Signed-off-by: YRabbit <[email protected]> * Gowin. BUGFIX. Fix FFs compatibility. Flipflops with a fixed ClockEnable input cannot coexist with flipflops with a variable one. Signed-off-by: YRabbit <[email protected]> * Gowin. FFs in IO. Changing diagnostic messages. Placement modes are still specified by the command line keys ireg_in_iob/oreg_in_iob/ioreg_in_iob, but also introduces more granular control in the form of attributes at I/O ports: (* NOIOBFF *) - registers are never placed in this IO, (* IOBFF *) - registers must be placed in this IO, in case of failure a warning (not an error) with the reason for nonplacement is issued, _attribute_absence_ - no diagnostics will be issued: managed to place - good, failed - not bad either. Signed-off-by: YRabbit <[email protected]> * Gowin. Registers in IO. Change the logic for handling command line keys and attributes - attributes allow routines to be placed in IO regardless of global mode. Signed-off-by: YRabbit <[email protected]> * Gowin. Registers in IO. Fix style. Signed-off-by: YRabbit <[email protected]> --------- Signed-off-by: YRabbit <[email protected]>
…tile (#1413) Signed-off-by: gatecat <[email protected]>
* Gowin: add header includes required on libstdc++. * kernel: fix incorrect printf-style format. * himbaechel: add missing `override` qualifiers. * Gowin: remove unnecessary `std::move`. These calls inhibit RVO, a stronger optimization than moving an object.
Erroneously created wires for specific IOs on the underside of some chips. Fixes #1417 Also cosmetic edits. Signed-off-by: YRabbit <[email protected]>
E.g. selecting only Gowin instead of the default shrinks the resulting binary by ~30%.
This is explicitly recommended by the FindPython module documentation and is required to avoid failed builds on some systems. See: https://cmake.org/cmake/help/latest/module/FindPython.html
Normalize keywords to: if (...) elseif (...) else() endif() foreach (...) endforeach() other(...) Normalize whitespace to 4 spaces.
The two main changes, done together in this commit, are: * Eliminating most instances of `aux_source_directory()`, replacing them with explicit file listings; and * Moving these file listings into respective subdirectories by representing respective nextpnr components as interface libraries. In addition, the GUI CMake script tree was simplified since it had a lot of unused/redundant code. The `aux_source_directory()` command is not recommended for use by CMake itself because it misses dependency changes when adding/removing files, and consequently causes build failures requiring a clean rebuild. This commit does not touch anything related to architectures/families, which are very complex and redundant all on their own.
* Fix build using ubuntu-latest * Update to latest icestorm
This accounts for the use of either the system or the vendored pybind11. Fixes #1428.
This fully preserves existing functionality, although the `embed` mode is untested and seems broken.
While it served a purpose (granting the ability to build `.bba` files separately from the rest of nextpnr), it made things excessively convoluted, especially around paths. This commit removes the ability to pre-generate chip databases. As far as I know, I was the primary user of that feature. It can be added back if there is demand for it. In exchange the per-family `CMakeLists.txt` files are now much easier to understand.
Primarily, this commit makes both of them use the `BBAsm` functions to build and compile `.bba` files. In addition, Himbaechel targets are now aligned with the rest in how they are configured: instead of having all uarches enabled with all of the devices disabled (the opposite of the rest of nextpnr), uarches must be enabled explicitly but they come with all devices enabled (except for Xilinx, which does not have a list of devices).
This removes the atomic rename for bbasm outputs because it embeds the resulting paths into the `.cc` files in embed mode. In any case the write should be fast enough to not be a big risk for interrupted builds. This was tested with Clang 19 only (gcc hasn't had a release that supports `#embed` yet).
Two user-visible changes were made: * `-DUSE_RUST` is replaced with `-DBUILD_RUST`, by analogy with `-DBUILD_PYTHON` * `-DCOVERAGE` was removed as it doesn't work with either modern GCC or Clang
This is added primarily for YoWASP.
The impetus for this commit is the fact that it causes rare but build-breaking race conditions when used with `make -jN` with `N > 1`. These race conditions are difficult to track down or fix because of the very rudmentary debugging tools provided by `make` and opaque semantics of CMake's Makefile generator. They break the build by running two `.bba` generation processes, then one of them renaming the `.bba.new` file once it's done, leaving the other one to fail. After reflection (as the author of this code path) and discussion with community members who use it, I've concluded that this isn't the right approach. 1. In practice, on targets where `-DSERIALIZE_CHIPDBS=` matters, you also care about other build steps, like linking nextpnr, which are not serializable this way. So you use a workaround anyway, like `make`ing individual targets instead. 2. The way to serialize the build with Make is the `-j1` option. Trying to work around `-jN` to make it work like `-j1` is inherently error prone. While there is some utility in not serializing C++ compilation this utility could be more easily achieved by providing a single target that builds all chipdbs, running `make <chipdb-target> -j1`, then running `make -jN` for the rest of the build.
This is useful for certain cross-compilation workloads, and to cache rarely changing build products. To use this functionality, build e.g. as follows: cmake . -B build-export -DEXPORT_BBA_FILES=../bba-files -DARCH=all cmake --build build-export -t nextpnr-all-bba cmake . -B build-import -DIMPORT_BBA_FILES=../bba-files -DARCH=all cmake --build build-import
In-tree builds pollute the source directory and make version control more difficult to use effectively.
Under certain conditions (e.g., building on Fedora 42 using gcc-15.0.1), compilation fails with the following error: "error: ‘uint8_t’ does not name a type" Explicitly include <cstdint> to prevent that situation. Signed-off-by: Gabriel Somlo <[email protected]>
Signed-off-by: gatecat <[email protected]>
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
See Commits and Changes for more details.
Created by pull[bot]
Can you help keep this open source service alive? 💖 Please sponsor : )