Git Product home page Git Product logo

iob-lib's People

Contributors

andremerendeira avatar arturum1 avatar behzadjoudat avatar codinguniv avatar jdlopes avatar jjts avatar martimrosado avatar microsharjeel avatar miguelareis avatar p-miranda avatar pedroantunes178 avatar pedrompt97 avatar roby2014 avatar zettasticks avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

iob-lib's Issues

incremental setup

does it work ?

If I changed a file in the core or lib repos will only these files be copied to build lib a not trigger unnecessary compilations?

no need for register wdata signals

mkregs.py is unnecessarily complicated by having a wdata signal for each input register.

For example, IOB_I2S_TDM_TXBCLK_POLARITY_wdata isn't needed, one can use wdata simply. A different name for the same wire is being created for each write register for no reason.

Now, IOB_I2S_TDM_TXBCLK_POLARITY_en is important because it selects the register to write. Hence the instance after the correction should be:

`IOB_WIRE(IOB_I2S_TDM_TXBCLK_POLARITY, 1)
iob_reg #(.DATA_W(1), .RST_VAL(0))
iob_i2s_tdm_txbclk_polarity (
.clk (clk),
.arst (rst),
.rst (rst), //SERIOUS MISTAKE !!!

//this is unrelated to this issue but DO NOT connect the async reset signal to anything other than flip-flop async reset inputs!! If the sync reset is not being used, simply tie it to 0:
.rst (1'b0)

   .en         (IOB_I2S_TDM_TXBCLK_POLARITY_en),
   .data_in    (wdata[1-1:0]),
   .data_out   (IOB_I2S_TDM_TXBCLK_POLARITY)

);

Simplify mkregs.py and save future maintenance.

iob_fifo_async: implicit definition of `clk_i`, `cke_i` and `arst_i` wires

when using iob_fifo_async module, for (R_DATA_W > W_DATA_W) and (W_DATA_W == R_DATA_W) cases, we get the following warnings:

../src/iob_fifo_async.v:224: warning: implicit definition of wire 'clk_i'.
../src/iob_fifo_async.v:225: warning: implicit definition of wire 'cke_i'.
../src/iob_fifo_async.v:226: warning: implicit definition of wire 'arst_i'.
  • the clk_i, cke_i and arst_i wires are defined in a generate case scope that is not available for iob_asym_converter.vs scope

These warning should be fixed when we perform verilog generates in python

mkregs shoudl connect to ios

the _swreg_gen instance portmap should use

.iob_avalid_i(iob_avalid_i), etc

Not

.iob_avalid_i(iob_avalid), etc

Rationale: the conversion to a standard interface (eg, AXI LITE) should always be done in an external wrapper

scripts/mkregs.py: input using dictionary and no parse

Motivation (Problem)

-- every time I need to add or modify a register, I forget the meaning of the fields

Side Benefit

--without parse, the code will be much simpler

Objective

change

IOB_SWREG_W(TXSOFT_RST, 1, 0, -1, 0, 1) //Soft reset.

to

{'Name': 'TXSOFT_RST', 'Type': 'W', 'Width': 1, 'ResetValue', Address: -1, 'AdressWidth': 0, 'AutoLogic': 1}

So, I know the fields I am writing all the time, even if I have to copy one of the existent

Use a .json file

Place an example mkregs.json in iob-lib's root

Priority: HIGH

verilog2tex does not extract parameter's typical values

Probably related to the removal of the header parse by the assignee and put back by the issue author.

Note that header_parse was moved from mkregs.py to verilo2tex since it is only used in the latter.

However, either the headers passed are wrong, or another problem.

file produced by hw_defines.py cannot be processed by verilog2tex.py

This is caused by

ifndef VH_IOB_I2S_TDM_CONF_VH define VH_IOB_I2S_TDM_CONF_VH

...

`endif // VH_IOB_I2S_TDM_CONF_VH

