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 123750

Article: 123750
Subject: Re: New keyword 'orif' and its implications
From: "KJ" <kkjennings@sbcglobal.net>
Date: Mon, 03 Sep 2007 20:45:51 GMT
Links: << >>  << T >>  << A >>

"Weng Tianxiang" <wtxwtx@gmail.com> wrote in message 
news:1188844272.492602.110170@k79g2000hse.googlegroups.com...
<snip>
> The better method to distinguish orif from elsif and that will
> ultimately fend off any future tough questions about it is to put the
> two keywords in two keyword listing tables in text editor's file and
> they will be shown in two different colors, one RED, another PINK, as
> TextPad, Emac, or any text editors do without conventional indent
> practise change. It is a trivial thing, but exaggerated to a
> disadvantage and failure at a strategic level.

Wow....now you're suggesting color coding as a method to handle your 
ambiguities?

<snip>
> 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); <-- useless and just waisting time !!!
>  end if;
> end process;
>
>
> With your above coding, it seems to me that you don't have a deep
> insight why VHDL needs a mechanism to transfer mutually exclusive
> information to VHDL compiler, neither does Jim.

You haven't demonstrated your insight either...but that's my opinion.

>
> With your coding, it doesn't need to provide the information the
> assertion provides. It is a well known popular practise before
> introducing mutually exclusiveness.
I agree..almost.  Sometimes you'll put in these assertions to check the code 
you just wrote not so much as a check on what you've just written but as a 
check down the road when the code gets modified for whatever reason and the 
modifier is maybe unaware of why their change will cause a problem down the 
road.  A well crafted 'report' after the 'assert' will explain why it is 
important and more importantly it will be in 'live code' that actually gets 
checked, not in a comment where it is not.

In any case, the assert that was added can be considered a simulation time 
waster or info from a maintability standpoint.

Andy's code does not assume mutual exclusiveness it is a priority encoding 
to produce outbus.

>
> VHDL COMPILERS NEED MUTUALLY EXCLUSIVE INFORMATION IN ORDER TO KEEP
> 'IF...END IF' STATEMENT STRUCTURE UNIQUITOUS AND MAKE IT POSSIBLE
> WRITING HARDWARE IS JUST LIKE WRITING SOFTWARE C (all if statement
> when writing software).

That's your 2 cents about what you think compilers need.  Do you have ANY 
references or evidence to back up that claim?  If not, stop shouting it.

>
> We provide EXTRA mutually exclusive information to VHDL compiler and
> let the compiler do better job with the "if...end if" statement
> structure than what you and we have traditionally done. Because
> "if...end if" statements are the simplest and unified way to express
> logic ideas. Any advantages current hardware writing style (shown as
> in your code) would dissapear and become unnecessary if mutually
> exclusive information is given.

Personally I prefer enumerated types to express mutual exclusiveness where 
appropriate and sum of products formation (as shown in Jim's example that 
you've posted below a bit) where there are things that 'should' be mutually 
exclusive but can not be formally shown to be.  There are other constructs 
besides the 'if' statement that are quite understandable; your assertion 
that 'if...endif'  is the 'simplest and unified way' represents your opinion 
not some grand truth.  The fact that you think that it needs to be augmented 
with a new 'orif' keyword suggests that the 'if' statement is not quite so 
unified after all.

>
> Why the above statement is waistful? You have already written the code
> with the knowledge how it behaves and adding the assertion statement
> just let simulator waisting time to do what you and I never do it
> before. No assertion statement in your code works well and nobody adds
> the assertion statements to confirm it now.

I agree, but as mentioned before, the assert statement with a descriptive 
report allows for passing of obscure design information from one design time 
to another...sort of a 'heads up' for the designer picking up the code 1 
year down the road.

>
> 3. My opinion is when VHDL compilers get more information about
> mutually
> exclusive information, what you can do, the VHDL compilers can do
> better.

And they generally do.  Looking at the technology map view of synthesized 
code is generally enlightening.  In any case, your opinioin has not yet been 
substantiated in fact with anything you've posted so far.

>
> VHDL compilers can generate all coding you showed for one level of
> mutually exclusiveness. You may not write efficiently for code with
> two levels or even three levels of mutually exclusiveness. Personal
> power is limited and VHDL compilers can be trained to do more
> mechanical things better than any human.
>
What do you mean my 'two levels' or 'three levels' of mutual exclusiveness?

>
> -- It is Jim's coding
> OutBusA : process(RESET, CLK)
> begin
>    if(RESET = '1') then
>       OutBus <= (others=>'0');
>    elsif rising_edge(CLK) then
>       if (E0 or E1 or E2 or E3 or E4 or E5) = '1' then
>         OutBus <=
>           (E0 and Data0) or (E1 and Data1) or (E2 and Data2) or
>           (E3 and Data3) or (E4 and Data4) or (E5 and Data5) ;
>       end if ;
>    end if ;
> end process;
>
>
> -- It is my coding
> A : process(RESET, CLK)
> begin
>      if(RESET = '1') then
>         OutBus <= (others=>'0');
>      elsif rising_edge(CLK) then
>         if(E0 = '1') then
>            OutBus <= Data0;
>         orif(E1 = '1') then
>            OutBus <= Data1;
>         orif(E2 = '1') then
>            OutBus <= Data2;
>         orif(E3 = '1') then
>            OutBus <= Data3;
>         orif(E4 = '1') then
>            OutBus <= Data4;
>         orif(E5 = '1') then
>            OutBus <= Data5;
>          else
>            OutBus <= OutBus;
>          end if;
>       end if;
> end process;
>
>
> The above equation would be implemented in Xilinx chip with carry
> chain with initial input data to the carry chain being OutBus. The
> following enable equation would be eliminated from Jim's coding:
> (E0 or E1 or E2 or E3 or E4 or E5) = '1'
>
I don't think so, unless you assume the various 'E' are one hot encoded. 
Had Jim made that assumption he would have written it without the "if (E0 or 
E1 or E2 or E3 or E4 or E5) = '1'" as well I'm sure.  In any case, as 
written, Jim's handles the case where none of the 'E' happen to be set. 
Whether or not this is appropriate depends on what assumptions there are 
with 'E'; personally I would think that the condition where none is set is 
probably the more common case when bringing together various external 
signals and trying to say that they are in some sense mutually exclusive.

>
> It is not a LUT or two saving as some suggesed. For a up to 400MHz
> project, every extra logic would kill a design. Because it takes more
> route resources. When route resources exhausted, the running
> frequency would drop dramatically and would kill a otherwise successfu
> design.
> LUT is less than a cent in a FPGA.

But you've presented nothing to indicate that 'orif' would map to anything 
different.  In fact, you can not.  The rules of boolean logic require only 
'and', 'or' and 'not', they do not require 'orif'.  You claim (but present 
no evidence) that the new 'orif' keyword could in some cases present some 
resource or timing improvement but you have no basis for that claim and 
nothing at all to back it up.  Looking at source code examples and 
suggesting that it would improve anything is naive at best.

The only claim you could possibly make is that 'orif' is a productivity 
enhancer perhaps because it is fewer lines of code (but by perusing Andy, 
Jim and your code it would seem that 'orif' is the longest) or because it is 
less error prone in use (doesn't appear to be).

In case you're interested, Andy's version consumes 9 logic elements and has 
four levels of logic; Jim's version consumes 6 logic elements and has three 
levels of logic.  The difference comes about because Jim's version take full 
advantage of the supposed knowledge that the data inputs are all mutually 
exclusive whereas Andy's makes no such assumption.  These were benchmarked 
using Quartus targetting a Cyclone II which has 4 input LUTs as the logic 
primitive.  Code I used posted at the end of this posting.

>
> 5. orif or other similar spelling OIF, _ORIF, is not replacable with
> assertion function.

Actually that's a good thing about 'orif'.  Logic should be described by 
logic functions not assertions.  Those that are proposing using assertions 
to drive the synthesized code in some fashion are barking up a bad 
tree....what happens when the supposedly impossible happens and the asserted 
condition is no longer met?  What will the synthesized result produce?  It 
better be what is described in the logic description which therefore implies 
that the asserted statements really should be ignored during synthesis for 
the purposes of optomizing any logic functions.

>
> 6, My another keyword method: Exclusive(or other name, no problem).
>
> Here is an example how Exclusive is used:
>
> signal A : unsigned(5 downto 0) ; -- to store mutually exclusive data
>
> Exclusive : (A); -- it indicates that signal A of its bits is mutually
> exclusive.
What guarantees the exclusiveness?  The engineer's code of honor?  If it is 
reeeeeally mutually exclusive it could be described by an enumerated type.

>
> Exclusive : (StateRead, StateWrite); -- indicate two state machines
> are mutually exclusive with their intial states being common. This
> function extends mutually exclusive funtion to more than 2 state
> machines.

Kind of looks like an enumerated type definition too....hmmm

>
> If you need, I can send my paper to you: "HDL Code Inefficiency
> Sources and Its Solutions".
>
> Jim,
>
> I am going to publish 6 articles in a batch within next 6 months in
> one of three forms: websites, patent applications or international
> conferences. One of them has a very good example how 'orif' is used, a
> brand new usage. No special report to you is under consideration until
> you are pursuaded in advance. You may have to wait for next 6 months
> to get the files.
>
Hopefully you'll present actual results to back up your so far baseless 
claims, it would make for a much stronger case for 'orif'.  Good luck with 
your work.

KJ

Jim and Andy's versions implemented below.  Uncomment out the one you'd like 
to synthesize with.  By the way, Jim, Andy and Weng's code as presented in 
this thread are all flawed and not compilable.  In some cases, 'outbus' is 
treated as a vector, in others it is treated as a single bit.  I modified 
each so that 'outbus' is a single bit which appears to be the real intent 
here....apologies if it's not.

--------- CODE USED TO IMPLEMENT ANDY AND JIM'S VERSION ----------
library ieee;
use ieee.std_logic_1164.all;
use ieee.numeric_std.all;

entity test is
port (
 clk: in std_ulogic;
 reset: in std_ulogic;
 e: in    std_ulogic_vector(7 downto 0);
 data: in  std_ulogic_vector(7 downto 0);
 outbus: out  std_ulogic);
end entity test;

architecture rtl of test is
begin
-- Andy's code
-- process (reset, clk) is
-- begin
--  if reset = '1' then
--    outbus <= '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); -- useless and just waisting time !!!
--  end if;
-- end process;

-- It is Jim's coding
OutBusA : process(RESET, CLK)
begin
   if(RESET = '1') then
      OutBus <= '0';
   elsif rising_edge(CLK) then
      if (E(0) or E(1) or E(2) or E(3) or E(4) or E(5)) = '1' then
        OutBus <=
          (E(0) and Data(0)) or (E(1) and Data(1)) or (E(2) and Data(2)) or
          (E(3) and Data(3)) or (E(4) and Data(4)) or (E(5) and Data(5)) ;
      end if ;
   end if ;
end process;

end architecture rtl;
--------- END CODE USED TO IMPLEMENT ANDY AND JIM'S VERSION ---------- 



Article: 123751
Subject: Re: opb_timer interrupt self test problem
From: DoPeti <dormanpeti@gmail.com>
Date: Mon, 03 Sep 2007 21:12:13 -0000
Links: << >>  << T >>  << A >>
On szept. 3, 22:06, benr...@gmail.com wrote:
> As I can see you have three interrupt sources but  PARAMETER
> C_NUM_INTR_INPUTS = 2
> Better delete this line, it will be "Auto Computed".
> Then your memory runs at 66MHz (and might pass the tests) but
> according to the datasheet you need at least 75MHz to run it properly.
> My advice is to try building the system for 50MHz. You'll get the
> dcm's configured to run the mem at 100MHz.
> Then use the ref design to tune it for 66/133
> BR

Thank you for your help!

I'll regenerate the design with these options...


Article: 123752
Subject: Re: FPGA CPU
From: glen herrmannsfeldt <gah@ugcs.caltech.edu>
Date: Mon, 03 Sep 2007 22:25:21 -0800
Links: << >>  << T >>  << A >>
Andreas Ehliar wrote:
(snip)

> Longer disclaimer:
> Since I don't work at Xilinx I have no idea how the routing inside
> Xilinx devices is actually implemented but it seems like some nets
> can be driven from either side depending on how the FPGA is
> configured. That might be implemented with some sort of tristate
> buffers. (Unless this is just a simplification in the FPGA
> editor of how it really works. The xdl report file also hints that
> there are some nets that can be driven in both directions.)
> Anyway, as a user of the device we don't really have to care about
> these details. 

As I understand it, it is related to the physics of the device.
As the wires get narrower and longer, the resistance increases
faster than the capacitance decreases.  The solution is to put
buffers along the line.  As the buffers need a direction, that makes
it hard to do true tri-state that the earlier Xilinx devices did.

The solution is to use a mux, possibly driven by a priority
encoder, maybe just using AND or OR onto the output line.  It should
work such that it gives the right result when only one is selected.

-- glen


Article: 123753
Subject: Re: PCB Impedance Control
From: kayrock66@yahoo.com
Date: Mon, 03 Sep 2007 23:30:16 -0700
Links: << >>  << T >>  << A >>
On Aug 30, 6:55 am, "maxascent" <maxasc...@yahoo.co.uk> wrote:
> 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

The way I've heard it done is that you can you a power plane as a
reference if it is the actual power used for the driver of your
impedance controlled net.


Article: 123754
Subject: Re: Null statement in VHDL
From: "comp.arch.fpga" <ksulimma@googlemail.com>
Date: Tue, 04 Sep 2007 07:16:36 -0000
Links: << >>  << T >>  << A >>
On 3 Sep., 09:53, Jonathan Bromley <jonathan.brom...@MYCOMPANY.com>
wrote:

> Every synth tool I've used issues a warning or error when it ignores
> initial values.  It's a tool restriction I've learnt to live with.
> On FPGAs with well-defined config values, I work around it by
> providing an explicit asynchronous reset in the usual way and then
> tying-off that reset to "false" somewhere in the top-level wrapper
> that organises the design for the target platform.  That gives me
> no additional hardware cost in the FPGAs that I've used, and it
> gives me a different, clumsier, but equally effective way to
> specify initial values.

No it is not. There are two bad things that can happen:
1. Constant propagation is a simple task for logic synthesis. The
reset might be removed from the DFFs
bacause it is not needed.
There is no requirement for the tool to infer the power on value from
the async reset value.
In fact, doing so could violate the spec. If I code a dynamic reset of
'1' and a power up value of '0' the tool must not
set the power up value to '1'. Especially not if it can infer that
there never will be a dynamic reset.

2. If constant propagation on reset nets is prohibited by the tool to
preserve the reset values in the case
you describe your never-used sync reset prevents the use of the sync
reset for logic optimization. The
resulting logic might be more than 50% larger than necessary.

It is more a dirty hack to trick the tools in the desired behaviour
than it is an effective way to specify initial values.
Any tool is free to break your implentation and will still be in
compliance with the language spec.

Kolja Sulimma




Article: 123755
Subject: Re: FPGA CPU
From: "Göran Bilski" <goran.bilski@xilinx.com>
Date: Tue, 4 Sep 2007 09:44:27 +0200
Links: << >>  << T >>  << A >>
Hi,

Internal tristates are gone from Xilinx devices.

There is a way of implement efficient large muxes by using DFFs and the 
carry-chain.
The solution is using many DFFs but usually you use less DFFs than LUTs in a 
design.
You would let each source to mux passing through a DFF with a synchronous 
reset.
All DFFs are kept in reset state except the source that you have selected to 
mux.
This allows you to just OR all the sources since only the selected sources 
is not under reset.
The ORing can be done using carry-chain to even further decrease the LUT 
usage.
It's it in fact an AND-OR structure but the AND is coming from the 
synchronous reset in a DFF

Example.
16-bit busses and you need a 16-1 mux.
Using normal muxes would require 16*8  = 128 LUTs
With this solution you would need 4 LUTs for ORing 16 sources.
So the 16-1 mux would consume 16*4 = 64 LUTs and 16*16 = 256 DFFs.

So the DFFs usages is high but you have 50% less LUT usage.

Göran

"glen herrmannsfeldt" <gah@ugcs.caltech.edu> wrote in message 
news:PJ-dnWy_lOX-dkHbnZ2dnUVZ_oOnnZ2d@comcast.com...
> Andreas Ehliar wrote:
> (snip)
>
>> Longer disclaimer:
>> Since I don't work at Xilinx I have no idea how the routing inside
>> Xilinx devices is actually implemented but it seems like some nets
>> can be driven from either side depending on how the FPGA is
>> configured. That might be implemented with some sort of tristate
>> buffers. (Unless this is just a simplification in the FPGA
>> editor of how it really works. The xdl report file also hints that
>> there are some nets that can be driven in both directions.)
>> Anyway, as a user of the device we don't really have to care about
>> these details.
>
> As I understand it, it is related to the physics of the device.
> As the wires get narrower and longer, the resistance increases
> faster than the capacitance decreases.  The solution is to put
> buffers along the line.  As the buffers need a direction, that makes
> it hard to do true tri-state that the earlier Xilinx devices did.
>
> The solution is to use a mux, possibly driven by a priority
> encoder, maybe just using AND or OR onto the output line.  It should
> work such that it gives the right result when only one is selected.
>
> -- glen
> 



Article: 123756
Subject: Re: Null statement in VHDL
From: Jonathan Bromley <jonathan.bromley@MYCOMPANY.com>
Date: Tue, 04 Sep 2007 08:45:44 +0100
Links: << >>  << T >>  << A >>
On Tue, 04 Sep 2007 07:16:36 -0000, "comp.arch.fpga" wrote:

>On 3 Sep., 09:53, Jonathan Bromley wrote:

[an asynch reset, tied false]
>> gives me a different, clumsier, but equally effective way to
>> specify initial values.
>
>No it is not. There are two bad things that can happen:

Agreed with both your points, although my experience 
is consistently that those bad things do *not* 
happen in practice.

>It is more a dirty hack to trick the tools in the desired behaviour
>than it is an effective way to specify initial values.
>Any tool is free to break your implentation and will still be in
>compliance with the language spec.

Guilty as charged.  There's no doubt that synthesis 
support for initialization values - with, of course,
checks that it been applied only to variables or 
signals that represent a flip-flop - would be the 
best solution by far.
-- 
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: 123757
Subject: Re: PCB Impedance Control
From: "Symon" <symon_brewer@hotmail.com>
Date: Tue, 4 Sep 2007 11:42:54 +0100
Links: << >>  << T >>  << A >>
Hi John,

I hope you had a relaxing Labor Day? Anyway, against my better judgement, I 
thought I'd have another go at this thread! Comments below.

"John Larkin" <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote in message 
news:c5kld3pnm5nv9cen4771p882s0s4d92e2s@4ax.com...
>
> Except in extreme situations, it's safe to assume that parallel planes
> in a multilayer pcb, bypassed with scattered caps, is an equipotential
> structure. It's that simple.
>
>
> John
>

Aha. Now we're getting somewhere. You seem to have shifted position from 
your previous post when you said about bypass capacitors:-

"That's not necessary. There's already so much plane-plane capacitance that 
the planes are already equipotential as far as the tiny charge injected by 
the signal trace can affect them."

At least you now seem to endorse the need for scattered caps. Progress 
indeed. ;-)

OK, from your other post in reply to Hal:-

"John Larkin" <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote in message 
news:lvild3ti0v1d62brnaahoulljhpib8p2s5@4ax.com...
>
> I've experimentally TDR tested plane cuts, and they are generally
> invisible as long as they are thin as compared to board thickness, or
> if the ground plane slit is shorted out by an adjacent power plane.
>
> All this popular "return current" theorizing is madness. There's so
> much dielectric shorting a small slit that a signal trace cruises over
> it and never sees it.
>
> Spend s few minutes with a hunk of copperclad, some edge-launch SMAs,
> an xacto knife, and a 20 GHz TDR scope. It's enlightening. The other
> fun thing to do is to add some "classicly bad" trace/slit/via
> structures into spare bits of production boards and TDR them.
>
> John
>

As you appear to enjoy rubbishing the links I post up here to illustrate my 
points, and to keep you in practice, here's some more cannon fodder for you! 
I found a site online with a guy who's taken your advice and got out his 
scalpel and test equipment. (I hope you don't find this site dangerously 
moronic. ;-) )

Here http://www.emcesd.com/tt2003/tt020103.htm is an experiment in which the 
ground plane cut is thin as compared to board thickness. Why don't his 
results match your invisibility prediction? (I agree that this doesn't show 
the ground plane shorted by a power plane, but you did say 'or'. I also 
wonder what is the situation you envisage that would have a ground plane 
break shorted by another plane?)

Next, here http://www.emcesd.com/tt2006/tt050106.htm is an experiment in 
which a signal passes through a board and switches reference from one plane 
to another. The results would appear to disagree with your original 
assertion that vias and bypass caps are "not necessary". (Of course, now a 
'scattering' is good!)

With tongue firmly in cheek, and with eager anticipation of your reply,

Best regards, Syms.




Article: 123758
Subject: Import Xilinx SDK Project in Wind River Workbench
From: LilacSkin <lpaulo07@iseb.fr>
Date: Tue, 04 Sep 2007 03:51:35 -0700
Links: << >>  << T >>  << A >>
Hello,

I would like to know if someone had already used the Wind River
Workbench software to debug the PowerPC405 in the FPGA Virtex II Pro ?

If yes, how you have imported the Xilinx SDK Project in Wind River
Workbench ?
You build a specific makefile and imported the Xilinx libraries ?

Thanks,
Laurent.


Article: 123759
Subject: ERROR:NgdBuild:604 with user ipcore
From: "L. Schreiber" <l.s.rockfan@web.de>
Date: Tue, 04 Sep 2007 13:37:36 +0200
Links: << >>  << T >>  << A >>
Hello,

I created an ipcore opb2ip_bridge (with edk's wizard) interfacing the 
opb and added it to the edk reference design. So far, so good. While 
running generate bitstream, synthesis stage runs through, but 
implementation stage aborts immediately with ERROR:NgdBuild:604.

---------------------------
logfile excerpt:
ERROR:NgdBuild:604 - logical block
'opb2ip_bridge_0/opb2ip_bridge_0/USER_LOGIC_I/moduleA_0' with type 
'moduleA' could not be resolved. A pin name misspelling can cause this, 
a missing edif or ngc file, or the misspelling of a type name. Symbol 
'moduleA' is not supported in target 'virtex2p'.

ERROR:NgdBuild:604 - logical block
'opb2ip_bridge_0/opb2ip_bridge_0/USER_LOGIC_I/moduleB_0' with type 
'moduleB' could not be resolved. A pin name misspelling can cause this, 
a missing edif or ngc file, or the misspelling of a type name. Symbol 
'moduleB' is not supported in target 'virtex2p'.
---------------------------

My userdefined ipcore is unitized in a hierarchy of vhdl modules like:

-opb2ip_bridge
|-USER_LOGIC
||-moduleA
||-moduleB
|||-moduleA

Could this be the reason for the error. If so, is there any 
configuration file, I would have to modify previously to make the 
synthesis/ implementation stage be aware that my ipcore is designed 
modular and how to resolve the symbol names.

Or what is the real problem and how do I have to solve it.

I'm working under edk and ise version 8 and latest service packs. The 
reference design is not the problem, because it's already working in 
other designs.

Thanks for you help.
Greetings, Lars.

Article: 123760
Subject: Re: ERROR:NgdBuild:604 with user ipcore
From: Gabor <gabor@alacron.com>
Date: Tue, 04 Sep 2007 06:10:29 -0700
Links: << >>  << T >>  << A >>
On Sep 4, 7:37 am, "L. Schreiber" <l.s.rock...@web.de> wrote:
> Hello,
>
> I created an ipcore opb2ip_bridge (with edk's wizard) interfacing the
> opb and added it to the edk reference design. So far, so good. While
> running generate bitstream, synthesis stage runs through, but
> implementation stage aborts immediately with ERROR:NgdBuild:604.
>
> ---------------------------
> logfile excerpt:
> ERROR:NgdBuild:604 - logical block
> 'opb2ip_bridge_0/opb2ip_bridge_0/USER_LOGIC_I/moduleA_0' with type
> 'moduleA' could not be resolved. A pin name misspelling can cause this,
> a missing edif or ngc file, or the misspelling of a type name. Symbol
> 'moduleA' is not supported in target 'virtex2p'.
>
> ERROR:NgdBuild:604 - logical block
> 'opb2ip_bridge_0/opb2ip_bridge_0/USER_LOGIC_I/moduleB_0' with type
> 'moduleB' could not be resolved. A pin name misspelling can cause this,
> a missing edif or ngc file, or the misspelling of a type name. Symbol
> 'moduleB' is not supported in target 'virtex2p'.
> ---------------------------
>
> My userdefined ipcore is unitized in a hierarchy of vhdl modules like:
>
> -opb2ip_bridge
> |-USER_LOGIC
> ||-moduleA
> ||-moduleB
> |||-moduleA
>
> Could this be the reason for the error. If so, is there any
> configuration file, I would have to modify previously to make the
> synthesis/ implementation stage be aware that my ipcore is designed
> modular and how to resolve the symbol names.
>
> Or what is the real problem and how do I have to solve it.
>
> I'm working under edk and ise version 8 and latest service packs. The
> reference design is not the problem, because it's already working in
> other designs.
>
> Thanks for you help.
> Greetings, Lars.


I've seen something similar with COREgen modules in mixed language
designs.  Is moduleB a black box?  Do you have a .ngc file created
for moduleB?  Is it in the project directory?

If you answer yes to all three questions, then there is the
possibility
that ISE is looking for your .ngc code in another file such as
moduleB_0.ngc due to the hierarchy created.  In that case copying
moduleB.ngc to moduleB_0.ngc can fix the problem.

The same would apply to moduleA.

HTH,
Gabor


Article: 123761
Subject: Re: ERROR:NgdBuild:604 with user ipcore
From: "L. Schreiber" <l.s.rockfan@web.de>
Date: Tue, 04 Sep 2007 15:26:42 +0200
Links: << >>  << T >>  << A >>
Gabor schrieb:
> On Sep 4, 7:37 am, "L. Schreiber" <l.s.rock...@web.de> wrote:
>> Hello,
>>
>> I created an ipcore opb2ip_bridge (with edk's wizard) interfacing the
>> opb and added it to the edk reference design. So far, so good. While
>> running generate bitstream, synthesis stage runs through, but
>> implementation stage aborts immediately with ERROR:NgdBuild:604.
>>
>> ---------------------------
>> logfile excerpt:
>> ERROR:NgdBuild:604 - logical block
>> 'opb2ip_bridge_0/opb2ip_bridge_0/USER_LOGIC_I/moduleA_0' with type
>> 'moduleA' could not be resolved. A pin name misspelling can cause this,
>> a missing edif or ngc file, or the misspelling of a type name. Symbol
>> 'moduleA' is not supported in target 'virtex2p'.
>>
>> ERROR:NgdBuild:604 - logical block
>> 'opb2ip_bridge_0/opb2ip_bridge_0/USER_LOGIC_I/moduleB_0' with type
>> 'moduleB' could not be resolved. A pin name misspelling can cause this,
>> a missing edif or ngc file, or the misspelling of a type name. Symbol
>> 'moduleB' is not supported in target 'virtex2p'.
>> ---------------------------
>>
>> My userdefined ipcore is unitized in a hierarchy of vhdl modules like:
>>
>> -opb2ip_bridge
>> |-USER_LOGIC
>> ||-moduleA
>> ||-moduleB
>> |||-moduleA
>>
>> Could this be the reason for the error. If so, is there any
>> configuration file, I would have to modify previously to make the
>> synthesis/ implementation stage be aware that my ipcore is designed
>> modular and how to resolve the symbol names.
>>
>> Or what is the real problem and how do I have to solve it.
>>
>> I'm working under edk and ise version 8 and latest service packs. The
>> reference design is not the problem, because it's already working in
>> other designs.
>>
>> Thanks for you help.
>> Greetings, Lars.
> 
> 
> I've seen something similar with COREgen modules in mixed language
> designs.
No, it's a vhdl only design.

> Is moduleB a black box?
No, there are no black-box attributed instances inside the peripheral ip 
design.

> Do you have a .ngc file created for moduleB?
No, it doesn't seem, that the edk has built ngc files for the submodules 
of the ip while executing "generate bitstreams" . Inside the 
implementations directory there is only a opb2ip_0_wrapper.ngc for the 
toplevel of my ipcore besides all the ngc files from the reference design.

> Is it in the project directory?
My ip lies inside an external ip repository and is linked into the edk 
reference design project.

> If you answer yes to all three questions, then there is the
> possibility
> that ISE is looking for your .ngc code in another file such as
> moduleB_0.ngc due to the hierarchy created.  In that case copying
> moduleB.ngc to moduleB_0.ngc can fix the problem.
> 
> The same would apply to moduleA.
> 
> HTH,
> Gabor

Article: 123762
Subject: Re: New keyword 'orif' and its implications
From: Andy <jonesandy@comcast.net>
Date: Tue, 04 Sep 2007 06:32:35 -0700
Links: << >>  << T >>  << A >>
>
> P.S.: Here is another coding style, assuming the inputs and Es are in
> arrays:
>
> output := (others =>'-'); -- this line allows the compiler to do the
> optimization, most compilers DECIDE against it
> for i in input'range loop
>    if e = (i=>'1', others=>'0') then output := intput(i);
> end loop;
>
> if you know the optimization and want to force it:
> for i in input'range loop
>    if e(i) = '1' then output := output or intput(i);
> end loop;

In the (Jim's?) original example, the output was unchanged if no
enable bits were set. Therefore the additional check on e1 or e2 or
e3... is necessary to make sure that only if any enable bit is set
does the output get a new value.

An initial assignment to (others => '-') only takes care of the case
if no enables are set. The order of execution of the loop provides
priority coding, in that the rightmost bit of enable that is set will
win (in the first example), no matter how many are set.

Andy


Article: 123763
Subject: Re: New keyword 'orif' and its implications
From: Andy <jonesandy@comcast.net>
Date: Tue, 04 Sep 2007 06:41:43 -0700
Links: << >>  << T >>  << A >>
On Aug 31, 9:16 pm, Weng Tianxiang <wtx...@gmail.com> wrote:

> 3. I know nothing about PSL and just printed VHDL-1993 and VHDL-2002
> today and started reading them. I have no interest to learn PSL. I am
> more interested in algorithms and circuit development, not the VHDL
> language. For my personal use, VHDL-1993 standard plus 'orif' is
> enough. That I am pushing for 'orif' adoption is only for my personal
> use. Now I don't need it as desperately as before.

So you are not interested in what VHDL already has, you just want to
blindly add duplicative, invasive new features to the language so that
you don't have to learn these existing, more powerful methods?

This is not a language issue. The language already supports
communicating mutual exclusivity and many more powerful notions.
Existing synthesis tools do not use the information; that is the
problem. It would help them if there was "a standard way" to
communicate this to them (which is possible within the existing
language). Just like there is a standard way to communicate a
synchronous process that implies flip flops: there are lots of ways to
describe that behavior in VHDL, but only certain ones are universally
accepted by synthesis tools.

Andy


Article: 123764
Subject: Re: New keyword 'orif' and its implications
From: Weng Tianxiang <wtxwtx@gmail.com>
Date: Tue, 04 Sep 2007 07:01:56 -0700
Links: << >>  << T >>  << A >>
On Sep 4, 6:41 am, Andy <jonesa...@comcast.net> wrote:
> On Aug 31, 9:16 pm, Weng Tianxiang <wtx...@gmail.com> wrote:
>
> > 3. I know nothing about PSL and just printed VHDL-1993 and VHDL-2002
> > today and started reading them. I have no interest to learn PSL. I am
> > more interested in algorithms and circuit development, not the VHDL
> > language. For my personal use, VHDL-1993 standard plus 'orif' is
> > enough. That I am pushing for 'orif' adoption is only for my personal
> > use. Now I don't need it as desperately as before.
>
> So you are not interested in what VHDL already has, you just want to
> blindly add duplicative, invasive new features to the language so that
> you don't have to learn these existing, more powerful methods?
>
> This is not a language issue. The language already supports
> communicating mutual exclusivity and many more powerful notions.
> Existing synthesis tools do not use the information; that is the
> problem. It would help them if there was "a standard way" to
> communicate this to them (which is possible within the existing
> language). Just like there is a standard way to communicate a
> synchronous process that implies flip flops: there are lots of ways to
> describe that behavior in VHDL, but only certain ones are universally
> accepted by synthesis tools.
>
> Andy

Hi Andy,
I accept your advice and will learn PSL

I have ordered one of 3 books Colin suggested, and found that they
don't contain PSL. I will print VHDL-2006 today.

Are you sure that Jim's assertion method in communicating mutually
exclusivity to VHDL compiler is good enough without need for 'orif'
introduction?

1. As I described before, if you use Jim's method and want to get the
information to compiler, you must insist the 'if...end if' structure
to get the benefits, otherwise it is useless, meaningless and wasting
time.

2. When you use 'if...end if' structure, 'orif' is the best choice, no
question! You can add the information line by line at any levels as
you want.

3. My goal is to make writing VHDL for a hardware engineer as easy as
writing C for a software engineer using 'if...end if' structure with
mixing 'elsif' and 'orif'.

Thank you.

Weng


Article: 123765
Subject: Re: PCB Impedance Control
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Tue, 04 Sep 2007 08:52:30 -0700
Links: << >>  << T >>  << A >>
On Tue, 4 Sep 2007 11:42:54 +0100, "Symon" <symon_brewer@hotmail.com>
wrote:

>Hi John,
>
>I hope you had a relaxing Labor Day? Anyway, against my better judgement, I 
>thought I'd have another go at this thread! Comments below.
>
>"John Larkin" <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote in message 
>news:c5kld3pnm5nv9cen4771p882s0s4d92e2s@4ax.com...
>>
>> Except in extreme situations, it's safe to assume that parallel planes
>> in a multilayer pcb, bypassed with scattered caps, is an equipotential
>> structure. It's that simple.
>>
>>
>> John
>>
>
>Aha. Now we're getting somewhere. You seem to have shifted position from 
>your previous post when you said about bypass capacitors:-
>
>"That's not necessary. There's already so much plane-plane capacitance that 
>the planes are already equipotential as far as the tiny charge injected by 
>the signal trace can affect them."
>
>At least you now seem to endorse the need for scattered caps. Progress 
>indeed. ;-)
>
>OK, from your other post in reply to Hal:-
>
>"John Larkin" <jjlarkin@highNOTlandTHIStechnologyPART.com> wrote in message 
>news:lvild3ti0v1d62brnaahoulljhpib8p2s5@4ax.com...
>>
>> I've experimentally TDR tested plane cuts, and they are generally
>> invisible as long as they are thin as compared to board thickness, or
>> if the ground plane slit is shorted out by an adjacent power plane.
>>
>> All this popular "return current" theorizing is madness. There's so
>> much dielectric shorting a small slit that a signal trace cruises over
>> it and never sees it.
>>
>> Spend s few minutes with a hunk of copperclad, some edge-launch SMAs,
>> an xacto knife, and a 20 GHz TDR scope. It's enlightening. The other
>> fun thing to do is to add some "classicly bad" trace/slit/via
>> structures into spare bits of production boards and TDR them.
>>
>> John
>>
>
>As you appear to enjoy rubbishing the links I post up here to illustrate my 
>points, and to keep you in practice, here's some more cannon fodder for you! 
>I found a site online with a guy who's taken your advice and got out his 
>scalpel and test equipment. (I hope you don't find this site dangerously 
>moronic. ;-) )

Out of politeness... no comment.


>
>Here http://www.emcesd.com/tt2003/tt020103.htm is an experiment in which the 
>ground plane cut is thin as compared to board thickness. Why don't his 
>results match your invisibility prediction? (I agree that this doesn't show 
>the ground plane shorted by a power plane, but you did say 'or'. 

My results are different from his because we're doing totally
different things. I'm TDRing microstrip traces on production
multilayer boards, measuring impedances, reflection, and transmission;
he's firing spark gaps at, essentially, home-made slot antennas. My
measurements are quantified; his aren't.


>I also 
>wonder what is the situation you envisage that would have a ground plane 
>break shorted by another plane?)

"Shorted" in the AC sense, which merely requires a solid plane in a
layer adjacent to the slit.


>
>Next, here http://www.emcesd.com/tt2006/tt050106.htm is an experiment in 
>which a signal passes through a board and switches reference from one plane 
>to another. The results would appear to disagree with your original 
>assertion that vias and bypass caps are "not necessary". (Of course, now a 
>'scattering' is good!)


Bizarre. This guy can't even afford real pc boards, so has to fake it
with wire and old copperclad. Fig 3 is hilarious; of course a signal
radiates more on the side it's exposed to the antenna. Of course vias
are inductive discontinuties.

>
>With tongue firmly in cheek, and with eager anticipation of your reply,

As far as I can tell by TDR measurements, parallel planes in a PC
board look like a perfect capacitor. I haven't been able to resolve
any edge-echo effects, which would be associated with plane
resonances. I assume that's because the parallel planes form a very
low impedance transmission-line thing with low Q.

If you design an SMA connector into a multilayer pcb, which I
occasionally do for amusement, you can TDR the planes. A typical plane
will look like a perfect cap to 15 GHz, my limit of measurement. As
you solder in bypass caps, the effective C goes up, irrespective of
where you add the caps. That's true enough to make my stuff work:

http://www.highlandtechnology.com/DSS/P400DS.html

http://www.highlandtechnology.com/DSS/V880DS.html

http://www.highlandtechnology.com/DSS/V346DS.html

http://www.highlandtechnology.com/DSS/T220DS.html


Caps are of course necessary to store energy, to handle the slow parts
of load transients, since the plane capacitances are low, ballpark
100-200 pF per square inch. So it's easy to lay out boards with close
power/ground planes and a scattering of ceramic bypass caps, 0.33 uF
maybe, to break up any conjectured plane resonances (which I can't
see!), and provide energy storage for the slow stuff. Just put some
caps wherever convenient.

Look at it this way: if you use power planes and bypass caps to
provide a stiff, wideband, low-impedance power supply to your chips,
and you do it well, then there will be very little noise on any power
pour relative to ground, even when it's whacked by big chip Vcc
current spikes. So if the power plane is this equipotential to ground,
why would a signal trace, switching "reference layer", notice that
it's a different "reference"? The current poked into a plane by a
signal zipping past is a minute fraction of the current spikes coming
out of the power pin of a processor or an FPGA or even a CMOS gate.

John



Article: 123766
Subject: Re: PCB Impedance Control
From: John Larkin <jjlarkin@highNOTlandTHIStechnologyPART.com>
Date: Tue, 04 Sep 2007 08:53:36 -0700
Links: << >>  << T >>  << A >>
On Mon, 03 Sep 2007 23:30:16 -0700, kayrock66@yahoo.com wrote:

>On Aug 30, 6:55 am, "maxascent" <maxasc...@yahoo.co.uk> wrote:
>> 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
>
>The way I've heard it done is that you can you a power plane as a
>reference if it is the actual power used for the driver of your
>impedance controlled net.

How does the rising edge of a signal, or even better the falling edge,
know what power supply launched it?

John


Article: 123767
Subject: Re: New keyword 'orif' and its implications
From: Andy <jonesandy@comcast.net>
Date: Tue, 04 Sep 2007 09:21:07 -0700
Links: << >>  << T >>  << A >>
KJ,

Thanks for pointing out that my example, without the assertion,
assumes priority encoding, and not mutual exclusivity. This is often
forgotten in sequential code.

The only problem with enumerated types is that they are not applicable
to an arbitrary (i.e. parameterizable) number of values. So a uniform
way of encoding a arbitrary length vector as enumerated values does
not exist. However, one could choose binary encoding of a one hot
value as an alternative. The trick is doing binary encoding in a way
that takes advantage of mutual exclusivity. It can be done, but I have
not experimented to find out if the encode/decode is able to be
optimized out.

output <= data(to_integer(unsigned(one_hot_encode(e))));

Where one_hot_encode() is a function that optimally (without priority)
converts a one_hot slv to a smaller, binary value slv.

Additional code is needed to handle the zero_hot case.

If one was willing to assume that vector lengths could be limited to
2**31 bits, then one_hot_encode() could return an integer, making its
use a little simpler:

output <- data(one_hot_encode(e));

The optimal coding of one_hot_encode() is left as an excercise for the
user. ;^)

BTW, I assumed "data" was an array of std_logic_vector in my example;
so my version worked as was with the appropriate declaration.

Andy


Article: 123768
Subject: Actel Designer - Specifying multicycle path constraints (via .sdc file) when using synchronous clock enables
From: David <spdracer911@gmail.com>
Date: Tue, 04 Sep 2007 10:35:41 -0700
Links: << >>  << T >>  << A >>


I have a design that uses a 100Mhz system clock, but only a very small
portion actually runs at 100MHz.  The rest of the FFs in the design
use a synchronous "clk_10M_en" signal which is active for one clock
period and repeats every 100ns.  I would like to know how to specify
the constraints correctly so that Actel Designer (i.e. SmartTime))
knows "that paths FROM FFs using clk_10M_en TO FFs using clk_10M_en"
are 100ns paths, not 10ns paths.

