Welcome, Guest
You have to register before you can post on our site.



Search Forums

(Advanced Search)

Forum Statistics
» Members: 678
» Latest member: mituakter1
» Forum threads: 172
» Forum posts: 591

Full Statistics

Latest Threads
PULPino or PULPismo ? for...
Forum: PULP General questions
Last Post: sit-vlsi
Yesterday, 11:46 AM
» Replies: 3
» Views: 58
Queries in FPU for cv32e4...
Forum: PULP General questions
Last Post: meggiman
02-25-2021, 08:05 PM
» Replies: 1
» Views: 55
Getting input from consol...
Forum: PULP General questions
Last Post: nayan
02-25-2021, 12:35 PM
» Replies: 4
» Views: 222
Interrupt Service Routine...
Forum: PULP General questions
Last Post: RiscV
02-24-2021, 09:16 AM
» Replies: 2
» Views: 153
Question about bitstream ...
Forum: PULP General questions
Last Post: zorrolee777
02-23-2021, 08:22 PM
» Replies: 4
» Views: 449
using axi from rtl and C ...
Forum: PULP General questions
Last Post: meggiman
02-23-2021, 02:20 PM
» Replies: 5
» Views: 3,347
fullduplex communication ...
Forum: PULP General questions
Last Post: chikku
02-23-2021, 07:27 AM
» Replies: 0
» Views: 57
pulp-rt-example Makefile ...
Forum: PULP General questions
Last Post: nikolas
02-18-2021, 03:39 PM
» Replies: 1
» Views: 390
how to simulate CV32E40P ...
Forum: PULP General questions
Last Post: gsaitejareddy
02-08-2021, 03:58 PM
» Replies: 2
» Views: 399
Compiling for RISCY witho...
Forum: PULP General questions
Last Post: LarsKeuninckx
01-28-2021, 09:28 AM
» Replies: 2
» Views: 473

  Help to run Hello Example
Posted by: igor.lima - 12-01-2020, 08:05 PM - Forum: PULP General questions - Replies (4)


I'm new in community, i'd like some help!

I'm trying to run the Hello example from "https://github.com/pulp-platform/pulp-rt-examples" in my Nexys Video FPGA using the bitstream of Pulpissimo.

Until now i'm just following the instructions from README.md file from "https://github.com/pulp-platform/pulpissimo".

I had download and install the Toolchain from pulp-riscv-gnu-toolchain as "Newlib", could someone confirm that it is not necessary install the "Linux" version of this toolchain?

Then i installed the Standard Pulp SDK from "https://github.com/pulp-platform/pulp-sdk/#standard-sdk-build"

I had some issues following the steps, most of them are related with missing steps, like configuring bashrc or some ambient variable, but i was able to solve all of them i believe. I miss some kind of step-by-step, from rtl to running example on FPGA, is it possible create something like that? I think it could be done as a new Thread in forum for the communty, it could help a lot.

I was able to generate the bitstream of Pulpissimo and configure it in Nexys Video FPGA using the JTAG-USB connection. When i run the specific OpenOCD from Pulp-SDK, the OpenOCD is able to identify the Pulpissimo processor in FPGA.

Then i compiled the Hello Example after adding the two weakly defined variables as suggested to configure core and peripherics frequencies. It was compiled with success, the ELF file was properly generate in the build directory.

My problem happen when i had try to use GDB with ELF file to load it to L2 memory of Pulpissimo, the connection between the GDB and OpenOCD looks fine, when i use the Load command it copy the elf file to memory it looks to work fine too, but when i use the Continue command it stops and never end the execution, but it print some kind of assembly commands like;
# j    1c0080ec <__rt_illegal_instr>

So i did the check with gcc in the ELF file to check the Assembly, as suspected it was printing the assembly that has some kind of error i believe, the first piece of assembly code is like that;

test:     file format elf32-littleriscv

Disassembly of section .vectors:

1c008000 <__irq_vector_base>:
1c008000:    0ec0006f              j    1c0080ec <__rt_illegal_instr>
1c008004:    0900006f              j    1c008094 <__rt_no_irq_handler>
1c008008:    08c0006f              j    1c008094 <__rt_no_irq_handler>
1c00800c:    0880006f              j    1c008094 <__rt_no_irq_handler>
1c008010:    0840006f              j    1c008094 <__rt_no_irq_handler>
1c008014:    0800006f              j    1c008094 <__rt_no_irq_handler>
1c008018:    07c0006f              j    1c008094 <__rt_no_irq_handler>
1c00801c:    0780006f              j    1c008094 <__rt_no_irq_handler>
1c008020:    0740006f              j    1c008094 <__rt_no_irq_handler>
1c008024:    0700006f              j    1c008094 <__rt_no_irq_handler>
1c008028:    06c0006f              j    1c008094 <__rt_no_irq_handler>
1c00802c:    0680006f              j    1c008094 <__rt_no_irq_handler>
1c008030:    0640006f              j    1c008094 <__rt_no_irq_handler>
1c008034:    0600006f              j    1c008094 <__rt_no_irq_handler>
1c008038:    05c0006f              j    1c008094 <__rt_no_irq_handler>
1c00803c:    0580006f              j    1c008094 <__rt_no_irq_handler>
1c008040:    0540006f              j    1c008094 <__rt_no_irq_handler>
1c008044:    0500006f              j    1c008094 <__rt_no_irq_handler>
1c008048:    04c0006f              j    1c008094 <__rt_no_irq_handler>
1c00804c:    0480006f              j    1c008094 <__rt_no_irq_handler>
1c008050:    0440006f              j    1c008094 <__rt_no_irq_handler>
1c008054:    0400006f              j    1c008094 <__rt_no_irq_handler>
1c008058:    03c0006f              j    1c008094 <__rt_no_irq_handler>
1c00805c:    0380006f              j    1c008094 <__rt_no_irq_handler>
1c008060:    0340006f              j    1c008094 <__rt_no_irq_handler>
1c008064:    0300006f              j    1c008094 <__rt_no_irq_handler>
1c008068:    02c0006f              j    1c008094 <__rt_no_irq_handler>
1c00806c:    0280006f              j    1c008094 <__rt_no_irq_handler>
1c008070:    0240006f              j    1c008094 <__rt_no_irq_handler>
1c008074:    0200006f              j    1c008094 <__rt_no_irq_handler>
1c008078:    01c0006f              j    1c008094 <__rt_no_irq_handler>
1c00807c:    0180006f              j    1c008094 <__rt_no_irq_handler>

1c008080 <_start>:
1c008080:    0200006f              j    1c0080a0 <_entry>
1c008084:    0680006f              j    1c0080ec <__rt_illegal_instr>

1c008090 <__rt_debug_struct_ptr>:
1c008090:    0cf4                    addi    a3,sp,604
1c008092:    1c00                    addi    s0,sp,560

1c008094 <__rt_no_irq_handler>:
1c008094:    0000006f              j    1c008094 <__rt_no_irq_handler>

1c008098 <__rt_semihosting_call>:
1c008098:    00100073              ebreak
1c00809c:    00008067              ret

Disassembly of section .text:

1c0080a0 <_entry>:
1c0080a0:    7a101073              csrw    pcmr,zero
1c0080a4:    ffff9297              auipc    t0,0xffff9
1c0080a8:    d2c28293              addi    t0,t0,-724 # 1c000dd0 <_bss_start>
1c0080ac:    ffff9317              auipc    t1,0xffff9
1c0080b0:    e0030313              addi    t1,t1,-512 # 1c000eac <__l2_priv0_end>
1c0080b4:    0002a023              sw    zero,0(t0)
1c0080b8:    0291                    addi    t0,t0,4
1c0080ba:    fe62ede3              bltu    t0,t1,1c0080b4 <_entry+0x14>
1c0080be:    ffff9117              auipc    sp,0xffff9
1c0080c2:    c0210113              addi    sp,sp,-1022 # 1c000cc0 <stack>
1c0080c6:    292000ef              jal    ra,1c008358 <__rt_init>
1c0080ca:    00000513              li    a0,0
1c0080ce:    00000593              li    a1,0
1c0080d2:    00000397              auipc    t2,0x0
1c0080d6:    26438393              addi    t2,t2,612 # 1c008336 <main>
1c0080da:    000380e7              jalr    t2
1c0080de:    842a                    mv    s0,a0
1c0080e0:    350000ef              jal    ra,1c008430 <__rt_deinit>
1c0080e4:    8522                    mv    a0,s0
1c0080e6:    330010ef              jal    ra,1c009416 <exit>

1c0080ea <_fini>:
1c0080ea:    8082                    ret

1c0080ec <__rt_illegal_instr>:
1c0080ec:    fe112e23              sw    ra,-4(sp)
1c0080f0:    fea12c23              sw    a0,-8(sp)
1c0080f4:    00000517              auipc    a0,0x0
1c0080f8:    3ba50513              addi    a0,a0,954 # 1c0084ae <__rt_handle_illegal_instr>
1c0080fc:    010000ef              jal    ra,1c00810c <__rt_call_c_function>
1c008100:    ffc12083              lw    ra,-4(sp)
1c008104:    ff812503              lw    a0,-8(sp)
1c008108:    30200073              mret

