lowRISC / lowRISC/ethernet

Inconsistent techniques for technology-dependent primitive handling

Open
#15 0 comments 0 reactions 0 assignees View on GitHub

Nobody has claimed this yet.

Dominant language
SystemVerilog
Stars
23
Forks
12
PR merge metrics
No merged PRs in 30d

Description

Technology-dependent primitives need to be swapped out according to the target (simulation, ASIC, Xilinx FPGA, Altera FPGA). There are three different techniques used in this repo to accomplish this in different places:

1. \`define Macros with \`ifdef statements
2. SystemVerilog parameters with `generate if` blocks
3. FuseSoC virtual cores

(1) is used in `ram_downsizer_w64_r8.sv` and `ram_upsizer_w8_r64.sv`

(2) is used wherever `parameter TARGET` is given, in the MAC and the top level

(3) is used in the rest of the project

The latter is the preferred approach in other lowRISC projects and the least intrusive into the HDL, but implementing it will require some refactoring of legacy MAC code.

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

Start by comparing ram_downsizer_w64_r8.sv and ram_upsizer_w8_r64.sv with the MAC and top-level locations that use parameter TARGET. Then trace the existing FuseSoC virtual cores and how the legacy MAC code selects technology-dependent primitives. Done means the project consistently uses the preferred virtual-core approach for simulation, ASIC, Xilinx FPGA, and Altera FPGA targets.

Written by the indexing model from the issue text.

Assessment

Domain
build-system, embedded-iot
Issue type
Refactor
Difficulty
5/5
Estimated time
Over a week
Activity status
Quiet
Clarity
Needs clarification
Newbie friendliness
30/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.