-
Notifications
You must be signed in to change notification settings - Fork 32
Upstream features from chimera
#89
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Conversation
0b4d3c1 to
e329d44
Compare
72a5642 to
e309337
Compare
env/env.sh
Outdated
|
|
||
| if (hostname | grep -qE "\.ee\.ethz\.ch$") ; then | ||
| export PULP_RUNTIME_GCC_TOOLCHAIN=/usr/pack/riscv-1.0-kgf/pulp-gcc-1.0.16 | ||
| export PULP_RUNTIME_GCC_TOOLCHAIN=/usr/scratch/dolcedorme/smazzola/install/pulp-tnn-gnu-7.1.1 |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Is this compiler available open-source? This is important before we merge this PR
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
It is open-source, but as a fork of @da-gazzi.. we should merge it but I'm no expert here
https://github.com/da-gazzi/pulp-tnn-gnu-toolchain
As far as I could tell it's also outdated with respect to the currently used toolchain of the upstream PULP Cluster
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Let's evoke @gtagliavini for this question :D
| XBAR_PERIPH_BUS.Slave hci_ecc_periph_slave, | ||
| hci_core_intf.target core_tcdm_slave [0 : NB_CORES-1 ], | ||
| hci_core_intf.target hwpe_tcdm_slave [0 : 0 ], | ||
| hci_core_intf.target hwpe_tcdm_slave [0 : NB_HWPE-1 ], |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This will fail if NB_HWPE=0, which I think is still possible (if iDMA uses LIC ports). See pulp-platform/hci#50 for a possible better solution.
| end | ||
| // if DMA_USE_HWPE_PORT, assign DMA interfaces to the rest of s_hwpe_intc[:] | ||
| for (genvar i=NB_HWPE; i<N_HCI_HWPE_PORTS; i++) begin : connect_dma_hwpe_intf | ||
| hci_core_assign_expand #( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
This depends on pulp-platform/hci#45, which should be merged before this one is merged.
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Yes there are also other dependencies that I am taking an eye on, that need to be merged before we merge this (iDMA for example)
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
maybe add a check-list in the PR description to keep track!
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
On it!
| .N_MEM ( NB_TCDM_BANKS ), | ||
| .IW ( TCDM_ID_WIDTH ), | ||
| .TS_BIT ( TEST_SET_BIT ), | ||
| .EXPFIFO ( 2 ), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Why the FIFO? did you have problems with timing closure?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Because there is a combinational loop.. I was not sure how to solve it
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Ok, we should check this one separately!
| .N_MEM ( NB_TCDM_BANKS ), | ||
| .IW ( TCDM_ID_WIDTH ), | ||
| .TS_BIT ( TEST_SET_BIT ), | ||
| .EXPFIFO ( 2 ), |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
why the FIFO? problems with timing closure?
| assign core_busy_o = ~core_sleep; | ||
| end else if ( CORE_TYPE_CL == 1 ) begin: RI5CY_CORE | ||
| assign boot_addr = boot_addr_i; | ||
| riscv_core #( |
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Here I believe we need to manage the two cores differently. They are all riscv_core but there are substantial differences and I fear merging all the changes is far from trivial.
We have
- a
riscv_nnthat now resides in https://github.com/pulp-platform/flex-v, with the HMR branch that is referred to in the current cluster v3 - the TNN core from @da-gazzi you target here (where is it? where did it branch out?)
- CV32E40P, with a different history
@alenad95 do you have suggestions on how to cut this Gordian knot?
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
Absolutely, this is an important point.
The RI5CY (riscv-nn) used in this PR is on our gitlab: https://iis-git.ee.ethz.ch/pulpissimov2/riscv-nn/-/tree/53b053cd0be8dae25caa24bd57824e81cf87ba21
There was a problem hiding this comment.
Choose a reason for hiding this comment
The reason will be displayed to describe this comment to others. Learn more.
OK, it's not tragic, it's only a few commits away from the main of https://github.com/pulp-platform/flex-v/network .
@sermazz can you push TNN to a branch of flex-v? then @alenad95 i think we should have a look whether the changes can be merged (at least with the Shaheen branch), which will leave us at two flex-v branches (main + hmr) and cv32e40p.
Then we can tidy the room up a bit in a future PR with an if-generate like in PULPissimo...
e309337 to
67bcfb3
Compare
bced681 to
d16ac0a
Compare
|
On-going: rebasing dkeller/chimera branches on smazzola/chimera:
Regression-tests:
iDMA:
PULP cluster: |
|
As mentioned in today's meeting, I'm adding here the links to my forked repositories related to the work on iDMA:
The main changes on my side until now are:
Another point I forgot to mention in the meeting:
|
I updated the multicore tests as follows:
|
I pushed some further updates:
|
|
Hello @RiccardoGandolfi @sermazz I have created some new feature branches to continue the work from the branches in #89 (comment) and the on-going work from Riccardo. The updated branches are: |
|
I pushed some substantial updates to the multi_core tests: https://github.com/RiccardoGandolfi/regression_tests/tree/add_iDMA_tests Main changes are:
These last changes should have fixed all the remaining issues with multi core execution. My next steps will be improving the stimuli generation. @FrancescoConti @sermazz @DanielKellerM @yvantor |
08415ee to
ddf4846
Compare
60cbbc7 to
a3ac2c2
Compare
|
I have rebased branch dkeller/chimera-v2 onto this latest update from Sergio. |
|
@sermazz maybe this point/task can be added to the CI?
|
a3ac2c2 to
7a75821
Compare
7a75821 to
5b810dd
Compare
The linker script has L1 address ORIGIN set to 0x10000004 even through in hardware it is set to 0x10000000. However the testbench assumes 64b alignment to initialize the L1. Thus, the data was shifted by 32b in the simulation. While the AXI bursts are set to 64b, the misalignment needs to be handled coming from the linker script.
Being unnecessarily unpacked, it was not compatible with other systems (like Cheshire)
ece4dda to
cd19098
Compare
It created problems in routing of requests through peripheral interconnect
cd19098 to
d41ca84
Compare
[moved to https://github.com/Integrate TNN-enabled Flex-V core #98]riscvcores with TNN extension (ISA extension for ternary-weight neural networks)dmac_wrapfor iDMACc: @arpansur @da-gazzi @DanielKellerM
To-do
Dependencies
hcisupporting multiple wide ports + ECC support Multiple HWPE support + ECC hci#53 =prasadar/multi-hwpe-supportrebased onlg/ecc_rebase_v2.1.1iDMAUpstream PULPv2 features iDMA#66neurekahttps://github.com/pulp-platform/neureka/compare/prasadar/develpulp-runtimehttps://github.com/pulp-platform/pulp-runtime/tree/smazzola/chimera =georgr/nn_testsrebased onupstream_featuresfrom Astralregression_testshttps://github.com/pulp-platform/regression_tests/tree/smazzola/chimera =prasadar/chimerarebased on Astral'slg/upstream(remove unused old tests like./neureka, parametrize sw libraries to reflect hw configuration likepulp_nnxwhich has HWPEs IDs hardcoded only to the PULP Cluster's default config with 3 HWPEs)Hardware
Verification
pulp-cluster-nonfreeto have proper CI testing those configurations