10-27-2018 10:18 PM
I have gone through XAPP1231 and was able to implement on my ZC702. The next thing I wish to do is add my own custom filter along with the given 3 (Sobel, Fast corners and pasteurize). What all changes should I make to add my custom filter?
10-28-2018 10:19 AM - edited 10-28-2018 10:20 AM
10-28-2018 10:48 AM
No, I do mean https://xilinx-wiki.atlassian.net/wiki/spaces/A/pages/18841851/XAPP1231+-+Partial+Reconfiguration+of+a+Hardware+Accelerator+with+Vivado+Design+Suite. In Section 3. He creates 3 Filters, I would like to add one of my own filters to the list. What changes must I make to accommodate this?
10-31-2018 10:47 AM
Essentially you'll need to do three things:
1. Create your code for the new filter and synthesize it as an out-of-context checkpoint.
2. Implement a new configuration using the existing locked static design, generating a new partial bitstream.
3. Modify the software code and runtime environment to understand the new filter that is now available.
Hopefully you've been looking through not only the application note but this wiki page as well:
For the first two items, replicate the path the scripts take for the sobel filter. The code to be synthesized by HLS must have the same ports so that it will plug into the same spot, or you could code in RTL or whatever. Then the implementation scripts (design.tcl) will need to see a new child run, loading in the locked static checkpoint and the post-synthesis checkpoint to implement this new filter. Follow the same options for partial bitstream generation. Figure 5 in the app note illustrates this. Then from the software perspective, you'll need to update the software code and device tree to identify new filters and load them in from their memory storage location. The last part of the wiki shows details here.
It might be easier to start by simply replacing one of the existing filters, then expand the number of filters available.
11-01-2018 03:01 AM - edited 11-01-2018 07:06 PM
11-02-2018 09:02 AM
Well, to be honest, I'm a hardware guy not a software guy, so I'm not the best person to guide you through these changes. But I would start again with the wiki page (step 6) and examine the corresponding code in filter.c and filter.h. The former is the source code that is shown on the wiki page is is where the partial bitstreams are fetched, and the latter is the data file that stores the number and size of the partial bin files. These files are found in software/xsdk/filter_lib in the design archive.