Welcome, Guest |
You have to register before you can post on our site.
|
Latest Threads |
How to get more detailed ...
Forum: PULP General questions
Last Post: kgf
Today, 07:42 AM
» Replies: 6
» Views: 2,597
|
Which SDK to be used to c...
Forum: PULP General questions
Last Post: Archibald
Today, 02:12 AM
» Replies: 2
» Views: 3,142
|
Cheshire with two cores
Forum: PULP General questions
Last Post: tomkathy
06-18-2025, 09:17 AM
» Replies: 5
» Views: 1,975
|
【新手必讀】Relx電子菸煙彈選購指南與保養技巧
Forum: PULP General questions
Last Post: mmrnkbqfexgs
06-18-2025, 07:51 AM
» Replies: 0
» Views: 64
|
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,348
|
Pulp - make build
Forum: PULP General questions
Last Post: tomkathy
04-09-2025, 07:58 AM
» Replies: 4
» Views: 2,146
|
Unable to compile and run...
Forum: PULP General questions
Last Post: victorgervasio
03-25-2025, 09:30 AM
» Replies: 2
» Views: 978
|
__builtin_pulp
Forum: PULP General questions
Last Post: yoss
02-18-2025, 04:31 PM
» Replies: 0
» Views: 539
|
|
|
udma memory to memory data transfer test bench |
Posted by: RiscV - 06-29-2020, 09:52 AM - Forum: PULP General questions
- Replies (2)
|
 |
Hi
Currently I am writing a test bench for transferring a 32 bit data from one location to another memory location in RISCV pulp. I am bit confused how to set the address of DMA transmit bus and the procedure for transferring the data. Can you help me regarding this
code I wrote for transferring data without DMA is
li x15,64
LUI x14, 0x1c000 // Source address selected is 0x1c000001
sw x15, 001(x14)
LUI x13, 0x1c010 // destination address is 0x1c01000
sw x14, 0(x13)
|
|
|
Data relocation when using LOAD_L2=STANDALONE |
Posted by: LPLA - 06-09-2020, 02:10 PM - Forum: PULP General questions
- Replies (4)
|
 |
Hello,
as you know PULPissimo has an option to boot from flash by setting the LOAD_L2 parameter in the tb_pulp.sv to STANDALONE.
As far as I know it won't actually boot from flash but instead load the data from flash to the L2 and execute it. Is this still the case?
So I was running the hello example from the pulp_rt_examples using the STANDALONE variant.
This works just fine but I was wondering about the contents of the different memories after the end of the computation.
We can see that when using STANDALONE the flash memory uses its preload feature to contain "slm_files/flash_stim.slm" which should be the image of the hello example.
When instead using JTAG there is a different image loaded into L2 called stim.txt.
There are several question which I hope someone can answer:
Is there a reason why the actual data from those images is different?
I'm not talking about formatting but rather the actual data itself.
For example:
The first few lines of the .slm file:
@00000000 00
@00000001 70
@00000002 00
@00000003 00
@00000004 04
@00000005 00
@00000006 00
@00000007 00
@00000008 80
@00000009 80
@0000000A 00
@0000000B 1C
The first few lines of the .txt file:
1C000000_0000000000000000
1C000008_0000000000000000
1C000010_0000000000000000
I'm pretty sure that the memory called "boot rom" contains the boot code which is unrelated to the executed (hello example) code. Is this correct?
The code of the hello example should reside somewhere in L2. Now using QuestaSim to check the contents of the different L2 sections I get confused.
There is some data in .../bank_sram_pri0_i/MEM which looks a bit scattered as there are some undefined entries.
The data in .../bank_sram_pri1_i/MEM is more coherent.
Also there is a bit of data in every 0 cut of every CUT X.
By that i mean ...CUTS[X]/RTL_0/bank_i/cut_0/MEM.
What actually resides in pri0, pri1, cut_0?
I found the data of the stim.txt in L2 (in pri0 but not starting at 0x00000000) but not in a coherent way.
Why is this the case even tho I am using STANDALONE instead of JTAG.
In regards to my previous question there is also the boot-code repo which is what I am currently trying to extend.
If I'm not mistaken the boot_code.cde which I linked to in the above post is the binary of the boot_code.c found in this repo, is that correct?
Looking at the linker script link.ld we can see that there are only two entries in the memory table: ROM and L2.
How is data actually relocated from flash to L2? As far as I remember the flash is not memory mapped or is it?
I'm trying to modify the files in a way which allows me to load (preloaded) data from flash to defined addresses in L2, similar to how the (preloaded) hello example has to somehow be relocated.
Unfortunately I'm not allowed to modify boot_code.c so I'm guessing I have to modify the linker script link.ld and the main startup file crt0.S or add additional files.
Does anyone know if it is actually possible to load data from an arbitrary address in flash to an arbitrary address in L2 during boot phase?
Thank you,
LPLA
|
|
|
Some questions about the HERO platform |
Posted by: Olivier - 06-04-2020, 03:38 PM - Forum: PULP General questions
- Replies (3)
|
 |
