-
What is the current state/timeline?
-
GCC for FPGAs
- Correct build system
- Follows the Filesystem Hierarchy Standard (FHS)
- Allows setting
prefix
(/usr/local
for users,/usr
for distributions) - Allows setting
libdir
(lib
,lib32
orlib64
, distribution dependent) - Allows setting
libexecdir
(if used)
- Allows setting
- Honor
CFLAGS
,CXXFLAGS
,LDFLAGS
and all other standard environment variables- Could be done via a build system switch, but optimally it would check if the variables are set and if so it wouldn't overwrite
- Eg. no adding
-O3
toCFLAGS
- Reproducibility
- The build system should not connect to the internet
- If that you feel this is really needed, have a build system flag to disable it
- Sources are fetched before the build and the checksums are validated, this way we should be able to reproduce builds at a binary level
- The build system should not connect to the internet
- Support
PIE
- No static libraries (at least not as a requirement)
- Dynamic libraries should be used
- Ship
pkgconfig
files for libraries - Dynamic libraries should have a SO version to keep track of ABI changes
- semver is preferred but not a requirement
- No workarounds to find dependencies
- This is system specific and hard to get right without having a massive CI to track every change in the different distributions
- Unfortunately this is exactly what happens in CMake, which seems to be the current preferred build system
- Eg. use
pkgconfig
- This is system specific and hard to get right without having a massive CI to track every change in the different distributions
- Don't use SIMD instructions directly in the binary
- If you want to use SIMD instruction they should be resolved at runtime, see VOLK
- If you really need them and resolving at runtime is not doable, provide build system switches (and honor
CFLAGS
)
- Follows the Filesystem Hierarchy Standard (FHS)
- Stability
- Have a good CI
- Be careful when merging
- Fix the correct upstream instead of adding temporary (or not so temporary) hacks
- Releases
- It seems like we are not there yet?
- What is the ETA?
- If the software is not ready to be used in production it should be advertised (put a disclaimer)
- Consider having 1~2 releases/year
- Still motivates users to use
master
while users can safely use it in production- Major bug fixes would be backported by packagers, or alternatively we could provide a minor release update
- Still motivates users to use
- It seems like we are not there yet?
- Correct build system
-
Keep track of all SymbiFlow components
- arch-defs
- prjtrellis
- prjxray
- yosis-symbiflow
- (what actually is SymbiFlow)
Created
April 14, 2020 17:30
-
-
Save FFY00/227ace2beccd5a6e4bbea69af31c8738 to your computer and use it in GitHub Desktop.
SymbiFlow meeting #1
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment