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

Username
  

Password
  





Search Forums

(Advanced Search)

Forum Statistics
» Members: 726
» Latest member: triki
» Forum threads: 189
» Forum posts: 636

Full Statistics

Latest Threads
Is SYNTHESIS, ASIC_SYNTHE...
Forum: PULP General questions
Last Post: vignajeth
05-06-2021, 04:06 PM
» Replies: 0
» Views: 102
JTAG and Stimulifile
Forum: PULP General questions
Last Post: ufsahu
05-06-2021, 02:04 PM
» Replies: 0
» Views: 75
Printf Statements Breakin...
Forum: PULP General questions
Last Post: meggiman
05-04-2021, 04:19 PM
» Replies: 1
» Views: 204
Use of -nostdlib in pulp-...
Forum: PULP General questions
Last Post: stefanct
04-28-2021, 10:06 AM
» Replies: 0
» Views: 161
Optimized design "vopt_tb...
Forum: PULP General questions
Last Post: cyberbemon
04-26-2021, 07:00 AM
» Replies: 2
» Views: 274
Bitstream generation of N...
Forum: PULP General questions
Last Post: edjchg
04-25-2021, 04:40 PM
» Replies: 0
» Views: 143
Buid failed
Forum: PULP General questions
Last Post: kgf
04-13-2021, 07:07 AM
» Replies: 5
» Views: 4,086
Post Synthesis Simulation...
Forum: PULP General questions
Last Post: vignajeth
04-07-2021, 06:22 PM
» Replies: 2
» Views: 411
pwd for the image example
Forum: PULP General questions
Last Post: akurth
04-07-2021, 09:06 AM
» Replies: 1
» Views: 313
Queries in FPU for cv32e4...
Forum: PULP General questions
Last Post: mlmram
04-05-2021, 05:34 AM
» Replies: 3
» Views: 1,310

 
  Simultaneously start all timer units in apb advanced timer
Posted by: nayan - 03-17-2021, 11:57 AM - Forum: PULP General questions - No Replies

Is there a way to simultaneously start all timer units in apb advanced timer in pulpissimo?

Print this item

  Pulpissimo on PYNQ-Z1 (Zynq-7000) board
Posted by: dah29 - 03-16-2021, 04:48 PM - Forum: PULP General questions - Replies (2)

Hi,

I would like to know if anyone tried to synthesize the Pulpissimo SoC on a PYNQ-Z1 (Zynq-7000) board. The chip is almost the same that is in the zedboard (XC7Z020-1CLG400C) so I though that it would be relatively easy. If so, I would like to know what parameters or files I have to change or rewrite to achieve the compatibility, or how to proceed.  As you can see, I am a beginner on this project, Do you know where to start?

Thank you.

Print this item

  Pulpissimo with IBEX Core Error
Posted by: vignajeth - 03-13-2021, 07:57 AM - Forum: PULP General questions - No Replies

Hi,
    I want to use the IBEX core with pulpissimo. I was able to run Hello World example with default ri5cy core. I changed the following files by making CORE_TYPE as 1 to get the ibex core configured.

  • ./pulpissimo/rtl/pulpissimo/pulpissimo.sv
  • ./pulpissimo/rtl/pulpissimo/soc_domain.sv
  • ./pulpissimo/rtl/tb/tb_pulp.sv
  • ./pulpissimo/pulp_soc/rtl/fc/fc_subsystem.sv
  • ./pulpissimo/ips/pulp_soc/rtl/pulp_soc/pulp_soc.sv
  • ./pulpissimo/install/tb_pulp.sv
once the change was done i cleaned the pulpissimo libs with make clean and did make build

i also cleaned the pulp-sdk with 'make clean' and did

export PULP_CURRENT_CONFIG=pulpissimo_ibex@config_file=chips/pulpissimo/pulpissimo_ibex.json
source configs/pulpissimo_ibex.sh
make build env # to rebuild the pulp-sdk with ibex configs
source sourceme.sh # to set path of newly built sdk with ibex core


