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 123600

Article: 123600
Subject: Re: New keyword 'orif' and its implications
From: Jim Lewis <jim@synthworks.com>
Date: Thu, 30 Aug 2007 11:57:34 -0700
Links: << >>  << T >>  << A >>
Weng,
This is correct for your "State_A" example:
> --   assert onehot0 (E0, E1, E2) ;              -- Jim wrote
> --   assert onehot0 (E3, E4, E5) ;

This is correct for your "OutBus" example.
> assert onehot0 (E0, E1, E2, E3, E4, E5) ; -- Weng adds this line

Note I did not write an assertion for your OutBus
example as although it would be nice to have for
simulation, it is not needed at all to get the
hardware you desire.


> The above two example show that with mixed 'elsif' and 'orif' language
> branch statement structure, HDL will provide more powerful and concise
> way to deal with mutually exclusiveness.
Not sure I am comfortable with mixing elsif with orif without
other syntax to reinforce the intent.  I am concerned that this
would increase the design risk.  Are you certain your
testbench is good enough?

Without more analysis, I would rather write a separate
specification for mutual exclusion (via the assertion)
as this clearly states intent.


 > VHDL beginner would need to go a long way to write the code
> type Jim had written.
Why is a beginner too inept to write an assert statement
especially for your trival code above?

You mention that the big draw back to using complex conditions is
that you would have to create intermediate signals.  Why is that
bad?  Again, I need to see compelling code cases.


Cheers,
Jim

Article: 123601
Subject: Re: New keyword 'orif' and its implications
From: Jim Lewis <jim@synthworks.com>
Date: Thu, 30 Aug 2007 12:10:56 -0700
Links: << >>  << T >>  << A >>
Kolja,
> result <= 
 >     (input1 and (result'range => E1)) or
 >     (input2 and (result'range => E2)) or
 >     (input3 and (result'range => E3)) ;

This is another of the correct, but annoying pieces of code
that some synthesis tools (Synopsys) did not implement the last
I checked.  Anyone know if they fixed this?

This is the primary reason for the new overloading on logic operations
(AND, OR, ...) that allow mixing a scalar (std_ulogic) with a vector
(std_logic_vector).  As a result, with the new revision or old revision
with supplemental overloading one can write:

   result <= (input1 and E1) or (input2 and E2) or (input3 and E3);

Cheers,
Jim

Article: 123602
Subject: Re: Partial reconfiguration using ICAP
From: "ajith.thamara@gmail.com" <ajith.thamara@gmail.com>
Date: Thu, 30 Aug 2007 19:14:16 -0000
Links: << >>  << T >>  << A >>


hi sean,

> Hmm, the bin should be loaded completely... the only thing I can think
> of why it would not be is that the configuration logic requires some
> clock cycles after the configuration data to empty it's internal
> pipeline.

Can you explain how to do this.
 What modification should I do in the code.
Thanking you,
ajith.


Article: 123603
Subject: Re: Output signals not synchronized
From: Andy Peters <google@latke.net>
Date: Thu, 30 Aug 2007 12:22:22 -0700
Links: << >>  << T >>  << A >>
On Aug 30, 10:35 am, EEngineer <mari...@gmail.com> wrote:
> On Aug 30, 11:12 am, Gabor <ga...@alacron.com> wrote:
>
>
>
> > On Aug 30, 10:14 am, EEngineer <mari...@gmail.com> wrote:
>
> > > On Aug 30, 9:58 am, Gabor <ga...@alacron.com> wrote:
>
> > > > On Aug 29, 7:40 pm, "John_H" <newsgr...@johnhandwork.com> wrote:
>
> > > > > "EEngineer" <mari...@gmail.com> wrote in message
>
> > > > >news:1188426999.764557.233750@k79g2000hse.googlegroups.com...
>
> > > > > > there are also UCF lines:
>
> > > > > > NET ctrl_data<*> SLEW = FAST;
> > > > > > NET ctrl_data<*> DRIVE = 2;
> > > > > > NET ctrl_data<*> IOSTANDARD = LVCMOS33;
>
> > > > > To start with, your timing constraint of OFFSET = OUT 100 ps AFTER is not
> > > > > something that will make your outputs happen coincident with your clock,
> > > > > it's a specification that will simply fail in the place & route and timing
> > > > > analyzer.  Take a look.  The fastest your outputs will go depend on how fast
> > > > > an IOB register can deliver its output relative to your global clock.  These
> > > > > numbers are documented and easy to prototype.
>
> > > > > Second, the 2 mA drive level will give you a slower rise/fall.  The skew in
> > > > > your output signal time can - depending on your load - be a noticeable time
> > > > > difference.
>
> > > > > Third, the logic analyzer is an asynchronous device which will usually
> > > > > provide a 2.5 ns uncertainty in your results leaving only a 2.5 ns
> > > > > difference not explained by the test equipment.
>
> > > > > Please find the online documentation (or a Xilinx class) that describes what
> > > > > you can and cannot do with constraints.  This fundamental information
> > > > > usually is only understood after an engineer can't understand why their
> > > > > design isn't working.  Learn it.
>
> > > > If you need your outputs to have very low skew, your only hope
> > > > is to place all of the output flip-flops in the IOB's (IOB=TRUE
> > > > attribute on the flip-flop or net).  You can also globally place
> > > > registers in IOB's using the synthesis and map properties.  If
> > > > your outputs are generated by fabric flip-flops it is very hard
> > > > to get your skew below 2.5 nS
>
> > > > By the way, why do you need such low skew on these lines?  Is the
> > > > driven device asynchronous with respect to your clock?
>
> > > > Regards,
> > > > Gabor
>
> > > I need those signals to control the analog CMOS circuit that has a
> > > requirement for some signals not to overlap - this happens when the
> > > output from the FPGA is not synchronous enough.
>
> > These signals will never be "synchronous enough" to guarantee zero
> > overlap when changing on the same clock cycle.  Use a faster clock
> > if you need to, but certainly add a clock cycle between assertion
> > of signals that must not overlap.
>
> Yes, I was thinking of using 16 times faster clock to add one clock
> cycle in between, but I have checked signals with the 500MHz scope
> (10Mohm, 9.5pF probes) and it looks like that digital analyser is
> giving misleading waveforms - there is almost no delay between these
> two signals (less then 1ns). The rise time is same for both signals,
> and this can be improved by increasing the drive in UCF file from the
> minimum 2mA, I don't know the load yet.

You might want to learn how a logic analyzer works.  It sounds like
your analyzer has a 400 MHz sample clock because of your noted 2.5 ns
uncertainty.  This sample clock is of course asynchronous to your
circuit.  So even if your FPGA's outputs are skewed less than 1 ns (as
you point out), that window might include the logic analyzer's sample
point, and as such signals that are in reality only 500 ps apart
appear on the analyzer to be 2.5 ns apart.

So you should ensure that all of your signals are registered by a low-
skew clock in the IOBs and ensure that your PCB routing has equal
length lines from the FPGA to the load.  This should result in quite
good skew matching.  Also make sure the output s set to FAST, and
increase the drive strength.  Read your timing analyzer's report for I/
O clock-to-out times.

And if the requirement is to ensure that two outputs are never enabled
simultaneously, then do as Gabor says and insert a one-clock dead time
between the deassertion of one output and the assertion of the other.

-a


Article: 123604
Subject: Re: PCB Impedance Control
From: "John_H" <newsgroup@johnhandwork.com>
Date: Thu, 30 Aug 2007 12:24:01 -0700
Links: << >>  << T >>  << A >>
"PeteS" <axkz70@dsl.pipex.com> wrote in message 
news:H-ydnSZMEttzlkrbnZ2dnUVZ8vidnZ2d@pipex.net...
<snip>
>
> I have a number of pretty pics I made to illustrate the issue. I'll put 
> 'em on a.b.s.e tomorrow sometime.
>
> As an aside, at high speeds (which I define as having a track longer than 
> 1/4 rising/falling edge, YMMVG), there is no such thing as 'ground'. The 
> ground plane is a signal layer insulated by copper ;)
> [Although it helps to keep large power currents away from the high speed 
> return paths].
>
> Cheers
>
> PeteS

Since without a ground one has a dipole antenna, could you qualify what you 
mean?  The impedance of the plane is measured in units of picoHenry per 
square so it's not a solid ground, certainly, but without a ground we'd be 
in a world of hurt at these high frequencies. 



Article: 123605
Subject: Re: Xilinx / ISE multi-cycle path constraint pitfall
From: Mike Treseler <mike_treseler@comcast.net>
Date: Thu, 30 Aug 2007 13:11:20 -0700
Links: << >>  << T >>  << A >>
eli.billauer@gmail.com wrote:

> But please, try this out.

I will use quartus only because it makes nicer graphics.
ISE would give me equivalent results:

Here's the code I used
http://home.comcast.net/~mike_treseler/multicycle.v

The RTL viewer sees the code like this:
http://home.comcast.net/~mike_treseler/multicycle.pdf

Quartus synthesis in a default Stratix device says:

; Total registers                    ; 19    ;
; Total logic cells in carry chains  ; 15    ;

Static timing with default constraints says:

; Type                 ; Actual Time
+----------------------+---------------------------------
  Clock Setup: 'clk'   ; 249.81 MHz ( period = 4.003 ns )

Here's how synthesis did the fit:
http://home.comcast.net/~mike_treseler/multicycle_fit.pdf

I see no reason to tinker with timing constraints in this case.

           -- Mike Treseler

Article: 123606
Subject: Re: New keyword 'orif' and its implications
From: Andy <jonesandy@comcast.net>
Date: Thu, 30 Aug 2007 13:21:33 -0700
Links: << >>  << T >>  << A >>
Weng,

I'll say this: I admire your tenacity.

The coding Jim provided was to illustrate a way, with today's standard
(not including PSL), to code your orif example such that the synthesis
tool would give the equivalent implementation.

Since you seem to be in favor of powerful and concise ways to
implement this, an even better way to code this function would be to
use arrays, particularly with more than just 6 choices involved:

process (reset, clk) is
  variable: temp : std_logic_vector(outbus'range);
begin
  if reset = '1' then
    outbus <= (others => '0');
  elsif rising_edge(clk) then
    temp := (others => '0');
    for i in e'range loop
      temp := temp or (e(i) and data(i));
    end loop;
    if unsigned(e) /= 0 then
      outbus <= temp;
    end if;
  end if;
end process;

Now, if we are allowed to extend the standard (not the language), with
the use of a synthesis-aware assertion and zero_one_hot() function,
this can be greatly simplified, while also making it more functionally
clear:

process (reset, clk) is
begin
  if reset = '1' then
    outbus <= (others => '0');
  elsif rising_edge(clk) then
    for i in e'range loop
      if e(i) = '1' then
        outbus <= data(i);
        exit;
      end if;
    end loop;
    assert zero_one_hot(e);
  end if;
end process;

However, a loop of if/then statements is not compatible with your
proposed orif keyword.

Therefore, we have a more powerful and concise example of coding this
function with zero_one_hot() than is possible with a new keyword
'orif'.

So, zero_one_hot() can do everything 'orif' can do and more, while
doing so more concisely, and not requiring a language syntax change.

Why do we need 'orif'?

Andy


Article: 123607
Subject: Re: Die size, pitch size?
From: Peter Alfke <peter@xilinx.com>
Date: Thu, 30 Aug 2007 13:25:40 -0700
Links: << >>  << T >>  << A >>
On Aug 30, 11:57 am, Pasacco <pasa...@gmail.com> wrote:
> Let me ask other question.
>
> FPGA device consists of
> Huge SRAM cells (around 10 Mbits, xc2vp30-ff896) + memory controller +
> hard cores (such as PPC, multiplier)
>
> If we neglect hard cores,
>
> I guess that more than 95% of FPGA device is just array of SRAM cells.
>
> Does someone aware of these data?
> Thank you again.

Your number is exaggerated, but what is your point?
What do you try to prove, argue, challenge, understand ???
FPGA technology is no big secret.
It is well-understood in the technical, commercial and academic
communities.
Peter Alfke


Article: 123608
Subject: Re: An FPGA startup is seeking testcase from potential customers
From: Jim Granville <no.spam@designtools.maps.co.nz>
Date: Fri, 31 Aug 2007 09:19:01 +1200
Links: << >>  << T >>  << A >>
siliconbluetechnology@yahoo.com wrote:
> Hello,
> 
> Silicon Blue Technologies is an FPGA startup located in Sunnyvale CA.
> The FPGA product it is developing has ultra low power consumption and
> is targeted to low power applications.
> 
> The company is seeking some commercial designs in the form of Verilog
> and/or VHDL designs to test its software and FPGA architecture.
> 
> Please provide your input if you are interested in the product or have
> testcases which can be useful to test both FPGA hardware and software
> capabilities.
> 
> Thank you.
> 
> Silicon Blue Technologies
> http://www.siliconbluetech.com

This is a little light on information.
No mention of size/pincount of the FPGAs, so no one knows if their
app is too small, or too large.

There are plenty of Open Source designs out there, so why not grab
a USB core, an Ethernet core, and a 32 Bit uC core (Mico32?),
and then run up a power prediction on that and compare it with
both other RAM FPGAs, and also devices like
Atmel's Mid-volume CAP7/CAP9 series, and higher volume Microcontrollers.

I did see this news : ["QuickLogic Corp. is backing away from the FPGA 
market, saying it will instead focus on an ASSP-like sector called 
customer specific standard products (CSSPs)"]

-jg



Article: 123609
Subject: Re: New keyword 'orif' and its implications
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Thu, 30 Aug 2007 14:43:45 -0700
Links: << >>  << T >>  << A >>
On Aug 30, 1:21 pm, Andy <jonesa...@comcast.net> wrote:
> Weng,
>
> I'll say this: I admire your tenacity.
>
> The coding Jim provided was to illustrate a way, with today's standard
> (not including PSL), to code your orif example such that the synthesis
> tool would give the equivalent implementation.
>
> Since you seem to be in favor of powerful and concise ways to
> implement this, an even better way to code this function would be to
> use arrays, particularly with more than just 6 choices involved:
>
> process (reset, clk) is
>   variable: temp : std_logic_vector(outbus'range);
> begin
>   if reset = '1' then
>     outbus <= (others => '0');
>   elsif rising_edge(clk) then
>     temp := (others => '0');
>     for i in e'range loop
>       temp := temp or (e(i) and data(i));
>     end loop;
>     if unsigned(e) /= 0 then
>       outbus <= temp;
>     end if;
>   end if;
> end process;
>
> Now, if we are allowed to extend the standard (not the language), with
> the use of a synthesis-aware assertion and zero_one_hot() function,
> this can be greatly simplified, while also making it more functionally
> clear:
>
> process (reset, clk) is
> begin
>   if reset = '1' then
>     outbus <= (others => '0');
>   elsif rising_edge(clk) then
>     for i in e'range loop
>       if e(i) = '1' then
>         outbus <= data(i);
>         exit;
>       end if;
>     end loop;
>     assert zero_one_hot(e);
>   end if;
> end process;
>
> However, a loop of if/then statements is not compatible with your
> proposed orif keyword.
>
> Therefore, we have a more powerful and concise example of coding this
> function with zero_one_hot() than is possible with a new keyword
> 'orif'.
>
> So, zero_one_hot() can do everything 'orif' can do and more, while
> doing so more concisely, and not requiring a language syntax change.
>
> Why do we need 'orif'?
>
> Andy

Hi Andy,
I would like to answer your this question.

process (reset, clk) is
begin
   if reset = '1' then
     outbus <= (others => '0');
   elsif rising_edge(clk) then
     for i in e'range loop
       if e(i) = '1' then
         outbus <= data(i);
         exit;
       end if;
     end loop;
     assert zero_one_hot(e);
   end if;
 end process;

 Good example !

you have claimed in other place the following:
1. define e;
2. Assign e's every bit a combinational value;

You have missed the most important things: what conditions they are !

Here is an example from my coding that shows orif usage: in-line
programming capability

   if(TWindowLoad_E0_L_H and nC_BE_R0(3) = '0') then
    TWindow_3(10 downto 8) <= AD_R0(26 downto 24);


   orif(TWindowLoad_E0_H_H and nC_BE_R0(7) = '0') then
    TWindow_3(10 downto 8) <= AD_R0(58 downto 56);
   end if;


Please ask Verilog group why they introduce 'unique' keyword to
provide in-line programming tool to specify the mutually exclusiveness
if I don't misunderstand as following example shown by Marcus:

| module unique_if;
|     bit clk, reset;
|
|     logic E0, E1, E2, E3, E4, E5;
|     logic [0:5] E;
|
|     logic [7:0] OutBus;
|     logic [7:0] Data [0:5] = '{ 0, 1, 2, 3, 4, 5 };
|
|
|     initial begin
|       clk   <= 0;
|       reset <= 1;
|       #20ns;
|       reset <= 0;
|     end
|
|     always clk = #5ns ~clk;
|
|     always @(posedge clk, posedge reset) begin
|       if(reset)
|         OutBus <= 0;
|       else begin
|           void'(randomize(E) with {
|               E inside { 1, 2, 4, 8, 16, 32, 10 }; // note the
occurence of 10
|           });
|
|           {E0, E1, E2, E3, E4, E5} = E;
|
|           unique if(E0) OutBus <= Data[0];
|           else   if(E1) OutBus <= Data[1];
|           else   if(E2) OutBus <= Data[2];
|           else   if(E3) OutBus <= Data[3];
|           else   if(E4) OutBus <= Data[4];
|           else   if(E5) OutBus <= Data[5];
|       end
|      end
|
| endmodule : unique_if


Weng


Article: 123610
Subject: Re: PCB Impedance Control
From: PeteS <axkz70@dsl.pipex.com>
Date: Thu, 30 Aug 2007 19:26:28 -0400
Links: << >>  << T >>  << A >>
Symon wrote:
> "maxascent" <maxascent@yahoo.co.uk> wrote in message 
> news:ifidnQIYxf3YUUvbRVn_vw@giganews.com...
>> Hi
>>
>> If I am designing a pcb using impedance controlled layers can I treat the
>> power planes as a reference layer as well as the gnd layers?
>>
>> Cheers
>>
>> Jon
> 
> Hi Jon,
> Yes. But with a caveat. When your signals switch reference layers, make sure 
> there is a path for the reference current.
> 
> E.g. Take a 6 layer board, layer 2 ground, layer 5 power. If the signal goes 
> from layer 1 to 6 through a via, you should have a bypass cap bewteen power 
> and ground near this via. Think of your signal as differential, the 
> complementary signal being the reference.
> 
> It's for this reason that I long ago ditched power planes and use multiple 
> ground planes instead. I route and/or copper pour powers. Then the bypass 
> cap in the example I gave can be replaced by a ground via, because layer 5 
> is ground in my PCB.
> 
> HTH., Syms. 
> 
> 

I have a number of pretty pics I made to illustrate the issue. I'll put 
'em on a.b.s.e tomorrow sometime.

As an aside, at high speeds (which I define as having a track longer 
than 1/4 rising/falling edge, YMMVG), there is no such thing as 
'ground'. The ground plane is a signal layer insulated by copper ;)
[Although it helps to keep large power currents away from the high speed 
return paths].

Cheers

PeteS

Article: 123611
Subject: Re: Where is Command Reg and Status Reg as mentioned in PCI system architecture (Mindshare) in generated pci32 core?
From: Ace <yasirmm@gmail.com>
Date: Thu, 30 Aug 2007 19:05:59 -0700
Links: << >>  << T >>  << A >>

> You do need to use a configuration cycle to write to the command
> register to enable memory or I/O transfers when initialising the core;
> see "stimulus.vhd" in the ping_tb testbench for example.
>
> - Brian

Thank you Brian for clearing that bit for me.

I didn't know that I have to initialise the core. Maybe that's the
reason why I still couldn't get the Device and Vendor ID after
synthesizing the core on my development board. Can anyone explain when
and how is the "configuration cycle" need to be done for the
initialising process?

Thank you in advance.


Article: 123612
Subject: Re: New keyword 'orif' and its implications
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Thu, 30 Aug 2007 20:32:50 -0700
Links: << >>  << T >>  << A >>
Hi Jim and Colin,
Your assert zero_one_hot() (or any other function name) may not be the
one I want.

Your zero_one_hot() tells simulator to check if all bits meet the zero
or one active conditions. If it meets, return '1', otherwise return
'0'.

The code doesn't have any AUTHORITY to let VHDL compiler to do any
optimization, and it just has the AUTHORITY to let simulator run the
function and check its correctness.

An assertion function is not authorized to transfer information to
VHDL compiler !

In strict computer language meaning, any VHDL compiler has no
OBLIGATION to do optimization work based on information of inputs from
zero_one_hot() code even though they are designed to do so for the
purpose.

What an assertion function can do is to return its value: true or
false, how can it be used to transfer mutually exclusive information
to VHDL compiler? IT IS ILLEGAL !

If so, that is totally different from 'orif' meaning: for 'orif' It
not only gives the mutually exclusive information, but also orders:
1. VHDL compiler to do code optimization based on the mutually
exclusive information;
2. Simulator to check if related mutually exclusiveness is met.

Because it is a keyword, it has AUTHORITY to issue two different
commands to VHDL compiler and simulator, respectively, and the orders
are mandated and it has no code to execute.

Finally I got my point.

Weng


Article: 123613
Subject: Re: Output signals not synchronized
From: EEngineer <maricic@gmail.com>
Date: Fri, 31 Aug 2007 04:08:47 -0000
Links: << >>  << T >>  << A >>
On Aug 30, 3:22 pm, Andy Peters <goo...@latke.net> wrote:
> On Aug 30, 10:35 am, EEngineer <mari...@gmail.com> wrote:
>
>
>
>
>
> > On Aug 30, 11:12 am, Gabor <ga...@alacron.com> wrote:
>
> > > On Aug 30, 10:14 am, EEngineer <mari...@gmail.com> wrote:
>
> > > > On Aug 30, 9:58 am, Gabor <ga...@alacron.com> wrote:
>
> > > > > On Aug 29, 7:40 pm, "John_H" <newsgr...@johnhandwork.com> wrote:
>
> > > > > > "EEngineer" <mari...@gmail.com> wrote in message
>
> > > > > >news:1188426999.764557.233750@k79g2000hse.googlegroups.com...
>
> > > > > > > there are also UCF lines:
>
> > > > > > > NET ctrl_data<*> SLEW = FAST;
> > > > > > > NET ctrl_data<*> DRIVE = 2;
> > > > > > > NET ctrl_data<*> IOSTANDARD = LVCMOS33;
>
> > > > > > To start with, your timing constraint of OFFSET = OUT 100 ps AFTER is not
> > > > > > something that will make your outputs happen coincident with your clock,
> > > > > > it's a specification that will simply fail in the place & route and timing
> > > > > > analyzer.  Take a look.  The fastest your outputs will go depend on how fast
> > > > > > an IOB register can deliver its output relative to your global clock.  These
> > > > > > numbers are documented and easy to prototype.
>
> > > > > > Second, the 2 mA drive level will give you a slower rise/fall.  The skew in
> > > > > > your output signal time can - depending on your load - be a noticeable time
> > > > > > difference.
>
> > > > > > Third, the logic analyzer is an asynchronous device which will usually
> > > > > > provide a 2.5 ns uncertainty in your results leaving only a 2.5 ns
> > > > > > difference not explained by the test equipment.
>
> > > > > > Please find the online documentation (or a Xilinx class) that describes what
> > > > > > you can and cannot do with constraints.  This fundamental information
> > > > > > usually is only understood after an engineer can't understand why their
> > > > > > design isn't working.  Learn it.
>
> > > > > If you need your outputs to have very low skew, your only hope
> > > > > is to place all of the output flip-flops in the IOB's (IOB=TRUE
> > > > > attribute on the flip-flop or net).  You can also globally place
> > > > > registers in IOB's using the synthesis and map properties.  If
> > > > > your outputs are generated by fabric flip-flops it is very hard
> > > > > to get your skew below 2.5 nS
>
> > > > > By the way, why do you need such low skew on these lines?  Is the
> > > > > driven device asynchronous with respect to your clock?
>
> > > > > Regards,
> > > > > Gabor
>
> > > > I need those signals to control the analog CMOS circuit that has a
> > > > requirement for some signals not to overlap - this happens when the
> > > > output from the FPGA is not synchronous enough.
>
> > > These signals will never be "synchronous enough" to guarantee zero
> > > overlap when changing on the same clock cycle.  Use a faster clock
> > > if you need to, but certainly add a clock cycle between assertion
> > > of signals that must not overlap.
>
> > Yes, I was thinking of using 16 times faster clock to add one clock
> > cycle in between, but I have checked signals with the 500MHz scope
> > (10Mohm, 9.5pF probes) and it looks like that digital analyser is
> > giving misleading waveforms - there is almost no delay between these
> > two signals (less then 1ns). The rise time is same for both signals,
> > and this can be improved by increasing the drive in UCF file from the
> > minimum 2mA, I don't know the load yet.
>
> You might want to learn how a logic analyzer works.  It sounds like
> your analyzer has a 400 MHz sample clock because of your noted 2.5 ns
> uncertainty.  This sample clock is of course asynchronous to your
> circuit.  So even if your FPGA's outputs are skewed less than 1 ns (as
> you point out), that window might include the logic analyzer's sample
> point, and as such signals that are in reality only 500 ps apart
> appear on the analyzer to be 2.5 ns apart.
>
> So you should ensure that all of your signals are registered by a low-
> skew clock in the IOBs and ensure that your PCB routing has equal
> length lines from the FPGA to the load.  This should result in quite
> good skew matching.  Also make sure the output s set to FAST, and
> increase the drive strength.  Read your timing analyzer's report for I/
> O clock-to-out times.
>
> And if the requirement is to ensure that two outputs are never enabled
> simultaneously, then do as Gabor says and insert a one-clock dead time
> between the deassertion of one output and the assertion of the other.
>
> -a- Hide quoted text -
>
> - Show quoted text -

2.5ns did not bother me, as that is the finest resolution of the logic
analyser. But 5ns did bother me as that is longer than the sampling
resolution. Scope has given me more precise reading - propagation
dealy is 700ps and the rise and fall times for both the signals aprox.
2.5ns which is perfectly fine.


Article: 123614
Subject: Re: modelsim
From: fpgabuilder <fpgabuilder-groups@yahoo.com>
Date: Fri, 31 Aug 2007 07:05:58 -0000
Links: << >>  << T >>  << A >>
On Aug 30, 9:10 am, fpgabuilder <fpgabuilder-gro...@yahoo.com> wrote:
> On Aug 30, 6:00 am, fazulu deen <fazulu.v...@gmail.com> wrote:
>
> > Jon Beniston wrote:
> > > On 30 Aug, 10:21, fazulu deen <fazulu.v...@gmail.com> wrote:
> > > > Hai all,
>
> > > > Can any one suggest with an example how to run c++ code in modelsim
> > > > simulator...I didnt understand the example mentioned in modelsim us=
er
> > > > guide..Anyone tried this??
>
> > > What didn't you understand about it?
>
> > >linking was not clear to me and also in my case while simulating the c=
++ it will output a test file that has be red by the verilog code...both c+=
+ and verilog is independent and c++ should be first before verilog after t=
he file is obtained from the c++ simulator the verilog will start....how th=
is can be achieved
>
> Fazulu,
>
> If I understand you want to fire-off a thread in C++ and then invoke
> the verilog in msim.  While I am not sure this could be done but I
> think for all practical purposes you can model your system so that
> your logic design (verilog sim) starts first and then invokes C++
> routines that comprise your system environment.  I followed the
> commands and guidelines shown in msim's documentation for visual c.
> And that worked for me.  What did not work was the cygwin commands
> they had listed.
>
> -sanjay

Here is the page from msim's manual - although I doubt if you can
still make the C++ code execute first.  Arguable you can execute the C+
+ code at time 0.  But you still have to call launch vsim first after
which it is going to execute c++ objects from the dll.

qverilog

The qverilog command compiles (vlog), optimizes (vopt), and simulates
(vsim) Verilog and SystemVerilog designs in a single step. It combines
the compile, elaborate, and simulate phases together, as some users
may be accustomed to doing with NC-Sim. This command is provided to
ease these users' transition to QuestaSim.

The qverilog command invokes vlog, vopt, and then vsim. All standard
vlog (and vopt) arguments are supported and are applied directly to
the qverilog command line. All vsim options are supported and are
applied through the qverilog -R argument.

You can directly enter either C or C++ file onto the qverilog command
line. QuestaSim automatically processes them using the SystemVerilog
Direct Programming Interface (DPI). Refer to "DPI and the qverilog
Command" for details. If your design contains DPI export tasks or
functions, it is recommended that you use the vlog/vsim flow.

You can invoke the GUI by specifying the -gui argument through the
qverilog -R argument.

By default, qverilog runs the simulation and quits automatically by
invoking an implicit "run -all; quit -f". However, if you invoke
qverilog with -do, -gui, or -I, qverilog invokes the simulator and
keeps it open until you explicitly quit the tool.

The qverilog command creates a work library named work in the current
directory, if not present already.

The command arguments listed below are only those unique to the
qverilog command. This command also supports all vlog command
arguments.

Syntax

qverilog [[<vlog_and_vopt_options>]] [-ccflags "opts"] [-gui] [-l
<logfile>] <filename>
[-ldflags "opts"] [-R <vsim_options>] [-work <library_name>]

Arguments

    * [<vlog_and_vopt_options>]

All vlog and vopt options are supported. For example, if you are
running qverilog on a SystemVerilog design, you need to add the -sv
argument to the command line.

    * -ccflags "opts"

Specifies all C/C++ compiler options. Options are in quotes. Optional.
For -ccflags and -ldflags, qverilog does not check the validity of the
option(s) you specify. The options are directly passed on to the
compiler and linker, and if they are not valid, an error message is
generated by the compiler/linker.

    * -gui

Simulates the design using the ModelSim GUI.

    * -l <logfile>

Creates a logfile/transcript compatible with vlog's -l logfile
argument. Optional. If omitted, a default transcript called
qverilog.log is created that collects the output from vlog, vopt, and
vsim.

    * <filename>

Specifies the name of the Verilog or C/C++ source code file to
compile. One filename is required. Multiple filenames separated by
spaces may be entered. Wildcards may be used. In the case of C files,
they are automatically processed as DPI code.

    * -ldflags "opts"

Specifies all linker options in quotes. Optional.
For -ccflags and -ldflags, qverilog does not check the validity of the
option(s) you specify. The options are directly passed on to the
compiler and linker, and if they are not valid, an error message is
generated by the compiler/linker.

    * -R <vsim_options>

Specifies valid vsim arguments to be applied to the simulation. All
vlog and vopt arguments must come before -R is specified, as all
arguments specified after -R are interpreted as vsim arguments.

    * -work <library_name>

Specifies a logical name or pathname of a library that is to be mapped
to the logical library work. Optional. By default, the compiled design
units are added to the work library. The specified pathname overrides
the pathname specified for work in the project file.

Examples

    * Compile, optimize, and simulate the specified files. The C/C++
code contained in the d.c file is processed as DPI code, creating a
shared object, and loading it into vsim at runtime. Creates a logfile
named "logfile" and opens the QuestaSim GUI with the simulation loaded
and ready to run.

           qverilog -l logfile a.v b.v c.v d.c -R -gui



Questa SV/AFV Reference Manual, 6.3a

=A9 1991-2007 Mentor Graphics Corporation. All rights reserved.

Browser Requirements


Article: 123615
Subject: Re: Spartan3E and DDR termination
From: "Bob" <nimby_NEEDSPAM@roadrunner.com>
Date: Fri, 31 Aug 2007 01:03:44 -0700
Links: << >>  << T >>  << A >>

"Guru" <ales.gorkic@email.si> wrote in message 
news:1188464373.046442.162640@19g2000hsx.googlegroups.com...
> Hi all,
>
> We are building a board with Spartan3E (XC3S1200E FG320) and a 64MB
> x16 DDR (HYB25DC512160CF-6). Trying to make the board as tiny as
> possible the DDR termination presents a problem. Since the Spartan3E
> does not have DCI, termination on chip is not possible. This means
> that 44 termination resistors should be added and maybe a VTT power
> source. The other problem is that according to MIG we should connect
> DDR to two banks.
>
> Any good suggestions?
> Is it possible to eliminate termination resistors?
>
> Cheers,
>
> Guru
>

First, I would suggest changing your newsgroup alias to something other than 
"Guru" if you're asking whether or not you can eliminate terminations. How 
about "Have Lots To Learn"?

You must meet setup and hold requirements of the data and control lines, 
meet the rise/fall time and monotonicity requirements of the clocks and 
strobes, and not violate the overshoot and undershoot specs on all signals 
for the FPGA and RAM. That's all there is to it.

Get a simulator and determine what you need for your particular FPGA, RAM, 
and board layout restrictions. If you're going to skimp on the terminations 
then this is the only way to do it.

Bob



Article: 123616
Subject: Re: Die size, pitch size?
From: Pasacco <pasacco@gmail.com>
Date: Fri, 31 Aug 2007 01:16:37 -0700
Links: << >>  << T >>  << A >>
I just need to know some technology data, for example, "die size" and
"LUT size", in order to compare different designs.
As far as I know, these technology data are not available anywhere.



Article: 123617
Subject: Spartan 3E - Readback via JTAG
From: "Benni V." <benniv.sep08@googlemail.com>
Date: Fri, 31 Aug 2007 09:06:48 -0000
Links: << >>  << T >>  << A >>
Hi,

i'd like to readback all the contents of an XC3S500E via the JTAG
interface. Because this option is not implemented in the iMPACT-tool
(well, it is implemented via the verify-option, but the readback data
cannot be stored to a file), i tried to extend xc3sprog [1] to
readback capability (that is extending the xc3sprog.cc)

My question is, what commands are to be send to the Spartan 3E,
because I wasn't able to find it on the Xilinx webpage, yet, although
there are user guides for the Spartan 2(E)[2] and the Virtex[3]
series.
The opcodes used via the SerialMAP-interface are documented in [4],
the JTAG Configuration Mode is explained in [5].

Any help would be appreciated.

Greetings
Benni

[1] XC3SPROG http://sourceforge.net/projects/xc3sprog
[2] XAPP176 http://www.xilinx.com/bvdocs/appnotes/xapp176.pdf
[3] XAPP139 http://www.xilinx.com/bvdocs/appnotes/xapp139.pdf
[4] XAPP452 http://www.xilinx.com/bvdocs/appnotes/xapp452.pdf
[5] UG332 http://www.xilinx.com/bvdocs/userguides/ug332.pdf


Article: 123618
Subject: Re: SDF File basics
From: Jon Beniston <jon@beniston.com>
Date: Fri, 31 Aug 2007 02:09:37 -0700
Links: << >>  << T >>  << A >>
On 29 Aug, 22:49, "asic1...@gmail.com" <asic1...@gmail.com> wrote:
> What does SDF, and Back-annotation/Forward annotation mean? How is an
> SDF File generated and by which tool?
>
> Can someone explain how to do synthesis and what tools/file
> extensions
> (.sdf, .lib etc)  mean?

The Standard Delay Format (SDF) file stores the timing data generated
by. EDA tools for use at any stage in the design process.
www.eda-stds.org/sdf/sdf_3.0.pdf

SDF can be generated by most ASIC synthesis, P&R or STA tools.
Accuracy will vary though depending upon which stage in the design
process you are).

