GHDL (gcc/llvm): the executable is relinked for every test
Los mantenedores suelen responder en 1 día
Nadie ha tomado este issue todavía.
Evaluación
- Dificultad
- 5/5
- Tiempo estimado
- Más de una semana
- Aptitud para principiantes
- 35/100
- Tipo de issue
- Nueva funcionalidad
- Claridad
- Bastante claro
- Estado de actividad
- Activo
- Área
- testing
Línea de trabajo
Read the GHDL backend code that invokes ghdl --elab-run and compare it with the linked fork commit. Trace how elaboration flags, simulation arguments, configurations, and coverage settings are passed for gcc and llvm backends. Done means executable reuse works for matching elaborations, while the listed exclusions and failure behavior are covered by tests.
Escrito por el modelo de indexación a partir del texto del issue.
Descripción
With the gcc and llvm backends, GHDL writes an executable at elaboration. VUnit runs every test with ghdl --elab-run, so that executable is linked again for each test, although it only depends on the design and on the elaboration flags (the generics and the test to run are passed to it when it starts).
I looked through the repository and issue history to check whether this is intended, and found nothing saying so (--elab-run has been the only GHDL command since GHDL support was added).
For small test benches with many tests or many configurations, the linking may take longer than the simulations themselves. Linking the executable once per run and starting it directly for every test that elaborates the same design with the same elaboration flags would significantly increase performance in such cases.
I have implemented this on a branch of my fork: https://github.com/VUnit/vunit/commit/6983b0af73c52b29b3b44fcf83d3958f4013ce73
I'm not familiar enough with the codebase to be comfortable submitting it as a pull request, as it introduces some behavior changes.
The idea is:
- The executable is linked with
ghdl -einto<output path>/executables/<hash of the elaboration arguments>/<entity>-<architecture>by the first test that needs it. The other tests of the same design wait for it and then run it with their own simulation arguments (-ggenerics,ghdl.sim_flags, wave file,--no-runfor--elaborate). - Tests with different
ghdl.elab_flags, a different VHDL configuration or different coverage settings get their own executable. - If linking fails, the first test shows the linker output, and the other tests of that design fail without linking again.
This does not apply to the mcode and llvm-jit backends, --elaborate with ghdl.elab_e, and coverage with the llvm backend, where the coverage output file is an elaboration argument.
Side effects/Behavior changes in my implementation:
- The executable is no longer in the output path of each test (
<test output>/ghdl/<entity>-<architecture>). ghdl.elab_flagsare passed toghdl -eandghdl.sim_flagsto the executable, instead of both toghdl --elab-run.- Directories under
<output path>/executablesfrom earlier runs with other flags are not removed.
- Lenguaje dominante
- VHDL
- Estrellas
- 850
- Forks
- 305
- Merge medio
- 2 d 10 h
- PR fusionados (30 d)
- 7
Preparar el entorno
- Sin Dockerfile ni archivo de Docker Compose
- Sin plantilla de pull request
- Leer la guía de contribución
Primeros pasos
- Lee el issue completo y luego la guía de contribución del proyecto.
- Comenta en el issue que vas a ocuparte — evita que dos personas hagan lo mismo.
- Haz un fork del repositorio y trabaja en una rama.
- Abre un pull request que haga referencia al número del issue.
Más de VUnit/vunit
-
KeyError in test scheduler when using TestBench.scan_tests_from_file()Posiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 82/100
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 65/100
Los mantenedores suelen responder en 1 día
-
GHDL: generics leak between configurations when `ghdl.sim_flags` is setPosiblemente ocupada Un pull request vinculado a esta issue está abierto o ya se fusionó. Abierto
Dificultad 2/5 1-3 horas Aptitud para principiantes 78/100
VUnit/vunit#1223 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
AXI slave VCs have identical stalling behaviorPosiblemente ocupada @Lay007 la tomó hace 25 días. Abierto
Dificultad 4/5 3-5 días Aptitud para principiantes 35/100
VUnit/vunit#1219 · 2 comentarios ·
Los mantenedores suelen responder en 1 día
-
Queue Copy() behaving undefined.Abierto
Dificultad 4/5 1-2 días Aptitud para principiantes 52/100
Los mantenedores suelen responder en 1 día
Todos los issues de VUnit/vunit
Issues similares
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
Los mantenedores suelen responder en 1 día
-
ChaosEngine: backup-remote doctor row passes while consumer mode hides bot memory from gitPosiblemente ocupada @MohabMohie la tomó hoy. Abiertoagentic
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
ShaftHQ/SHAFT_ENGINE#7263 ·
Los mantenedores suelen responder en 1 día
-
bug
Dificultad 2/5 1-3 horas Aptitud para principiantes 77/100
PhyberApex/slds-json-schema-renderer#363 ·
Los mantenedores suelen responder en 1 día
-
Dificultad 2/5 1-3 horas Aptitud para principiantes 70/100
daohoangson/flutter_widget_from_html#1657 ·
Los mantenedores suelen responder en 3 días
-
area: tests bug perceived difficulty: 2
Dificultad 2/5 1-3 horas Aptitud para principiantes 76/100
Nitjsefnie-Harness-Commons/daedalus#1676 ·
Los mantenedores suelen responder en 1 día