clockwork icon indicating copy to clipboard operation
clockwork copied to clipboard

Changes needed for the Lake area optimization

Open jake-ke opened this issue 3 years ago • 0 comments

Missing compute unit file:

  • [x] test_glb/gaussian_isscc
  • [x] test_glb/camera_pipeline_isscc
  • [x] test_glb/unsharp_isscc
  • [x] test_glb/resnet1
  • [x] test_glb/resnet4_x
  • [x] test_glb/resnet5_1
  • [x] test_glb/resnet_5_x_new
  • [x] test_glb/resnet_5_1_new
  • [x] test_glb/resnet5_1_unroll_cyclic
  • [x] test_glb/resnet_output_stationary_tiny
  • [ ] test_glb/resnet5_1_full
  • [ ] test_glb/resnet2_x_full_compute.json

Current Failed tests:

  • [x] test_glb/resnet_init_unroll_tile (mismatch, init path needs to be prioritized)
  • [x] test_glb/resnet_last (mismatch)
  • [x] test_glb/resnet_3_1 (mismatch)
  • [x] test_glb/resnet_5_x (does not generate the new config registers)
  • [x] test_glb/resnet_5_1_unroll (mismatch)
  • [x] test_glb/resnet5_1_unroll_cyclic (mismatch)
  • [ ] test_glb/resnet_output_stationary_small (mismatch)
  • [ ] test_glb/resnet_output_stationary_tiny (mismatch)
  • [x] #188

Skipped Tests:

  • [ ] test_single_port_mem/nlmeans_simple_trunc (skip, tb size needs to be 4)
  • [ ] test_pond/nlmeans_simple (skip, tb size needs to be 4)
  • [ ] test_pond/three_level_pond_rolled (skip, in2agg dim = 4)

Clockwork changes TODO:

  • [ ] prioritize the initialization path in the update operation so that the Agg2Sram doing initialization will always write to SRAM right after it receives 4 words (refer to output bank 6 in resnet_init_unroll_tile)
  • [ ] (probably related to the issue above) prioritize Agg2Sram in normal operations so it writes SRAM right after it receives 4 words (refer to ub_hw_input_global_wrapper_stencil_BANK_0 in matmul_unroll2 )
  • [x] linearize Agg2Sram read and write data strides (refer to camera_pipeline_2x2)
  • [ ] (probably related to the change above) remove Agg2Sram read_data_starting_addr and write_data_starting_addr as they should always be 0. Can also remove In2Agg write_data_starting_addr for the same reason
  • [ ] (optional): flatten In2Agg ID as much as possible (this is currently done in Lake and we are using maximum 3 ID levels)

Lake Changes:

  • [x] update LakeTop wrapper with the options to configure and enable/disable the area optimizations
  • [ ] remove linearization pass in Lake once they are done in clockwork
  • [ ] (optional) remove flatten pass in Lake once they are done in clockwork

jake-ke avatar May 07 '22 00:05 jake-ke