Sign in

Not a member? | Forgot your Password?

Search blogs

Search tips

Free PDF Downloads

Performance driven FPGA design with an ASIC perspective

FPGAs!? Now What?

Architecture of FPGAs and CPLDs: A Tutorial

FPGA Implementation of Digital Filters

Recent Blogs on FPGARelated

Spline interpolation
posted by Markus Nentwig


[Comments] C HLS Benefits
posted by Christopher Felton


BGA and QFP at Home 1 - A Practical Guide.
posted by Victor Yurkovsky


Introducing the VPCIe framework
posted by Fabien Le Mentec


How FPGAs work, and why you'll buy one
posted by Yossi Kreinin


Learning VHDL - Basics
posted by Enrico Garante


Yet another PWM
posted by Anton Babushkin




Articles by category

See Also

DSPEmbedded Systems

FPGA Blogs > Nuria Orduna > How to start in FPGA development? - Simulation software tools

Nuria Orduna (contact)
Hardware Design Engineer at ST Microelectronics, based in Edinburgh. Full-time geek and travel and hiking lover.
More info? Google me ;)
show full bio

Would you like to be notified by email when Nuria Orduna publishes a new blog?

  




Pageviews: 1308

How to start in FPGA development? - Simulation software tools

Posted by Nuria Orduna on Sep 19 2012 under Tips and Tricks | Tools & Simulation | Design Methodologies   

Introduction

This post is related to the first post How to start in FPGA development? - Some tips which aimed to show other options to work on the simulation of your project. In this first approach will be explained some advantages and disadvantages of using Xilinx ISE (+ModelSim) or using ModelSim, Precision and Xilinx ISE. And finally my opinion of which are the ones I use.

 

Which tool should I use?

To tell somebody what's better is quite difficult, basically because each has his own opinion of usability, ease, pragmatism, efficiency. It depends a lot on what are you more used to work with and what do you prefer or like. Anyway, there is always a path you have to follow. As I told in the first post, in a first approximation you can simulate your system using a script language. Next, describe it using a hardware description language and simulate it. I'm sure even hardware design gurus are not able to go through all the steps without simulating till the end of the implementation and expect a proper running of the system. So, I suggest you to simulate after the hardware description, the Translate and Map and obviously after the implementation into the FPGA. This will help also to debug if there is any unexpected error.

Block diagram for a system implementation

Now it's time to choose which software to use for each step!

Note: In this text I will assume that you are using Xilinx FPGAs to develop your design, in the future I will talk about other useful tools to work with.

 

ModelSim + Precision + Xilinx ISE

When I was studying they show me that for Xilinx FPGA development they were necessary 3 different kinds of software: ModelSim, Precision and Xilinx ISE. They explained to me that the first one, ModelSim, was only for simulation, the second one, Precision, was used during the synthesis, and the third one, Xilinx ISE, for the implementation. This was a little bit annoying because it was necessary to change from one tool to another and to have a very good file organization in folders, what at the beginning is always something difficult to maintain.

There are maybe more advantages of using Precision but I'm able to see only that synthesis is less strict than using Xilinx. In other words, the warnings found with Xilinx synthesis are not found during the synthesis with Precision (this means that not all warnings are really important). And also that there is a very extensive list of FPGA models to synthesize for (which is very useful depending on which FPGA do you work with). 

However, if you are using some blocks created with Core Generator from Xilinx, the way of making those files understandable for Precision is quite cumbersome if you want to simulate them properly, you must convert the .ngc files to .edf (see how to do it here).

 

Xilinx ISE (+ModelSim)

If your design will be implemented in a Xilinx FPGA, it should be obvious that you start your design using the Xilinx ISE. However, if you want to simulate your code and test if it works you must also need a simulation tool, like ModelSim (to configure the launch of ModelSim from Xilinx go to Edit -> Preferences -> ISE General -> Integrated tools -> Model Tech Simulator and add the path of modelsim.exe file and activate the simulation view in your Design window). You can also run ModelSim independently from Xilinx, just creating a project and adding the files you need.

One of the best advantages of using Xilinx is that you will be using the same software for all your design, during the simulation, synthesis and place and route. That's perfect because you will only have one folder for your project with all your files. It's also very useful for beginners because the "new source" option allows you to create files with integrated templates. If you want to create a .vhd file, the inputs and outputs can be created from the beginning and an automated template is written for you with the port and architecture declarations.