It's quiet easy to add a multicycle path constraint on the two
registers, such as:

set_multicycle_path 10 -from {reg1:CLK} -to {reg2:CLK}

But what I need is a solution that can find these registers when they
are buried in a hierarchy of modules.  Since they all use clk_10M_en
as their enable, there should be a way to perform a "find" and then
set a multicycle path constraint between each regsiter.

I have contacted Actel but they refer me to their docs or using the
GUI tools which does not solve my problem.
Surely this can be done via the .sdc constraints file using some TCL
code.

TIA.

David


Article: 123769
Subject: Multiple CPLDs on a PCB.
From: NickNitro <NickHolby@googlemail.com>
Date: Tue, 04 Sep 2007 11:08:49 -0700
Links: << >>  << T >>  << A >>
Hi,

Apologies if this isn't the best group, but there doesn't appear to be
a comp.arch.cpld group.

I'm going to start learning about CPLDs to use them in my projects,
but the algorithm I've developed will require a few CPLDs working on
different parts of the algorithm in sequence. So part A of the
algorithm may require 5 CPLDs, part B 8 CPLDs and part C 3 CPLDs. They
are all complete guesses at the moment, as I know next to nothing
about PLDs in general, but I know that for my algorithm to run as fast
as required, I will require multiple PLDs. I'm choosing CPLDs as from
what I've read FPGAs can be a bit overbearing for a beginner due to
the amount of features/number of gates they have, also CPLDs have more
predictable timing?

So, I'm wondering just how difficult using multiple CPLDs on a custom
PCB actually is? I'm sure it's achievable, but I would like to know
how difficult this could be. Also, could any simulators be used to
simulate a complex design with multiple CPLDs on a PCB? Finally, could
anybody recommend any books for getting started in the CPLD world -
I'm unsure to use Verilog or VHDL at the moment?

Thanks for your time.
Nick.


Article: 123770
Subject: Re: FPGA CPU
From: fpga_toys@yahoo.com
Date: Tue, 04 Sep 2007 11:38:46 -0700
Links: << >>  << T >>  << A >>
On Sep 3, 1:53 am, James Harris <james.harri...@googlemail.com> wrote:
> Shooting from the hip somewhat I think I could start with about seven
> ports (to test the concept) each being 8-bit. I need to pass a strobe
> with each input to the switch and possibly an acknowledge fed /back/
> from each output. So there would be 10 bits (8 data + 1 strobe + 1
> ack) per port leading, I think, to a 70x70 crossbar.

Isn't that a 7x7 crossbar with 10 bit data path , 3 bits of addressing
to specify a port?
total size would be 10*2*7=140 LUTs for crossbar port input mux tree.

Much different problem than a 70x70 single bit data path with 7 bits
of addressing.
That problem requires 70*64=4,480 LUTs.


