llvm / llvm/circt

[SV] Expose memory control signals for interfacing

Open
#623 2 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
C++
Stars
2.2k
Forks
524
Avg merge
3d 2h
Merged PRs (30d)
46

Description

While working with @mikeurbach to finish the details of implementing memories as discussed in #543 I am faced with the issue of interfacing the RTL code generated with a more general design, specially for loading data on the memories and reading back from them.

One way I have been able to achieve this (at least in the Xilinx architecture) is taking advantage of the dual port BRAM primitives. I have manually tweaked the RTL code generated and exposed the RAM control signals from inside the modules all the way up as input/outputs of the top level module. Then I control one of the ports of the BRAM modules with an external processor using an AXI BRAM controller and the other port is controlled by the RTL circuit. This allows me to load the data I need on the memories, and read back once the results have been calculated by the accelerator.

My question is: is there an easy way to expose the memory control signals (load address[output], write address[output], load data[input], write data[output], and write enable [output]) as input/output of the top level module? Alternatively, is there a roadmap for integration with external circuitry for modules involving memories?

Contributor guide

No contributing guide indexed for this repository

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

The issue names no files, tests, or implementation entry point. Start by reviewing issue #543 and the memory-related RTL generation described here; define how load address, write address, load data, write data, and write enable should be exposed for external circuitry, then document the supported interface and its completion criteria.

Written by the indexing model from the issue text.

Assessment

Domain
compilers
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
20/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.