On the other hand, in my opinion one of the important lacks of Xilinx is the "editor"; window which is just functional. There are only the basic hotkeys like comment and uncomment, and it's missing something as stupid as the block indent hotkey, you must select, and use the mouse right button. And they are missing a lot of basic options found in other editors, like notepad++, which help to write code more efficiently.

 

What do I use?

As a result, after a while of working for my own I realize that to work with Precision is not the best option if you work with Xilinx FPGAs. One reason is what I already said; adding Coregens is totally annoying and is always a waste of time. I also like to have my files well organized and working with 3 different tools is a certain way of creating repeated files, and this is not helpful if the system start having errors; to find the right file could be worse than an odyssey.

And then, what do I use? Well I need Xilinx for the synthesis and implementation and I love coding over notepad++, and I also prefer to have the files from the simulation before synthesis and from simulation after synthesis separate in two different folders, just to make sure that my system worked before synthesis and is like having a backup of my files. So, I first describe the system in VHDL using notepad++ and simulate the project running ModelSim independently. IF this works properly THEN I copy the important files for my project in another folder and then create the project from Xilinx and simulate directly from there using the integrated ModelSim.

Why notepad++? Because it's open source, because there's the possibility to hide blocks along the code using the Folder Margin, to check which parenthesis close which (placing the cursor close to the parenthesis), to know 'for' hierarchy levels thanks to the indent dashed lines, to comment or uncomment with key short cuts (ctrl+K, ctrl+shift+K), and a lot of more things that you cannot do with ModelSim/Xilinx editor windows. There is something very useful also, the Doc Switcher, which can be activated Settings -> Preferences -> General -> Document Switcher (check show). And after reading the post An Editor for HDLs by Dave Vandenbout, I have realized that I'm not the only one using it :) .

I'm sure there is another more efficient way to work, but I have found that working separately helps me to debug and I'm efficient in my way.



Rate this article:
4.5
Rating: 4.5 | Votes: 2
 
   
 
posted by Nuria Orduna
Hardware Design Engineer at ST Microelectronics, based in Edinburgh. Full-time geek and travel and hiking lover.
More info? Google me ;)


Previous post by Nuria Orduna: How to start in FPGA development? - Some tips
all articles by Nuria Orduna

Comments / Replies


cfelton
Said:
Nuria,

Thanks for sharing your experinces. FPGA tools are a common
thread and often "heated" debate. There seems to be a *hole*
in the current offerings, ease of use (unified IDE), QoR,
performance, etc.

I agree, getting all the "tools" to work together can be a pain.

Other than Precision being a pain to incorporate into your FPGA
flow did you notice any "circuit" benefits from Precision? That
is; did your design synthesized with Precision vs. XST (Xilinx)
result in a smaller circuit (less resources) or a faster circuit?

Chris
2 years ago
0
Reply
Sorry, you need javascript enabled to post any comments.
nuriaorduna
Replied:
Thanks for your comment Chris, in fact I realized that in some cases precision was more accurate and more "efficient" in synthesis than Xilinx. However I didn't find out a law for which was better.

What it really bothers me was the fact that using Xilinx the synthesis was always different for RAM blocks created with coregen.

BTW, I will look into a little bit more about and I will give you a real answer, maybe on my next post.

núria
2 years ago
0
hassan.shabbir
Said:
i am new in FPGA. could anyone guide me how to do image processing on FPGA. Please give me some useful links so that it will help in my thesis. I shall be very thankful to you.
2 years ago
0
Reply
Sorry, you need javascript enabled to post any comments.
nuriaorduna
Replied:
Hi Hassan,

I have some good background on Image Processing implemented on FPGA. I will appreciate if you can ask more detailed questions and I will answer them in a full post .

núria
2 years ago
0
aktan
Said:
thanks for nice info
2 years ago
0
Reply
Sorry, you need javascript enabled to post any comments.
aktan
Said:
i am new on FPGA but worked on embedded systems . so familiar with logic design. planning to play with fpgas just to learn. i will try to develop a chess engine. i will use digilent spartan 6 lx45 development board. i am thinking to use microblaze running linuz for pc interface. and my ip will have interface with microblaze. (no idea how to do it now. reading documents) .. any tips welcome
aktan
2 years ago
0
Reply
Sorry, you need javascript enabled to post any comments.
Sorry, you need javascript enabled to post any comments.