Article: 123771
Subject: Re: ERROR:NgdBuild:604 with user ipcore
From: Paulo Dutra <paulo.dutra@NOSPAM.NOSPAM>
Date: Tue, 04 Sep 2007 11:47:03 -0700
Links: << >>  << T >>  << A >>
Is your moduleA and moduleB listed in the PAO file?
If is not listed in the PAO, then it will not synthesized by XST. Xst 
will give a warning that the moduleA and moduleB are black box components.

Take a looke at you <proj_directory>/synthesis/opb2ip_bridge_0_xst.srp
This is the syntesis report file for your component. Look for warnings 
regarding moduleA and moduleB.

L. Schreiber wrote:
> Gabor schrieb:
>> On Sep 4, 7:37 am, "L. Schreiber" <l.s.rock...@web.de> wrote:
>>> Hello,
>>>
>>> I created an ipcore opb2ip_bridge (with edk's wizard) interfacing the
>>> opb and added it to the edk reference design. So far, so good. While
>>> running generate bitstream, synthesis stage runs through, but
>>> implementation stage aborts immediately with ERROR:NgdBuild:604.
>>>
>>> ---------------------------
>>> logfile excerpt:
>>> ERROR:NgdBuild:604 - logical block
>>> 'opb2ip_bridge_0/opb2ip_bridge_0/USER_LOGIC_I/moduleA_0' with type
>>> 'moduleA' could not be resolved. A pin name misspelling can cause this,
>>> a missing edif or ngc file, or the misspelling of a type name. Symbol
>>> 'moduleA' is not supported in target 'virtex2p'.
>>>
>>> ERROR:NgdBuild:604 - logical block
>>> 'opb2ip_bridge_0/opb2ip_bridge_0/USER_LOGIC_I/moduleB_0' with type
>>> 'moduleB' could not be resolved. A pin name misspelling can cause this,
>>> a missing edif or ngc file, or the misspelling of a type name. Symbol
>>> 'moduleB' is not supported in target 'virtex2p'.
>>> ---------------------------
>>>
>>> My userdefined ipcore is unitized in a hierarchy of vhdl modules like:
>>>
>>> -opb2ip_bridge
>>> |-USER_LOGIC
>>> ||-moduleA
>>> ||-moduleB
>>> |||-moduleA
>>>
>>> Could this be the reason for the error. If so, is there any
>>> configuration file, I would have to modify previously to make the
>>> synthesis/ implementation stage be aware that my ipcore is designed
>>> modular and how to resolve the symbol names.
>>>
>>> Or what is the real problem and how do I have to solve it.
>>>
>>> I'm working under edk and ise version 8 and latest service packs. The
>>> reference design is not the problem, because it's already working in
>>> other designs.
>>>
>>> Thanks for you help.
>>> Greetings, Lars.
>>
>>
>> I've seen something similar with COREgen modules in mixed language
>> designs.
> No, it's a vhdl only design.
> 
>> Is moduleB a black box?
> No, there are no black-box attributed instances inside the peripheral ip 
> design.
> 
>> Do you have a .ngc file created for moduleB?
> No, it doesn't seem, that the edk has built ngc files for the submodules 
> of the ip while executing "generate bitstreams" . Inside the 
> implementations directory there is only a opb2ip_0_wrapper.ngc for the 
> toplevel of my ipcore besides all the ngc files from the reference design.
> 
>> Is it in the project directory?
> My ip lies inside an external ip repository and is linked into the edk 
> reference design project.
> 
>> If you answer yes to all three questions, then there is the
>> possibility
>> that ISE is looking for your .ngc code in another file such as
>> moduleB_0.ngc due to the hierarchy created.  In that case copying
>> moduleB.ngc to moduleB_0.ngc can fix the problem.
>>
>> The same would apply to moduleA.
>>
>> HTH,
>> Gabor

Article: 123772
Subject: Re: New keyword 'orif' and its implications
From: Andy <jonesandy@comcast.net>
Date: Tue, 04 Sep 2007 12:39:34 -0700
Links: << >>  << T >>  << A >>
Weng,

First you don't like using additional signals (one signal per
conditional expression), and using the same signal in the condition as
the assertion. So I demonstrate that additional signals are not
necessary. I never said that using duplicate expressions to avoid
additional signals/variables was a good idea, I just showed you how
you could use them to avoid your dreaded extra signals (which, by the
way, is almost always more self-documenting than the expression, even
if it is not used in more than one place).

