Comments (3)
Hello Fog-cake,
You are right; our physical layout is different from the one depicted in the specs (and maybe there is an error in the comment inside ara_pkg.sv
).
We have a register file that is split into multiple parts, one part per lane. This somehow "mandates" to have subsequent elements separated by one lane each. The internal representation within the 64-bit data width is kept in the way you see just because it is more convenient for operations in which EEW != SEW
(I actually saw that this could not be the case for FP operations, though).
The important part is that thanks to the shuffling and deshuffling functions, everything should behave as VLEN == SLEN
from an external point of view (for example, when data loaded in a register is then stored using a store targeting a different SEW), and the execution is predictable and behaves as the elements are physically kept in the VRF respecting the pattern in the specs.
Anyway, this is a nice issue to be raised since a satisfying verification of this behavior (that should be enforced) has not been done yet. In the meantime, if you experience some non-compliant behavior (we can easily verify the correct behavior with SPIKE), please tell us opening a dedicated issue!
from ara.
Hello Fog-cake,
You are right; our physical layout is different from the one depicted in the specs (and maybe there is an error in the comment inside
ara_pkg.sv
).
We have a register file that is split into multiple parts, one part per lane. This somehow "mandates" to have subsequent elements separated by one lane each. The internal representation within the 64-bit data width is kept in the way you see just because it is more convenient for operations in whichEEW != SEW
(I actually saw that this could not be the case for FP operations, though).
The important part is that thanks to the shuffling and deshuffling functions, everything should behave asVLEN == SLEN
from an external point of view (for example, when data loaded in a register is then stored using a store targeting a different SEW), and the execution is predictable and behaves as the elements are physically kept in the VRF respecting the pattern in the specs.
Anyway, this is a nice issue to be raised since a satisfying verification of this behavior (that should be enforced) has not been done yet. In the meantime, if you experience some non-compliant behavior (we can easily verify the correct behavior with SPIKE), please tell us opening a dedicated issue!
Hi,mp-17,
Thank you for your answers. Yes it is. VLEN=SLEN is currently adopted in the 0.1.0 specification. I see that you have also recently updated to version 0.1.0. If I find a problem that is inconsistent with the specification, I will open a new one.
from ara.
Just as a reference: riscv/riscv-v-spec#738
from ara.
Related Issues (20)
- Similar issue as #320 HOT 2
- Non-Compiler based test environment HOT 1
- cva6 with ara on genesys
- Power Consumption for all the benchmarks HOT 1
- Question of vwadd instruction HOT 1
- yaml.h
- riscv-isa-sim
- uint64_t HOT 2
- half-precision floating point example code HOT 1
- ARA Synthesis using Cadence or Synopsys Tools HOT 1
- Any User Specific C program on ARA HOT 2
- error when I change config to 16 lanes HOT 3
- Assembly level Vector Instructions programs for ARA HOT 1
- llama on ara HOT 21
- ARA not recognizing Questa Sim Installation HOT 1
- vslideup instruction error HOT 1
- Errors in RTL while simulating with Questasim HOT 1
- Conformal LEC Error: Error: RTL1.13: Mismatched enumeration types are in the assignment HOT 2
- Additional readme steps HOT 1
- fst waveform analyzing for imatmul program
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from ara.