Skip to content

Undo the hack that tries to unify multiple SRAM types #17

@steveri

Description

@steveri

Fftgen lets you choose among multiple SRAM types e.g. 1port, 2port, and dpump (double-pumped).

Existing source code uses a single parameterized Genesis2 file fftram.vp for all three SRAM types, accomplished by way of various hacks including letting Perl choose between blocking and non-blocking assignments e.g.

  • 2port SRAMS (2port, dpump) write on EVERY clock edge (?), uses non-blocking assignment "<="
  • 1port SRAMs only write on posedge clock, uses blocking assignment "="

Anyway, bottom line is that the code is horribly tangled up and begs for a better solution.

E.g. should probably have separate modules something like sram_1port, sram_2port, sram_dpump or something.

Here's my notes FTW

/nobackup/steveri/github/fftgen/rtl/fftram.vp

  //; # Yet another terrible hack
  //; # Some configs work only w blocking assignments and others w non-blocking :(
  //; # $ass = "=";   # ver:  1port 2port ~dpump;  vcs  1port 2port dpump
  //; # $ass = "<=";  # ver: ~1port 2port  dpump;  vcs ~1port 2port dpump
  //; my $ass = ($SRAM_TYPE eq "TRUE_1PORT") ? "=" : "<=";

BETTER SOLUTION?
- separate files fftram_{1port,2port,dpump} w inlined SRAM
- AND/OR? separate files sram_{1port,2port,dpump}

Metadata

Metadata

Assignees

Labels

No labels
No labels

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions