Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search

Messages from 134525

Article: 134525
Subject: Re: Q: Demo Altera NIOS II SOPC limitations
From: MarkAren <markaren10@yahoo.com>
Date: Sat, 16 Aug 2008 02:58:48 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 16, 9:53=A0am, ghelbig <ghel...@lycos.com> wrote:
> On Aug 15, 1:37=A0pm, MarkAren <markare...@yahoo.com> wrote:
>
>
>
>
>
> > Hi All,
>
> > I have just compiled a NIOS II core into Cyclone I part (I was given
> > an old MJL demo board) and compiled some trivial C. Everything seems
> > to work as advertised.
>
> > I still haven't figured out the time limited nature of the NIOS II
> > SOPC builder, could someone enlighten me please. There seems to be a
> > 60 minute limit between creating the FPGA code (Verilog) and compiling
> > a new FPGA image, or does that limit apply to time between compiling
> > an image and programming a part ?
>
> > Also, what is the difference between the web edition and the fully
> > paid up version of Quartus II.
>
> > All tools above are V7.2.
>
> > I am only experimenting at the moment and I need to understand the
> > limitations of the tool chain before I invest too much more time and
> > effort in this educational project,.
>
> > Many thanks,
>
> > Mark
>
> As I recall, the time limit starts after downloading the FPGA.
>
> I was told that the difference between 'web' and 'full' was the number
> (size) of devices supported.
>
> I'm pretty sure that all of this is documented on the Altera web site.
>
> G.- Hide quoted text -
>
> - Show quoted text -

Hi Guys,

Thanks for the comments so far.

I agree that US$600 is a load of money for the hobbyist, but this is
one hell of a useful tool from where I sit.

So as far as the JTAG download session being valid for 60 minutes,
that makes sense.

What if one was to burn the image into FLASH then use another device
to download the configuration using AS or PS formats ?

I assume that the timeout mechanism is within the FPGA, so this won't
work (unless the design reboots itself every 58 minutes ?)

Comments please.

Thanks,

Mark

Article: 134526
Subject: why does inferred RAM cause synthesis times to explode?
From: andersod2 <thechrisanderson@gmail.com>
Date: Sat, 16 Aug 2008 04:25:30 -0700 (PDT)
Links: << >>  << T >>  << A >>

I just inserted an inferred ram module into my code, and all of a
sudden it takes forever to synthesize...I only inferred one
ramblock...is there anything I can do to get it down to a reasonable
time?  I have a lot of warnings, but still...I went from a few seconds
to synth now taking minutes.....??

thanks for your help

Article: 134527
Subject: Re: Verilog modules and stimulus in same file
From: andersod2 <thechrisanderson@gmail.com>
Date: Sat, 16 Aug 2008 04:36:35 -0700 (PDT)
Links: << >>  << T >>  << A >>

Very informative, johnathan...thanks for that.

laserbeak...is there some compiler directives you could use analagous
to C's #ifdef's for excluding code in a particular build?  I would
look this up, but I don't even have a verilog book :P....just learning
from the net...


Article: 134528
Subject: Re: why does inferred RAM cause synthesis times to explode?
From: Kolja Sulimma <ksulimma@googlemail.com>
Date: Sat, 16 Aug 2008 04:59:01 -0700 (PDT)
Links: << >>  << T >>  << A >>
On 16 Aug., 13:25, andersod2 <thechrisander...@gmail.com> wrote:
> I just inserted an inferred ram module into my code, and all of a
> sudden it takes forever to synthesize...I only inferred one
> ramblock...is there anything I can do to get it down to a reasonable
> time? =A0I have a lot of warnings, but still...I went from a few seconds
> to synth now taking minutes.....??


We need more data:
- synthesis tool?
- language?
- taget technology?
- size of the ram?

Kolja

Article: 134529
Subject: Re: Verilog modules and stimulus in same file
From: Jonathan Bromley <jonathan.bromley@MYCOMPANY.com>
Date: Sat, 16 Aug 2008 14:39:02 +0100
Links: << >>  << T >>  << A >>
On Sat, 16 Aug 2008 04:36:35 -0700 (PDT), andersod2 wrote:

>is there some compiler directives you could use analagous
>to C's #ifdef's for excluding code in a particular build? 

Absolutely:

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

module design(...);
  ...
endmodule

`ifdef A_COMPLETELY_RIDICULOUS_MACRO_NAME
module testbench;
  ...
  design design_instance(....);
  ...
endmodule
`else
module toplevel;
  ...
endmodule
`endif

~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

Now here's the trick:  Almost every Verilog tool
will automatically `define a tool-specific macro
before every compile run.  So, for example:

`ifdef VCS
  // this code will be compiled only when using Synopsys VCS
`endif
`ifdef INCA
  // this only when using Cadence simulators
`endif
`ifdef MODEL_TECH
  // this only when using Mentor simulators
`endif
`ifdef synthesis
  // Synplify, and perhaps other synth tools, define this
`endif

