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 46150

Article: 46150
Subject: PS/2 Keyboard Interface in a Virtex-E
From: Jon Beniston <jbeniston@siroyan.com>
Date: Tue, 20 Aug 2002 15:04:01 +0100
Links: << >>  << T >>  << A >>
Greetings,

I'm am trying to implement a PS/2 Keyboard interface in a Virtex-E
device. The problem is that the keyboard uses 5V TTL logic whereas the
Virtex-E uses 3.3V LVTTL. What I would like to know is, is it possible
to connect these two directly? According to a Xilinx tech note
(http://www.xilinx.com/products/virtex/techtopic/vtt002.pdf), an input
pad on the Virtex-E is 5V tolerant providing an 100 ohm external
resistor is used. It also says that it can output to a 5V TTL device
providing nothing on the receiving device pulls a signal greater than
3.6V. However, the data and clock lines for the PS/2 interface are
bi-directional. It seems from this document that the bi-dir IO buffers
aren't 5V tolerant. Also what do I do if the keyboard drives more than
3.6V? How do I add an external pullup resistor? I'm a complete novice so
a explaination that assumes zero knowlege would be really appreciated!

Cheers,
JonB



Article: 46151
Subject: Re: Xilinx FPGA start-up
From: hmurray@suespammers.org (Hal Murray)
Date: Tue, 20 Aug 2002 14:22:19 -0000
Links: << >>  << T >>  << A >>
>Whether you really care about the initial state is dependent on your
>application.  I find that most of my designs are tolerant to wrong
>initial states, so I don't bother doing anything about it.

I got an "interesting" education on that topic many years ago.

I had a simple one-hot state machine with 4 states.  Just a single bit
running around in a circle.  One FF was inverted so that 0000 was a
valid state and reset would start right.  How simple can something be?

It had a bug.  The GSR signal hit one CLB before the other.  It ended
up with 2 bits running around.

I've been more careful/paranoid since.  It may not take any more
code/logic, but it does take more thought.

That bug was just a simple setup/hold problem.  If you want to get
serious, consider metastability.

-- 
The suespammers.org mail server is located in California.  So are all my
other mailboxes.  Please do not send unsolicited bulk e-mail or unsolicited
commercial e-mail to my suespammers.org address or any of my other addresses.
These are my opinions, not necessarily my employer's.  I hate spam.


Article: 46152
Subject: Re: Poor man's DSP/FPGA instructional tool?
From: Austin Lesea <austin.lesea@xilinx.com>
Date: Tue, 20 Aug 2002 07:29:18 -0700
Links: << >>  << T >>  << A >>
Tom,

There is:   http://ptolemy.eecs.berkeley.edu/

which is incredibly useful and powerful.  I have been told that some of the top three
wireless companies use this tool (and its free).  It can go from GUI to HDL ....
although you may have to develop some libraries yourself for functions you can't find
already done.

Don't re-invent the wheel.  This code is partially delivered in some commercial
products now according to the grape-vine.

One nice thing about universities is the massive amount of labor that is channeled
into providing useful bits and pieces of code when a project like this really comes
together.

Berkeley Unix was another useful project that this reminds me of.  Of course, having
Ken Thompson right there at Berkeley for the summer helped (Bell Labs told him to
"stop messing around with that 'c' or else he'd have to find a job elsewhere").

Austin

Tom Loftus wrote:

> I am an experienced ASIC designer with a little bit of DSP coursework
> and I would like to learn more about implementing DSP algorithms in hardware.
> I think that implementing various hardware architectures in FPGA's
> would be a useful learning exercise which could be done fairly quickly
> and cheaply using my available PC resources at home and work.
>
> I have access to Verilog/VHDL simulation tools and am familiar with the available
> Web baseline FPGA tools.  The pieces I think I am missing are the visualization
> and verification portion of the development:
>
> Visualization - I want to be able to take input and output data streams in
> both the time and frequency domain and graphically display them.
>
> Verification - I need a baseline with which I can compare my hardware
> implementation to verify it is working correctly.
>
> I know something like Matlab or Mathcad would probably do what I am looking
> for, but they seem rather expensive.
>
> Can anyone offer other ideas?  Does what I am planning sound reasonable?
>
> Tom


Article: 46153
(removed)


Article: 46154
Subject: Re: Huge discrepanzcy between gate-array and standard cell synthesis
From: "Alan Fitch" <alan.fitch@doulos.com>
Date: Tue, 20 Aug 2002 15:47:26 +0100
Links: << >>  << T >>  << A >>

"HenningB" <HenningBahr@web.de> wrote in message
news:58f8478d.0208200307.2546a7c4@posting.google.com...
> Hi all,
>
> I have designed a simple frequency divider, existing mainly of
15
> flip-flops. Ambit BuildGates is my synthesis tool. I am getting
the
> following results when my target technology is a 300k gate-array
> technology from LSI:
>
> Worst path delay: 1.73 ns
> Cell Area:    279
>
> And these are the results when using a standard-cell 0.35 um
> technology:
>
> Worst path delay: 1.92 ns
> Cell Area: 13,304
>
> Why is there such a huge discrepancy between the cell areas?

The first thing to check is the definition of "cell". Most people
use
2 input NAND gate equivalents. Perhaps the larger figure is
in square microns, and the smaller one in 2 input nand gates?

Alan

<snip>




Article: 46155
Subject: Re: onboard reconfiguration of Xilinx FPGA
From: rxv20@po.cwru.edu (Ramakrishnan)
Date: 20 Aug 2002 07:57:00 -0700
Links: << >>  << T >>  << A >>
Hi,
  Actually i think i will try to explain my problem little bit more
clearly. I have an architecture and i am trying to implement several
applications in them.
Suppose if i want to implement the bandpass filter algorithm in my
architecture, i have generated the text file which contains the
interconnection matrices for the entire cycle of bandpass filter ,
which is namely algorithm containing 9 mathematical steps . In this
way i would have similarly around 20 steps for some other application
and i have generated text files which contain these signals for every
step.

So what i would like to do is to try to execute these applications on
board step by step and for that , i have to somehow be able to read
the values from the text files ( may be i don't know , but somehow put
these data on board in some way or the other) and the controller
should be able to do it.

I think i have explained more about my problem and can u please give
me some insight on this.

Thanks,

Ram.
  John Williams <j2.williams@qut.edu.au> wrote in message news:<3D61DBDB.C9D165FB@qut.edu.au>...
> Hi Ram,
> 
> I'll have a stab at this one.  As far as I'm aware, you can't "import a
> text file" into FPGA memory without a rgeat deal of external circuitry
> etc, communications interfaces and so on.  I think what you want to do
> is to include the contents of your text file at synthesis time, so the
> data is embedded in the resulting bitstream.
> 
> It sounds like you're doing some kind of signal routing.  So, do you
> want one bitstream that has a particular interconnection table, and
> another bitstream with a different table, and be able to switch between
> the two (by reconfiguring)?  Or, would you like to place several
> interconnection tables in one design (bitstream), and switch between
> them in logic?
> 
> Either way, instead of including text files in your VHDL, you might want
> to consider using constant arrays.  They get synthesised as ROMs (and
> possibly RAM with the write ports unconnected?).
> 
> For a constant array, use something like this:
> 
> entity my_design
>   port
>    (some_input : std_logic_vector(3 downto 0));
>   ...
> 
> end my_design;
> 
> architecture ...
> 
>   subtype connection_entry is std_logic_vector(3 downto 0);  -- for
> example
> 
>   type connection_table is array(0 to 7) of connection_entry;
> 
>   constant table1 : connection_table := ("0001","0010","0101" ...);
> 
> begin
>   
>   some_output <= table1(to_integer(some_input));
> 
> end
> 
> I hope you get the idea.
> 
> In this way, you could have multiple connection tables in your design,
> the choice of which is decided in real time, eg:
> 
> architecture ...
>   constant table1 : ...
>   constant table2 : ...
>   constant table3 : ...
>   -- and so on
> 
> begin
>   output <= table1(to_integer(some_input)) when selection="000" else
>             table2(to_integer(some_input)) when selection="001" else
>             ...  -- and so on
> 
> end
> 
> Alternatively, you could simply have a different design (bitstream) for
> each connection table.
> 
> To automatically generate these things you can write a simple code
> generator in a high level language (even VHDL!).
> 
> Reply in the newsgroup if you'd like some more info.
> 
> Hope this is helpful,
> 
> Rgds,
> 
> John

Article: 46156
Subject: Re: BRAM simulation model error?
From: Goran Bilski <goran.bilski@xilinx.com>
Date: Tue, 20 Aug 2002 08:06:42 -0700
Links: << >>  << T >>  << A >>
Tjena Patrick,

I can't say that I can represent Xilinx support in this issue
but I remember a similar problem I had a while ago.
The problem was that the clocks to the bram started at time 0
but the reset signal was not valid yet.
If you follow the VHDL simulation, the clock will arrive to the
BRAM when the address inputs signals are still invalid ('U').
The address signals will be valid in a few deltas but that is still to la=
te
for the simulation model.
The situation of a active clock input but invalid address signals will se=
t
the memory contents to 'X'.

The fix I did was to drive the reset before a started to drive the clock.=


I hope that this will fix your problem since it fixed mine.

Med v=E4nliga h=E4lsningar
G=F6ran

Patrik Eriksson wrote:

> When I simulates the following code this warning message is displayed a=
t
> time 0ns.
>
> # ** Warning: Invalid ADDRESS: XXXXXXXXXX. Memory contents will be set
> to 'X'.
> #    Time: 0 ps  Iteration: 3  Instance: /theram
>
> This means that I can't simulate with correct INIT values!!
> All addresses and control signals are constant but the clock inputs are=

> toggled.
>
> Have I done anything stupid? Is there an error in the simulation model?=

> This code is a debug version of my real design just to track the
> simulation error.
>
> I thought that if WEx is de-asserted nothing should happen to the memor=
y
> contents whatever the other signals looks like.
>
> /Patrik Eriksson
> -----------
>
> library ieee;
>   use ieee.std_logic_1164.all;
>   use ieee.std_logic_unsigned.all;
>
>   -- synthesis translate_off
>   library unisim;
>   -- synthesis translate_on
>
>   entity bram_tb is
>
>   end entity bram_tb;
>
>   architecture sim of bram_tb is
>
>   component BUFG
>   port (
>   I : in  std_logic;
>   O : out std_logic);
>   end component;
>
>   component IBUFGDS_LVPECL_33
>   port (
>   O  : out std_ulogic;
>   I  : in  std_ulogic;
>   IB : in  std_ulogic);
>   end component;
>
>   component DCM
>   -- synthesis translate_off
>   generic (
>   DLL_FREQUENCY_MODE :     string  :=3D "LOW";
>   CLKOUT_PHASE_SHIFT :     string  :=3D "NONE";
>   PHASE_SHIFT        :     integer :=3D 0;
>   CLKFX_MULTIPLY     :     integer :=3D 4;
>   CLKDV_DIVIDE       :     real    :=3D 2.0
>   );
>   -- synthesis translate_on
>   port (
>   CLKIN              : in  std_logic;
>   CLKFB              : in  std_logic;
>   DSSEN              : in  std_logic;
>   PSINCDEC           : in  std_logic;
>   PSEN               : in  std_logic;
>   PSCLK              : in  std_logic;
>   RST                : in  std_logic;
>   CLK0               : out std_logic;
>   CLK90              : out std_logic;
>   CLK180             : out std_logic;
>   CLK270             : out std_logic;
>   CLK2X              : out std_logic;
>   CLK2X180           : out std_logic;
>   CLKDV              : out std_logic;
>   CLKFX              : out std_logic;
>   CLKFX180           : out std_logic;
>   LOCKED             : out std_logic;
>   PSDONE             : out std_logic;
>   STATUS             : out std_logic_vector(7 downto 0)
>   );
>   end component;
>
>   component RAMB16_S9_S9
>   -- synthesis translate_off
>   generic (
>   WRITE_MODE_A                       : string;
>   WRITE_MODE_B                       : string;
>   INITP_00, INITP_01, INITP_02, INITP_03,
>   INITP_04, INITP_05, INITP_06, INITP_07,
>   INIT_00, INIT_01, INIT_02, INIT_03,
>   INIT_04, INIT_05, INIT_06, INIT_07,
>   INIT_08, INIT_09, INIT_0A, INIT_0B,
>   INIT_0C, INIT_0D, INIT_0E, INIT_0F,
>   INIT_10, INIT_11, INIT_12, INIT_13,
>   INIT_14, INIT_15, INIT_16, INIT_17,
>   INIT_18, INIT_19, INIT_1A, INIT_1B,
>   INIT_1C, INIT_1D, INIT_1E, INIT_1F,
>   INIT_20, INIT_21, INIT_22, INIT_23,
>   INIT_24, INIT_25, INIT_26, INIT_27,
>   INIT_28, INIT_29, INIT_2A, INIT_2B,
>   INIT_2C, INIT_2D, INIT_2E, INIT_2F,
>   INIT_30, INIT_31, INIT_32, INIT_33,
>   INIT_34, INIT_35, INIT_36, INIT_37,
>   INIT_38, INIT_39, INIT_3A, INIT_3B,
>   INIT_3C, INIT_3D, INIT_3E, INIT_3F : bit_vector :=3D
>   X"0000000000000000000000000000000000000000000000000000000000000000"
>   );
>   -- synthesis translate_on
>
>   port (
>   DIA   : in  std_logic_vector(7 downto 0);
>   DIPA  : in  std_logic_vector(0 downto 0);
>   DIB   : in  std_logic_vector(7 downto 0);
>   DIPB  : in  std_logic_vector(0 downto 0);
>   ENA   : in  std_ulogic;
>   ENB   : in  std_ulogic;
>   WEA   : in  std_ulogic;
>   WEB   : in  std_ulogic;
>   SSRA  : in  std_ulogic;
>   SSRB  : in  std_ulogic;
>   CLKA  : in  std_ulogic;
>   CLKB  : in  std_ulogic;
>   ADDRA : in  std_logic_vector(10 downto 0);
>   ADDRB : in  std_logic_vector(10 downto 0);
>   DOA   : out std_logic_vector(7 downto 0);
>   DOPA  : out std_logic_vector(0 downto 0);
>   DOB   : out std_logic_vector(7 downto 0);
>   DOPB  : out std_logic_vector(0 downto 0)
>   );
>
>   end component;
>
>   constant INITP : bit_vector :=3D
> X"1041000100001400010000100040100001400010004100041000100004000104";
>   constant INIT  : bit_vector :=3D
> X"1001000100001000010000100000100001000010000100001000100001000100";
>
>   signal clk_p, clk_n, clk, rst : std_logic;
>   signal clk_ibufg, clk_bufg    : std_logic;
>
>   begin  -- architecture sim
>
>   INBUF: IBUFGDS_LVPECL_33
>   port map (
>   O  =3D clk_ibufg,
>   I  =3D clk_p,
>   IB =3D clk_n);
>
>   GLOBALBUFFER: BUFG
>   port map (
>   I =3D clk_ibufg,
>   O =3D clk_bufg);
>
>   clk <=3D clk_bufg;
>
>   THERAM: RAMB16_S9_S9
>   generic map (
>   WRITE_MODE_A =3D "WRITE_FIRST",
>   WRITE_MODE_B =3D "READ_FIRST",
>   INITP_00     =3D INITP,
>   INITP_01     =3D INITP,
>   INITP_02     =3D INITP,
>   INITP_03     =3D INITP,
>   INITP_04     =3D INITP,
>   INITP_05     =3D INITP,
>   INITP_06     =3D INITP,
>   INITP_07     =3D INITP,
>   INIT_00      =3D INIT,
>   INIT_01      =3D INIT,
>   INIT_02      =3D INIT,
>   INIT_03      =3D INIT,
>   INIT_04      =3D INIT,
>   INIT_05      =3D INIT,
>   INIT_06      =3D INIT,
>   INIT_07      =3D INIT,
>   INIT_08      =3D INIT,
>   INIT_09      =3D INIT,
>   INIT_0A      =3D INIT,
>   INIT_0B      =3D INIT,
>   INIT_0C      =3D INIT,
>   INIT_0D      =3D INIT,
>   INIT_0E      =3D INIT,
>   INIT_0F      =3D INIT,
>   INIT_10      =3D INIT,
>   INIT_11      =3D INIT,
>   INIT_12      =3D INIT,
>   INIT_13      =3D INIT,
>   INIT_14      =3D INIT,
>   INIT_15      =3D INIT,
>   INIT_16      =3D INIT,
>   INIT_17      =3D INIT,
>   INIT_18      =3D INIT,
>   INIT_19      =3D INIT,
>   INIT_1A      =3D INIT,
>   INIT_1B      =3D INIT,
>   INIT_1C      =3D INIT,
>   INIT_1D      =3D INIT,
>   INIT_1E      =3D INIT,
>   INIT_1F      =3D INIT,
>   INIT_20      =3D INIT,
>   INIT_21      =3D INIT,
>   INIT_22      =3D INIT,
>   INIT_23      =3D INIT,
>   INIT_24      =3D INIT,
>   INIT_25      =3D INIT,
>   INIT_26      =3D INIT,
>   INIT_27      =3D INIT,
>   INIT_28      =3D INIT,
>   INIT_29      =3D INIT,
>   INIT_2A      =3D INIT,
>   INIT_2B      =3D INIT,
>   INIT_2C      =3D INIT,
>   INIT_2D      =3D INIT,
>   INIT_2E      =3D INIT,
>   INIT_2F      =3D INIT,
>   INIT_30      =3D INIT,
>   INIT_31      =3D INIT,
>   INIT_32      =3D INIT,
>   INIT_33      =3D INIT,
>   INIT_34      =3D INIT,
>   INIT_35      =3D INIT,
>   INIT_36      =3D INIT,
>   INIT_37      =3D INIT,
>   INIT_38      =3D INIT,
>   INIT_39      =3D INIT,
>   INIT_3A      =3D INIT,
>   INIT_3B      =3D INIT,
>   INIT_3C      =3D INIT,
>   INIT_3D      =3D INIT,
>   INIT_3E      =3D INIT,
>   INIT_3F      =3D INIT)
>   port map (
>   DIA   =3D "00000000",
>   DIPA  =3D "0",
>   DIB   =3D "00000000",
>   DIPB  =3D "0",
>   ENA   =3D '1',
>   ENB   =3D '1',
>   WEA   =3D '0',
>   WEB   =3D '0',
>   SSRA  =3D '0',
>   SSRB  =3D '0',
>   CLKA  =3D clk_p,
>   CLKB  =3D clk,
>   ADDRA =3D "00000000000",
>   ADDRB =3D "00000000000",
>   DOA   =3D open,
>   DOPA  =3D open,
>   DOB   =3D open,
>   DOPB  =3D open);
>
>   -- CLK process
>   process
>   begin
>   clk_p   <=3D '0';
>   clk_n   <=3D '1';
>   loop
>   wait for (10 ns);
>   clk_p <=3D not clk_p;
>   clk_n <=3D not clk_n;
>   end loop;
>   end process;
>
>   MAIN: process
>   begin  -- process MAIN
>

>   rst <=3D '1';
>   wait for 10 ns;
>   rst <=3D '0';
>
>   wait;
>
>   end process MAIN;
>   end architecture sim;
>
> --
> Patrik Eriksson              |  patrik.eriksson@netinsight.net
> Net Insight AB               |  phone:  +46 8 685 04 89
> V=E4stberga All=E9 9             |  fax:    +46 8 685 04 20
> SE-126 30 STOCKHOLM, Sweden  |  http://www.netinsight.net


Article: 46157
Subject: Re: PS/2 Keyboard Interface in a Virtex-E
From: Laurent Gauch <laurent.gauch@amontec.com>
Date: Tue, 20 Aug 2002 17:22:33 +0200
Links: << >>  << T >>  << A >>
Jon,

There are many solutions, but to make sure for bidirectional signals, 
use a level logic shift device like a P82B96 from Philips or other.

Laurent
http://www.amontec.com

Jon Beniston wrote:

> Greetings,
> 
> I'm am trying to implement a PS/2 Keyboard interface in a Virtex-E
> device. The problem is that the keyboard uses 5V TTL logic whereas the
> Virtex-E uses 3.3V LVTTL. What I would like to know is, is it possible
> to connect these two directly? According to a Xilinx tech note
> (http://www.xilinx.com/products/virtex/techtopic/vtt002.pdf), an input
> pad on the Virtex-E is 5V tolerant providing an 100 ohm external
> resistor is used. It also says that it can output to a 5V TTL device
> providing nothing on the receiving device pulls a signal greater than
> 3.6V. However, the data and clock lines for the PS/2 interface are
> bi-directional. It seems from this document that the bi-dir IO buffers
> aren't 5V tolerant. Also what do I do if the keyboard drives more than
> 3.6V? How do I add an external pullup resistor? I'm a complete novice so
> a explaination that assumes zero knowlege would be really appreciated!
> 
> Cheers,
> JonB
> 
> 
> 


Article: 46158
Subject: Re: BRAM simulation model error?
From: Ray Andraka <ray@andraka.com>
Date: Tue, 20 Aug 2002 15:42:23 GMT
Links: << >>  << T >>  << A >>
If the timing checks didn't do it, I am pretty sure your BRAM is getting clocked
before the controls are valid.  All it takes is one delta cycle.  This is why I
recommended starting the simulation with the clock low rather than high, so that
as the simulation starts up the clock goes from 'U' to '0' instead of from 'U' to
1.  That way, if there are fewer delta cycle delays on the clock path than on the
controls path you won't have the clock transitioning to '1' before the controls
become othter than 'U'.  BTW, If you use the clkdll and drive the BRAM controls
directly from registers, you shouldn't hit this situation (the clk dll has quite a
few delta cycle delay).


Patrik Eriksson wrote:

> Ray Andraka wrote:
>
> > Try setting the TimingChecksOn generic to false.  I've had troubles in the
> > past when that is in the (default) on state interfacing with RTL designs.
>
> I tried that with the same result.
>
> > Also, you may be bringing the clock high at the same time you are bringing
> > the WE to inactive at the very beginning of your sim.  Try starting with the
> > clock low.
>
> I think that the simulation model is incorrect. It is not true dual port
> and the behaviour is wrong.
>
> I've got this from xilinx support:
>
> -----------
> I have just found the following internal solution.
>
> Keywords: unisim, functional, simulation, RAMB4_Sm_Sn, RAMB16_Sm_Sn
>
> Urgency: Standard
>
> Description: When performing a functional (behavioral) simulation on a
> RAMB16_S9_S9 the following error message may be seen after issuing the
> vsim (load design) command:
> # ** Warning: Invalid ADDRESS: XXXXXXXXXXX. Memory contents will be set
> to 'X'.
>
> The simulation procedes but as suggested by the warning, the memory
> contents are not initialised to correct values.
>
> The warning occured because only one of the clock inputs to the dual
> port RAM had passed through an IBUFG. The following workarounds will
> cure the problem:
> 1) Ensure that both clocks do NOT have an IBUFG directly instantiated in
> the code. IBUFGs will be inferred automatically if the default project
> options are set.
> OR
> 2) Ensure that both clocks have an IBUFG.
>
> ------------
>
> Solution 2 solved my problem in the simple test code but not my real
> design. I have to investigate it further.
>
> Thanks!
>
> Patrik
>
> >
> > Patrik Eriksson wrote:
> >
> >
> >>When I simulates the following code this warning message is displayed at
> >>time 0ns.
> >>
> >># ** Warning: Invalid ADDRESS: XXXXXXXXXX. Memory contents will be set
> >>to 'X'.
> >>#    Time: 0 ps  Iteration: 3  Instance: /theram
> >>
> >>This means that I can't simulate with correct INIT values!!
> >>All addresses and control signals are constant but the clock inputs are
> >>toggled.
> >>
> >>Have I done anything stupid? Is there an error in the simulation model?
> >>This code is a debug version of my real design just to track the
> >>simulation error.
> >>
> >>I thought that if WEx is de-asserted nothing should happen to the memory
> >>contents whatever the other signals looks like.
> >>
> >>/Patrik Eriksson
> >>-----------
> >>
> >>library ieee;
> >>  use ieee.std_logic_1164.all;
> >>  use ieee.std_logic_unsigned.all;
> >>
> >>  -- synthesis translate_off
> >>  library unisim;
> >>  -- synthesis translate_on
> >>
> >>  entity bram_tb is
> >>
> >>  end entity bram_tb;
> >>
> >>  architecture sim of bram_tb is
> >>
> >>  component BUFG
> >>  port (
> >>  I : in  std_logic;
> >>  O : out std_logic);
> >>  end component;
> >>
> >>  component IBUFGDS_LVPECL_33
> >>  port (
> >>  O  : out std_ulogic;
> >>  I  : in  std_ulogic;
> >>  IB : in  std_ulogic);
> >>  end component;
> >>
> >>  component DCM
> >>  -- synthesis translate_off
> >>  generic (
> >>  DLL_FREQUENCY_MODE :     string  := "LOW";
> >>  CLKOUT_PHASE_SHIFT :     string  := "NONE";
> >>  PHASE_SHIFT        :     integer := 0;
> >>  CLKFX_MULTIPLY     :     integer := 4;
> >>  CLKDV_DIVIDE       :     real    := 2.0
> >>  );
> >>  -- synthesis translate_on
> >>  port (
> >>  CLKIN              : in  std_logic;
> >>  CLKFB              : in  std_logic;
> >>  DSSEN              : in  std_logic;
> >>  PSINCDEC           : in  std_logic;
> >>  PSEN               : in  std_logic;
> >>  PSCLK              : in  std_logic;
> >>  RST                : in  std_logic;
> >>  CLK0               : out std_logic;
> >>  CLK90              : out std_logic;
> >>  CLK180             : out std_logic;
> >>  CLK270             : out std_logic;
> >>  CLK2X              : out std_logic;
> >>  CLK2X180           : out std_logic;
> >>  CLKDV              : out std_logic;
> >>  CLKFX              : out std_logic;
> >>  CLKFX180           : out std_logic;
> >>  LOCKED             : out std_logic;
> >>  PSDONE             : out std_logic;
> >>  STATUS             : out std_logic_vector(7 downto 0)
> >>  );
> >>  end component;
> >>
> >>  component RAMB16_S9_S9
> >>  -- synthesis translate_off
> >>  generic (
> >>  WRITE_MODE_A                       : string;
> >>  WRITE_MODE_B                       : string;
> >>  INITP_00, INITP_01, INITP_02, INITP_03,
> >>  INITP_04, INITP_05, INITP_06, INITP_07,
> >>  INIT_00, INIT_01, INIT_02, INIT_03,
> >>  INIT_04, INIT_05, INIT_06, INIT_07,
> >>  INIT_08, INIT_09, INIT_0A, INIT_0B,
> >>  INIT_0C, INIT_0D, INIT_0E, INIT_0F,
> >>  INIT_10, INIT_11, INIT_12, INIT_13,
> >>  INIT_14, INIT_15, INIT_16, INIT_17,
> >>  INIT_18, INIT_19, INIT_1A, INIT_1B,
> >>  INIT_1C, INIT_1D, INIT_1E, INIT_1F,
> >>  INIT_20, INIT_21, INIT_22, INIT_23,
> >>  INIT_24, INIT_25, INIT_26, INIT_27,
> >>  INIT_28, INIT_29, INIT_2A, INIT_2B,
> >>  INIT_2C, INIT_2D, INIT_2E, INIT_2F,
> >>  INIT_30, INIT_31, INIT_32, INIT_33,
> >>  INIT_34, INIT_35, INIT_36, INIT_37,
> >>  INIT_38, INIT_39, INIT_3A, INIT_3B,
> >>  INIT_3C, INIT_3D, INIT_3E, INIT_3F : bit_vector :=
> >>  X"0000000000000000000000000000000000000000000000000000000000000000"
> >>  );
> >>  -- synthesis translate_on
> >>
> >>  port (
> >>  DIA   : in  std_logic_vector(7 downto 0);
> >>  DIPA  : in  std_logic_vector(0 downto 0);
> >>  DIB   : in  std_logic_vector(7 downto 0);
> >>  DIPB  : in  std_logic_vector(0 downto 0);
> >>  ENA   : in  std_ulogic;
> >>  ENB   : in  std_ulogic;
> >>  WEA   : in  std_ulogic;
> >>  WEB   : in  std_ulogic;
> >>  SSRA  : in  std_ulogic;
> >>  SSRB  : in  std_ulogic;
> >>  CLKA  : in  std_ulogic;
> >>  CLKB  : in  std_ulogic;
> >>  ADDRA : in  std_logic_vector(10 downto 0);
> >>  ADDRB : in  std_logic_vector(10 downto 0);
> >>  DOA   : out std_logic_vector(7 downto 0);
> >>  DOPA  : out std_logic_vector(0 downto 0);
> >>  DOB   : out std_logic_vector(7 downto 0);
> >>  DOPB  : out std_logic_vector(0 downto 0)
> >>  );
> >>
> >>  end component;
> >>
> >>  constant INITP : bit_vector :=
> >>X"1041000100001400010000100040100001400010004100041000100004000104";
> >>  constant INIT  : bit_vector :=
> >>X"1001000100001000010000100000100001000010000100001000100001000100";
> >>
> >>  signal clk_p, clk_n, clk, rst : std_logic;
> >>  signal clk_ibufg, clk_bufg    : std_logic;
> >>
> >>  begin  -- architecture sim
> >>
> >>  INBUF: IBUFGDS_LVPECL_33
> >>  port map (
> >>  O  = clk_ibufg,
> >>  I  = clk_p,
> >>  IB = clk_n);
> >>
> >>  GLOBALBUFFER: BUFG
> >>  port map (
> >>  I = clk_ibufg,
> >>  O = clk_bufg);
> >>
> >>  clk <= clk_bufg;
> >>
> >>  THERAM: RAMB16_S9_S9
> >>  generic map (
> >>  WRITE_MODE_A = "WRITE_FIRST",
> >>  WRITE_MODE_B = "READ_FIRST",
> >>  INITP_00     = INITP,
> >>  INITP_01     = INITP,
> >>  INITP_02     = INITP,
> >>  INITP_03     = INITP,
> >>  INITP_04     = INITP,
> >>  INITP_05     = INITP,
> >>  INITP_06     = INITP,
> >>  INITP_07     = INITP,
> >>  INIT_00      = INIT,
> >>  INIT_01      = INIT,
> >>  INIT_02      = INIT,
> >>  INIT_03      = INIT,
> >>  INIT_04      = INIT,
> >>  INIT_05      = INIT,
> >>  INIT_06      = INIT,
> >>  INIT_07      = INIT,
> >>  INIT_08      = INIT,
> >>  INIT_09      = INIT,
> >>  INIT_0A      = INIT,
> >>  INIT_0B      = INIT,
> >>  INIT_0C      = INIT,
> >>  INIT_0D      = INIT,
> >>  INIT_0E      = INIT,
> >>  INIT_0F      = INIT,
> >>  INIT_10      = INIT,
> >>  INIT_11      = INIT,
> >>  INIT_12      = INIT,
> >>  INIT_13      = INIT,
> >>  INIT_14      = INIT,
> >>  INIT_15      = INIT,
> >>  INIT_16      = INIT,
> >>  INIT_17      = INIT,
> >>  INIT_18      = INIT,
> >>  INIT_19      = INIT,
> >>  INIT_1A      = INIT,
> >>  INIT_1B      = INIT,
> >>  INIT_1C      = INIT,
> >>  INIT_1D      = INIT,
> >>  INIT_1E      = INIT,
> >>  INIT_1F      = INIT,
> >>  INIT_20      = INIT,
> >>  INIT_21      = INIT,
> >>  INIT_22      = INIT,
> >>  INIT_23      = INIT,
> >>  INIT_24      = INIT,
> >>  INIT_25      = INIT,
> >>  INIT_26      = INIT,
> >>  INIT_27      = INIT,
> >>  INIT_28      = INIT,
> >>  INIT_29      = INIT,
> >>  INIT_2A      = INIT,
> >>  INIT_2B      = INIT,
> >>  INIT_2C      = INIT,
> >>  INIT_2D      = INIT,
> >>  INIT_2E      = INIT,
> >>  INIT_2F      = INIT,
> >>  INIT_30      = INIT,
> >>  INIT_31      = INIT,
> >>  INIT_32      = INIT,
> >>  INIT_33      = INIT,
> >>  INIT_34      = INIT,
> >>  INIT_35      = INIT,
> >>  INIT_36      = INIT,
> >>  INIT_37      = INIT,
> >>  INIT_38      = INIT,
> >>  INIT_39      = INIT,
> >>  INIT_3A      = INIT,
> >>  INIT_3B      = INIT,
> >>  INIT_3C      = INIT,
> >>  INIT_3D      = INIT,
> >>  INIT_3E      = INIT,
> >>  INIT_3F      = INIT)
> >>  port map (
> >>  DIA   = "00000000",
> >>  DIPA  = "0",
> >>  DIB   = "00000000",
> >>  DIPB  = "0",
> >>  ENA   = '1',
> >>  ENB   = '1',
> >>  WEA   = '0',
> >>  WEB   = '0',
> >>  SSRA  = '0',
> >>  SSRB  = '0',
> >>  CLKA  = clk_p,
> >>  CLKB  = clk,
> >>  ADDRA = "00000000000",
> >>  ADDRB = "00000000000",
> >>  DOA   = open,
> >>  DOPA  = open,
> >>  DOB   = open,
> >>  DOPB  = open);
> >>
> >>  -- CLK process
> >>  process
> >>  begin
> >>  clk_p   <= '0';
> >>  clk_n   <= '1';
> >>  loop
> >>  wait for (10 ns);
> >>  clk_p <= not clk_p;
> >>  clk_n <= not clk_n;
> >>  end loop;
> >>  end process;
> >>
> >>  MAIN: process
> >>  begin  -- process MAIN
> >>
> >>  rst <= '1';
> >>  wait for 10 ns;
> >>  rst <= '0';
> >>
> >>  wait;
> >>
> >>  end process MAIN;
> >>  end architecture sim;
> >>
> >>--
> >>Patrik Eriksson              |  patrik.eriksson@netinsight.net
> >>Net Insight AB               |  phone:  +46 8 685 04 89
> >>Västberga Allé 9             |  fax:    +46 8 685 04 20
> >>SE-126 30 STOCKHOLM, Sweden  |  http://www.netinsight.net
> >>
> >
> > --
> > --Ray Andraka, P.E.
> > President, the Andraka Consulting Group, Inc.
> > 401/884-7930     Fax 401/884-7950
> > email ray@andraka.com
> > http://www.andraka.com
> >
> >  "They that give up essential liberty to obtain a little
> >   temporary safety deserve neither liberty nor safety."
> >                                           -Benjamin Franklin, 1759
> >
> >
> >
>
> --
> Patrik Eriksson              |  patrik.eriksson@netinsight.net
> Net Insight AB               |  phone:  +46 8 685 04 89
> Västberga Allé 9             |  fax:    +46 8 685 04 20
> SE-126 30 STOCKHOLM, Sweden  |  http://www.netinsight.net

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930     Fax 401/884-7950
email ray@andraka.com
http://www.andraka.com

 "They that give up essential liberty to obtain a little
  temporary safety deserve neither liberty nor safety."
                                          -Benjamin Franklin, 1759



Article: 46159
Subject: FREE 1/2 day tutorial: "The Xilinx Virtex II PRO - PowerPC 405 Architecture Familiarization"
From: "Kirk George" <kirk.george@windriver.com>
Date: Tue, 20 Aug 2002 16:17:03 GMT
Links: << >>  << T >>  << A >>
Wind River presents:
    Virtex II PRO Tutorial:
        "The Xilinx Virtex II PRO PowerPC 405 Architecture Familiarization"

Wind River is pleased to provide our FREE 1/2 day tutorial: "The Xilinx
Virtex II PRO - PowerPC 405 Architecture Familiarization," including a
special development tools demonstration. We are confident you will find them
very productive for engineers who are designing and developing embedded
systems.  The Xilinx Virtex II PRO - PowerPC 405 Familiarization Tutorial is
intended for those who have selected or are close to selecting the Xilinx
Virtex II PRO for a project.

SCHEDULE & LOCATION
When:   Sept. 4th, 2002
Time:    8:00 am - 12:00 pm
Where: Ottawa Marriott
             100 Kent St.
 Ottawa, ON K1P 5R7
             Ph: (613) 783-4215

AGENDA
08:00 - 09:00    Registration - Coffee & Pastries
09:00 - 12:00     Virtex II PRO - PowerPC405 Tutorial

HOW TO REGISTER
Fax - Email:
            SAT/HAT Training
            Wind River
            Fax: (781) 364-2020
            Email: dtgtraining@windriver.com

Seating is limited, so Please fax form or email us with the following
information:

Name:
Company:
Address:
City, State  ZIP:
Phone #:
Email Address:



Article: 46160
Subject: And detailed documentation about XDL format?
From: Weifeng Xu <wxu@ecs.umass.edu>
Date: Tue, 20 Aug 2002 12:47:47 -0400
Links: << >>  << T >>  << A >>
Hi, guys
   Is there any detailed documenation about XDL format online, I am
trying to see whether it's possible to transfer my design format to XDL
format.
   Thanks!

Weifeng


Article: 46161
Subject: How to include Xilinx library for both ModelSim and Synplify?
From: "Barry Brown" <barry_brown@agilent.com>
Date: Tue, 20 Aug 2002 10:56:18 -0700
Links: << >>  << T >>  << A >>
I need to use some Xilinx primitives in my VHDL, and they seem to be in
different libraries for use with ModelSim and Synplify.  Here's what I have
so far...

library ieee;
use ieee.std_logic_1164.all;
use ieee.std_logic_unsigned.all;
-- synthesis translate_off
library unisim;
use unisim.all;
-- synthesis translate_on
library virtex;
use virtex.components.all;
...

This works fine in Synplify, but for ModelSim I have to comment out the two
lines...

--library virtex;
--use virtex.components.all;

Does anyone know a better way to "hide" these from ModelSim?

Thanks,
Barry Brown



Article: 46162
Subject: Re: Fun FPGA system
From: obrien987@yahoo.com (Jonathan O'Brien)
Date: 20 Aug 2002 11:14:31 -0700
Links: << >>  << T >>  << A >>
> It would be decidedly more fun if it didn't use an obsolete SpartanXL
> part that is not supported by WebPack.
> 

I have a new Xport  sitting on my desk and it seems pretty handy.  The
choice of FPGA is somewhat painful but I can understand why it was
chosen based on other parts of the system, ie available voltage and
power requirements.

The choice of FPGA would probably not cause any problems for a lab
environment where a teacher/professor provided the bitstream and
assigned a C/C++/asm programming task to students.  The Xport would be
a great tool for teaching embedded programming.

Anyway, I'm teaching myself Verilog and now need to synthesize a
simple design  and map it to the SpartanXL in this device.  My design
had been simulated using Icarus Verilog and was  basically ready to
go, but then I went to create a project in WebPack and found that the
FPGA was not supported.  Oh, that ruined my evening.

Does anyone have a suggestion for an inexpensive tool that I can use? 
I hear the old student version Foundation 2.1 tools have the compiler
etc but  I'm worried that Xilinx will no longer issue a license.  Does
this old tool have node locked (to ethernet ID) licenses that need to
be issued by Xilinx?

-Jonathan O'Brien

Article: 46163
Subject: Re: And detailed documentation about XDL format?
From: "Steve Casselman" <sc@vcc.com>
Date: Tue, 20 Aug 2002 18:27:17 GMT
Links: << >>  << T >>  << A >>
Do a search for xdl in the Xilinx directory. You can do anything you want in
the Xilinx Design Language (xdl).


Steve


"Weifeng Xu" <wxu@ecs.umass.edu> wrote in message
news:3D6272B3.F01E5EB5@ecs.umass.edu...
> Hi, guys
>    Is there any detailed documenation about XDL format online, I am
> trying to see whether it's possible to transfer my design format to XDL
> format.
>    Thanks!
>
> Weifeng
>



Article: 46164
Subject: Re: How to include Xilinx library for both ModelSim and Synplify?
From: Ray Andraka <ray@andraka.com>
Date: Tue, 20 Aug 2002 21:25:51 GMT
Links: << >>  << T >>  << A >>
 you don't need those two lines for synplify either. Just leave them out.

Barry Brown wrote:

> I need to use some Xilinx primitives in my VHDL, and they seem to be in
> different libraries for use with ModelSim and Synplify.  Here's what I have
> so far...
>
> library ieee;
> use ieee.std_logic_1164.all;
> use ieee.std_logic_unsigned.all;
> -- synthesis translate_off
> library unisim;
> use unisim.all;
> -- synthesis translate_on
> library virtex;
> use virtex.components.all;
> ...
>
> This works fine in Synplify, but for ModelSim I have to comment out the two
> lines...
>
> --library virtex;
> --use virtex.components.all;
>
> Does anyone know a better way to "hide" these from ModelSim?
>
> Thanks,
> Barry Brown

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930     Fax 401/884-7950
email ray@andraka.com
http://www.andraka.com

 "They that give up essential liberty to obtain a little
  temporary safety deserve neither liberty nor safety."
                                          -Benjamin Franklin, 1759



Article: 46165
Subject: Re: Resume: HW Verification Consultant (Specman)
From: Kevin Brace <killspam4kevinbraceusenet@killspam4hotmail.com>
Date: Tue, 20 Aug 2002 16:45:38 -0500
Links: << >>  << T >>  << A >>
        It sounds like the job market is really bad when you start
seeing resumes being posted at comp.arch.fpga.



Kevin Brace (In general, don't respond to me directly, and respond
within the newsgroup.)

Article: 46166
Subject: TQFP 176 socket
From: John Larkin <John@0.com>
Date: Tue, 20 Aug 2002 15:56:05 -0700
Links: << >>  << T >>  << A >>
Hi,

we have an older product that uses Actel 1280XL-TQ176 chips, and one
chip has a horrible, basicly-impossible-to-explain bug [1]. Since
these critters are OTP, we may well wind up replacing the chip several
times before we get it fixed, so we'd like to use a socket, butchered
into the regular PCB footprint somehow.

So, does anybody know of a source for such a socket? We've found the
Yamaichi parts, which solder directly to the chip layout, but delivery
is 10 weeks or somesuch and min order is 10 pieces at $80 each.

If anybody has any extras around (like, *you* had to buy 10) we'd be
pleased to purchase a few.

And yes, we use Xilinx now; this resulted from a chance encounter with
Peter Alfke as we simultaneously attacked a box of goodies on the
ground at the Foothill Electronic Flea Market.


John

[1] We load a down-counter in an idle state, using the system clock;
later we count down using a different clock. The logic looks OK, but
one narrow range of presets loads wrong.




Article: 46167
Subject: Re: need help with the JAM-Player from ALTERA
From: alann@accom.com (Alan Nishioka)
Date: 20 Aug 2002 15:59:31 -0700
Links: << >>  << T >>  << A >>
schachinger@decomsys.com (Schachinger Martin) wrote in message news:<7b75b7ff.0208200538.4ce7f867@posting.google.com>...
> I have a problem with the JAM STAPL Player Version 2.2. 
> But first i summarize what i have done so far:
> 
> When i program the devices with the MAX2PLUS Programmer under Windows
> with the same JAM-File it works all the time.
> So i think there is a bug in the JAM STAPL Player.
> Do you understand my problem? Have you an Idea what's going wrong with
> the player, or where i can look to trace the error?
> Because i need the JAM Player under LINUX and it is nessesary that it
> works ALL the time and not every now and then.
> 
> I hope you can help me with this problem...
> have a nice day
> 
> yours
> Schachinger Martin
> schachinger@decomsys.com
> VIENNA - AUSTRIA

Since JAM sometimes works, and it always works under MAXPLUS, it
sounds like a timing problem.

How did you program the timing loop?  I believe this is something you
need to port because every target is different.

You might try slowing down the timing loop by half to see if it works
any better.

Alan Nishioka
alann@accom.com

Article: 46168
Subject: Re: Xilinx FPGA start-up
From: allan_herriman.hates.spam@agilent.com (Allan Herriman)
Date: Tue, 20 Aug 2002 23:55:59 GMT
Links: << >>  << T >>  << A >>
On Tue, 20 Aug 2002 14:22:19 -0000, hmurray@suespammers.org (Hal
Murray) wrote:

>>Whether you really care about the initial state is dependent on your
>>application.  I find that most of my designs are tolerant to wrong
>>initial states, so I don't bother doing anything about it.
>
>I got an "interesting" education on that topic many years ago.
>
>I had a simple one-hot state machine with 4 states.  Just a single bit
>running around in a circle.  One FF was inverted so that 0000 was a
>valid state and reset would start right.  How simple can something be?
>
>It had a bug.  The GSR signal hit one CLB before the other.  It ended
>up with 2 bits running around.
>
>I've been more careful/paranoid since.  It may not take any more
>code/logic, but it does take more thought.
>
>That bug was just a simple setup/hold problem.  If you want to get
>serious, consider metastability.

I should have said that most of my designs are tolerant to wrong
initial states *because I design them that way*.  A beginner is likely
to miss potential hangups, and a synchronous reset is a reasonably
reliable way of avoiding the problem.

I am aware that synthesis tools can take my perfectly correct and safe
FSM and "optimise" it into something that isn't safe (e.g. binary to
one-hot trancoding).  This hasn't bitten me ... yet.