As to how to perform synthesis, read the user guide for your synthesis
tool.

Cheers,
Jon


Article: 123619
Subject: Re: PCB Impedance Control
From: "Symon" <symon_brewer@hotmail.com>
Date: Fri, 31 Aug 2007 11:02:13 +0100
Links: << >>  << T >>  << A >>
"John_H" <newsgroup@johnhandwork.com> wrote in message 
news:13de6b5q88e3ke1@corp.supernews.com...
> "PeteS" <axkz70@dsl.pipex.com> wrote in message 
> news:H-ydnSZMEttzlkrbnZ2dnUVZ8vidnZ2d@pipex.net...
> <snip>
>>
>> I have a number of pretty pics I made to illustrate the issue. I'll put 
>> 'em on a.b.s.e tomorrow sometime.
>>
>> As an aside, at high speeds (which I define as having a track longer than 
>> 1/4 rising/falling edge, YMMVG), there is no such thing as 'ground'. The 
>> ground plane is a signal layer insulated by copper ;)
>> [Although it helps to keep large power currents away from the high speed 
>> return paths].
>>
>> Cheers
>>
>> PeteS
>
> Since without a ground one has a dipole antenna, could you qualify what 
> you mean?  The impedance of the plane is measured in units of picoHenry 
> per square so it's not a solid ground, certainly, but without a ground 
> we'd be in a world of hurt at these high frequencies.
>
I think Pete means that at high frequencies the skin effect means that the 
current in the plane is all on one surface of the plane. Thus the bulk of 
the plane might as well be an insulator. Or something like that?
Cheers, Syms. 