I'm sure there's one of those for each synthesis tool,
but I don't have those at my fingertips.  Anyway, you can
deal with that for yourself rather easily because you can
either hack in a single `define directive in a tiny file
that gets compiled first, or (better) define on the compile
command line - this works for every Verilog tool I've ever
used:

  vlog|vcs|ncvlog|your_choice_of_tool  +define+MY_MACRO files.v

Finally, if it's synthesis that's an issue, all synthesis tools
respect some kind of synthesis-on/off pragma in your code.
Personally I passionately loathe the use of pseudo-comments
in this way, but you should find this will allow you to 
include simulation-only code in a file that may also be
synthesised:

  module d_ff (input clock, input d, output reg q);
    always @(posedge clock) begin
      // synthesis translate_off
      $display("The clock ticked at time %t", $time);
      // synthesis translate_on
      q <= d;
    end
  endmodule

The exact form of the synthesis on/off pragma will
vary from one synthesis tool to another, as you might 
guess.  RTFM.
-- 
Jonathan Bromley, Consultant

DOULOS - Developing Design Know-how
VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services

Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
jonathan.bromley@MYCOMPANY.com
http://www.MYCOMPANY.com

The contents of this message may contain personal views which 
are not the views of Doulos Ltd., unless specifically stated.

Article: 134530
Subject: A timing question
From: tersono <ethel.thefrog@ntlworld.com>
Date: Sat, 16 Aug 2008 17:12:14 +0100
Links: << >>  << T >>  << A >>
A system with a 16-wide input bus, clocked (negative edge) into a
16-wide register.

(Actually a sub-set of a real system.)

The system clock input is balanced; it is converted to single ended
and fed to a clock buffer to clock the register.

The system outputs are 

1/ the register output
2/ the single ended  clock drive

I want to constrain the register output so that it changes less than
2.6ns after the fall of the clock output- a constraint between two
outputs.

Here's the constraint section of my UCF file:

#################################################

NET "CLK_120MHZ_P" TNM_NET = FFS "CLK_120MHZ_P";
TIMESPEC "TS_CLK_120MHZ_P" = PERIOD "CLK_120MHZ_P" 8 ns HIGH 50 %;

NET DATA_OUT_CLK TNM=PADS ck_out;
NET DATA_OUT* TNM=PADS d_out;

# the constraint mentioned above

TIMESPEC "TS_output_ck_to_data" =FROM ck_out TO d_out 2.6ns;

# two more constraints- somewhat arbitrary

TIMESPEC "TS_ext_ck_to_data" =FROM CLK_120MHZ_P TO d_out 5.5ns;

TIMESPEC "TS_ext_ck_to_ckout" =FROM CLK_120MHZ_P TO ck_out 5.5ns;

#################################################

*Problem*- some constraints are ignored- from the place and route
report:

WARNING:Timing:3223 - Timing constraint TS_output_ck_to_data =
MAXDELAY FROM TIMEGRP "ck_out" TO TIMEGRP "d_out" 2.6
           ns; ignored during timing analysis.
WARNING:Timing:3223 - Timing constraint TS_ext_ck_to_ckout = MAXDELAY
FROM TIMEGRP "CLK_120MHZ_P" TO TIMEGRP "ck_out"
           5.5 ns; ignored during timing analysis.

Q1/ Why are those constraints ignored?
Q2/ Even more puzzling to me, why is the external clock to data
constraint heeded while the external clock to clock out is ignored?
Q3/ Am I approaching the problem in a sensible way?

I've put a .zip of the two Verilog files (one's just the IO buffers)
and the .ucf file here:

http://www.humyo.com/F/6619-179262397

All comments welcome.
--
Only three people have ever understood the Schleswig-Holstein problem
One's dead, one's gone mad, and I've forgotten.

Article: 134531
Subject: Re: why does inferred RAM cause synthesis times to explode?
From: "KJ" <kkjennings@sbcglobal.net>
Date: Sat, 16 Aug 2008 13:02:50 -0400
Links: << >>  << T >>  << A >>

"andersod2" <thechrisanderson@gmail.com> wrote in message 
news:91c3827f-cc64-485d-894d-7438de4673a4@b38g2000prf.googlegroups.com...
>
> I just inserted an inferred ram module into my code, and all of a
> sudden it takes forever to synthesize...I only inferred one
> ramblock...is there anything I can do to get it down to a reasonable
> time?  I have a lot of warnings, but still...I went from a few seconds
> to synth now taking minutes.....??
>

Most likely you're not quite following the template (although you think you 
are) and what is getting synthesized has to get implemented in logic cells 
rather than internal memory.

Another cause than cause logic instead of internal memory to be used that 
I've seen is that even though my code exactly followed the template I had to 
manually add an attribute to the read address signal to prevent the signal 
from getting changed.  Whatever it was doing optimized it into some form 
that the synthesis tool thought it needed logic cells and couldn't use 
internal memory.  Since adding (or not adding) an attribute to a signal does 
absolutely nothing to the function of the code, it was just something that 
needed to be done.  I opened a case with the tool supplier, not fixed yet, 
possibly soon.

KJ 



Article: 134532
Subject: Re: video timing with TFP410
From: stewarma@gmail.com
Date: Sat, 16 Aug 2008 11:22:59 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 15, 4:32=A0pm, Peter Alfke <pe...@xilinx.com> wrote:
> On Aug 15, 1:13=A0pm, stewa...@gmail.com wrote:
>
>
>
> > I want to implement 1280x1024but cannot synthesize an 108MHz pixel
> > block for the timing. =A0I would prefer to use a 100 MHz (generated fro=
m
> > 200) but can also make a 104 or 112 Mhz.
>
> > Normal 1280x1024 timing:
> > Horizontal
> > Resolution pixels: 1280
> > Front porch pixels: 48
> > Sync pulse pixels: 112
> > Back porch pixel: 248
> > Veritcle
> > Resolution lines: 1024
> > Front porch lines: 1
> > Sync pulse lines: 3
> > Back porch lines: 38
>
> > Has anyone had any experience altering the porch/sync lengths and
> > pixel clock to keep 60Hz that will sync to an LCD monitor?
>
> > Thanks!
>
> What's your real question? What's the FPGA device?
> With a Virtex DCM you can generate all sorts of frequencies around 104
> MHz with ~0.2 MHz granularity.
> Peter Alfke

Using a Virtex 4, but my oscillator is a 200 MHz differential source.
Coregen will not let me generate a DCM chain to create the 108MHz from
200MHz (the M and D for CLKFX are to high).

My real problem is that I want to output 1280x1024 @60Hz DVI timing
with a TFP410 using a non-standard clock (not using 108MHz).  I am
wondering what I would set my front porch, back porch and sync pulse
at with a 100MHz, 104MHz or 112 MHz pixel clock, with 100MHz being
perfered for 1280x1024@60Hz.
Thanks

Article: 134533
Subject: Re: A timing question
From: "Symon" <symon_brewer@hotmail.com>
Date: Sat, 16 Aug 2008 20:13:40 +0100
Links: << >>  << T >>  << A >>

"tersono" <ethel.thefrog@ntlworld.com> wrote in message 
news:equda41r55sn5pta3e58uikts03gku5lae@4ax.com...
>A system with a 16-wide input bus, clocked (negative edge) into a
> 16-wide register.
>
> (Actually a sub-set of a real system.)
>
> The system clock input is balanced; it is converted to single ended
> and fed to a clock buffer to clock the register.
>
> The system outputs are
>
> 1/ the register output
> 2/ the single ended  clock drive
>
> I want to constrain the register output so that it changes less than
> 2.6ns after the fall of the clock output- a constraint between two
> outputs.
>
Dear Ethel Frogface,
Use the IOB's DDR flipflops to output the clock. Use a '0' and a '1' on the 
data inputs to the two DDR registers. Also, use the IOBs' flipflops for the 
register you've made. Then the clock and the register outputs all change at 
the same time.
HTH, Syms.

p.s. Philip F. claims to have invented this way of getting clocks out of 
FPGAs. He always bleats on at me if I don't mention that! ;-) 



Article: 134534
Subject: Re: video timing with TFP410
From: Peter Alfke <alfke@sbcglobal.net>
Date: Sat, 16 Aug 2008 13:01:18 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 16, 11:22=A0am, stewa...@gmail.com wrote:
> On Aug 15, 4:32=A0pm, Peter Alfke <pe...@xilinx.com> wrote:
>
>
>
> > On Aug 15, 1:13=A0pm, stewa...@gmail.com wrote:
>
> > > I want to implement 1280x1024but cannot synthesize an 108MHz pixel
> > > block for the timing. =A0I would prefer to use a 100 MHz (generated f=
rom
> > > 200) but can also make a 104 or 112 Mhz.
>
> > > Normal 1280x1024 timing:
> > > Horizontal
> > > Resolution pixels: 1280
> > > Front porch pixels: 48
> > > Sync pulse pixels: 112
> > > Back porch pixel: 248
> > > Veritcle
> > > Resolution lines: 1024
> > > Front porch lines: 1
> > > Sync pulse lines: 3
> > > Back porch lines: 38
>
> > > Has anyone had any experience altering the porch/sync lengths and
> > > pixel clock to keep 60Hz that will sync to an LCD monitor?
>
> > > Thanks!
>
> > What's your real question? What's the FPGA device?
> > With a Virtex DCM you can generate all sorts of frequencies around 104
> > MHz with ~0.2 MHz granularity.
> > Peter Alfke
>
> Using a Virtex 4, but my oscillator is a 200 MHz differential source.
> Coregen will not let me generate a DCM chain to create the 108MHz from
> 200MHz (the M and D for CLKFX are to high).
>
> My real problem is that I want to output 1280x1024 @60Hz DVI timing
> with a TFP410 using a non-standard clock (not using 108MHz). =A0I am
> wondering what I would set my front porch, back porch and sync pulse
> at with a 100MHz, 104MHz or 112 MHz pixel clock, with 100MHz being
> perfered for 1280x1024@60Hz.
> Thanks

If you want to, you can generate 108 MHz out of 200 MHz incoming,
since the FCM has a built-in divide-by 2 prescaler that changes the
DCM input to 100 MHz, and then you multiply by 27 and divide by 25,
and you have your 108 MHz.
Peter Alfke

Article: 134535
Subject: Re: A timing question
From: rickman <gnuarm@gmail.com>
Date: Sat, 16 Aug 2008 13:19:38 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 16, 3:13 pm, "Symon" <symon_bre...@hotmail.com> wrote:
> "tersono" <ethel.thef...@ntlworld.com> wrote in message
>
> news:equda41r55sn5pta3e58uikts03gku5lae@4ax.com...
>
> >A system with a 16-wide input bus, clocked (negative edge) into a
> > 16-wide register.
>
> > (Actually a sub-set of a real system.)
>
> > The system clock input is balanced; it is converted to single ended
> > and fed to a clock buffer to clock the register.
>
> > The system outputs are
>
> > 1/ the register output
> > 2/ the single ended  clock drive
>
> > I want to constrain the register output so that it changes less than
> > 2.6ns after the fall of the clock output- a constraint between two
> > outputs.
>
> Dear Ethel Frogface,
> Use the IOB's DDR flipflops to output the clock. Use a '0' and a '1' on the
> data inputs to the two DDR registers. Also, use the IOBs' flipflops for the
> register you've made. Then the clock and the register outputs all change at
> the same time.
> HTH, Syms.
>
> p.s. Philip F. claims to have invented this way of getting clocks out of
> FPGAs. He always bleats on at me if I don't mention that! ;-)

Philip F's claims aside, is this really a useful way of propagating
the clock?  With both the output clock and the registered data coming
from IOB FFs, won't there be a race condition?  I guess the receiving
chip can clock the data on the other edge of the clock, but typically
when clocking on board, the data has a minimum hold time sufficient to
reliably clock the data into the receiving device.  I don't think this
method will provide the required hold time.

I have not used the DLLs before, but my impression was that they could
be used to clock the data out on a clock which is delay locked to the
actual board clock.  The board clock output is feed back to an input
pin and run through the DLL.  The DLL aligns it to provide the data
output at the time you require it.  This should provide a sufficient
delay of the data so that a positive hold time can be provided.

Rick

Article: 134536
Subject: Re: Verilog modules and stimulus in same file: oh and one more
From: laserbeak43 <laserbeak43@gmail.com>
Date: Sat, 16 Aug 2008 13:55:35 -0700 (PDT)
Links: << >>  << T >>  << A >>
static as in global file scope was what a i was talking about. but
that doesn't exist in veriolg, so it looks like
i'll have to keep my simulation modules, outside of the source for the
module to be simulated.

Cant recall ever being introduced to the first definition you've
mentioned.
Thanks  :)

On Aug 16, 5:44=A0am, Jonathan Bromley <jonathan.brom...@MYCOMPANY.com>
wrote:
> On Sat, 16 Aug 2008 01:46:04 -0700 (PDT), laserbeak43 wrote:
> >oh, and for that matter, what's the verilog equivalent of the Ansi C
> >"static" keyword?
>
> Which meaning of "static"?
>
> static =3D lexically local variable of a function,
> which therefore is in fact a global variable whose
> name is visible only within the function scope:
> all local variables of Verilog-95 tasks and functions
> have this behaviour. =A0Only by declaring your Verilog
> tasks or functions to be "automatic" do you get
> argument and local variables created dynamically
> per call.
>
> static =3D global (file-scope) declaration that is
> not published outside the file: no such thing in
> Verilog. =A0Everything is public and the names get
> resolved at elaboration time. =A0In particular,
> module names all get thrown into one common namespace
> (although the library/configuration machinery of
> Verilog-2001 somewhat messes with that idea); and
> there are no other top-level declarations apart from
> modules.
>
> --
> Jonathan Bromley, Consultant
>
> DOULOS - Developing Design Know-how
> VHDL * Verilog * SystemC * e * Perl * Tcl/Tk * Project Services
>
> Doulos Ltd., 22 Market Place, Ringwood, BH24 1AW, UK
> jonathan.brom...@MYCOMPANY.comhttp://www.MYCOMPANY.com
>
> The contents of this message may contain personal views which
> are not the views of Doulos Ltd., unless specifically stated.


Article: 134537
Subject: Re: Verilog modules and stimulus in same file
From: laserbeak43 <laserbeak43@gmail.com>
Date: Sat, 16 Aug 2008 14:08:52 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 16, 5:56=A0am, Jonathan Bromley <jonathan.brom...@MYCOMPANY.com>
wrote:
> On Sat, 16 Aug 2008 01:43:19 -0700 (PDT), laserbeak43
>
> <laserbea...@gmail.com> wrote:
> >Hi,
> >i have some verilog code that i want to keep for future use as a part
> >of a library.
> >I have created the module and am working on the stimulus. if i were to
> >put the
> >module and stimulus in the same file, would this cause problems in the
> >future if
> >i try to load the module from the file?
>
> I don't know what you mean by "load the module from the file".
> If you put a design module and a testbench module in the same
> file, then whenever the compiler processes that file it will
> compile both modules.

ok,
That makes sense.

=2E...
> Give these two files to the compiler and it will find
> three modules: the_real_top_level, design, and
> design_tb. =A0Two of those modules - the_real_top_level
> and design_tb - are not instantiated by other modules.
> Consequently the following hierarchy will be constructed:
>
> [top of simulation]
> =A0 |
> =A0 +--- unnamed instance of the_real_top_level
> =A0 | =A0 =A0 =A0 |
> =A0 | =A0 =A0 =A0 +--- instance "design_2" of design
> =A0 |
> =A0 +--- unnamed instance of design_tb
> =A0 =A0 =A0 =A0 =A0 |
> =A0 =A0 =A0 =A0 =A0 +--- instance "design_instance" of design
>
> Is that a problem for you?


No,
I think I've got that part down, ISE seems to make that part
understandable
along with the book i'm reading.


> Some tools allow you to compile files individually,
> putting the compiled modules into a "library" in some
> tool-dependent way; you can then choose which top-level
> module(s) in that library you wish to simulate, and the
> tool will construct the hierarchy from that. =A0So, for
> example, in ModelSim I might do this:
>
> =A0 vlog F1.v ; # compile file F1
> =A0 vlog F2.v ; # compile file F2
> =A0 vsim the_real_top_level
>
> and that will build this hierarchy:
>
> [top of simulation]
> =A0 |
> =A0 +--- unnamed instance of the_real_top_level
> =A0 =A0 =A0 =A0 =A0 |
> =A0 =A0 =A0 =A0 =A0 +--- instance "design_2" of design


And this would be how you'd create a new library?
Is there any good documentation on this process?

> Finally, you may be giving yourself problems with synthesis
> because (I assume) at some stage you want to synthesise the
> design, but not the testbench module.
>
> The conclusion from all of this should surely be obvious:
> ONE MODULE PER FILE is almost always the sensible way
> to organise your Verilog source code.

Ok,
Gotcha! Thanks for that detailed explanation! There couldn't
be a single doubt in  my mind about it now!!

Thanks
Malik

Article: 134538
Subject: Re: Verilog modules and stimulus in same file
From: laserbeak43 <laserbeak43@gmail.com>
Date: Sat, 16 Aug 2008 14:17:48 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 16, 7:36=A0am, andersod2 <thechrisander...@gmail.com> wrote:
> Very informative, johnathan...thanks for that.
>
> laserbeak...is there some compiler directives you could use analagous
> to C's #ifdef's for excluding code in a particular build? =A0I would
> look this up, but I don't even have a verilog book :P....just learning
> from the net...

ahh,
very good suggestion andersod2 :)
and thanks for giving me clues to
use to find answers jonathan.
what a helpful thread!!

Thanks,
Malik

Article: 134539
Subject: Re: A timing question
From: Marc Randolph <mrand@my-deja.com>
Date: Sat, 16 Aug 2008 16:11:40 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 16, 3:19=A0pm, rickman <gnu...@gmail.com> wrote:
> On Aug 16, 3:13 pm, "Symon" <symon_bre...@hotmail.com> wrote:
> > Dear Ethel Frogface,
> > Use the IOB's DDR flipflops to output the clock. Use a '0' and a '1' on=
 the
> > data inputs to the two DDR registers. Also, use the IOBs' flipflops for=
 the
> > register you've made. Then the clock and the register outputs all chang=
e at
> > the same time.
> > HTH, Syms.
>
> > p.s. Philip F. claims to have invented this way of getting clocks out o=
f
> > FPGAs. He always bleats on at me if I don't mention that! ;-)
>
> Philip F's claims aside, is this really a useful way of propagating
> the clock? =A0With both the output clock and the registered data coming
> from IOB FFs, won't there be a race condition? =A0I guess the receiving
> chip can clock the data on the other edge of the clock, but typically
> when clocking on board, the data has a minimum hold time sufficient to
> reliably clock the data into the receiving device. =A0I don't think this
> method will provide the required hold time.
>
> I have not used the DLLs before, but my impression was that they could
> be used to clock the data out on a clock which is delay locked to the
> actual board clock. =A0The board clock output is feed back to an input
> pin and run through the DLL. =A0The DLL aligns it to provide the data
> output at the time you require it. =A0This should provide a sufficient
> delay of the data so that a positive hold time can be provided.

Howdy Rick,

While you could certainly do that, most designs seem to have converged
on using the most simple transmit structure possible (typically using
I/O flops, often DDR) and do whatever is necessary on the RX side to
get the correct setup and hold times.  In this case, one would either
use the DLL/DCM on the receiving FPGA in source sync mode, or possibly
use the BUFR if using a V4 or V5.

Have fun,

   Marc

Article: 134540
Subject: Re: A timing question
From: rickman <gnuarm@gmail.com>
Date: Sat, 16 Aug 2008 20:55:05 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 16, 7:11 pm, Marc Randolph <mr...@my-deja.com> wrote:
> On Aug 16, 3:19 pm, rickman <gnu...@gmail.com> wrote:
>
>
>
> > On Aug 16, 3:13 pm, "Symon" <symon_bre...@hotmail.com> wrote:
> > > Dear Ethel Frogface,
> > > Use the IOB's DDR flipflops to output the clock. Use a '0' and a '1' on the
> > > data inputs to the two DDR registers. Also, use the IOBs' flipflops for the
> > > register you've made. Then the clock and the register outputs all change at
> > > the same time.
> > > HTH, Syms.
>
> > > p.s. Philip F. claims to have invented this way of getting clocks out of
> > > FPGAs. He always bleats on at me if I don't mention that! ;-)
>
> > Philip F's claims aside, is this really a useful way of propagating
> > the clock?  With both the output clock and the registered data coming
> > from IOB FFs, won't there be a race condition?  I guess the receiving
> > chip can clock the data on the other edge of the clock, but typically
> > when clocking on board, the data has a minimum hold time sufficient to
> > reliably clock the data into the receiving device.  I don't think this
> > method will provide the required hold time.
>
> > I have not used the DLLs before, but my impression was that they could
> > be used to clock the data out on a clock which is delay locked to the
> > actual board clock.  The board clock output is feed back to an input
> > pin and run through the DLL.  The DLL aligns it to provide the data
> > output at the time you require it.  This should provide a sufficient
> > delay of the data so that a positive hold time can be provided.
>
> Howdy Rick,
>
> While you could certainly do that, most designs seem to have converged
> on using the most simple transmit structure possible (typically using
> I/O flops, often DDR) and do whatever is necessary on the RX side to
> get the correct setup and hold times.  In this case, one would either
> use the DLL/DCM on the receiving FPGA in source sync mode, or possibly
> use the BUFR if using a V4 or V5.

And what if the receiving side is not an FPGA???  The OP asked for a
maximum clock out to register out  of 2.6 ns.  He did not provide a
minimum (as would be needed to spec a hold time).  So I can't say that
your approach won't work.  Since he seems to be working with a
receiver with specific timing constraints, using the DLL to provide an
appropriate timing relation between the clock out and the register out
would be a good solution.

But to answer the OP's original question, the software is not designed
to provide timing controls between arbitrary points in the system.  It
is designed to constrain timing delays from clocks to corresponding
outputs, inputs to corresponding outputs and inputs to corresponding
register clocks.

I say "corresponding" because it can only work with path delays that
it understands.  The tools are not designed to control the delays in
parallel paths to match them within a spec as you are asking it to
do.  Mainly this is not practical because the timing delays are spec'd
as maximums, but typically not minimums.  So the timing of the clock
route can't be made to not be faster than a given amount which is what
you would have to do to get your maximum delay to the register
output.  That is why a feedback path is needed.  Once you feed the
clock output back into the FPGA, it can be used as a reference to
clock the output register and meet your timing.

Rick

Article: 134541
Subject: Re: why does inferred RAM cause synthesis times to explode?
From: andersod2 <thechrisanderson@gmail.com>
Date: Sun, 17 Aug 2008 00:45:45 -0700 (PDT)
Links: << >>  << T >>  << A >>


Kolja,
Sorry it was late and I wasn't thinking right....
-Webpack ISE (9.x?)
-Verilog
-Spartan3a
-1 ram block = 18k bits partitioned at 72x256 (legal partition
according to docs...well some of them at least)



KJ,
Thanks a lot...I think you may be right because I'm getting a lot of
latch warnings, but didn't understand why.  I am using inferred ram,
which the docs say will work the same as an explicit template
instantiation if I just use the typical "reg [w:x] mem[y:z];"
notation...do you think using a template is always the better way to
go?  If this isn't evidence for that, then I don't know what is
because I'm not doing anything special.  In fact I lifted the code for
my mem module from a verilog site...if there's a a way I can guarantee
that the inferred ram will be put in a block I would very much like to
know as I find it much easier to work with than the template.  Is that
a constraints thing?
thanks again for your help

Article: 134542
Subject: Re: why does inferred RAM cause synthesis times to explode?
From: rickman <gnuarm@gmail.com>
Date: Sun, 17 Aug 2008 01:19:52 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 17, 3:45 am, andersod2 <thechrisander...@gmail.com> wrote:
> Kolja,
> Sorry it was late and I wasn't thinking right....
> -Webpack ISE (9.x?)
> -Verilog
> -Spartan3a
> -1 ram block = 18k bits partitioned at 72x256 (legal partition
> according to docs...well some of them at least)
>
> KJ,
> Thanks a lot...I think you may be right because I'm getting a lot of
> latch warnings, but didn't understand why.  I am using inferred ram,
> which the docs say will work the same as an explicit template
> instantiation if I just use the typical "reg [w:x] mem[y:z];"
> notation...do you think using a template is always the better way to
> go?  If this isn't evidence for that, then I don't know what is
> because I'm not doing anything special.  In fact I lifted the code for
> my mem module from a verilog site...if there's a a way I can guarantee
> that the inferred ram will be put in a block I would very much like to
> know as I find it much easier to work with than the template.  Is that
> a constraints thing?
> thanks again for your help

There is RAM and there is RAM.  If you are inferring async RAM in an
FPGA, it is likely that this does not map to any existing feature in
the device.  Most FPGAs use synchronous block RAM which requires a
registered model.  Rather than getting generic RAM code from a VHDL
site, check the site for your FPGA supplier for code to infer a RAM
that works for their parts.  Or at very least, check for a model from
the site for the synthesis tool you are using.

Rick

Article: 134543
Subject: Multicore OS
From: "vinceserti@gmail.com" <vinceserti@gmail.com>
Date: Sun, 17 Aug 2008 01:43:26 -0700 (PDT)
Links: << >>  << T >>  << A >>
Hi all,

I am new to multicore platforms on FPGA's. I was wondering if there is
some good information somewhere on the net where I can read on
building multicore systems and installing an OS on an FPGA target
board for this multicore system (Digilent Virtex II-Pro,...). (I am
looking for theoretical and practical tutorials like in EDK,...)

The multicore system I would like to build is around microblaze or
PowerPC cores but other references are good.


Kind regards and thanks for your help.

Vince Serti

Article: 134544
Subject: Re: A timing question
From: "Symon" <symon_brewer@hotmail.com>
Date: Sun, 17 Aug 2008 09:49:30 +0100
Links: << >>  << T >>  << A >>
"rickman" <gnuarm@gmail.com> wrote in message 
news:d5d7b8d8-0dec-48c3-a26d-4cf644d35327@p25g2000hsf.googlegroups.com...
> On Aug 16, 3:13 pm, "Symon" <symon_bre...@hotmail.com> wrote:
>> "tersono" <ethel.thef...@ntlworld.com> wrote in message
>>
>> news:equda41r55sn5pta3e58uikts03gku5lae@4ax.com...
>>
>>
>> Dear Ethel Frogface,
>> Use the IOB's DDR flipflops to output the clock. Use a '0' and a '1' on 
>> the
>> data inputs to the two DDR registers. Also, use the IOBs' flipflops for 
>> the
>> register you've made. Then the clock and the register outputs all change 
>> at
>> the same time.
>> HTH, Syms.
>>
>> p.s. Philip F. claims to have invented this way of getting clocks out of
>> FPGAs. He always bleats on at me if I don't mention that! ;-)
>
> Philip F's claims aside, is this really a useful way of propagating
> the clock?

Yes.

> With both the output clock and the registered data coming
> from IOB FFs, won't there be a race condition?

No. Because...

> I guess the receiving
> chip can clock the data on the other edge of the clock,

Good idea! ;-)

> but typically
> when clocking on board, the data has a minimum hold time sufficient to
> reliably clock the data into the receiving device.  I don't think this
> method will provide the required hold time.
>

OK, if you're set on using the 'same' edge instead of the 'other' one, then 
if you're driving another FPGA, the inputs have special programmable delays 
built in to give the appearance of zero hold time for the IOB input FFs. For 
devices without zero hold time, read on below.

>
> I have not used the DLLs before, but my impression was that they could
> be used to clock the data out on a clock which is delay locked to the
> actual board clock.  The board clock output is feed back to an input
> pin and run through the DLL.  The DLL aligns it to provide the data
> output at the time you require it.  This should provide a sufficient
> delay of the data so that a positive hold time can be provided.
>
> Rick

Yep, that'll work provided the frequency of operation is within the DCM's 
range. If the OP is worried about a 2.6ns delay, I guess the DCM will work 
and I think the solution you suggest will work nicely. Even without 
feedback, it's easy to use a DCM to generate a clock to drive the 
DDR-clock-output-thingy suggested above to provide adjustable phase 
difference between clock and data outputs.

HTH., Syms.



Article: 134545
Subject: How to see the contents of BRAM in simulator?
From: aleksa <aleksaZR@gmail.com>
Date: Sun, 17 Aug 2008 06:17:07 -0700 (PDT)
Links: << >>  << T >>  << A >>
When I was inferring dual port BRAM with same data bus sizes,
I was able to see the contents of BRAM memory locations in ISE
simulator.

Now I'm instatieting (is this word correctly written?)
dual port BRAM with port A 8bits and port B 1bit wide data bus,
and I cant get ISE sim to show the memory contents.

Is it not possible or am I doing something wrong?

Article: 134546
Subject: Re: why does inferred RAM cause synthesis times to explode?
From: Peter Alfke <alfke@sbcglobal.net>
Date: Sun, 17 Aug 2008 08:40:35 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 17, 1:19=A0am, rickman <gnu...@gmail.com> wrote:
> On Aug 17, 3:45 am, andersod2 <thechrisander...@gmail.com> wrote:
>
>
>
> > Kolja,
> > Sorry it was late and I wasn't thinking right....
> > -Webpack ISE (9.x?)
> > -Verilog
> > -Spartan3a
> > -1 ram block =3D 18k bits partitioned at 72x256 (legal partition
> > according to docs...well some of them at least)
>
> > KJ,
> > Thanks a lot...I think you may be right because I'm getting a lot of
> > latch warnings, but didn't understand why. =A0I am using inferred ram,
> > which the docs say will work the same as an explicit template
> > instantiation if I just use the typical "reg [w:x] mem[y:z];"
> > notation...do you think using a template is always the better way to
> > go? =A0If this isn't evidence for that, then I don't know what is
> > because I'm not doing anything special. =A0In fact I lifted the code fo=
r
> > my mem module from a verilog site...if there's a a way I can guarantee
> > that the inferred ram will be put in a block I would very much like to
> > know as I find it much easier to work with than the template. =A0Is tha=
t
> > a constraints thing?
> > thanks again for your help
>
> There is RAM and there is RAM. =A0If you are inferring async RAM in an
> FPGA, it is likely that this does not map to any existing feature in
> the device. =A0Most FPGAs use synchronous block RAM which requires a
> registered model. =A0Rather than getting generic RAM code from a VHDL
> site, check the site for your FPGA supplier for code to infer a RAM
> that works for their parts. =A0Or at very least, check for a model from
> the site for the synthesis tool you are using.
>
> Rick

All Xilinx BlockRAMs are synchronous, they need a clock not only for
writing, but also for reading (the register the incoming address and
control information with a clock edge). In our documentation we often
say: "nothing happens without a clock".
Traditional RAMs may not have that requirement, and the distributed
(LUT-) RAM can read data without the use of a clock.
Peter Alfke, Xilinx


Article: 134547
Subject: Re: xilinx FPGA "program failed"
From: "Dave, AD5TU" <dmcomer@dmcmicro.com>
Date: Sun, 17 Aug 2008 11:04:36 -0700 (PDT)
Links: << >>  << T >>  << A >>
Check out http://portal.itauth.com/2007/11/07/learning-vhdl-spartan3-xc3s20=
0-fpga#comment-144.
In this blog entry, Vlas solve the problem by setting an iMPACT
option. He states ' "Use HIGHZ instead of BYPASS" by going to Edit ->
Preferences... -> iMPACT -> Configuration Preferences.'


On Jul 31, 11:09=A0pm, skyworld <chenyong20...@gmail.com> wrote:
> Hi,
>
> in many times when I program Xilixn FPGA with parallel cable, I always
> get message "program failed". In some case I populated several
> capacitors to the pins of download cable and it works. But many times
> I still failed. Did anybody here met this problem? Is there any
> comments on this?


Article: 134548
Subject: Re: How to see the contents of BRAM in simulator?
From: rickman <gnuarm@gmail.com>
Date: Sun, 17 Aug 2008 11:17:39 -0700 (PDT)
Links: << >>  << T >>  << A >>
On Aug 17, 9:17 am, aleksa <aleks...@gmail.com> wrote:
> When I was inferring dual port BRAM with same data bus sizes,
> I was able to see the contents of BRAM memory locations in ISE
> simulator.
>
> Now I'm instatieting (is this word correctly written?)
> dual port BRAM with port A 8bits and port B 1bit wide data bus,
> and I cant get ISE sim to show the memory contents.
>
> Is it not possible or am I doing something wrong?

When you instantiate a vendor supplied component, you are using their
library element.  Often this is just a black box that you can't see
into.  If you want to be able to view the contents of the BRAM, you
need to infer it instead of instantiating it.  Then the HDL code will
be fully visible.  BTW, the most efficient simulation uses integers
for the actual memory block rather than std_logic_vector.

Rick

Article: 134549
Subject: Ultracontroller-2 on ML403
From: Manny <mloulah@hotmail.com>
Date: Sun, 17 Aug 2008 13:01:12 -0700 (PDT)
Links: << >>  << T >>  << A >>
Hi,

This has already been resolved for me, I'm simply sharing the
experience in case it is of help to anybody.

After a rather agonizing week of blind speculative troubleshooting, I
managed to understand exactly what took place during my tests. Bottom
line: Xilinx 9.2i tools are =91buggy=92, avoid using at all cost! 9.1, on
the other hand, are much more stable. My dillemma, however, is to be
able to use ISE in conjunction with BOTH EDK and SysGen. 9.1 doesn=92t
support SysGen---please correct me if I'm wrong. For the time being, I
have both installed and I=92ll be alternating back-and-forth between
them with the ever daunting task of changing Windows Xilinx=92
Environment Variables each hop. Anybody knows of a way to script this
on Windows presuming it can be done.

Now, on the =91buggy=92 9.2 tools issue, I observed the following:
-ISE9.2 doesn=92t spot certain errors when compared to 9.1 e.g. in ucf
the original source code had the async interrupt constraint applied on
the VHDL signal instead of the corresponding I/O pin. Not sure if this
didn=92t use to be allowed and now is.

UCF snippet:
# Ignore this gpio bit as it is an async interrupt in this example
NET "gpio_out_s<4>" TIG;
I changed this to:
NET "gpio_out<4>" TIG;

-there is definitely something wrong with the IMPACT executable in the
9.2 version. I tried programming the PROM with a pregenerated .mcs
file in the reference design but it didn=92t work. This was observed
under ISE9.2.04 & EDK9.2.02 (both latest, 0x denoting sp x); however,
it did work with the ISE9.2.03 & EDK9.2 combination, I mean just for
the precompiled .mcs.

Regards,
-Manny



Site Home   Archive Home   FAQ Home   How to search the Archive   How to Navigate the Archive   
Compare FPGA features and resources   

Threads starting:
1994JulAugSepOctNovDec1994
1995JanFebMarAprMayJunJulAugSepOctNovDec1995
1996JanFebMarAprMayJunJulAugSepOctNovDec1996
1997JanFebMarAprMayJunJulAugSepOctNovDec1997
1998JanFebMarAprMayJunJulAugSepOctNovDec1998
1999JanFebMarAprMayJunJulAugSepOctNovDec1999
2000JanFebMarAprMayJunJulAugSepOctNovDec2000
2001JanFebMarAprMayJunJulAugSepOctNovDec2001
2002JanFebMarAprMayJunJulAugSepOctNovDec2002
2003JanFebMarAprMayJunJulAugSepOctNovDec2003
2004JanFebMarAprMayJunJulAugSepOctNovDec2004
2005JanFebMarAprMayJunJulAugSepOctNovDec2005
2006JanFebMarAprMayJunJulAugSepOctNovDec2006
2007JanFebMarAprMayJunJulAugSepOctNovDec2007
2008JanFebMarAprMayJunJulAugSepOctNovDec2008
2009JanFebMarAprMayJunJulAugSepOctNovDec2009
2010JanFebMarAprMayJunJulAugSepOctNovDec2010
2011JanFebMarAprMayJunJulAugSepOctNovDec2011
2012JanFebMarAprMayJunJulAugSepOctNovDec2012
2013JanFebMarAprMayJunJulAugSepOctNovDec2013
2014JanFebMarAprMayJunJulAugSepOctNovDec2014
2015JanFebMarAprMayJunJulAugSepOctNovDec2015
2016JanFebMarAprMayJunJulAugSepOctNovDec2016
2017JanFebMarAprMayJunJulAugSepOctNovDec2017
2018JanFebMarAprMayJunJulAugSepOctNovDec2018
2019JanFebMarAprMayJunJulAugSepOctNovDec2019
2020JanFebMarAprMay2020

Authors:A B C D E F G H I J K L M N O P Q R S T U V W X Y Z

Custom Search