Go Back   Velocity Reviews > Newsgroups > VHDL
User Name
Password
Register FAQ Members List Calendar Search Today's Posts Mark Forums Read

Reply

VHDL - Quick synthesis question

 
Thread Tools Search this Thread
Old 08-22-2006, 10:08 PM   #1
Default Quick synthesis question


Hi,

I'm studying opencores' ddr source for insight. I
see it makes use of the unisim fddrrse model,
which is very simple -- 2 D inputs, 1 Q output,
Set/reset/enable inputs, 2 clock inputs. If
either clock input goes low to high, Q output
reflects input settings. Just for reference here
it is, but this isn't really the point.

if ( rising_edge(C0) = true) then
if (R = '1') then
Q <= '0' after 100 ps;
elsif (S = '1' ) then
Q <= '1' after 100 ps;
elsif (CE = '1' ) then
Q <= D0 after 100 ps;
end if;
elsif (rising_edge(C1) = true ) then
if (R = '1') then
Q <= '0' after 100 ps;
elsif (S = '1' ) then
Q <= '1' after 100 ps;
elsif (CE = '1') then
Q <= D1 after 100 ps;
end if;
end if;

The Xilinx fpga's have their IOB's, which have
the DDR output block in hardware. The opencores
DDR module doesn't seem to indicate the direct
connections to the IOB's that would have to be
done internal to the chip -- the behaviour is just
written out logically. For synthesis, it skips over
the model for the fddrrse. But elsewhere in the
vhdl code it adds a layer in between the fddrrse
block and the outside world, basically
-- Tristate-Buffer fuer dqs_q
gen_dqs : for n in 0 to DDR_DQS_WIDTH-1 generate
dqs_q(n) <= 'Z' when dqsz_q(n)='1' else dqs(n);
end generate gen_dqs;

dqs is mapped to the 'q' output of an fddrrse. dqsz_q
is another signal which just indicates when the output
should be Z or not.

dqs_q is part of the DDR controller's interface, and
presumably would end up getting mapped to the IOB
by the synthesizer. Those pins would connect directly
to a DDR device.

Now after this long-winded introduction is the question:

Is this all that's necessary to have a synthesizable
code snippet using the IOB's? I mean, in order for
this to work the synthesizer would have to have a
model of the IOB's and know that the imposed tri-state
behaviour can be done using the infrastructure of the
IOB.

The alternative approach would be to explicitly state
all the connections to the IOB, so no intelligence in the
synthesizer would be required -- but I don't seem to
be able to find those mappings. Also this approach would
seem to be device specific, not just within a vendor but
across devices from the same vendor -- IOB's change.
That means code tweaks for each specific device, which
isn't too appealing.

The fddrrse is a simplified representation of the IOB of
a xilinx part. Maybe it isn't even related to an IOB, but
the fddrrse behaviour can be mapped onto an IOB by the
synthesizer.

Thanks for someone to clear this up.
-Dave


David Ashley
  Reply With Quote
Old 08-23-2006, 06:35 PM   #2
Andy
 
Posts: n/a
Default Re: Quick synthesis question
I'm not sure exactly what your question was, but Synplicity
automatically recognizes DDR processes, and when the resources are
available (only on primary IOs in applicable FPGAs), it will
automatically implement the appropriate DDR primitive for the target
architectures. The tri-state IOs work the same way.

If the process does not describe the behavior of a primary IO, then DDR
resources are not available, and it will give you an error.

Andy