It really isn't hard to use arrays and loops if you think about it.

Most data bus driving circuits are based on decoding some sort of
address with qualifiers (read_enable, etc.). Therefore I have as
inputs either the address and enable, or I pre-decode (for timing
reasons) the address into an array of strobes. Thus there are not
separate lines for assigning array elements with individual signals,
because I avoid the individual signals in the first place. Even if
there are individual signals, they are often passed in on ports.
Rather than have individual ports for the individual signals, I have
an array port, with the signals bound to elements of the array port in
the instantiation. No more code required to use an array than
individual signals, and even less code in the entity declaration.

I used to design fpgas with a big, centralized address decode module.
That leads to lots of individual signals. Now I distribute the address
and enables to individual modules, along with a generic for base
address, etc. and let each module decode its own enables and determine
when to drive the data bus with what. I also use a lot of tri-state
logic that gets converted to multiplexers automatically, simply
because it lets me decentralize the data bus loading. This also has
the added benefit that the synthesis tool automatically assumes that
the tri-state enables are mutually exclusive (otherwise the simulation
would not have worked anyway), and optimizes the multiplexers
automatically.

You have to think about avoiding the individual signals in the first
place, not just how to convert them into arrays.

Andy


Article: 123773
Subject: Re: Spartan3E and DDR termination
From: vasile <piclist9@gmail.com>
Date: Tue, 04 Sep 2007 19:40:14 -0000
Links: << >>  << T >>  << A >>
On Aug 30, 8:41 am, Gabor <ga...@alacron.com> wrote:
> On Aug 30, 9:41 am, Gabor <ga...@alacron.com> wrote:
>
>
>
>
>
> > On Aug 30, 4:59 am, Guru <ales.gor...@email.si> wrote:
>
> > > 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
>
> > If you're only driving a single chip with very short lines you
> > can probably get away without termination on everything except
> > the clock.  I would suggest using SSTL2_I instead of SSTL2_II
> > to avoid overdriving.  Another approach is to just leave out
> > the series termination on these signals and just add the parallel
> > termination to Vtt.  I've used the latter method with Virtex2
> > and an SO-DIMM without DCI on the data lines and SSTL2_I drive.
> > A good argument for leaving out the series termination is any
> > net where the driving stub (from the S3 to the resistor) is
> > about the same length as the driven stub (from the resistor
> > to the memory).  Here the terminator is of dubious value.
>
> > It's probably best to simulate your transmission lines,
> > especially if you're planning to run the memory at its
> > maximum speed of 166 MHz / DDR333.  My V2 design ran at
> > 133 MHz / DDR266.
>
> > HTH,
> > Gabor
>
> One other thought if your main interest is in reducing the
> board size.  Often I find that using a x32 single-data-rate
> (143 MHz) memory can save space.  If you're using a TSSOP-66
> package for the DDR part, the 86-pin TSSOP for the x32 SDR
> part has the same footprint and runs from +3.3V with no
> requirements for VREF and DQS pins on the FPGA and no
> Vtt or 2.5V supply.  

How looks the Vref signal inside the DDR II ? Exactly what is good
for ?

thx,
Vasile


Article: 123774
Subject: Re: PCB Impedance Control
From: vasile <piclist9@gmail.com>
Date: Tue, 04 Sep 2007 19:45:10 -0000
Links: << >>  << T >>  << A >>
On Sep 1, 7:44 am, John Larkin
<jjlar...@highNOTlandTHIStechnologyPART.com> wrote:
> On Thu, 30 Aug 2007 15:36:04 +0100, "Symon" <symon_bre...@hotmail.com>
> wrote:
>
>
>
>
>
> >"maxascent" <maxasc...@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.
>
> That's not necessary. There's already so much plane-plane capacitance
> that the planes are already equipotential as far as the tiny charge
> injected by the signal trace can affect them.
>
> Really, on a board with, say, 3000 vias, are you going to put a bypass
> via near every signal via? I've heard of people asking for two!

If you're routing a long 3Gbps differential signal, then definitely
you must have ground vias near every signal pair vias. Bypassing with
a capacitor near an inductive vias has no effect. But using at least
one ZBC plane in the stack it helps.

Vasile




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