when I run the hello world example I get an error from the ID stage of the IBEX Core pipeline like


# ** Error: [ASSERT FAILED] [tb_pulp.i_dut.soc_domain_i.pulp_soc_i.fc_subsystem_i.FC_CORE.lFC_CORE.id_stage_i.IbexIdInstrKnownKnownEnable] IbexIdInstrKnownKnownEnable (../ips/ibex/rtl/ibex_id_stage.sv:1008)
#    Time: 11300580292 ps Started: 11300580292 ps  Scope: tb_pulp.i_dut.soc_domain_i.pulp_soc_i.fc_subsystem_i.FC_CORE.lFC_CORE.id_stage_i.IbexIdInstrKnownKnownEnable File: /mypath/untouched/pulpissimo/sim/../ips/ibex/rtl/ibex_id_stage.sv Line: 1008
# ** Error: [ASSERT FAILED] [tb_pulp.i_dut.soc_domain_i.pulp_soc_i.fc_subsystem_i.FC_CORE.lFC_CORE.id_stage_i.IbexIdInstrALUKnownKnownEnable] IbexIdInstrALUKnownKnownEnable (../ips/ibex/rtl/ibex_id_stage.sv:1012)


I have built the pulp gnu toolchain with multilib 

can someone help me out here.

Print this item

  Pulp GNU ToolChain Not throwing L2 Overflowed Error
Posted by: vignajeth - 03-12-2021, 04:52 PM - Forum: PULP General questions - Replies (3)

Hi,
   I am currently working with L2 Memories. I notice that even though the size of the stimuli file I have is larger than the total size of L2 private memory (0x1c010000). The compiler does not throw l2 overflowed by ... bytes error. i have not changed the /my-path/pulp-sdk/pkg/sdk/dev/install/rules/pulpissimo/link.ld file. 

This the command the make file of hello example uses to compile my code


/my_path/project/gnu_toolchain/bin/riscv32-unknown-elf-gcc -march=rv32imfcxpulpv2 -mfdiv -D__riscv__ -MMD -MP -o /my_path/pulp-rt-examples/hello/build/pulpissimo/test/test /my_path/pulp-rt-examples/hello/build/pulpissimo/test/fc/test.o /my_path/pulp-rt-examples/hello/build/pulpissimo/test/fc//my_path/pulp-rt-examples/hello/build/pulpissimo/rt_conf.o /my_path/pulp-rt-examples/hello/build/pulpissimo/test/fc//my_path/pulp-rt-examples/hello/build/pulpissimo/rt_pad_conf.o  -nostartfiles -nostdlib -Wl,--gc-sections -L/my_path/untouched/pulpissimo/pulp-sdk/pkg/sdk/dev/install/rules -Tpulpissimo/link.ld -L/my_path/untouched/pulpissimo/pulp-sdk/pkg/sdk/dev/install/lib/pulpissimo -L/my_path/untouched/pulpissimo/pulp-sdk/pkg/sdk/dev/install/lib/pulpissimo/pulpissimo -lrt -lrtio -lrt -lgcc

pulp-run --config-file=pulpissimo@config_file=chips/pulpissimo/pulpissimo.json  --config-opt=platform=rtl --dir=/my_path/pulp-rt-examples/hello/build/pulpissimo --binary=test/test prepare
pulp-run --config-file=pulpissimo@config_file=chips/pulpissimo/pulpissimo.json  --config-opt=platform=rtl --dir=/my_path/pulp-rt-examples/hello/build/pulpissimo --binary=test/test
Launching simulator with command:


I notice the pulp_tap exceeding the maximum address of the L2 memory
 [pulp_tap_if] WRITE32 burst @1c00f800 for        1024 bytes.
