Giter Site home page Giter Site logo

unihd-cag / odfi-rfg Goto Github PK

View Code? Open in Web Editor NEW
4.0 4.0 1.0 4.66 MB

TCL based extensible Register File Generator

Home Page: http://unihd-cag.github.io/odfi-rfg/

License: GNU General Public License v3.0

Shell 0.45% Scala 31.22% Tcl 50.67% Verilog 13.10% Forth 0.08% XSLT 3.88% CSS 0.61%

odfi-rfg's People

Contributors

nburkhardt avatar richnou avatar swittka avatar tm90 avatar

Stargazers

 avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar

Forkers

richnou

odfi-rfg's Issues

address aligner

Update the addressing scheme to allow aligning parts of the registerfile to a defined address.

wo field trigger

Also add a register field if it is write only and has a trigger ID

hardware_rreinit

A rreinit_source register triggered from the hardware interface

Verilog Generator not writing any data

I found some issues in the VerilogInterface module for Verilog generator.
Maybe they are linked to non-committed code because the sources are not correct.

I committed a few preview fixes on the associated branch

Confusing Address Map in generated verilog code

The address map in the generated files is confusing. Since the 3 least significant bits are discarded through 8-byte granularity the actual address that must be applied is the currently calculated address shifted right by 3bit.

Hope the request is clear :)

General Generator Architecture

Example config file:

package require rfg
package require generator

read_rf info.rf

generator verilog {
    destination_file = ""

}

generator e {
        dest...
}

parameter for external registerfiles

Write a parameter.tm which allows adding parameters to external registerfiles, to define which one the registerfile wants and which ones are required or optional.

Loop variable rfs_to_rfg

Variables in loop statements are converted wrong (missing $) in the rfs_to_rfg conversion tool.

e language generator

Generate e language files for the register file testbench.

Generate 2 files:

  • reference modell of the register file
  • connect module between uvc and reference modell

internal RegisterFiles

Generate internal Registerfiles with the verilog-generator

Description:

registerFile test_rf {
   internal test_extern_rf.rf externRF
}

should be generated as internal instance

address calculation bug

In the address calculation the block ids do not influence the object size which leads to wrong calculated addresses in depth hierarchical rf designs

Generator C/C++ Defines

Create a generator which generates C/C++ Defines for software to support accessing the registerfile from C/C++ Code:

The defines should be like:

#define register_name0 0x000
#define register_name1 0x008
...

But maybe there is a better solution than C/C++ #defines

unit-test environment

A tcl script which searches the unit test folder for *.unit-test.tcl files, and runs them.
For this each unit-test tcl file should be renamed to name.unit-test.tcl as an identifier.

Enhanced counters

  • Do an evaluation of counters an their functionality.
  • Maybe add match signals or a overflow signal to the hardware interface

refactoring register file verilog generator

Refactor the register file verilog generator in three steps:

  • tcl verilog interface (to hide verilog syntax specifics)
  • evaluate generall registerfile structure and change the register file verilog generator to it
  • use small functions instead of variable and if structure

RegisterFile with one RAM and software rw permission causes verilog error

If you are generating a registerfile with just one RAM and software rw access and no hardware rights, the output verilog will have a syntax error because of a comma error in the blackbox definition.

.rf description causing the error:

registerFile ramRF {
    ramBlock TestRAM {
        width 16
        depth 32
        software rw
    }
}

no ifdef in generated verilog

Hardware dependent features should be implemented via the registerfile description.
(Especially async and sync reset)...

Empty always blocks

At the moment there are some cases, where the verilog generator generates empty always blocks, these cases have to be eliminated.

script to read in verilog defines

A little script which reads in verilog defines as tcl variables.
This can be handy for the generation of registerfiles with parameter.

Invalid Address Signal for write operation

Depending of the definition on when the invalid address signal should appear there may is a bug in the hardware generation for write only registerfile objects. (To be confirmed...)

external ramBlocks

Add generation of external ramBlocks in the verilog-generator.

Description:

ramBlock RAM {
    external
    width 16
    depth 256 
    software rw
    hardware rw
}

Will generate input and outputs for an external ramBlock.

e generator for hw interface

generator for e, which builds a top.e file for the hw interface of the register file. In this file an UVC is instantiated for each field/ramblock of the register file.

Interrupt Trigger Enable

For an external Trigger block trigger signals should be generated when they are not existing:

register r1 {
    field f1 {
        width 1
        hardware {
            rw
            trigger "TriggerID"
        }
    }
}

Also the triggers should have IDs trigger with the same ID should be ored in an hierarchical way

fields for ramBlocks

verilog generation for ramBlocks with fields.

How it should be generated has to be defined.

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.