David Ashley wrote:
> Hi,
>
> I'm studying opencores' ddr source for insight. I
> see it makes use of the unisim fddrrse model,
> which is very simple -- 2 D inputs, 1 Q output,
> Set/reset/enable inputs, 2 clock inputs. If
> either clock input goes low to high, Q output
> reflects input settings. Just for reference here
> it is, but this isn't really the point.
>
> if ( rising_edge(C0) = true) then
> if (R = '1') then
> Q <= '0' after 100 ps;
> elsif (S = '1' ) then
> Q <= '1' after 100 ps;
> elsif (CE = '1' ) then
> Q <= D0 after 100 ps;
> end if;
> elsif (rising_edge(C1) = true ) then
> if (R = '1') then
> Q <= '0' after 100 ps;
> elsif (S = '1' ) then
> Q <= '1' after 100 ps;
> elsif (CE = '1') then
> Q <= D1 after 100 ps;
> end if;
> end if;
>
> The Xilinx fpga's have their IOB's, which have
> the DDR output block in hardware. The opencores
> DDR module doesn't seem to indicate the direct
> connections to the IOB's that would have to be
> done internal to the chip -- the behaviour is just
> written out logically. For synthesis, it skips over
> the model for the fddrrse. But elsewhere in the
> vhdl code it adds a layer in between the fddrrse
> block and the outside world, basically
> -- Tristate-Buffer fuer dqs_q
> gen_dqs : for n in 0 to DDR_DQS_WIDTH-1 generate
> dqs_q(n) <= 'Z' when dqsz_q(n)='1' else dqs(n);
> end generate gen_dqs;
>
> dqs is mapped to the 'q' output of an fddrrse. dqsz_q
> is another signal which just indicates when the output
> should be Z or not.
>
> dqs_q is part of the DDR controller's interface, and
> presumably would end up getting mapped to the IOB
> by the synthesizer. Those pins would connect directly
> to a DDR device.
>
> Now after this long-winded introduction is the question:
>
> Is this all that's necessary to have a synthesizable
> code snippet using the IOB's? I mean, in order for
> this to work the synthesizer would have to have a
> model of the IOB's and know that the imposed tri-state
> behaviour can be done using the infrastructure of the
> IOB.
>
> The alternative approach would be to explicitly state
> all the connections to the IOB, so no intelligence in the
> synthesizer would be required -- but I don't seem to
> be able to find those mappings. Also this approach would
> seem to be device specific, not just within a vendor but
> across devices from the same vendor -- IOB's change.
> That means code tweaks for each specific device, which
> isn't too appealing.
>
> The fddrrse is a simplified representation of the IOB of
> a xilinx part. Maybe it isn't even related to an IOB, but
> the fddrrse behaviour can be mapped onto an IOB by the
> synthesizer.
>
> Thanks for someone to clear this up.
> -Dave




Andy
  Reply With Quote
Old 08-23-2006, 06:58 PM   #3
David Ashley
 
Posts: n/a
Default Re: Quick synthesis question
Andy wrote:
> I'm not sure exactly what your question was, but Synplicity
> automatically recognizes DDR processes, and when the resources are
> available (only on primary IOs in applicable FPGAs), it will
> automatically implement the appropriate DDR primitive for the target
> architectures. The tri-state IOs work the same way.
>
> If the process does not describe the behavior of a primary IO, then DDR
> resources are not available, and it will give you an error.
>
> Andy


Andy,

I think you answered my question, thanks. I'm assuming the xilinx
synthesizer would do the same.

Perhaps both options work:
1) Describe interface signal behaviour, and leave it up to the
synthesizer to map that to the IOB functionality, or
2) Describe behavior of signals that will connect to the IOB,
and instantiate the IOB somehow in the VHDL so that the
synthesizer knows to use an actual IOB (and not just mimic
its behaviour).

The Opencores DDR seems to use option 1. Through a friend
working on an actual product I believe I've got evidence for
option 2.

I just don't know how to use option 2 yet. The issue would come
up when trying to make use of on chip resources like PLLs,
multipliers, global clock buffers, etc. I suppose. Perhaps it's in the
constraints file...

-Dave


David Ashley
  Reply With Quote
Reply


Thread Tools Search this Thread
Search this Thread:

Advanced Search

Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

vB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are Off
Refbacks are Off

Similar Threads
Thread Thread Starter Forum Replies Last Post
quick (but maybe difficult) question kingrundzap@hotmail.com DVD Video 1 09-02-2006 09:08 PM
Quick Panasonic DVD-S77S question Brian S DVD Video 0 08-03-2005 03:21 PM
Question to all who feel Netflix has quick turnaround time. Don B DVD Video 17 02-17-2004 02:39 AM
Re: A quick question Linda A+ Certification 0 08-27-2003 05:01 AM
Re: A quick question Clint Kennedy A+ Certification 0 08-26-2003 11:47 PM




SEO by vBSEO 3.3.2 ©2009, Crawlability, Inc.

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46