Home    Bloggers    Messages    Webinars    Resources   
Tw  |  Fb  |  In  |  Rss
Adam Taylor

Ask Adam VHDL: Sensitivity Lists & Simulation

Adam Taylor
Page 1 / 4   >   >>
lybe
lybe
6/3/2012 12:14:14 PM
User Rank
Beginner
Re: Consequences on synthesis
Me on the other hand, I find a clean and organized IDE indispensable for development (whether HDL or software). Well, i mostly develop in a windows environment, so maybe i'm just spoiled.

Modelsim (which i currently use for simulation) is cumbersome and has an outdated GUI (looks like an application from the 16-bit era), so i use an external editor for the VHDL files (Notepad++). However, the integrated TCL command line is quite powerful and helps with automation.

The best HDL IDE i've ever used was Aldec's ActiveHDL. Clean and useful interface, integrated command line with TCL and everything + integrated vendor toolchain, so you can synthesize/implement the design from within the IDE. Too bad i only had access to the evaluation version...

But still, for large projects, automating tasks and harnessing the full potential of a tool, the command line is always the most flexible option.

@Adam
I'm eagerly waiting for the coding style post. I think it's safe to predict that opinions will be more than the commentators :P

 

50%
50%
thrakkor
thrakkor
6/1/2012 4:09:24 PM
User Rank
Blogger
Re: Consequences on synthesis
personally, i think an IDE slows me down when working on VHDL.  I use XEmacs with VHDL mode and a trusty linux shell.  that's the best IDE i could ask for.  so you could say my LInux desktop (Ubuntu 10.04) IS my IDE.

 

VHDL does not have separate port and type declarations for an entity/module.  they are done at the same time.  verilog is cumbersome, as you pointed out.

50%
50%
Karl
Karl
6/1/2012 3:13:31 PM
User Rank
Guru
Re: Consequences on synthesis
It may not be the case in VHDL.  In Verilog the module has a port list where each in or out is listed.  Then the port has to be defined as an input, output, or inout.

If an input is defined, then by definition it is a port, etc.   I think the port list is there for module instantiation, but it is another thing that has to be done manually because it is not picked up when entering source.

Instantiation in OOP takes a class name and creates all the class members and fields in the object.  In Verilog it looks like a mixture of Class(module) and function call syntax that just adds to the detail the designer has to input.

I am a C# user (don't claim programmer status) so I see a lot of goodies in the software IDE.  It aggravates me that the tool programmers are the haves while the HW guy is a have not.

50%
50%
Karl
Karl
6/1/2012 2:39:22 PM
User Rank
Guru
Re: Mismatches between Simulation and Synthesis
Why should the user have to constantly shop around for tools that the tool chain folks should have provided?  I will wager that they use all of those kinds of aids when they are coding and that their compilers and IDEs are much more friendly than what they put out.

It needs to be there and interactive to monitor input in real time.

I was not involved in FPGAs until I realized that embedded memory blocks were available.  Also wondered how things had evolved in the design/EDA world.  It looked like everything but the marketing hype had stood still.  Well, not everything.

 

50%
50%
Adam Taylor
Adam Taylor
6/1/2012 10:46:07 AM
User Rank
Blogger
Re: Mismatches between Simulation and Synthesis
Max formal equivelence checking tools can help ensure you can find issues caused by synthesis tools. They are critical for any safety critical development to ensure the implemntation behaves exactly the same as how you have written it at the RTL level. Of course this does mean verification becomes even more complex to fully test all the corner and worse case conditions. 

50%
50%
Max Maxfield
Max Maxfield
6/1/2012 10:44:58 AM
User Rank
Blogger
Re: Mismatches between Simulation and Synthesis
@Karl: re your earlier postings and my thoughts on Mismatches between simulation and synthesis...

There are "linting" tools that scan through the original RTL and detect and report a wide variety of potential problems. Certainly the simple example Adam provided woudl be immediately detected. But there are mosr sophisticated cases than can "fall through the cracks"

