How VTA implements conv 2D?

Hello! I want to know how VTA implements conv 2D. I read some articles and found that conv 2D generally adopts some data reuse patterns, such as reusing input data or weights. Others will transform conv 2D into im2col + GEMM method. However, when reading the code of VTA, it seems that the above method is not used. Or maybe I didn’t find the right way to explore the VTA code. Can you give me some advice? Thank you very much for your guidance and help.