Article: 123620
Subject: Re: Die size, pitch size?
From: "Symon" <symon_brewer@hotmail.com>
Date: Fri, 31 Aug 2007 11:14:06 +0100
Links: << >>  << T >>  << A >>
"Pasacco" <pasacco@gmail.com> wrote in message 
news:1188548197.323123.43310@i13g2000prf.googlegroups.com...
>I just need to know some technology data, for example, "die size" and
> "LUT size", in order to compare different designs.
> As far as I know, these technology data are not available anywhere.
>
>
What sort of engineer are you? For God's sake man, get a hammer, smash some 
FPGAs open, and examine the wreckage with a microscope.
HTH., Syms.
p.s. Do FPGAs blend?

;-) 



Article: 123621
Subject: Re: Spartan 3E - Readback via JTAG
From: Uwe Bonnes <bon@hertz.ikp.physik.tu-darmstadt.de>
Date: Fri, 31 Aug 2007 12:00:58 +0000 (UTC)
Links: << >>  << T >>  << A >>
Benni V. <benniv.sep08@googlemail.com> wrote:
> Hi,

> i'd like to readback all the contents of an XC3S500E via the JTAG
> interface. Because this option is not implemented in the iMPACT-tool
> (well, it is implemented via the verify-option, but the readback data
> cannot be stored to a file), i tried to extend xc3sprog [1] to
> readback capability (that is extending the xc3sprog.cc)

> My question is, what commands are to be send to the Spartan 3E,
> because I wasn't able to find it on the Xilinx webpage, yet, although
> there are user guides for the Spartan 2(E)[2] and the Virtex[3]
> series.
> The opcodes used via the SerialMAP-interface are documented in [4],
> the JTAG Configuration Mode is explained in [5].

> Any help would be appreciated.

> Greetings
> Benni

> [1] XC3SPROG http://sourceforge.net/projects/xc3sprog
> [2] XAPP176 http://www.xilinx.com/bvdocs/appnotes/xapp176.pdf
> [3] XAPP139 http://www.xilinx.com/bvdocs/appnotes/xapp139.pdf
> [4] XAPP452 http://www.xilinx.com/bvdocs/appnotes/xapp452.pdf
> [5] UG332 http://www.xilinx.com/bvdocs/userguides/ug332.pdf

Another source of information are the BSDL files. Find them in the ISE
directory under spartan3e/data for e.g. the XC3SE.You will find the CFG_IN
command the progalgxc3s.cpp uses for programming. The BSDL file also knows
about a CFG_OUT command that could probably be used for readback.  Compare
with the BSDL files for the S2(E) and try out to do similar.

Hope this helps
-- 
Uwe Bonnes                bon@elektron.ikp.physik.tu-darmstadt.de

Institut fuer Kernphysik  Schlossgartenstrasse 9  64289 Darmstadt
--------- Tel. 06151 162516 -------- Fax. 06151 164321 ----------

Article: 123622
Subject: Re: New keyword 'orif' and its implications
From: Colin Paul Gloster <Colin_Paul_Gloster@ACM.org>
Date: 31 Aug 2007 12:17:27 GMT
Links: << >>  << T >>  << A >>
Jim,

In news:13ddnbc8cckdr7b@corp.supernews.com timestamped Thu, 30 Aug
2007 08:08:26 -0700, Jim Lewis <jim@synthworks.com> posted:
|-------------------------------------------------------------------------------------------------|
|"Colin Paul,                                                                                     |
|[..]                                                                                             |
|> That would be true for plain VHDL without PSL, but he posted as if                             |
|> zero_one_hot() is now part of VHDL from PSL (but it is not in my PSL                           |
|> reference manual, unlike onehot0) so that would not necessarily                                |
|> require that a VHDL identifier be changed. From the PSL standard:                              |
|> "[..]                                                                                          |
|>                                                                                                |
|OOPS.  I missed that.  I had meant to reference the PSL function onehot0."                       |
|-------------------------------------------------------------------------------------------------|

Muw wah hah hah, all shall bow down to my superiority.

|-------------------------------------------------------------------------------------------------|
|"[..]                                                                                            |
|                                                                                                 |
|While it is possible that syntax could be given a similar                                        |
|interpretation, I am not sure it would be a good thing.                                          |
|                                                                                                 |
|Cheers,                                                                                          |
|Jim"                                                                                             |
|-------------------------------------------------------------------------------------------------|

If we ever need to consider it, we can assess the pros and cons then.

Cheers,
Colin Paul

Article: 123623
Subject: Xilinx blockram FIFO async reset annoys me (and Modelsim)
From: Frai <maybetooparanoid@gmail.com>
Date: Fri, 31 Aug 2007 05:22:48 -0700
Links: << >>  << T >>  << A >>
Hi all,

I'm facing a problem with Xilinx Coregen blockram fifo. At some point
I want to reset it with a signal generated in a state machine. The
reset makes the internal pointers in the FIFO to point to 0 address.
However, the address stabilizes to 0 too late, right at the next
rising edge of the clock that generated the reset signal. This
produces a setup violation on the address port of the blockram.

I thought TRCE would detect the violation after my design is placed
and routed, but this is not the case, not even setting the "ENABLE =
reg_sr_q;" constraint in the UCF file.

I know my design will still work, and the output from the block cycle
will remain in the unknown state only for one cycle, but I would like
to correct it in a more elegant way. I don't want to see those
warnings in modelsim anymore.

What approach would you suggest?

Thanks in advance.


Article: 123624
Subject: Re: Where is Command Reg and Status Reg as mentioned in PCI system architecture (Mindshare) in generated pci32 core?
From: Brian Drummond <brian_drummond@btconnect.com>
Date: Fri, 31 Aug 2007 13:26:07 +0100
Links: << >>  << T >>  << A >>
On Thu, 30 Aug 2007 19:05:59 -0700, Ace <yasirmm@gmail.com> wrote:

>
>> You do need to use a configuration cycle to write to the command
>> register to enable memory or I/O transfers when initialising the core;
>> see "stimulus.vhd" in the ping_tb testbench for example.
>>
>> - Brian
>
>Thank you Brian for clearing that bit for me.
>
>I didn't know that I have to initialise the core. Maybe that's the
>reason why I still couldn't get the Device and Vendor ID after
>synthesizing the core on my development board. Can anyone explain when
>and how is the "configuration cycle" need to be done for the
>initialising process?

Read the testbench example I suggested.

But this doesn't explain why you can't get the Device/Vendor ID, because
you read these through configuration cycles. 

When you can read these IDs, you can then use more configuration cycles
to initialise the core. This means writing addresses to your Base
Address Registers, and permission to perform memory or I/O cycles to the
Command/Status register. Only after that, can you perform real memory or
I/O transfers to the device.

But if you can't read the Device/Vendor IDs, you have another problem.
Did you read the Device/Vendor IDs in simulation? If not, get that
working first.

- Brian



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