# [pulp_tap_if] WRITE32 burst @1c00fc00 for        1024 bytes.
# [pulp_tap_if] WRITE32 burst @1c010000 for        1024 bytes.
# [pulp_tap_if] WRITE32 burst @1c010400 for        1024 bytes.
# [pulp_tap_if] WRITE32 burst @1c010800 for        1024 bytes.
# [pulp_tap_if] WRITE32 burst @1c010c00 for        1024 bytes.
# [pulp_tap_if] WRITE32 burst @1c011000 for        1024 bytes.
# [pulp_tap_if] WRITE32 burst @1c011400 for        1024 bytes.
# [pulp_tap_if] WRITE32 burst @1c011800 for        1024 bytes.
# [pulp_tap_if] WRITE32 burst @1c011c00 for        1024 bytes.



Any idea why the pulp_gnu_toolchain did not throw any error. does the pulp_gnu_toolchain should be rebuilt because i am playing by extending the Private memory sizes although the above error was produced with no change in the pulpissimo or pulp-sdk code

Print this item

  compile without RISC-V PULP specific extensions
Posted by: naprpo - 03-08-2021, 01:37 PM - Forum: PULP General questions - Replies (2)

Hello,

I am trying to compile GPIO test without pulp specific instructions.
https://github.com/pulp-platform/pulp-rt...put/test.c

I modified the make file as follows:

Code:
PULP_APP = test
PULP_APP_FC_SRCS = test.c
PULP_CFLAGS = -O3 -g
PULP_FC_ARCH_CFLAGS = -march=rv32imc



include $(PULP_SDK_HOME)/install/rules/pulp_rt.mk

failed with following errors:

Code:
pulpissimo/pulp-rt-examples/gpio/input/build/pulpissimo/test/fc/test.o: In function `rt_gpio_set_dir':
pulpissimo/pulp-rt-examples/gpio/input/test.c:13: undefined reference to `__builtin_pulp_OffsetedRead'
pulpissimo/pulp-rt-examples/gpio/input/test.c:13: undefined reference to `__builtin_pulp_OffsetedWrite'
pulpissimo/pulp-rt-examples/gpio/input/test.c:13: undefined reference to `__builtin_pulp_OffsetedRead'
pulpissimo/pulp-rt-examples/gpio/input/test.c:13: undefined reference to `__builtin_pulp_OffsetedWrite'
pulpissimo/pulp-rt-examples/gpio/input/build/pulpissimo/test/fc/test.o: In function `main':
pulpissimo/pulp-rt-examples/gpio/input/test.c:13: undefined reference to `__builtin_pulp_OffsetedRead' collect2: error: ld returned 1 exit status

Any suggestion if it is possible use API without pulp specific instructions? or any work around ?
Thank you..

Br, naprpo

Print this item

  Question about Pulpissimo memory
Posted by: zorrolee777 - 03-06-2021, 02:50 AM - Forum: PULP General questions - Replies (1)

Could anyone help me clarify whether the memory is single-port or dual-port? I didn't find the information in the documentation. Thanks in advance!

Zorro

Print this item

  I2C cannot write to TX_SADDR
Posted by: nikolas - 03-03-2021, 11:07 AM - Forum: PULP General questions - Replies (2)

Hey everyone 

I am trying to set up an I2C on my NEXYS 4 board without using the rt api from the sdk.
Now I think I have understood the way how the uDMA works an I am also able to transmitt something over the I2C (clock is there and a signal on the SDA is there too), but this are 
not the data I wanted to transfer.

My main problem now is, I am not able to write the address of my TX buffer to the TX_SADDR register. In the manual I can see that the TX_SADDR should be a read/write register but writing to it seams not be possible.
Does someone know what the problem could be or is there maybe an example how to setup peripherals connected to the uDMA without the help of the rt api?

Would really appreciate your help.

Thank you very much and have a nice day.

Code:
//in a headerfile called pulpissimo.h
#define I2C0_RX_SADDR    (*((volatile uint32_t *)0x1A102180))
#define I2C0_RX_SIZE    (*((volatile uint32_t *)0x1A102184))
#define I2C0_RX_CFG    (*((volatile uint32_t *)0x1A102188))
#define I2C0_TX_SADDR    (*((volatile uint32_t *)0x1A102190))
#define I2C0_TX_SIZE    (*((volatile uint32_t *)0x1A102194))
#define I2C0_TX_CFG    (*((volatile uint32_t *)0x1A102198))

//in hal_i2c.c
__attribute__((section(".l2_data"))) uint8_t tx_buff[BUFFERSIZE];
__attribute__((section(".l2_data"))) uint8_t rx_buff[BUFFERSIZE];
__attribute__((section(".l2_data"))) uint8_t cmd_buff[BUFFERSIZE];

//in an initialisation function in hal_i2c.c
I2C0_RX_SADDR  |= (uint32_t)&rx_buff[0]; //after this there is 0x00000000 in the register
I2C0_RX_SIZE   |= BUFFERSIZE;            //after this there is 0x00000000 in the register
  
I2C0_TX_SADDR  |= (uint32_t)&tx_buff[0]; //after this there is 0x00000000 in the register
I2C0_TX_SIZE   |= BUFFERSIZE;            //after this there is 0x00000000 in the register

I2C0_CMD_SADDR |= (uint32_t)&cmd_buff[0]; //after this there is 0x00000000 in the register
I2C0_CMD_SIZE  |= BUFFERSIZE;             //after this there is 0x00000000 in the register

Print this item

  PULPino or PULPismo ? for a low-power microcontroller
Posted by: sit-vlsi - 02-28-2021, 03:01 PM - Forum: PULP General questions - Replies (4)

Hello, We are trying to design a ultra low-power microcontroller for IoT applications in a 0.18um CMOS technology and I am trying to decide to choose the PULPino or PULPismo platform.
PULPino seems like the more matured platform but PULPismo seems to be the replacement for PULPino.
Our core strength is analog so we want a platform which has a well-supported toolchain, etc.
So any advice on this topic will be greatly appreciated.

Print this item

  Queries in FPU for cv32e40p
Posted by: mlmram - 02-25-2021, 06:10 PM - Forum: PULP General questions - Replies (3)

Hi,

I ran the cv32e40p (RI5CY) core with FPU (floating point) enabled and tried to check the result for all the floating-point operations. I have faced the following issues incase of division and fused operations.

  • Rounding mode output is incorrect for division, rounding mode for the division is not the same as addition, subtraction, and multiplication
    For example, when rounding mode is RTZ (round to zero), the guard, round and sticky flags aren't ignored and the final output is changed by 1 bit.
  • Exception status flags output is incorrect for division, exception status flags output for the division is not the same as addition, subtraction, and multiplication, and doesn't follow IEEE754
    For example, the overflow flag is not generated even if the division result generated is infinity (for MAX/MIN case).
  • Rounding mode output is incorrect for fused operations, rounding mode for fused operations is not the same as addition, subtraction, and multiplication
    For example, when rounding mode is RTZ (round to zero), the guard, round and sticky flags aren't ignored and the final output is changed by 1 bit.
  • Getting output as X in fused operations if any of the operands is 0
    For example, If any of the 3 operands are 0 in FMA, the result generated by the core is X.
Please let me know if these are the bugs in the core or the FPU, or if there's anything wrong with my understanding of floating-point operations.

Print this item

  fullduplex communication in spi through spansion s25fs256s
Posted by: chikku - 02-23-2021, 07:27 AM - Forum: PULP General questions - No Replies

we are facing a problem in full duplex communication in riscv pulpissimo  ,i.e. we can not start  reception after transmission using the spansion s25fs256s spi module . Could you please give some ideas regarding that. Or could you please give us a document regarding that

Print this item