1c00810c <__rt_call_c_function>:
1c00810c:    7119                    addi    sp,sp,-128
1c00810e:    c006                    sw    ra,0(sp)
1c008110:    c20e                    sw    gp,4(sp)
1c008112:    c412                    sw    tp,8(sp)
1c008114:    c616                    sw    t0,12(sp)

What could i have done to generate some kind of illegal instruction during the compiling process? is it not wrong after all?

When i use the gdb command "disas" it print the C code properly...

If you need any more information, just ask

Any help will be very helpful

Best Regards, Igor Ruschi

Print this item

  Resource Utilization of PULPino/PULPissimo in FPGA
Posted by: Mwind - 11-20-2020, 08:06 AM - Forum: PULP General questions - Replies (4)


I am currently evaluating the use of RISC-V processors in FPGAs. Has anyone implemented a PULPino or PULPissimo on an FPGA and can you make rough statements about the resource usage?

I would appreciate any information. Thanks in advance.

Print this item

  Is there an IDE?
Posted by: nikolas - 11-18-2020, 04:04 PM - Forum: PULP General questions - Replies (2)

Hi there 

I was wondering if there is any opportunity to work with the Eclipse IDE to program and debug the PULPissimo that is running on a NEXYS 4 board?

Or is there any other IDE, that would be able to do that?

Would really like to find an easier way to work with PULPissimo than compiling, downloading and debugging from the command line.

Thank you very much for all kind of ideas.

Print this item

  Building an RTL simulation platform Error
Posted by: RiscV - 11-03-2020, 10:24 AM - Forum: PULP General questions - Replies (1)

I followed the readme file of pulpissimo  for building an RTL simulation platform. After the following steps

source setup/vsim.sh

make build

I am getting error like this

make -C ../rtl/tb/remote_bitbang all
make[2]: Entering directory '/opt/pulpissimo/rtl/tb/remote_bitbang'
cc -MT remote_bitbang.o -MMD -MP -MF ./.d/remote_bitbang.Td -std=gnu11 -fno-strict-aliasing -Wall -Wextra -Wno-missing-field-initializers -Wno-unused-function -Wno-missing-braces -O2 -g -march=native -DENABLE_LOGGING -DNDEBUG -fPIC -I./  \
    -c  remote_bitbang.c -o remote_bitbang.o
ld -shared -E --exclude-libs ALL -o librbs.so  \
    remote_bitbang.o sim_jtag.o
make[2]: Leaving directory '/opt/pulpissimo/rtl/tb/remote_bitbang'
/usr/bin/env: ‘tclsh’: No such file or directory
Makefile:37: recipe for target 'opt' failed
make[1]: *** [opt] Error 127
make[1]: Leaving directory '/opt/pulpissimo/sim'
Makefile:47: recipe for target 'build' failed
make: *** [build] Error 2

 I am using ModelSim - Intel FPGA Edition 20.3 (includes Starter Edition).  Please help me ..

Print this item

  PULPissimo FLL bypass
Posted by: Supra - 10-30-2020, 03:33 PM - Forum: PULP General questions - Replies (5)

Hello everyone,
Could someone please help me bypass the FLL logic ? I want to use an external clock for my design.
At the moment, I have removed the gf22_FLL instances and tried to connect soc_clk and per_clk directly to ref_clk.
Could anyone please share their experience of bypassing the FLL ? How did you handle the rest of the logic present in soc_clk_rst_gen.sv file ?
With this, I get error captured in the attachment. 


Attached Files Thumbnail(s)
Print this item

  Pulpissimo- errors during FPGA synthesis.
Posted by: plumerai - 09-25-2020, 04:23 PM - Forum: PULP General questions - Replies (2)

I am trying to synthesize Pulpissimo with Vivado 2019.2 for nexys A7-100. I get the following errors:

[Place 30-69] Instance i_pulpissimo/pad_frame_i/padinst_bootsel/iobuf_i/IBUF (IBUF driven by I/O terminal i_pulpissimo/pad_frame_i/padinst_bootsel/iobuf_i/IO) is unplaced after IO placer
[Place 30-68] Instance i_pulpissimo/pad_frame_i/padinst_bootsel/iobuf_i/IBUF (IBUF) is not placed
[Place 30-99] Placer failed with error: 'IO Clock Placer failed'
Please review all ERROR, CRITICAL WARNING, and WARNING messages during placement to understand the cause for failure.
[Common 17-69] Command failed: Placer could not place all instances

I didn't modify a bit after cloning the repo.

Print this item

  Adding custom instructions into RI5CY core
Posted by: plumerai - 09-25-2020, 09:04 AM - Forum: PULP General questions - Replies (4)

We are currently evaluating the RI5CY core for our project and the possibility of adding custom instructions is important for us. Some other cores (Sifive E31, Vexriscv) have simple and documented ways to do this, but I couldn't find the information about RI5CY. HWPEs are great but we may need a true custom instruction support for our needs.

Print this item

  FPGA: Printing UART on minicom possible?
Posted by: LPLA - 09-23-2020, 03:42 PM - Forum: PULP General questions - No Replies


while looking at the pulp-rt-examples I found the uart examples and I was wondering if it's possible to print the contents of the buffer to minicom using the rt_uart_write function.
I have already tested the hello example on ZedBoard and the printf works just fine with minicom.
Now I was wondering if it's possible to write the same Hello! to minicom using the rt_uart_write function.
If I run the send example I don't get any output on minicom or in RTL simulation.
Same if I put a string in the buffer instead of the loop that is used in the example.
Shouldn't it be possible to get something on minicom with this method somehow?
I also played around with the RTS and CTS signals as i didn't want to have them float, even tho it worked with the normal hello example, but it didn't help with the above method.
Does anyone have any experience with this?

Edit: I managed to make it work. It was an issue in the code of the app I tried to run.

Thank you,

Print this item

  Memset in the disassembly section
Posted by: RiscV - 09-11-2020, 12:09 PM - Forum: PULP General questions - Replies (5)

I am trying to compile a simple code which has global arrays. I have initialized all the global arrays to make sure the compiler does not generate the code to initialize them to 0. However, I am still getting these "memset" calls in the _start section of the assembly.

Disassembly of section .text:

1c000000 <_start>:
1c000000:    00001197              auipc    gp,0x1
1c000004:    18018193              addi    gp,gp,384 # 1c001180 <__global_pointer$>
1c000008:    00001517              auipc    a0,0x1
1c00000c:    95850513              addi    a0,a0,-1704 # 1c000960 <__FRAME_END__>
1c000010:    00001617              auipc    a2,0x1
1c000014:    97060613              addi    a2,a2,-1680 # 1c000980 <completed.1>
1c000018:    40a60633              sub    a2,a2,a0
1c00001c:    00000593              li    a1,0
1c000020:    1a8000ef              jal    ra,1c0001c8 <memset>
1c000024:    00000517              auipc    a0,0x0
The program is not return to start section after executing till 1C0001f8

1c0001c8 <memset>:
1c0001c8:    00f00313              li    t1,15
1c0001cc:    00050713              mv    a4,a0
1c0001d0:    02c37e63              bgeu    t1,a2,1c00020c <memset+0x44>
1c0001d4:    00f77793              andi    a5,a4,15
1c0001d8:    0a079063              bnez    a5,1c000278 <memset+0xb0>
1c0001dc:    08059263              bnez    a1,1c000260 <memset+0x98>
1c0001e0:    ff067693              andi    a3,a2,-16
1c0001e4:    00f67613              andi    a2,a2,15
1c0001e8:    00e686b3              add    a3,a3,a4
1c0001ec:    00b72023              sw    a1,0(a4)
1c0001f0:    00b72223              sw    a1,4(a4)
1c0001f4:    00b72423              sw    a1,8(a4)
1c0001f8:    00b72623              sw    a1,12(a4)
1c0001fc:    01070713              addi    a4,a4,16
1c000200:    fed766e3              bltu    a4,a3,1c0001ec <memset+0x24>
1c000204:    00061463              bnez    a2,1c00020c <memset+0x44>

What should I do to load complete hex file to my verilator model? how can I get rid of this memset? I tried with
PHP Code:
in my gcc, but not solved my issue. Currently using riscv gnu toolchain 10.1.0.

Print this item

  Error while building SDK
Posted by: Victor - 09-11-2020, 01:27 AM - Forum: PULP General questions - Replies (4)

Hello! I checked existing threads but did not find a solution for my problem. 
I've already installed simple runtime and executed expample "hello" successfully. 
While I was installing SDK, I had some problems. I just follow the steps in 
GitHub and run the "make build-pulp-sdk" and some errors just came out.

gcc 4.8.3
python 3.6.8

Following is some of the configuration in my ".bashrc". 
export PATH=$PATH:$HOME/mylib/v1.0.16-pulp-riscv-gcc-centos-7/:/tools/linux/mentor/modelsim/10.6a/modeltech/

I wrote this "source_pulp.sh" and source it once before I start building SDK.
export PULP_RISCV_GCC_TOOLCHAIN=$HOME/mylib/v1.0.16-pulp-riscv-gcc-centos-7
export CPLUS_INCLUDE_PATH=/usr/local/include/ImageMagick-6
source $PULP_HOME/pulp-runtime/configs/pulpissimo.sh
source $PULP_HOME/setup/vsim.sh
source $PULP_HOME/pulp-sdk/configs/pulpissimo.sh
source $PULP_HOME/pulp-sdk/configs/platform-rtl.sh

1. I've already installed configparser at /usr/local/lib/python3.6/site-packages.
   But "No module named configparser" shows up from time to time. Should I install 
   configparser with another method or just run several times to ignore the error?

2. I've installed ImageMagick at /usr/local/include. When I use ImageMagick-7 as
   the library, this error occurs.

      sdk:dpi-models:build: make build install
      make[2]: Entering directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/platform/dpi_models'
      make -C models build
      make[3]: Entering directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/platform/dpi_models/models'
      g++ camera/camera.cpp -o /users/student/mr109/cyyang20/pulpissimo/pulp-sdk/build/sdk/dpi-models/models/camera.so -I/usr/include/GraphicsMagick   -D__MAGICK__ -MMD -MP -O2 -g -fpic -std=c++11 -I/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/pkg/sdk/dev/install/ws/include -Werror -Wfatal-errors -DMAGICKCORE_QUANTUM_DEPTH=16 -DMAGICKCORE_HDRI_ENABLE=0 -lGraphicsMagick++ -lGraphicsMagick -O2 -g -shared -L/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/pkg/sdk/dev/install/ws/lib -Werror -Wfatal-errors
      camera/camera.cpp:82:3: error: 'PixelPacket' does not name a type
         PixelPacket *image_buffer;
      compilation terminated due to -Wfatal-errors.
      make[3]: *** [/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/build/sdk/dpi-models/models/camera.so] Error 1
      make[3]: Leaving directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/platform/dpi_models/models'
      make[2]: *** [build] Error 2
      make[2]: Leaving directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/platform/dpi_models'
      Reached EOF with exit status 2
      FATAL ERROR: the command 'build' has failed
      make[1]: *** [all] Error 255
      make[1]: Leaving directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk'
      make: *** [pulp-sdk] Error 2

   But after I choose ImageMagick-6 as the library, this error occurs.

      sdk:dpi-models:build: make build install
      make[2]: Entering directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/platform/dpi_models'
      make -C models build
      make[3]: Entering directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/platform/dpi_models/models'
      g++ camera/camera.cpp -o /users/student/mr109/cyyang20/pulpissimo/pulp-sdk/build/sdk/dpi-models/models/camera.so -I/usr/include/GraphicsMagick   -D__MAGICK__ -MMD -MP -O2 -g -fpic -std=c++11 -I/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/pkg/sdk/dev/install/ws/include -Werror -Wfatal-errors -DMAGICKCORE_QUANTUM_DEPTH=16 -DMAGICKCORE_HDRI_ENABLE=0 -lGraphicsMagick++ -lGraphicsMagick -O2 -g -shared -L/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/pkg/sdk/dev/install/ws/lib -Werror -Wfatal-errors
      In file included from /usr/include/GraphicsMagick/magick/render.h:14:0,
                     from /usr/include/GraphicsMagick/magick/draw.h:31,
                     from /usr/local/include/ImageMagick-6/magick/annotate.h:21,
                     from /usr/local/include/ImageMagick-6/magick/MagickCore.h:80,
                     from /usr/local/include/ImageMagick-6/Magick++/Include.h:45,
                     from /usr/local/include/ImageMagick-6/Magick++.h:10,
                     from camera/camera.cpp:24:
      /usr/include/GraphicsMagick/magick/type.h:87:21: error: 'MagickPassFail' does not name a type
      extern MagickExport MagickPassFail
      compilation terminated due to -Wfatal-errors.
      make[3]: *** [/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/build/sdk/dpi-models/models/camera.so] Error 1
      make[3]: Leaving directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/platform/dpi_models/models'
      make[2]: *** [build] Error 2
      make[2]: Leaving directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk/platform/dpi_models'
      Reached EOF with exit status 2
      FATAL ERROR: the command 'build' has failed
      make[1]: *** [all] Error 255
      make[1]: Leaving directory `/users/student/mr109/cyyang20/pulpissimo/pulp-sdk'
      make: *** [pulp-sdk] Error 2

I would like to know whether I installed ImageMagick correctly. If there's 
anything needed to help me deal with these problems, please let me know! 
Thanks a lot!

Print this item