Creating Custom HLS blocks or IPs within an Overlay

I’m new to C++ and the general concept of how the different parts of an IP fit together in an overlay. I’ve checked all of the other relevant questions, but they weren’t super helpful.

In a research project I’m working on, I’m trying to use a custom HLS tool and figure out how to integrate it into the Pynq-Alveo flow, since I’m going to be working with a ZCU104 type board in a host server. My main question is how do I go about, or what resources can I look at to learn how to take a pre-existing overlay (i.e advanced.xclbin from the tutorials) and add functionality to it. How would I add a vvsub function let’s say? or in future stages, how would I incorporate more complicated neural network related functions to a pre-existing overlay without necessarily rebuilding the overlay from scratch?

I’m quite stuck right now, and my advisor has been trying to get me to figure this out without rebuilding the overlay itself.