Now that you have Vivado installed and the snickerdoodle board files in place it's time to setup your IP and project folder structure. I like to put my IP folder on the same level as my firmware folder. The reason why I am not putting my IP folder in the firmware folder is that I have other non-vhdl subfolders such as c, eagle, python, etc in my IP folder. If you are only working with vhdl in your IP folder, one option is to put your IP folder inside your firmware folder. It really doesn't matter where you put your IP folder as long as it makes logical sense to you. Note: The green and red icons are from SVN version control... don't worry if you don't see them on your folders. I do highly recommend using version control though.
After you have your desired folder structure setup, copy the below blink.vhd file into the blink folder. For those new to vhdl, this file will accept a generic 'max_count' and the clock will count to that number before toggling the output. For example, with a 50 MHz input clock if 'max_count' is set to 25,000,000 which is its default, then the output bill blink at a 1 Hz rate.
Once you have copied the blink.vhd into the blink folder then open up Vivado and you should see the below screen. Click on the "Manage IP" text and then select "New IP Location" in order to open the Vivado IP manager.
Just click "Next" to proceed.
There are two things that need to be done with the below screen. The first thing is to click on the ... button under part and select the snickerdoodle board as shown in the Select Device image below. The next thing is to put in the location of your IP folder from the step above. Be sure not to put the location of the blink folder as this is the location of your global IP folder which contains the blink folder.
After hitting "OK" the vivado IP manager will open up and you should see something like the image below. Now that your IP location is setup you need to package the blink folder. Packaging is a process that basically adds a couple of files to your folder so that the IP can be imported into a vivado block diagram. So click on Tools => Create and Package New IP.
Click "Next" for the next two screens as we will be packaging a specific directory.
Select the blink directory located within your global IP directory.
I always just accept the defaults for the below screen but you could put in a specific directory if you like. Basically every packaged IP can have a full project associated with it but it is too much bloat for me. By using the default directories every IP directory that is packaged uses the same temporary project files. Don't worry about the details of this if you are a beginner and just click "Next"
Now you will be transported to the official blink IP packager. I changed the vendor information from xilinx.com to craftdrones but you can put in anything that you like. Like I said before, this is actually a full up vivado project that contains your blink code. I typically recommend clicking on "Run Synthesis" to verify that the code can at least compile before packaging it up.
Since I know that the code works I will skip synthesizing it and just click on the "Package IP" button which becomes visible when one clicks on the "Review and Package" button.
After the IP is packaged just close the project.
Back in the IP manager you will see that the blink IP has been created and resides in the UserIP folder as specified in the IP settings a couple screens ago. Congratulations! You have created your first vivado IP package.
For those of you that use version control you will want to know exactly what files were created by the packaging process. The actual blink.vhd file is unchanged however an xgui directory and a component.xml file have been created. The xgui is used to customize that appearance of the block that is placed within the vivado block editor and the component.xml file is used to hold all of the settings specified during the packaging process.
Now that you have some IP, you can finally create your first blink project and run it on your snickerdoodle!