I am currently working on synthesizing the ARA architecture along with the CVA6 processor. I have been trying to perform top-down mapping of the files by designating ara_soc.sv as the top module and consolidating all related files into a single .sv file for synthesis.
Unfortunately, I have encountered difficulties in achieving a successful synthesis in Cadence Genus. I am concerned that my approach might be flawed, and I am seeking guidance on how to resolve this issue.
Could you please provide me with some advice or best practices for synthesizing the ARA and CVA6 design in Cadence Genus or any other tool like Vivado or Synopsis DC? Any insights or suggestions on how to effectively manage the integration of these components would be greatly appreciated.
Hello, when trying to ascertain the changes made to the pulp instructions for their core-v re-encoding (core-v.rst is the most detailed filed I've found) I found it was quite difficult to find what the original instructions actually were!
So far I've been basing my work on [1] and [2] and the file mentioned above. I've noticed the "pulp manuals" are mentioned at the beginning of [1], but the only thing that comes close to it is this datasheet, which appears to be in a somehow abandoned repository (still mentions the pulp riscv gnu toolchain in its readme), and only mentions some vector extension instructions.
For reference, I am looking for for information similar to the one in the core-v.rst file or the cv32e40p user's manual, and the information that can be extracted from [2].
Thank you!
how can i occur the fmadd instruction with c code?
in regression examples for (t=0; t<T; t++) { for (i=2; i<N-1; i++) { for (j=2; j<N-1; j++) { b[i][j]=0.2f*(a[i][j]+a[i][j-1]+a[i][1+j]+a[1+i][j]+a[i-1][j]); printf("caculate finished # i=%d j=%d\n",i,j);
}
}
} This example occurs fadd instrctions.
then, how can i occur fmadd instrctions? is there any special condition for it?
I'm doing some research to better understand how everything comes together when using pulpissimo.
I'm curious about the compiler and custom opcodes.
How and where does the compiler know how to handle these opcodes when compiling a program? Is it "Inline Assembly"?
I've found all the opcodes for the pulp0, pulp1..gap9...etc. Now I'm after looking for either "Machine Description Files", "target specific header files" or "Compiler Backend Code".
I'd like to add a custom opcode and have the compiler utilise that opcode in the future.
Hello! I'm a student who is learning the riscv arch and the pulpino core, and I wonder how the team of pulpino verify the RV32IM instruction set and the custome instruction set, are your team use the official riscv-tests, or use riscv emulators like qemu or spike as ref, or build your own test sets.
I am encountering an issue while using an AXI crossbar in my project, which has 2 slave ports and 1 master port. In the project, I have two DMAs accessing a single memory for read operations. I am using the PULP AXI_XBAR, and although it simulates, I am experiencing an error where the crossbar directs all request response data to one DMA. It correctly decodes read addresses from both DMAs but sends the response data to only one DMA. Can anyone guide me on this issue? Here is the crossbar configuration:
// AXI Configuration
localparam axi_pkg::xbar_cfg_t XbarCfg = '{
NoSlvPorts: 2,
NoMstPorts: 1,
MaxMstTrans: 20,
MaxSlvTrans: 10,
FallThrough: 1'b0,
LatencyMode: axi_pkg::CUT_ALL_AX,
PipelineStages: 2,
AxiIdWidthSlvPorts: 2,
AxiIdUsedSlvPorts: 2,
UniqueIds: 1'b0,
AxiAddrWidth: AddrWidth,
AxiDataWidth: DataWidth,
NoAddrRules: 1
};
i trying to build pulp with above link. But when i command "make build"
it makes error
Makefile:30: warning: overriding recipe for target '/root/pulp/sim/tcl_files/config/vsim_ips.tcl'
Makefile:30: warning: ignoring old recipe for target '/root/pulp/sim/tcl_files/config/vsim_ips.tcl'
make -C sim all
make[1]: Entering directory '/root/pulp/sim'
make -C ../rtl/tb/remote_bitbang clean
make[2]: Entering directory '/root/pulp/rtl/tb/remote_bitbang'
rm -rf librbs.so remote_bitbang.o sim_jtag.o ./.d
make[2]: Leaving directory '/root/pulp/rtl/tb/remote_bitbang'
rm -r work
rm modelsim.ini
chmod: cannot access 'modelsim.ini': No such file or directory
make[1]: *** [Makefile:57: lib] Error 1
make[1]: Leaving directory '/root/pulp/sim'
make: *** [Makefile:120: build] Error 2
in some communities, they said commented "rm modelsim.ini"
so i make that code commented
then it has error
# source compile.tcl
# Questa Intel Starter FPGA Edition-64 vlog 2023.3 Compiler 2023.07 Jul 17 2023
# ** Error (suppressible): (vlog-12110) All optimizations are disabled because the -novopt option is in effect. This will cause your simulation to run very slowly. If you are using this switch to preserve visibility for Debug or PLI features, please see the User's Manual section on Preserving Object Visibility with vopt. -novopt option is now deprecated and will be removed in future releases.
# Errors: 1, Warnings: 0
# 1
# quit
vopt +acc=npr -o vopt_tb tb_pulp -floatparameters+tb_pulp -work work
Questa Intel Starter FPGA Edition-64 vopt 2023.3 Compiler 2023.07 Jul 17 2023
** Warning: (vopt-10587) Some optimizations are turned off because the +acc switch is in effect. This will cause your simulation to run slowly. Please use -access/-debug to maintain needed visibility.
Start time: 20:22:08 on Jun 27,2024
vopt "+acc=npr" -o vopt_tb tb_pulp -floatparameters+tb_pulp -work work
Top level modules:
tb_pulp
Analyzing design...
** Error: (vopt-13130) Failed to find design unit 'tb_pulp'.
Searched libraries:
work
Optimization failed
End time: 20:22:08 on Jun 27,2024, Elapsed time: 0:00:00
Errors: 1, Warnings: 1
make[1]: *** [Makefile:41: opt] Error 2
make[1]: Leaving directory '/root/pulp/sim'
make: *** [Makefile:120: build] Error 2
how can i fix it? the error vlog-12110, i think its problem of questasim.
How about second one? why they find design unit tb_pulp?
i just tried pulp platform and i've done simulation with pulp-sdk and pulp
By the way, i want to develop pulp cores. Is there any RTL generator? i've seen rocket chip with chisel language.
Is there any same things like chisel in pulp-platform?
Then, if i want to modify some modules at pulp-platform, there's only way to do is modify system verilog code?