Coder Social home page Coder Social logo

franout / dlx_project Goto Github PK

View Code? Open in Web Editor NEW
4.0 0.0 0.0 135.42 MB

Deluxe RISC processor

License: GNU General Public License v3.0

VHDL 50.03% Assembly 0.03% Shell 0.03% Perl 0.02% TeX 0.12% SystemVerilog 0.27% Tcl 0.42% Stata 0.04% Python 0.01% Batchfile 0.13% Verilog 48.89%
hardware-designs dlx systemverilog microprocessor risc-processor simulation synthesis testbench computerarchitecture

dlx_project's Introduction

DeLuXe RISC processor project

Project Status: Active โ€“ The project has reached a stable, usable state and is being actively developed. Build Status

RISC processor architecture designed by John L. Hennessy and David A. Patterson.

Microelectronic System course (MsC in Embedded Systems Engineering) @ Polythecnic of Turin, Italy

Table of Contents

Clone

Clone this repo to your local machine using and feel free to contribute!

$ git clone https://github.com/franout/DLX_project.git

Setup

You need to have installed a HDL simulator tool (for the simulation) and a synthesis tool (in case you want to synthesize the design). In this project Questa Sim 10.7 and Design Compiler have been used.

Architecture

The DLX is essentially a cleaned up (and modernized) simplified MIPS CPU. The DLX has a simple Big Endian 32-bit load/store pipelined architecture, somewhat unlike the modern MIPS CPU.

  • DLX top level entity architecture

  • Customizable hardware parameters (pre-synthesis)

    • IR size, bitwidth of Instruction Register
    • PC size, bitwidth of Program Counter

Software

For creating creating the hex dump file to be used in the simulation (loaded in the Instruction Data Ram):

  $ ./software/assembler.sh {ASM_FILE_PATH}

The produced hexadecimal file should be copied in the memories folder.

Moreover, in the memories folder it is present also a python script for generating random data suitable for the DRAM.

  $ ./hardware/dlx/test_bench/memories/generate_random_values_dram.py

Simulation

For exectuting the simulation of the DLX, it is necessary to execute:

  $ ./scripts/simulation.sh

It will compile the needed files for executing the simulation. Moreover, there are two types of simulations, one with the Universal Verification Methodology architecture and the other one with the normal configuration (IRAM-DLX-DRAM).

Simulation

Synthesis

For executing the synthesis of the DLX:

  $ ./scripts/synthesis.sh

It will execute different synthesis with different clocks (starting from unconstrained design) and area footprint. Moreover, it will be synthesized taking into account a possible Scan chain (DfT) for a further production phase.

Layout

For executing the physical design of the synthesized DLX:

  $ ./scripts/physical_design.sh gui/no_gui

It will execute the physical desing of differt design point ( for different clock values and area).

Tests

For functionally verify the microprocessor refers to the testbench in System Verilog. They are divided for each stage and control unit for regression test

  $ ./scripts/regression_test.sh

Documentation

For a more detailed information see Wiki's project.

Useful Link

Reach out to me at one of the following places!

License

GNU General Public License v3.0

dlx_project's People

Contributors

franout avatar

Stargazers

 avatar  avatar  avatar  avatar

dlx_project's Issues

pro

  1. Optimize power consumption from an architectural point of view (OP-
    TIONAL) Improve performance using: Parallelizing, pipelining, Feedback, Clock
    Gating, Isolation...

pro

Control hazard (OPTIONAL) Implement one or more of the techniques to prevent
stall as mentioned during classes as instruction queue for jump (IQ), branch prediction
using a small branch history table.

pro

Caching (OPTIONAL) Add a small data cache (RTL) between the main mem-
ory and the CPU; define type of association, a coherency policy and a replacement
strategy. (Of course the CU must be updated accordingly)

pro

  1. Data path (OPTIONAL) The data path can be extended for each of the instruction
    you choose to add. Furthermore, independently from the instruction, try to optimize
    the microarchitecture so that the critical path is reduced (e.g. for the ALU you can
    choose one or more of the arithmetical structures analysed during lectures or suggested
    by the teacher.

pro

Physical design (OPTIONAL) Post physical design simulations, clock tree syn-
thesis and even crosstalk analysis would be appreciated in the final report.

pro

Advanced synthesis (OPTIONAL) Force further optimization to the design: try
to reduce power consumption, perform a post synthesis VHDL simulation, so that
realistic timing and power simulation with a real test bench can be performed (you
will ask suggestions on this points).

Data path (MANDATORY) You should describe in VHDL (or Verilog) at RT

level all the data path components necessary to fulfill the instruction subset defined
at previous points. Of course you can reuse the blocks you already described in
previous labs. Describe one or more intelligent assembler programs (COMMENTED)
so that these instructions can be meaningfully checked.

pro - reccomendedd

  1. Instructions subset (RECOMMENDED) The following instructions (a subset
    or all of them) could be added in order to achieve pro functionality:
    addu, addui, jalr, jr, lb, lbu, lhi, lhu, sb, seq, seqi, sgeu, sgeui, sgt, sgti, sgtu, sgtui, slt,
    slti, sltu, sltui, sra, srai, subu, subui, mult (using integer registers: something should
    be modified).

pro

Windowing (OPTIONAL) Use the windowed register file to support routine con-
text switching and complete the control unit to support it.

pro pro pro

Whatever you want not mentioned before... (FUNDAMENTAL) Feel you
FREE to add features to your personal DLX!

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.