Skip to content
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

One vector PR to rule them all #395

Open
wants to merge 15 commits into
base: master
Choose a base branch
from
Open

Conversation

lekcyjna123
Copy link
Contributor

@lekcyjna123 lekcyjna123 commented Jun 23, 2023

Here is a PR to merge branch with implementation of vector extension. As for now I am going to merge here all already open PR's related with vector extension.

List of elements:

  • AllToAllRoutingNetwork
  • OmegaRoutingNetwork
  • priority proxy
  • MultiportFifo
  • VectorRegisterBank
  • VRFFragment
  • FlexibleAdder
  • FlexibleElementwiseFunction

Syntax sugar:

  • @loop_def_method
  • condition_switch

This was referenced Jun 23, 2023
Base automatically changed from lekcyjna/serializerMembank to master June 27, 2023 13:09
Routings

Multiport fifo (#260)

Extend decoder with part of V instructions. (#396)

Vector register (#293)

---------

Co-authored-by: Lekcyjna <[email protected]>
@lekcyjna123
Copy link
Contributor Author

Today functional units have been merged to this branch:

  • VectorRegisterBank
  • VRFFragment
  • FlexibleAdder
  • FlexibleElementwiseFunction

Additionaly there was added new syntax sugar:

  • loop_def_method
  • condition_switch

@lekcyjna123
Copy link
Contributor Author

Today merged to this branch:
New units:

  • FifoRS
  • VXRS
    Refactor:
  • change csr field name to imm2 name
  • extend register with register type
    Useful:
  • functions to generate instruction data for test input

@lekcyjna123
Copy link
Contributor Author

Added:

VectorInputVerificator (to check if incoming instruction is correct, or we should raise an exception)
VectorStatus (which handles changes in vector CSRs and add CSR snapshot to each instruction passed through it)
SuperscalarFreeRF (support allocating and deallocating more registers at once)
MultiPriorityEncoder (extension of priority encoder from amaranth to get more outputs in one cycle)
SuperscalarRATs

Other features:

added Now() command to simulation to get current cycle
added special argument _now to get current time in method mock

@lekcyjna123
Copy link
Contributor Author

Added:

VectorAllocRename
VectorFrontend
VectorMemoryVVRSSpliter
VectorTranslators (main block and EEW, LMUL, RP3, IMM)
VVRS
Scoreboard
Register
RegisterPipe
ShiftRegister
PriorityUniqnessChecker

Rework of vector configuration:

Added VectorUnitConfiguration class
added VectorParameters as field in GenParams

Miscellany:

MethodBrancherIn (syntax sugar for calling methods under different branches of m.If)
NotMethod (to workaround problems with single_caller and SimpleTestCircuit)
MethodMock class (wrapper over TestbenchIO(Adapter())

@lekcyjna123 lekcyjna123 mentioned this pull request Jul 19, 2023
@lekcyjna123 lekcyjna123 marked this pull request as ready for review July 20, 2023 10:49
@lekcyjna123 lekcyjna123 changed the title [WIP] One vector PR to rule them all One vector PR to rule them all Jul 20, 2023
@lekcyjna123 lekcyjna123 mentioned this pull request Jul 27, 2023
* Rewrite downloader to use BufferedReqResp

* Move BufferedRespReq from downloader to executor.

* Present vrf interface in VectorExecutor.

* Added checking of LS width in frontend.

* Added handle_load

* Start writing LSU test.

* Next part of tests.

* Some fixes.

* VectorLSUTests works.

* Fix failing tests. All tests passed.

* Add connections between LSUs and vector unit.

* Added dependencies.

* Fix tests.

* Change in handling LSU reserved signal.

* Fix vector core tests.

* Added decoder test for checking vector memory instructions.

* Fix in scheduler. Test kill the canary.

* Fix vector asm test. All tests are passing.

* Bytes tests passed. All tests are passing.

* Fix needed regs vm

* Longer byte test.

* Add docstrings.

* Lint.

* Fix typos.

* Add vector core to synthetise script.

* Remove combinational loop, to don't have problems with synthesis.

* Changes in VRF.

* Some optimisations.

* BasicFifo optimisations.

* Remove MemoryBank from VRF.

* Remove vrf fifo_req.

* VRF. Reduce fifo_write number.

* Cut critical path in ALU.

* Replace FlexibleAdder with FlexibleElementwiseFunction.

* Add bufor on vector executor input.

* Remove LMUL translation.

* Substitute fifos with registers.

* Change BasicFifo to Registers. VRF

* Try to cut critical path in VectorRegister

* Bump number of lines to 2

* Change number of lines back to 1 for test purposes.

* Preparations for benchmarking.

* Fix downloader test.

* Fix vector tests. All unit tests passed.

* Fix benchmarks.

* Add new benchmarks. All unit tests passed.

* Lint

* Increase serializer depth. Rewrite benchmarks.

---------

Co-authored-by: Lekcyjna <[email protected]>
This was referenced Nov 19, 2023
This was referenced Dec 15, 2023
This was referenced Jan 8, 2024
@tilk tilk mentioned this pull request Mar 28, 2024
tilk pushed a commit that referenced this pull request May 14, 2024
github-actions bot pushed a commit that referenced this pull request May 14, 2024
@tilk tilk mentioned this pull request Sep 24, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

1 participant