CDL Modules
riscv_i32c_pipeline

Detailed Description

Modules

module riscv_i32c_pipeline::riscv_i32c_pipeline ( clock  clk,
input bit  reset_n,
input t_riscv_irqs  irqs,
output t_riscv_mem_access_req  dmem_access_req,
input t_riscv_mem_access_resp  dmem_access_resp,
output t_riscv_fetch_req  ifetch_req,
input t_riscv_fetch_resp  ifetch_resp,
output t_riscv_i32_coproc_controls  coproc_controls,
input t_riscv_i32_coproc_response  coproc_response,
input t_riscv_config  riscv_config,
output t_riscv_i32_trace  trace 
)
Parameters
[in]irqsInterrupts in to the CPU
[out]traceThis is just the processor pipeline, using a single stage for execution.

The instruction fetch request for the next cycle is put out just after the ALU stage logic, which may be a long time into the cycle; the fetch data response presents the instruction fetched at the end of the cycle, where it is registered for execution.

The pipeline is then a single stage that takes the fetched instruction, decodes, fetches register values, and executes the ALU stage; determining in half a cycle the next instruction fetch, and in the whole cycle the data memory request, which is valid just before the end

A coprocessor is supported; this may be configured to be disabled, in which case the outputs are driven low and the inputs are coprocessor response is ignored.

A coprocessor can implement, for example, the multiply for i32m (using riscv_i32_muldiv).