A good example such a tool comes from Blue Pearl Software -- they can detect all sorts of things like CDC (clock domain crossing) problems. Actually they can also automatically create your timing constraints file for you ... but that's outside the scope of these discussions)

There are also Formal Analysis tools that can compare the original RTL to the synthesized gate-level netlist to compare the functionality and make sure they are identical.

Ah... I see so many Ask Max columns in all our futures :-)

50%
50%
Adam Taylor
Adam Taylor
6/1/2012 10:43:09 AM
User Rank
Blogger
Re: Consequences on synthesis
The next topic for Ask Adam on Monday will be on coding styles and guidelines. I am just mid point in writing it now 

50%
50%
Max Maxfield
Max Maxfield
6/1/2012 10:38:05 AM
User Rank
Blogger
Mismatches between Simulation and Synthesis
With regard to earlier questions re potential mismatches between simulation and syntheses:

1) Ideally you will create RTL (in Verilog or VHDL) that does what you want in the simulation world. You then use logic synthesis to generate a gate-register-level netlist. Again, ideally, the function of this new representation will be identical to the original higher-level representation, so the simulation results will be identical (in terms of fuunction, not in terms of time ... things may happen a bit faster or slower depending on the implementation).

The problem is that...

2) You can create RTL that does what you want it to do in the simulation world, but then synthesis makes it do something else
3) You can create RTL that doesn't do what you expect it to do in the simulation world (but you don't find out because your test waveforms don't exercise that particular case) but the synthesis tool ends up making it do what you wanted to do in the first place (like Adam's example of just having "select_ip" in his sensitivity list)
4) You can create RTL that doesn't do what you expect it to do in the simulation world and then the synthesis tool makes it do something different that you also don't want it to do (grin).

Of these, (4) is the most rare and (2) is the hardest to track down

50%
50%
thrakkor
thrakkor
6/1/2012 10:37:36 AM
User Rank
Blogger
Re: Consequences on synthesis
glad i could be of help.

 

here's my typical vcom (used in a  shell script on a list of source files):

vcom -2002 -quiet -check_synthesis -work $WORK_LIB ${FILE}

another handy thing you can do is run VMAKE (modelsim utility) which let's you just type make instead of recompiling everything every time you make a change (of course you need a clean error free compile at first).

 

vmake $WORK_LIB > Makefile

vmake $WORK2 >> Makefile

vmake $WORK3 >> Makefile

this adds 3 different work libraries to the Makefile.

 

50%
50%
Adam Taylor
Adam Taylor
6/1/2012 10:31:04 AM
User Rank
Blogger
Re: Consequences on synthesis
I agree that all designs should be simualted at the RTL level before synthesis and implementation. That is where the majority of bloopers should be caught. 

Typically we find integration issues at the chip level not issus like this. 

50%
50%
Page 1 / 4   >   >>
More Blogs from Adam Taylor
Here we discover how to use the XADC (Xilinx Analog-to-Digital Convertor) in the Zynq All Programmable SoC to read the chip's internal temperature and voltage parameters and output them over an RS-232 link.
Now it's time to consider how we can implement and use the Xilinx Analog to Digital Convertor (XADC) within a Zynq All Programmable SoC-based system.
The Zynq All Programmable SoC comes equipped with programmable analog capabilities that can be used in a wide variety of applications, including defense, industrial, and automotive systems.
This is the blog we've all been waiting for – the point where we finally create our very first, standalone, "bare metal" Zynq application!
In the case of a real-world use model, we want to store our software program and configuration bitstream in nonvolatile memory and configure the device after the power comes on.
flash poll
follow us on twitter
follow Xilinx on twitter
like us on facebook
like Xilinx on facebook
All Programmable Planet     About Us     Contact Us     Help     Register     Twitter     Facebook     RSS