RISC

Design Concept

  • 4 Stage pipeline

  • Design mostly according the handouts

  • Some problem need to deal with

  • Memory and Register Read need one more cycle

  • Synthesis library don't provide preload

Design Concept

  • Connect the memory address with previous stage

  • When the posedge clock trigger, can get right data without another cycle

  • The register read don't need another clk, so just care the WB stage

Design Concept

Preload

  • In order to put the memory in risc, testbench will load memory first

  • The other signal loading to determinate the memory is loaded by testbench or instruction

Forwarding

  • If the DOF stage need EX stage register, need forwarding

  • Use comp module to determinate select whether need take the forwarding data

  • WB stage may implement forwarding to reduce the cycle time. However, no time to implement

Branch Prediction

  • If branch happened, need flush

  • Because the memory problem, flush need delay a cycle

Completion

Completion

  • Fully 4 stages pipeline (normal)

  • Forwarding instead of memory stall to deal with hazard (normal)

  • Branch prediction (normal)
    with verilog(nightmare)

  • Synthesis with memory (epic)

  • Compile flag of design_vision (normal)

Test

Provide testcase

  • The 1, 2, 3 correctness is correct

  • The other testcase only check the synthesis v.s RTL result

  • Generate Random testcase
    2048 random data
    2048 random valid instruction

Other

Compile flag

Text

  • clock period 10

  • Area reduce 25%

RISC

By zlsh80826

RISC

  • 473