Giter VIP home page Giter VIP logo

ugmtfirmware's People

Contributors

dinyar avatar jlingema avatar thomreis avatar

Watchers

 avatar  avatar  avatar

ugmtfirmware's Issues

Can we merge sort stages into one generic one?

Currently there are two modules with almost identical functionality for the first sort stage and one module with very similar functionality for the second sort stage.

These should be merged into one if possible. The same applies for the "count_wins" function. It is implemented in 4 different versions with almost identical functionality.

Isolation assigned to empty muons

Currently the isolation is assigned to all final muons, i.e. also to those that are actually empty. This leads to output muons with all-zero values except for isolation.

Fix coordinate-based ghost busting

Currently coordinate-based ghost busting is broken as it implicitly expects absolute coordinates, but doesn't handle wrap-around. We should find out whether we will receive relative or absolute coordinates and then implement the unit accordingly.

Valid bit should be global for a bunch crossing

Currently the valid bit is set per muon. This leads to problems when assigning the valid bit to output energy sums and extrapolated coordinates. It also may produce problems with synchronisation. It should therefore be set per bunch crossing.

Final sorter breaks ties in the wrong way

In case of a tie between two muons in the final sorter the one with the higher index wins within a track finder. This should be reversed. The muon with the lower index (i.e. the one sorted first in the stage before) should win.

Clean up sort and cancel testbench

Currently the testbench for the sort and cancel unit is rather messy. It should be refactored to clean up the output, all inputs have to be properly reset in the beginning. Furthermore all duplicate code has to be factored out into procedures.

Add debugging output to serializer testbench

During the automatic checking the serializer testbench should output more detailed errors in the event of an error, similar to what was implemented in #25. This would mean to show (at least) the mismatched frame and what was expected, but maybe also the frames +/-1.

Register debugging outputs in ugmt serdes module

Currently both the isolation bits as well as the final muons are registered in the ugmt serdes module while the debugging outputs (intermediates, extrapolated coordinates and final energies) are not. This should be fixed in the spirit of consistency. (They are delayed by one additional bx in the sorter unit for this reason.)

Fill extrapolation and isolation LUTs

The extrapolation and isolation LUTs are currently empty. This makes them output 'U' in simulation and '0' in hardware. At the latest before testing the isolation logic they should be filled with defined data.

Add IsolationLUT.vhd to .dep file

The isolation LUT vhd file should be added to the dep file. In this way it is automatically added to the project and also available in simulation.

Fix LUT table.

The table summarizing all LUTs is severely out of date. This should be updated before we start testing IPbus.

Valid bit should be propagated from inputs

Currently we set the data valid bit for each word in a fixed structure: Positions 0 and 1 are always invalid while all others are always valid. This could break alignment of following cards and should thus be changed to propagate data valid state from downstream.

Implement isolation memories with generated RAMs

Currently the isolation assignment memories are implemented with inferred block RAMs, we should change this to generated RAMs as this turns out to be more efficient. We also have more control over the exact implementation that way. This is related to #6.

Fix sorting (draws are dealt with backwards).

The sorting logic solves "draws" (equal sort ranks) by ranking the muon with the higher index higher. In the final sorter the index range has been inverted, so for draws sorting is inverted with regard to the first-level sorter. This is mainly a cosmetic problem, but should be fixed.

Diagram for uGMT

Draw a diagram of the uGMT logic including all flip-flops etc.

Register debugging outputs in GMT module

Currently only the final muons are registered in the GMT module while the intermediates are asynchronously propagated. To increase consistency this should be changed.

Intermediate outputs not aligned to final muons

Currently the debugging outputs (muons and sort ranks) are not aligned with the final muons. At the moment it seems as though the 3rd muon is from the correct bx, but put into the slot for 1st muon, while 1st and second muon are shifted by one and are late by one bx.

Add outputs for isolation debugging signals

Still need to add the outputs for the debugging signals for the isolation module to the serialization stage.

This involves two steps:

  • Actual code to add output links
  • Modification of area constraints for serializer.

Empty link 14

Via link 14 nothing is being sent. Is this on purpose?

Move delay for intermediates to sort and cancel unit

Currently the delay to sync the intermediate muons is placed in the GMT unit. This means that the testbench has to implement this delay again. Furthermore it is logically not optimal as this should be part of the sort and cancel unit.

Output alignment

In the newest version (ugmt_v0_2_0) all outputs (final, intermediate and ranks) seem to come 2 frames too late (i.e. not aligned with the 0vX 0vX 1vX 1vX 1vX 1vX pattern of the output muons)

Add monitoring for synchronisation status in deserializer

We're not clear yet whether the first 32 bit word coming out of the inputs is delayed by a fixed number of 240 MHz clocks with regard to the 40 MHz LHC clock. (In simulations e.g. the delay is 3 clks after start of the simulations and 2 clks after sending a reset.)

There should be monitoring logic that detects when the valid bit transitions from low to high and counts how many have passed before this since clk40 went from low to high. (This happens once per orbit, not once per bunch crossing.)

Write testbench

Write a testbench that will only test the algorithm part, excluding the serdes stages.

Muons are filled in wrong order

In the deserialization stage the muons are filled in the wrong order. i.e. the first muon to arrive is put into the third bin while the first bin is filled with the third muon to arrive.

"Empty" muon could cancel out a real one

Currently a muon marked as empty (this happens when pT == 0 at the input) can cause another muon to be cancelled out. This can theoretically happen when the "empty" muon has pT == 0, but it's fields for eta, phi, and quality are set to some value. In this case the cancel-out unit would match it with a close-by muon and could then theoretically decide to cancel out the real muon.

Therefore the empty bit should be checked in the cancel-out units.

Updating the address table

It looks like some entries are missing in the address table. Specifically, the rank-lut seems not to be there? Is it just missing in the repo or is it not hooked up to IPbus?

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.