Hurd has /proc/self/exe like Linux, so the same mechanism as for Linux
works here.
Because Hurd does not have a path length limit, PATH_MAX is not defined.
Technically, we'd have to allocate a buffer, check whether the returned
size is greater or equal to the buffer size (so the path was truncated),
and then retry with a larger buffer to handle excessively long paths on
Hurd, but in practice there is no NixOS on Hurd and the path is only used
to find Himbächel chipdb files in the absence of an explicit setting, so we
should be safe in assuming the path name will be less than 4kB.
Many thanks to Lofty for doing most of the research here.
Fixes: https://github.com/YosysHQ/nextpnr/issues/1797
identify_related_domains() stored D(c2) - D(c1) for the pair (c1, c2),
where D is the delay from the common driver to each clock. The pair is
looked up as (launch, capture) and the value is added to the path delay,
so a late launch clock made paths shorter and a late capture clock made
them longer. This is the opposite of what happens physically: hold
violations were reported on paths with extra hold margin and missed on
the ones at risk, and setup slack and cross-domain Fmax were mirrored
the same way.
Store D(c1) - D(c2) instead, which fixes all users of clock_delays
(setup/hold slack, hold violations, cross-domain Fmax and the clk-to-clk
report segment).
POSIX allows any `int` value to be returned but specifies that only
the low 8 bits are available in some contexts:
https://pubs.opengroup.org/onlinepubs/9699919799/functions/_exit.html
For reasons that aren't entirely clear, WASI requires the value to be
in range [0;126), and this is enforced with an assertion at runtime
level in Wasmtime. This should probably be fixed in Wasmtime but until
it is done there doesn't seem to be any harm in returning `125` instead
of `-1`. This also removes any discrepancy due to truncation.
Define open_(o|i)fstream_and_log_error in log.h to:
- quote 'filename'
- add error cause to easier troubleshoot
- use existing consistent string style
- easily allows OS specific message
Introduce it when file are opened and add it where error message
was missing.
* gatemate: add alternate clock routes
* use additional pins
* Fix clock router and timings
* Fix DDR nets
* Test passtrough concept
* remove not used variable
* wip
* handle pip masks
* Cleanup
* create CPE_CPLINES cells and set properties on them
* Fix pip masking
* rough code to break cplines into subnets
* add ports to cell
* mux bridges need cell bel pins too
* fix multiplier output register packing
* remove empty if
* Fix ODDR
* Add options to disable some pips
* Use resources info
* mask field to resource field
* produce valid netlist with propagation netlist at least
* adapt reassign_cplines for internal resource pips
* Handle block and resources
* fix formatting
* It is required to set all mandatory properties now
* arch API for resources
* current progress
* Add option to skip bridges
* perform per-wire resource congestion costing
* Added no-cpe-cp option
* resource bugfix
* comment out spammy debug message
* Fix routing conflicts issues
* allow only some pass trough for clock router
* handle inversion bits for pass signals
* verify inversion before/after assigning bridges
* we care only if there is net
* Revert "we care only if there is net"
This reverts commit 3da2769e31.
* Revert "verify inversion before/after assigning bridges"
This reverts commit 8613ee17c8.
* chipdb version bump
* clangformat
* cleanup
* cleanup
* Initial conversion to GroupId
* Keep group info in pip extra
* Cleanup headers
* Initialize resource efficiently
* Addressing review comments
* improve resource docs
* Make CP lines not use as clocks as default
---------
Co-authored-by: Lofty <[email protected]>
prjunnamed does not emit a net alias for toplevel ports. This works
fine for constraining IOs but breaks clock constraints. This commit
expands clock constraint application code to look up net aliases first,
ports second.
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
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.