Regards,
Allan.

Article: 46169
Subject: QDR Controller
From: Kirk <>
Date: Tue, 20 Aug 2002 18:15:30 -0700
Links: << >>  << T >>  << A >>
Has anyone been able to successfully use the free Xilinx QDR Controller that's described in App Note #262?

I downloaded it, ran a Verilog sim, and it doesn't look like it is functioning correctly.  Just looking at the writes, the address given to the controller is not the address that the controller sends out the QDR.

Article: 46170
Subject: Virtex-II LVPECL Inputs
From: "Khee Hue" <khue@optimumdesign.com.au>
Date: Wed, 21 Aug 2002 12:13:29 +0930
Links: << >>  << T >>  << A >>
Hi All,

Xilinx recommends LVPECL inputs to Virtex-II be terminated with a 100ohm
resistor between the LVPECL input differential pair.

I wish to terminate my LVPECL inputs with 50ohms to VTT (where VTT = VCCO -
2V) on each leg of the differential pair at the Virtex-II chip end.  Has
anyone successfully used this LVPECL termination on Virtex-II chips ?

Thanks.
Khee




Article: 46171
Subject: Re: Good documentation on CPLD
From: alw@al-williams.com (Al Williams)
Date: 20 Aug 2002 20:43:01 -0700
Links: << >>  << T >>  << A >>
You might enjoy our Altera tutorial (we also have Xilinx material)
http://tutor.al-williams.com. Mostly schematic entry but some Verilog
stuff also.

Al Williams
AWC


people@micro-web.co.kr (JinSoo Kim) wrote in message news:<edc45795.0208192147.d2d841b@posting.google.com>...
> Hello,
> 
> I am a beginner in CPLD and have a difficulty in reading CPLD datasheet.
> (Altera's MAX3000 CPLD).
> It describes the hardware architecture of CPLD.
> Macrocells, Logic array block, Expander product terms, Programmable
> interconnect array...
> They are unfamiliar to me so it is hard to read the datasheet.
> Is there a good documentation or book which discusses more basic concepts
> about CPLD hardware architecture?
> 
> Thanks in advance... :-)

Article: 46172
Subject: Re: BRAM simulation model error?
From: allan_herriman.hates.spam@agilent.com (Allan Herriman)
Date: Wed, 21 Aug 2002 03:48:31 GMT
Links: << >>  << T >>  << A >>
On Mon, 19 Aug 2002 15:35:58 GMT, Patrik Eriksson
<patrik.eriksson@netinsight.net> wrote:

>When I simulates the following code this warning message is displayed at 
>time 0ns.
>
># ** Warning: Invalid ADDRESS: XXXXXXXXXX. Memory contents will be set 
>to 'X'.
>#    Time: 0 ps  Iteration: 3  Instance: /theram

