Skip to content

Latest commit

 

History

History
19 lines (12 loc) · 1.43 KB

nonblock_load_issue.md

File metadata and controls

19 lines (12 loc) · 1.43 KB

Non-block Load Tracer for SweRV-EH1

SweRV-EH1 implements non-blocking load path for load instructions without any dependency in next instructions. Processor jumps to next instruction while non-blocking load is being done. Results for non-blocking load are written back to gpr later.

Issue

Syncing non-block load result with it's respective PC and instruction could not be done due to irregular difference of cycle between them.

Solution

A separate log for nonblock log is generated by the tracer. Before Post-sim comparison, core log is updated using nonblock load log information via a postfix python script.

Tracer Update for Non-block Load

GPR can by updated either from writeback from i0 writeback, i1 writeback or from non-block load result. To trace this result, tracer signals were added at the writeback stage for enable, gpr address being written to and non-block load result. A separate nonblock load log is written to whenever nonblock load write enable is active. Log contains information regarding simulation time, cycle, gpr being written to and data being written back.

Post-sim Core log Update

Purpose of the script nb_postfix.py is to find and replace the non-block load instruction in trace core log and update it with valid results.

Post-sim Sequence Update

The postfix script is called in sim.py to update the trace core log before csv generation. CSV is generated from core log for post-sim comparison.