Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
treewide: VC router + additional traffic generation & analysis (#47)
* creating files, mux, rr_arbiter * Adjustments to follow coding guidelines and hopefully pass linting checks * Not definite change as not changed in template: add vc_id, loohahead to hdr and add route_dir_e which allowes several output ports * floo_input_port, try to pass linting check * try to pass linting check * Fixed mistake in input port * Sa local stage in vc router * adhere to the holy laws of verible-lint * Added verible linter locally -> adhere to the holy rules of verible linter part 2 * sa global progress * fix mistake of having several data_v_i per port * work on transforming sa local outputs to sa global input * creating files, mux, rr_arbiter * Adjustments to follow coding guidelines and hopefully pass linting checks * floo_input_port, try to pass linting check * try to pass linting check * Sa local stage in vc router * adhere to the holy laws of verible-lint * Added verible linter locally -> adhere to the holy rules of verible linter part 2 * sa global progress * fix mistake of having several data_v_i per port * creating files, mux, rr_arbiter * Adjustments to follow coding guidelines and hopefully pass linting checks * floo_input_port, try to pass linting check * try to pass linting check * Sa local stage in vc router * adhere to the holy laws of verible-lint * Added verible linter locally -> adhere to the holy rules of verible linter part 2 * sa global progress * fix mistake of having several data_v_i per port * transform sa local output to sa global input in case of xyRouting * add select headerr mux to sa local, start lookahead routing * lookahead routing using floo_route_select * refactor sa local output to sa global input to use always_comb and int instead of genvar * adjust route_direction_e to have Eject at end, add dst_port_id to hdr, refactor floo_route_select to allow the index to be returned, to look at dst_port_id and to not return the one hot direction * typo in route_select * add credit_counter * reset route_direction_e values to ensure functionality remove leftovers of route_dir_e in lookahead * removed UsePortId from route_select as it would have required the corresponding hdr entry even if not needed. Added the (empty) connection to route_sel_id_o in floo_router * fix dimension mistake in credit counter * add vc selection * correct mistake in vc selection * add vc assignment * set vc_assignment_v to 0 if sa_global_v = 0 * remove unused param of vc assignment * fix typo in vc assignment * change read_enable_id to onehot in input port * change read_enable_id to onehot in input port pt 2 * change read_enable_id to onehot in input port pt 3 * map input to output and stage reg * add hdr FF, cleanup * start work on switch * Try to change the route_direction_e without failing tests * switch done * lookahead: allow source routing * add wormhole routing * cleanup floo_pkg and edit axi_pkg & narrow_wide_pkg in routing.py * adjust routing.py to follow pylint rules * fix issue of uninitialiyed port_id, adjust route_select to use port_id, remove usage of port_id from lookahead * add vc router to bender.yml and fix many mistakes * remove unused variables * start testbench for vc router, fix some errors * resolved many warnings, progress on tb * progress on vc router tb, got connectivity from North to South * cleanup rebase fckups and remove warning from test * remove unused variable which rebase readded * fix a verible lint error * vc router tb progress: test credits as well * add tb_floo_vc_router to gitlab ci * vc router tb progress: now tests all ports towards south, north, bugfix in credit_counter * vc router tb progress: test each vc to each vc done * test FVADA, dont display all info if Debug = 0 * refactor vc-router: dont need vc_id in sa_local, sa_global: just use onehot * test wormhole routing and fix wormhole routing * cleanup testbench * remove warning from vc_router * tb_floo_dma_mesh: change output fifo depth from 32 to more realistic 2 * add narrow_wide_chimney_cr * fix gitlab-ci, to also run tb_floo_dma_mesh_cr * add assertion that buffers are ready * Bugfixes in nw_chimney_cr and dma_mesh_cr * cleanup * fix wormhole routing * cleanup vc_assignment, add credit shortcut * typo in comment * update idma version * add file floo_input_fifo.sv * fix warning * fix tb_floo_vc_router to work with credit shortcut, add credit shortcut to chimney, add input_fifo to vc_router and chimney, bugfix in input_fifo * adjust chimney to use different vcs in case of several local ports * rename floo_.._cr to floo_vc_... * remove unused register * extend input_fifo to allow Depth of 1 (just a register) or 3 * add all traffic types supported by garnet (gem5): bit_complement, bit_reverse, bit_rotation, neighbor, shuffle, transpose, tornado * pylint fixes, add new traffic types to gitlab-ci * fix wormhole deadlock in sa_local * bugfix in transpose trafficgen * dma_experiments automation scripts * dma_experiments_analysis.py: pylint fixes * rr_arbiter fix potential deadlock * dma_experiments cleanup * fix issue with input fifo if used with depth 3 * allow tb_floo_vc_dma_mesh to be run with different ChannelFifoDepth * add traffic type single_dest_.. and add traffic_visualizations * add single_dest_.. traffic types to gitlab ci * try to remove possibly unnecessary waiting in testbenches * wait after tb ends in order to allow axi_bw_monitor to print * lint.yml install dependency pygame for traffic visualization * change dma_mesh testbenches to stop bw_monitor on per flow basis * move dependency pygame to pyproject.toml * adjust experiment analysis to calculate std of bw * add single dest traffic types * update adjustment: update if not sent but told to update * cleanup * vc_router update: add wormhole_vc which can be set to depth 3, add possibility to force wormhole flits to wormhole vc, add possibility to dissallow the deeper vc to overflow to other vcs * vc_router: add parameter to decide if rrArb should be updated if not sent but allowed to update * vc_router: try to update only sa_local if not sent (this push will fail tb_vc_dut) * try updateRRArb=1 but also AllowOverflowFromDeeperVC=1 * set UpdateRRArbIfNotSet to 0 in tb_floo_vc_router * add UpdateRRArbIfNotSent to vc_narrow_wide_router, set all values in tb_vc_dma to basic vc_router * set WormholeVCDepth to 3 and FixedWormholeVC to 1 * set AllowOverflowFromDeeperVC to 0 * turn off updateRRArbIfNotSent by default * support nonstandart number of VC: wrap around vc assignment * add Only1VC * add Jupyter file to analize dma_experiments results * add AllowVCOverflow parameter * make credit shortcut toggleable * adjust traffic visualization to use smoothstep * add parameter SingleStage to VC router: allow singleStage VC router * visualize_traffic: add still image visualization * include traffic_visualization pngs * rename boundry to boundary * rename boundry files to boundary * traffic visualizations cleanup * set router in tb_floo_vc_dma_mesh to 2 stage VCd2WHd3VCL1 * commit all plots and results in ipynb * fix rebase * hw: Small code clean-up * deps: Bump bender dependencies * test: Revert copying in of `tb_tasks.svh` file * hw: Clean-up * test: Remove comments * ci: Get rid of reviewdog * ci: Don't format sources explicitly * hw: Clean up `credit_counter` module * hw: `floo_input_fifo` minor improvements This module might benefit from a more general approach to the `Depth` parameter * floogen(pkg): Refer `rsvd` as `payload` in generic flit types * lint: TB sources * floogen(pkg): Define payload types * hw: `floo_input_port` Clean up * hw: Clean up `floo_rr_arbiter` * hw: Clean up `floo_mux` * hw: Clean up `floo_sa_local` * hw: Align VC nw chimney with new meta buffer interface * hw: Clean up `floo_sa_global` * hw: Clean up `floo_look_ahead_routing` * hw: Clean up `floo_route_select` * hw: Clean up `floo_vc_selection` * hw: Clean up `floo_vc_assigment` * hw: Rename signals in `floo_vc_router` * hw: Clean up `floo_vc_router` parameters * hw: Remove unused signals in `floo_vc_router` * hw: More clean up in `floo_vc_router` * hw: `floo_vc_router` whitespace changes * hw: linting * hw: `floo_vc_nw_router` Clean up * tb: Clean ups * tb: lint sources * hw: Clean up `floo_vc_narrow_wide_chimney` * doc: Update CHANGELOG * floogen(vc): Add own class for VC links * floogen(network): Add error message when compiling empty configurations * hw(pkg): Generate separate VC packages * test: Don't compile VC router by default * hw(pkg): Update `axi_pkg` sources as well * hw(pkg): Use port id by default * pkg: Also use `vc_axi_pkg` --------- Co-authored-by: sem24f5 Lukas Berner (bernerl) <[email protected]> Co-authored-by: sem24f5 Lukas Berner (bernerl) <[email protected]> Co-authored-by: Lukas Berner <[email protected]>
- Loading branch information