fpga-mafia / fpga_mafia Goto Github PK
View Code? Open in Web Editor NEWDesigning a Multi-Agent Fabric Integration Architecture to run on de10-lite FPGA.
License: MIT License
Designing a Multi-Agent Fabric Integration Architecture to run on de10-lite FPGA.
License: MIT License
Break the tasks into milestones (according to dependency)
Design a simple "xor" module + tracker
source/cache
verif/cache/tb
modelsim/cache
target/cache
Add a directory called "cache" under the "source" directory.
In the directory add a file called "README.md"
In the file, please write a short description of the project you are starting as you understand it. (1-3 paragraphs)
Close this issue using a commit with the comment "close #<issue_number>"
DO be able to commit, you may need to make a small change.
Recommend changing one of the READMEs.
Using the "host" (personal computer) python terminal allows communication with the "device".
Load programs & data to the FPGA using the UART
router - create the router folders placeholders
align all the trackers to Q102
Please add the correct directories & READMs in the following hierarchies:
big_core - support RGB mode VGA SW
Big_core - move the tracker logic to its own file, then use include in the tb
See reference in cache
welcome to use reference:
module round_robin
import utils_pkg::*;
(
input logic clk,
input logic rst,
input logic enable,
input logic [NUM_TQ_ENTRY-1:0] candidates,
output logic [NUM_TQ_ENTRY_LOG2-1:0] enc_winner
);
logic [NUM_TQ_ENTRY-1:0] cur_winner;
logic [NUM_TQ_ENTRY-1:0] last_winner;
logic [NUM_TQ_ENTRY-1:0] mask_out;
logic [NUM_TQ_ENTRY-1:0] mask_candidate;
logic [NUM_TQ_ENTRY-1:0] first_top;
logic [NUM_TQ_ENTRY-1:0] first_bottom;
logic hit_top;
`LU_RST_EN_DFF(last_winner , cur_winner , clk, enable, rst)
always_comb begin
mask_out = '0;
for(int i =0; i < NUM_TQ_ENTRY; i++ )begin
mask_out[i] = (last_winner > i);
end
end
assign mask_candidate = (candidates & (~mask_out));
`FIND_FIRST(first_top , mask_candidate)
`FIND_FIRST(first_bottom , candidates)
assign hit_top = (|first_top);
assign cur_winner = hit_top ? first_top : first_bottom;
`ENCODER(enc_winner, cur_winner)
//====================
// winner[1:0] = 2'b10 ;
// mask_out[3:0] = 4'b0011;
// candidate[3:0] = 4'b1101;
// first_top[3:0] = 4'b0100;
// first_bottom[3:0] = 4'b0001;
endmodule
Create something similar to the RVC_ASAP memory wrap
Make sure to solve the 32 bit alien access withing the mem_wrap and NOT in the big_core module
Create a ditectaed test to check all the memory access lw, lh, lb, lhu,,lbu, sw,sh,sb
You may use the current implementation we designed together.
I would like to be able to read your README for each model and execute your "local" core.
Eventually, you will modify the core to be the one we need. (3/7 stage Pipeline)
Please mark yourself as done once you pushed a solution to a branch
Once you are all done, you may close the issue as completed
big_core - support Key board interface in SW
@danielk532
Add a directory called big_core.
In the directory add a file called "README.md"
In the file, please write a short description of the project you are starting as you understand it. (1-3 paragraphs)
Scaledown resolution and support RGB.
Explain the cases of WR after Wr to the same CL
Explain Rd After WR to same CACHE line with word miss (HIT MB + MISS WORD)
Explain Rd After WR to same CACHE line with word HIT ( HIT MB + HIT WORD)(response from MB and not the Pipe)
How the fill is used for both WR miss fill & Read
How the RD miss will stall the Core.
How the MB merges the Writes & the Fills
How the FIll with a "rd_indication" will go through the pipe to answer and send the rd response in q3.
How do we never allocate a new entry for the request to the same CL.
The MB is a structure that works per TQ entry.
I may have read this already, but it's a good idea to reread it - mainly the part that you did not understand.
Please mark this as done once you are all able to access this reposetory
Close this issue using a commit with the comment "close #<issue_number>"
DO be able to commit, you may need to make a small change.
Recommend changing one of the READMEs.
peek
poke
fwrite/printf
scanf
draw line
draw
big_core - support Key bord interface in HW
Example:
When running python build.py -test alive -debug -full_run -proj_name big_core
I expect that if we had an HW compilation error, the build wouldn't continue to the simulation stage.
big_core - fix build + TB to create a target/big_core/test_reults/<test_name>
This directory will contain the tracker's output per test.
(Currently, the tracker output override each other)
Instructions for running the build.py
adding it as a discussion
Has 3 flags:
Make sure the trk.log files get the unique directory of the specific test
cache_pipe_struct
add the fields:Each cycle has the sampled version and the updated version ( cache_pipe_lu_q2 ,pre_cache_pipe_lu_q2)
//====================
// Pipe stage 1
//====================
always_comb begin
cache_pipe_lu_q1 ='0; //this is the default value
cache_pipe_lu_q1.valid = ...q1 ;
cache_pipe_lu_q1.opcode = ...q1 ;
cache_pipe_lu_q1.set = ...q1 ;
cache_pipe_lu_q1.tag = ...q1 ;
cache_pipe_lu_q1.fill_data = ...q1 ;
end //always_comb
//====================
// Pipe stage 2
//====================
`DFF(pre_cache_pipe_lu_q2, cache_pipe_lu_q1, clk)
always_comb begin
cache_pipe_lu_q2 =pre_cache_pipe_lu_q2; //this is the default value
cache_pipe_lu_q2.set_ways_valid = ...;
cache_pipe_lu_q2.set_ways_tags = ...;
cache_pipe_lu_q2.set_ways_mru = ...;
cache_pipe_lu_q2.set_ways_hit = ...;
cache_pipe_lu_q2.hit = ...;
cache_pipe_lu_q2.miss = ...;
cache_pipe_lu_q2.data_array_address = {pre_cache_pipe_lu_q2.set , pre_cache_pipe_lu_q2.set_ways_enc_hit};
end //always_comb
//====================
// Pipe stage 3
//====================
`DFF(pre_cache_pipe_lu_q3, cache_pipe_lu_q2, clk)
always_comb begin
cache_pipe_lu_q3 =pre_cache_pipe_lu_q; //this is the default value
..
end
Use the struct to replace the current logic in the cache_pipe.
logic [NUM_WAYS-1:0] way_tag_match_q2;
logic [WAY_WIDTH-1:0] way_tag_enc_match_q2;
logic valid_match;
logic [WAY_WIDTH-1:0] way_tag_enc_match_q3;
Go over Cache HAS - FIx the comments, Add your own content & Notes:
Make sure you add time, pc, opcode, address, and data.
The data in read is the load data, and the data in write is the store data.
Please mark yourself as done once you pushed a solution to a branch
Once you are all done, you may close the issue as complete
step 1:
Create the i_mem + d_mem as you see here:
https://github.com/amichai-bd/riscv-multi-core-lotr/tree/master/source/gpc_4t/rtl
Add a new module called "mem_wrap" which holds 2 modules:
Please make the standard interface to match the FPGA style - see reference here:
https://github.com/amichai-bd/riscv-multi-core-lotr/blob/master/source/gpc_4t/rtl/d_mem_wrap.sv
Please note: the FPGA std memory is only 32-bit aligned!
You must ensure any non-32-bit aligned request will read/write correctly!
This is done by shifting the data & enable it correctly!
Please review the CACHE HAS.
https://1drv.ms/u/s!Apu_j5InzXdpgdB5rEItxXRam84YPQ?e=FQYR2w
Ask any questions on the document (using the comment option in the word) and start working on fixing up the document.
Each one needs to make there own branch, make a change (or add new files)
then push to origin & send a pull request
big_core - move the c program to verif/big_core/test/<test_name>.c
Has 3 flags:
-app | compile the RISCV SW into SV executables
-hw | compile the RISCV HW into simulation
-sim | start simulation
Choose which test to run - plus+args to point to the correct 'memory' that was generated. - Leave this for last.
Make sure the trk.log files get the unique directory of the specific test
Use references from other HAS.
The most important is define interface & interface constraints.
Make sure to use word correctly!
Techinion:
https://technion.zoom.us/rec/share/SKocYROkZP3Yz4OApGyAbb343mj8cjjD174V4C5hsLvBIt4NpPsYtCajKdDl12hk.4Z6ekW9gF3u048ml?startTime=1666073026000
Use this password to connect:
2+.RqPC+
Please mark your name done once you watch both presentations:
The last one to mark his name, please colse this issue with a comment.
Please see the link:
https://1drv.ms/u/s!Apu_j5InzXdpgdB5rEItxXRam84YPQ?e=gS34p0
You have a template and reference to start the Big core HAS
Switch
LED
7SEG
Button
@yeonatanPerelman & @ShmuelSfez
Add a directory called "mesh" under the "source" directory.
In the directory add a file called "README.md"
In the file, please write a short description of the project you are starting as you understand it. (1-3 paragraphs)
Close this issue using a commit with the comment "close #<issue_number>"
DO be able to commit, you may need to make a small change.
Recommend changing one of the READMEs.
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.