I just found that this feature was recently introduced with the
unisim_vcomp.vhd that shipped with a recent service pack of 4.2i.

I had a test bench that had been working fine, and I recently
recompiled my copy of unisim_vcomp (using the SP3 source) and my
testbench stopped working :(

I had the clocks starting at '1', and Ray's suggested fix of having
them start at '0' made the problem go away.  (Thanks Ray.)

This points to a bug in the unisim library.  I feel that the rambx
components should not see an initial clock of '1' as a rising edge.

Regards,
Allan.

Article: 46173
Subject: Re: BRAM simulation model error?
From: Ray Andraka <ray@andraka.com>
Date: Wed, 21 Aug 2002 04:58:40 GMT
Links: << >>  << T >>  << A >>
I have seen this happen before in non-Xilinx stuff as well.  The problem is
the if clk'event and clk='1' (which is what rising_edge(clk) does too), looks
for an event on the clock and a current value of  '1', so any transition that
ends in a '1' is going to be interpreted as a clock rising edge by the sim,
and that includes the initial transition from 'U' to '1'.  If the delta
delays in your particular model are such that the clock has more delta delays
than the data, you are fine.  If not, then you have a problem.  It just so
happens that the old BRAM model had an additional delay into the clock
relative to the data inside the model that is no longer there.  I don't think
that this is a xilinx bug per se, although it could certainly be eliminated
by putting initial values or  on the data path or extra delta delays
(connecting to local clock signal names)  inside the model.

As I said, this is certainly not unique to xilinx, and you are probably
fortunate not to have run into it before.






Allan Herriman wrote:

> On Mon, 19 Aug 2002 15:35:58 GMT, Patrik Eriksson
> <patrik.eriksson@netinsight.net> wrote:
>
> >When I simulates the following code this warning message is displayed at
> >time 0ns.
> >
> ># ** Warning: Invalid ADDRESS: XXXXXXXXXX. Memory contents will be set
> >to 'X'.
> >#    Time: 0 ps  Iteration: 3  Instance: /theram
>
> I just found that this feature was recently introduced with the
> unisim_vcomp.vhd that shipped with a recent service pack of 4.2i.
>
> I had a test bench that had been working fine, and I recently
> recompiled my copy of unisim_vcomp (using the SP3 source) and my
> testbench stopped working :(
>
> I had the clocks starting at '1', and Ray's suggested fix of having
> them start at '0' made the problem go away.  (Thanks Ray.)
>
> This points to a bug in the unisim library.  I feel that the rambx
> components should not see an initial clock of '1' as a rising edge.
>
> Regards,
> Allan.

--
--Ray Andraka, P.E.
President, the Andraka Consulting Group, Inc.
401/884-7930     Fax 401/884-7950
email ray@andraka.com
http://www.andraka.com

 "They that give up essential liberty to obtain a little
  temporary safety deserve neither liberty nor safety."
                                          -Benjamin Franklin, 1759



Article: 46174
Subject: What's wrong with clearLogic?
From: lyqin@cti.com.cn (Leon Qin)
Date: 21 Aug 2002 01:06:25 -0700
Links: << >>  << T >>  << A >>
http://www.clear-logic.com/



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