Hello,
I'm new to using the PULP environment and currently I am trying to familiarize myself with the HERO platform implemented on my ZC706 board and I have a few questions:
• I saw that with OpenMP the workload to execute is sent to the cluster with 8 RISC-V cores.
However, can I choose precisely which cores will be used to run a workload ?
For example, I would like the workload W1 to be executed by cores PE0, PE1 and PE2 and the workload W2 to be executed by cores PE M to PE N-1.
• I suppose it is possible with the ZC706 FPGA board to have 2 clusters of 4 RISC-V cores.
Similar to the previous question, can I choose which cluster will run a workload ?
• I saw in the file "fe/rtl/includes/pulp_soc_defines.sv" on Github that it is possible to define an FPU. But I can't find the apu_package.sv file mentioned in the comment on line 45 to add an FPU.
Is it possible to add an FPU in big-pulp?
Is the FPU shared between the cores or is it one FPU per core ?
• Last question, Is it possible to add a HWCE to a cluster ?
Thanks in advance
|
|
|
Pulpissimo prepare standalone flash image |
Posted by: bbr49 - 05-07-2020, 02:31 PM - Forum: PULP General questions
- Replies (3)
|
 |
I'm trying to simulate standalone booting from flash using the bootsel=0 and the bootrom.
What are the steps to prepare an image starting from the compiled elf file?
Do I just need to load it as is in the flash model for simulation, or are there some additional steps required?
Is there some documentation regarding this topic?
Thanks !
|
|
|
How to find the signal which represents 16bit instructions in the design? |
Posted by: ninipa - 04-26-2020, 01:37 PM - Forum: PULP General questions
- Replies (2)
|
 |
Hi,
I'm trying certain software debug tool on pulpissimo. To build alignment between source code and disassembly, I need to trace both "pc" and the corresponding "instruction" in the design during runtime.
I've found the "pc" shall be "tb_pulp.i_dut.soc_domain_i.pulp_soc_i.fc_subsystem_i.FC_CORE.lFC_CORE.id_stage_i.pc_id_i[31:0]"
And probably the "inst" shall be "tb_pulp.i_dut.soc_domain_i.pulp_soc_i.fc_subsystem_i.FC_CORE.lFC_CORE.id_stage_i.instr[31:0]"
For example, on "hello" case, a piece of disassembly is:
The waveform is like:
you can see when the instruction is 32bit, disassembly is matched with waveform (eg. pc=0x1c008130, inst=0x82f72a23)
But when the instruction is 16bit, looks like I can find a signal in waveform to show the 16bit instruction correctly... for example, pc=0x1c008134, disassembly shows the instruction val=0xc69c; but the 32bit "inst" signal shows different value in the waveform...
Instead, I find the 16bit inst at output of L2 ram... But I can't use the output of L2 ram in my tool since it's too hard to align with pc...
any ideas?
Thank you!
Hi,
I just read RISCV manual, looks like these 16bit instructions are RV32C instructions? Then it's decoded into 32bit instruction in the design and the signal "tb_pulp.i_dut.soc_domain_i.pulp_soc_i.fc_subsystem_i.FC_CORE.lFC_CORE.id_stage_i.instr[31:0]" is the decoded one, right?
So my question becomes --- can you point me the signal which cycle aligned with certain "pc" signal and the value is original?
Thank you!
|
|
|
Debug Boot code |
Posted by: ninipa - 04-16-2020, 04:07 AM - Forum: PULP General questions
- Replies (4)
|
 |
Hi,
I migrated pulpissimo simulation env to a synthesizable env. I removed tb part so there is no JTAG action (but I confirmed the clocks are all fine in the system). bootsel has been set to 1'b1.
Even without the JTAG action, I expect at least boot-code can run correctly.
But, via compare PC (tb_pulp.i_dut.soc_domain_i.pulp_soc_i.fc_subsystem_i.FC_CORE.lFC_CORE.id_stage_i.pc_id_i[31:0]) value in golden simulation and my simulation. I found that after several instructions, my simulation jumped to another branch, like:
golden sim: .... 0x1a0002dc -> 0x1a0002de -> 0x1a0002e0 -> 0x1a0002e4 -> 0x1a0002e6 -> 0x1a000316 -> .....
my sim: .... 0x1a0002dc -> 0x1a0002de -> 0x1a0002e0 -> 0x1a0002e4 -> 0x1a0002e6 -> 0x1a0002e8 -> .....
before that, the PC value and sequence is exactly the same
Now my problem of debugging it is: ./sim/boot/boot_code.cde is already made as hex file. I can find the src boot-code at https://github.com/pulp-platform/boot-code, but when I try to make executable, it is invoking "pulp-runtime/install/rules/pulp_properties.mk" but it's not there... (I want to make exe and then objdump it to debug with disassembly)
Can you please point me how to generate the corresponding disassembly to boot_code.cde? Or can you simply help me figure out why my simulation fails with the PC sequence I provided?
Thank you!
|
|
|
|