Skip to content

fusesoc and ghdl fail to build when logical_name is used #707

Open
@stdefeber

Description

I was making a core file for FuseSoc icm with ghdl for the neorv32.
Since the neorv32 makes use of the library called "neorv32" the core file required a "logical_name: neorv32".
As experiment I placed my test-bench in work cause the neorv32 will be used in a larger design.

ghdl comes back with:

ghdl:error: cannot find entity or configuration tb_neorv32

Hereby a recreated bash script from the FuseSoc build flow:

mkdir -p neorv32
mkdir -p work
ghdl -i --std=08 -P./neorv32 -P./work --work=neorv32 --workdir=./neorv32 ../rtl/core/neorv32_package.vhd ../rtl/core/neorv32_cpu_cp_crypto.vhd ../rtl/core/neorv32_xip.vhd ../rtl/core/neorv32_wdt.vhd ../rtl/core/neorv32_bootloader_image.vhd ../rtl/core/neorv32_twi.vhd ../rtl/core/neorv32_xbus.vhd ../rtl/core/neorv32_dmem.vhd ../rtl/core/neorv32_cpu_pmp.vhd ../rtl/core/neorv32_cpu_lsu.vhd ../rtl/core/neorv32_gpio.vhd ../rtl/core/neorv32_cpu_cp_fpu.vhd ../rtl/core/neorv32_cfs.vhd ../rtl/core/neorv32_slink.vhd ../rtl/core/neorv32_cpu_cp_cfu.vhd ../rtl/core/neorv32_gptmr.vhd ../rtl/core/neorv32_xirq.vhd ../rtl/core/neorv32_cpu_cp_cond.vhd ../rtl/core/neorv32_boot_rom.vhd ../rtl/core/neorv32_fifo.vhd ../rtl/core/neorv32_onewire.vhd ../rtl/core/neorv32_pwm.vhd ../rtl/core/neorv32_sysinfo.vhd ../rtl/core/neorv32_cpu_control.vhd ../rtl/core/neorv32_cpu_cp_muldiv.vhd ../rtl/core/neorv32_cpu_regfile.vhd ../rtl/core/neorv32_application_image.vhd ../rtl/core/neorv32_spi.vhd ../rtl/core/neorv32_trng.vhd ../rtl/core/neorv32_sdi.vhd ../rtl/core/neorv32_sys.vhd ../rtl/core/neorv32_mtime.vhd ../rtl/core/neorv32_cpu_decompressor.vhd ../rtl/core/neorv32_cache.vhd ../rtl/core/neorv32_uart.vhd ../rtl/core/neorv32_clockgate.vhd ../rtl/core/neorv32_cpu.vhd ../rtl/core/neorv32_debug_dtm.vhd ../rtl/core/neorv32_cpu_cp_bitmanip.vhd ../rtl/core/neorv32_cpu_cp_shifter.vhd ../rtl/core/neorv32_crc.vhd ../rtl/core/neorv32_imem.vhd ../rtl/core/neorv32_neoled.vhd ../rtl/core/neorv32_dma.vhd ../rtl/core/neorv32_debug_dm.vhd ../rtl/core/neorv32_cpu_alu.vhd ../rtl/core/neorv32_bus.vhd ../rtl/core/neorv32_top.vhd
ghdl -i --std=08 -P./neorv32 -P./work --work=work --workdir=./work ../sim/tb_neorv32.vhd
ghdl -m --std=08 -P./neorv32 -P./work  tb_neorv32

After some experiments I found that the last step was missing the "workdir" switch.

So the the last step should be:

ghdl -m --std=08 -P./neorv32 -P./work --workdir=./work tb_neorv32

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions