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

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 511
» Latest member: mmrnkbqfexgs
» Forum threads: 296
» Forum posts: 878

Full Statistics

Latest Threads
How to get more detailed ...
Forum: PULP General questions
Last Post: kgf
8 hours ago
» Replies: 6
» Views: 2,595
Which SDK to be used to c...
Forum: PULP General questions
Last Post: Archibald
Today, 02:12 AM
» Replies: 2
» Views: 3,141
Cheshire with two cores
Forum: PULP General questions
Last Post: tomkathy
06-18-2025, 09:17 AM
» Replies: 5
» Views: 1,974
【新手必讀】Relx電子菸煙彈選購指南與保養技巧
Forum: PULP General questions
Last Post: mmrnkbqfexgs
06-18-2025, 07:51 AM
» Replies: 0
» Views: 63
Understanding HWPE integr...
Forum: PULP General questions
Last Post: sillycorn
06-05-2025, 06:45 AM
» Replies: 0
» Views: 166
missing package in pulp-s...
Forum: PULP General questions
Last Post: Renryant
06-02-2025, 07:55 AM
» Replies: 1
» Views: 510
Role of gapy, list of per...
Forum: PULP General questions
Last Post: yoss
04-25-2025, 01:41 PM
» Replies: 7
» Views: 12,345
Pulp - make build
Forum: PULP General questions
Last Post: tomkathy
04-09-2025, 07:58 AM
» Replies: 4
» Views: 2,144
Unable to compile and run...
Forum: PULP General questions
Last Post: victorgervasio
03-25-2025, 09:30 AM
» Replies: 2
» Views: 977
__builtin_pulp
Forum: PULP General questions
Last Post: yoss
02-18-2025, 04:31 PM
» Replies: 0
» Views: 538

 
  FPGA - Booting (.bit + .elf) from flash or SD card
Posted by: AhmedZaky - 02-18-2020, 07:37 AM - Forum: PULP General questions - No Replies

Hi All,

I am trying to pre-load the pulpissimo bitstream along with the application on a Genesys 2 to run the application directly without connecting it to PC. This is mainly to be done either using the SD card or SPI flash. 

Does anyone have an idea on how to merge the .bit and .elf file together to be loaded upon powering the FPGA? All the sources I found were talking about Microblaze based systems. 

Any help will be highly appreciated. 

Thanks!

Print this item

  Compiler behaves unexpectedly
Posted by: ian - 02-13-2020, 03:55 PM - Forum: PULP General questions - No Replies

Hi,
There are some problems encountered here. During the calculation of the unsign memory load behavior, it was found that the behavior of the compiler may be wrong through the analysis of the assembly.
Related C code test.c :

Code:
#include <stdio.h>

unsigned int sum_output = 0;
int main() {
   unsigned int MEM[][2] = {
   {0x1000,0x1000},
   {0x1000,0x1000},
   {0x1000,0x1000},
   {0x1000,0x1000}, };
   for (unsigned char data = 0x7F; data < 0xFF; data ++) {
       for (unsigned int i = 0; i < sizeof(MEM) / 4 / 2; i++) {
           volatile unsigned char *address = (unsigned char *)MEM[i][0];
           for (unsigned int j = 0; j < (MEM[i][1] - MEM[i][0]) / sizeof(unsigned char) + 1; j++) {
               asm volatile("nop;nop;"); asm volatile("nop;nop;");
               sum_output += address[j];
               asm volatile("nop;nop;"); asm volatile("nop;nop;");
           }
       }
    }
    return 0;
}

Compiler Version : Release Label v1.0.16-pulp-riscv-gcc
https://github.com/pulp-platform/pulp-riscv-gnu-toolchain/releases/download/v1.0.16/v1.0.16-pulp-riscv-gcc-ubuntu-16.tar.bz2

**The analysis process is as follows:
Step 1(original) :
riscv32-unknown-elf-gcc -O2 -march=rv32IMCXpulpv2 -Wa,-march=rv32IMCXpulpv2 -Wextra -Wall -Wno-unused-function -fmerge-all-constants -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections -fdiagnostics-color=always -fstack-usage -nostartfiles -fsigned-char -Wno-pointer-sign -Wl,--no-check-sections -Wl,--gc-sections -Wall -Werror -Wno-shift-negative-value -Wno-unused-but-set-variable -Wno-unused-variable -msave-restore -c test.c -o test.o
[Image: 74311607-d6199000-4daa-11ea-96af-69702d21c2c7.png]

Note : I used "unsigned char *" assigned to memory, but assembly use 'p.lb' not 'p.lbu' This instruction has a sign extension behavior, so use the instruction will cause a1 register value error, when value >= 0x80, because 0x80 will sign extension to 0xFFFF_FF80,The next operation(add/sub....) will cause an error result.
Step 2 ("unsigned char *" modify to "unsigned short *") :
riscv32-unknown-elf-gcc -O2 -march=rv32IMCXpulpv2 -Wa,-march=rv32IMCXpulpv2 -Wextra -Wall -Wno-unused-function -fmerge-all-constants -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections -fdiagnostics-color=always -fstack-usage -nostartfiles -fsigned-char -Wno-pointer-sign -Wl,--no-check-sections -Wl,--gc-sections -Wall -Werror -Wno-shift-negative-value -Wno-unused-but-set-variable -Wno-unused-variable -msave-restore -c test.c -o test.o
[Image: 74312400-9a7fc580-4dac-11ea-8e63-6b0a7272b5a3.png]

Note : Assembly behaves as expected use 'p.lhu'
Step 3 (change -march to original RISCV32) :
riscv32-unknown-elf-gcc -O2 -march=rv32IMC -Wa,-march=rv32IMC -Wextra -Wall -Wno-unused-function -fmerge-all-constants -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections -fdiagnostics-color=always -fstack-usage -nostartfiles -fsigned-char -Wno-pointer-sign -Wl,--no-check-sections -Wl,--gc-sections -Wall -Werror -Wno-shift-negative-value -Wno-unused-but-set-variable -Wno-unused-variable -msave-restore -c test.c -o test.o
[Image: 74312762-3a3d5380-4dad-11ea-81ab-e0fb35f75e4f.png]

Note : Assembly behaves as expected use 'lbu'
Conclusion :
Through the above three experiments, can find Compiler behaves unexpectedly on above programming method.

Please help clarify whether this situation is correct

2020/2/13 :

**The analysis process is as follows:
Step 4 (use Compiler dumping at various stages of processing the intermediate language tree to a file) :
riscv32-unknown-elf-gcc -O2 -march=rv32IMCXpulpv2 -Wa,-march=rv32IMCXpulpv2 -Wextra -Wall -Wno-unused-function -fmerge-all-constants -fno-exceptions -fno-unwind-tables -fno-asynchronous-unwind-tables -fdata-sections -ffunction-sections -fdiagnostics-color=always -fstack-usage -nostartfiles -fsigned-char -Wno-pointer-sign -Wl,--no-check-sections -Wl,--gc-sections -Wall -Werror -Wno-shift-negative-value -Wno-unused-but-set-variable -Wno-unused-variable -msave-restore -c test.c -o test.o -fdump-tree-all

Note : 

1. ("unsigned char *") I observed test.c.259r.combine stage, memory unsigned load operation have been replace to 'loadqi_ind_reg_reg'(define in gcc/config/riscv/riscv.md) cause subsequent assembly code conversion errors.




fork issue from : https://github.com/pulp-platform/pulp-ri.../issues/18

Print this item

  regarding GPIO
Posted by: HariniM - 01-30-2020, 09:51 AM - Forum: PULP General questions - Replies (2)

hi all,

I tried integrating GPIO in pulp environment. after integrating I was able to run testcase but I am not able to get received data.
i.e) this the the output I got after simulating:

warning: NUMERIC_STD."=": metavalue detected, returning FALSE
#    Time: 0 ps  Iteration: 0  Instance: /tb/top_i/peripherals_i/apb_uart_i/UART_RXFF
# ** Warning: NUMERIC_STD."=": metavalue detected, returning FALSE
#    Time: 0 ps  Iteration: 0  Instance: /tb/top_i/peripherals_i/apb_uart_i/UART_TXFF
# Using MEMLOAD method: PRELOAD
# Using      ri5cy core
# [SPI] Enabling QPI mode
# [adv_dbg_if] AXI4 WRITE         32 burst @1a107008 for           4 bytes.
# Preloading memory
# Preloading instruction memory from slm_files/l2_stim.slm
# Preloading data memory from slm_files/tcdm_bank0.slm
# [TRACER] Output filename is: trace_core_00_0.log
# RX string: Successfully enabled func 2 on PIN_MSPI_CSN1                                                                                                                                               # RX string: Successfully set out dir on PIN_MSPI_CSN2                                                 # RX string: Done!!! 


Can anyone please help me to  know why this occurs and let me know what mistake I have done.
thanks and regards,
mahalakshmi

Print this item

  GCC Compiler output
Posted by: HariniM - 01-14-2020, 11:29 AM - Forum: PULP General questions - No Replies

Can anyone help me to find the output file(executable binary file)/folder of the C compiler when we try to execute the testcase files (testUART.c , testI2C.c, testGPIO.c).

Print this item

  Monitoring Memory Request
Posted by: masoud - 01-08-2020, 09:02 PM - Forum: PULP General questions - No Replies

Hi,


I need to monitor and the connectivity and signal transitions from the processor to the TCDM when there is a memory request, to understand the timing and how communication works.

On this page :
https://github.com/pulp-platform/bigpulp


For hardware debugging, it asks to copy the generated .slm files. I have no .slm files nor the folder " build/system-bigpulp*/ in after installing the pulp SDK and running OpenMP examples.

https://github.com/pulp-platform/hero-sd.../README.md

I would be thankful to get some help.
Thanks

Print this item

  Problems with the bootrom
Posted by: Jakob - 01-07-2020, 03:07 PM - Forum: PULP General questions - No Replies

Hello, I did some changes to the Ariane core (mainly in the frontend) and tried to boot the provided Linux version again. Unfortunately, the bootrom does not work anymore, such that I don't get the first 'Hello World!' output.

But if I build the bootrom (with the provided makefile) and load the resulting bootrom.elf in gdb, then everything works just fine and in the simulation it also looks quite good. Without the changes to the Ariane core Linux boots as well.

Any idea why this happens? I currently don't have any idea where to begin searching for the problem.

I made significant changes to frontend.sv, instr_queue.sv and instr_scan.sv and minor changes to branch_unit.sv and controller.sv. Neither of these changes should affect the fetching of the first instruction.

Thank you very much!

Print this item

  Problem in building Pulp-SDK("make all" error)
Posted by: ziang87 - 12-28-2019, 06:58 AM - Forum: PULP General questions - Replies (3)

Hello,

I'm going to create the pulp platform.When I followed the instructions to building the SDK, an error occurred.I found on the forums that some people had similar problems, but their solutions didn't solve mine.
I started by installing the new Ubuntu 16.04, in the sequence of steps:

1.root@cp1-VirtualBox:/home/cp1# mkdir riscv
2.root@cp1-VirtualBox:/home/cp1/riscv# git clone https://github.com/pulp-platform/pulp
3.Connecting to GitHub with SSH successfully
4.sudo apt install git python3-pip python-pip gawk texinfo libgmp-dev libmpfr-dev libmpc-dev swig3.0 libjpeg-dev lsb-core doxygen python-sphinx sox graphicsmagick-libmagick-dev-compat libsdl2-dev libswitch-perl libftdi1-dev cmake scons libsndfile1-dev
5.sudo pip3 install artifactory twisted prettytable sqlalchemy pyelftools openpyxl xlsxwriter pyyaml numpy configparser pyvcd
6.sudo pip2 install configparser
root@cp1-VirtualBox:/home/cp1# pip --versionpip 19.3.1 from /usr/local/lib/python3.5/dist-packages/pip (python 3.5)
root@cp1-VirtualBox:/home/cp1# python3 --versionPython 3.5.2
7.root@cp1-VirtualBox:/home/cp1/riscv# git clone --recursive https://github.com/pulp-platform/pulp-ri...-toolchain
8.sudo apt-get install autoconf automake autotools-dev curl libmpc-dev libmpfr-dev libgmp-dev gawk build-essential bison flex texinfo gperf libtool patchutils bc zlib1g-dev
9.root@cp1-VirtualBox:/home/cp1/riscv/pulp-riscv-gnu-toolchain# ./configure --prefix=/opt/riscv --with-arch=rv32imc --with-cmodel=medlow --enable-multilib
10.make
11.root@cp1-VirtualBox:/home/cp1/riscv/pulp-riscv-gnu-toolchain# export PULP_RISCV_GCC_TOOLCHAIN=/home/cp1/riscv/pulp-riscv-gnu-toolchain
12.root@cp1-VirtualBox:/home/cp1/riscv/pulp# export VSIM_PATH=/home/cp1/riscv/pulp/sim
13.root@cp1-VirtualBox:/home/cp1/riscv# git clone https://github.com/pulp-platform/pulp-sdk.git -b master
14.export PULP_GITHUB_SSH=1
15.root@cp1-VirtualBox:/home/cp1/riscv/pulp-sdk# source configs/platform-rtl.sh
16.make all


Submodule path 'pulp-tools': checked out 'aa9ad5cd9f6fa75b80cbc91a4c2c8e5db737d7ce'
source init.sh && ./pulp-tools/bin/plpbuild --p sdk checkout build env --stdout
Configuring Pulp project at /home/cp1/riscv/pulp-sdk
Traceback (most recent call last):
  File "./pulp-tools/bin/plpbuild", line 3, in <module>
    import plptools as plp
  File "/home/cp1/riscv/pulp-sdk/pulp-tools/bin/plptools.py", line 27, in <module>
    from plpobjects import *
  File "/home/cp1/riscv/pulp-sdk/pulp-tools/bin/plpobjects.py", line 32, in <module>
    from openpyxl import Workbook
  File "/usr/local/lib/python3.5/dist-packages/openpyxl/__init__.py", line 6, in <module>
    from openpyxl.workbook import Workbook
  File "/usr/local/lib/python3.5/dist-packages/openpyxl/workbook/__init__.py", line 4, in <module>
    from .workbook import Workbook
  File "/usr/local/lib/python3.5/dist-packages/openpyxl/workbook/workbook.py", line 7, in <module>
    from openpyxl.worksheet.worksheet import Worksheet
  File "/usr/local/lib/python3.5/dist-packages/openpyxl/worksheet/worksheet.py", line 392
    return f"{get_column_letter(min_col)}{min_row}:{get_column_letter(max_col)}{max_row}"
                                                                                        ^
SyntaxError: invalid syntax
Makefile:6: recipe for target 'all' failed
make: *** [all] Error 1


Thank you so much for your prompt answer.
best wishes,
chen

Print this item

  reg test case failed
Posted by: HariniM - 12-27-2019, 06:18 AM - Forum: PULP General questions - Replies (1)

hi,
 
I tried running interfaced GPIO with the test cases given in PULPino environment. after running testcases I am getting has test case  failed. why test failed occurs.

** Warning: NUMERIC_STD."=": metavalue detected, returning FALSE
#    Time: 0 ps  Iteration: 0  Instance: /tb/top_i/peripherals_i/apb_uart_i/UART_RXFF
# ** Warning: NUMERIC_STD."=": metavalue detected, returning FALSE
#    Time: 0 ps  Iteration: 0  Instance: /tb/top_i/peripherals_i/apb_uart_i/UART_TXFF
# Using MEMLOAD method: PRELOAD
# Using      ri5cy core
# [SPI] Enabling QPI mode
# [adv_dbg_if] AXI4 WRITE         32 burst @1a107008 for           4 bytes.
# Preloading memory
# Preloading instruction memory from slm_files/l2_stim.slm
# Preloading data memory from slm_files/tcdm_bank0.slm
# [TRACER] Output filename is: trace_core_00_0.log    
#[SPI] Received 00000003
#[SPI] Test  Failed
# **Note :$Stop   

please respond
thanks in advance.

Print this item

  Yet another Pulpissimo (on Zedboard) bring-up thread
Posted by: stefanct - 12-20-2019, 03:58 PM - Forum: PULP General questions - Replies (6)

Hi,

I don't want to hijack one of the other current threads on getting started with Pulpissimo and my problem does not seem to be related to any of them anyway.
I am trying to get Pulpissimo to run on a Zedboard and would like to ask anybody who successfully done this to share his/her exact git revisions of the various related repositories. I think this might be the cause of my problems.

What (presumably) works:

  1. Synthesis: I was able to synthesize the design and download it to the zedboard. When I do so the hardware sets the LD0 LED.
  2. Compilation: I have built the PULP-SDK and I am able to compile binaries using pulp-rt. So far I have only tested the hello pulp-rt-example.
  3. Debugging: Since I don't have the Digilent JTAG adapter I am using an old Altera USB Blaster attached to the PMOD pins. I have changed the OpenOCD configuration accordingly and are able to connect, load and control execution of the RISC-V core with GDB. On first connect it is stopped at 0x1c008080, i.e. _start.
*However*, when I load and run the application that way, it does not work as expected. If we assume that we can trust the debugger then it seems like it gets stuck in rt_user_alloc(). pt and  size get initialized to 0 and 144 (0x90), respectively. Thus, the function returns to rt_alloc() where it is retried. On the second, try pt gets initialized to 0x4c4b40 because a equals the address of __rt_freq_domains and it tries to get its first_free field which is completely bogus!?

Since rt_event_alloc() uses the result of rt_cluster_id() for the values eventually ending up in rt_user_alloc() I presume this might be one of the problems that changing the core ID has as discussed in https://github.com/pulp-platform/pulpissimo/issues/107

KR

Print this item

  [PULPissimo] How to resize memory correctly
Posted by: gideros - 12-16-2019, 02:21 AM - Forum: PULP General questions - No Replies

Hi,

I'm working on a design based on PULPissimo and we're about to tape-out a test chip. But the technology that we're working on is pretty "big" (HC90L from SK Hynix), thus 512KB of total memory takes way too much area. Therefore I wanna reduce the total size of memory into half (256KB). 

In order to do that, I modified these:
- pulp_soc.sv (half size for both L2_BANK_SIZE and L2_BANK_SIZE_PRI).
- fpga_settings.mk (for a test build on FPGA)
- soc_interconnect.sv (for memory address, reduce PER_END_ADDR of PRI_L2_CH1, PRI_L2_CH0 and TCDM_END_ADDR).
- pulp-configs/configs/chips/pulpissimo/pulpissimo.json (memory size for sdk I guess)
The result is pretty bad. Simulation shows lots of "a request with unknown address". I guess I was wrong somewhere, or missed something.

And  since I disable FPU to reduce SoC size (I don't really need it), I also change ri5ky_v2_fpu_1_10 to a custom core that doesn't have FPU arguments.
-   "isa" from "rv32imfcXpulpv2" to "rv32imcXpulpv2"
- Remove "--fpu", "--fpud" and "--shared-fpu" from "gv_isa"
- Remove "compiler_args"
Eventhough, the final binary generated by SDK still has FPU related instruction, which will resulted in "Illegal instruction" exception while execute the program. 

Can you please help me out with above issues? Thank you very much in advance.
Regards.

Print this item