Fix suggestions

  1. are the above necessary in Verilog? I have never noticed that it is, but I may be wrong

  2. improve hw_defines to deal with it.

Maybe

`define VH_IOB_I2S_TDM_CONF_VH 1

solves the problem

asic2tex.sh

This script is wrongly named and should be converted to a python script (because python3 is called in most lines ) and moved into software/python temporarily

Correct name: genus2tex.py (it only supports this tool and not asics in general)

Later, when there is a proper asic flow it should be moved to the build directory

mkregs.py

the instance should connect to top-level ios, not internal wires

.iob_avalid_i(iob_avalid_i)

not

.iob_avalid_i(iob_avalid)

This is because conversion to the interface types should only occur in the wrappers

branch: if_gen -> allow specifying parameters when defining interface.

Issue:
Each interface defined in the .py file requires a new set of parameters. Currently, those parameters have to be defined by hand. It would be nice to be able to define the parameters in the python setup. If not defined, the wires would be generated with parameters like they are now.
Example:

  {"interface": "peripheral_axi_wire", "AXI_ID_W": "1"},

quartus compile flow

it would be best to have a single .tcl file that compiles the design instead of a sequence of steps in the makefile
(for Vivado this seems to be the case)

how can we distinguish between netlist (qxp) compilation and system compilation to run the design on an FPGA device?

IOB_PRAGMA

create this concept and replace

//PHEADERS -> IOB_PRAGMA_PHEADERS
//PWIRES -> IOB_PRAGMA_PWIRES
//PORTS -> IOB_PRAGMA_PPROTMAPS

a new one
IOB_PRAGMA_PERIPHS
to insert peripheral instances instead of doing it before end module

iob-lib/python-setup: copies software of modules that are only for simulation porpoise.

Currently, in IOb-SoC-opencryptolinux in the Setup phase the software of the iob-uart is copied. The iob-uart is only used in simulation, therefor the software is not required. It causes conflicts with the iob-uart16550 software. Even after renaming all the iob-uart16550 functions so that these have a different name from the iob-uart functions.

mkregs.py must support core parameters

TXFIFO_LEVEL = {rw_type="R", nbits=1+param['TXFIFO_ADDR_W'], rst_val=0, addr=-1, addr_w=1, autologic=true, description="Number of filled positions in the FIFO."}

Mkres.py generates hard code and comprises instance pre-silicon confugurability!

tester must have iob-soc block groups

@classmethod
def _setup_block_groups(cls):

if the iob-soc groups not preset it gives an error

when the tester runs iob_soc.py, it thinks the iob_groups are for the tester and complains about not having such groups

missing $(LIB_DIR)/ prefix

setup now runs from the core directory and not from the lib directory

Hence, for all hardware.mk files, the above prefix must be added to all lib files to be copied to the core build directory. This has already been done for the hardware.mk lib files used by iob-cache

See hardware/ram/iob_ram_sp/hardware.mk for instance. Test and update iob-uart after this is done.

verilog2tex: there should be //IO pragma for interface signals

otherwise, IOs in internal modules will inadvertently appear in the doc

another advantage of having this new pragma is that verilog2tex will work regardless if the user chooses to use the lib IO macros or not

if you decide to implement test in i2s please

bad function name

for example in the uart

def _run_setup(cls):
# Hardware headers & modules
iob_module.generate("iob_s_port")
iob_module.generate("iob_s_portmap")
iob_lib.setup()
iob_utils.setup()
iob_clkenrst_portmap.setup()
iob_clkenrst_port.setup()
iob_reg.setup()
iob_reg_e.setup()

Submodule functions x.setup() are non-sensical as one just wants the sources and not set them for simulation or fpga

It should be
iob_lib.cpy_src()
not
iob_lib.setup()

verilog formatter

Upon Setup, run Veritable to check the Verilog code inside the current repo and produce an error if not conformant.

The user should use this error to fix the Verilog files in the repo until Setup is not giving this error anymore.

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.