Main Page | Report this Page
Computers Forum Index  »  Computer Architecture - FPGA  »  synplify question for FPGA...
Page 1 of 1    

synplify question for FPGA...

Author Message
skyworld...
Posted: Tue Oct 27, 2009 11:43 am
Guest
Hi,

I inserted some circuit in source code for debug. These code aren't
ported as output and is monitored by chipscope. In order not to be
optimised by synplify, I use attribute syn_preserve to keep these
registers. But synplify still removed these signals, I can't insert
these signals into cdc file in ISE. Is there a way to keep these
signals so that it can be used in chipscope?

for example,
 
skyworld...
Posted: Tue Oct 27, 2009 11:53 am
Guest
On 10月27日, 下午7时43分, skyworld <chenyong20... at (no spam) gmail.com> wrote:
Quote:
Hi,

I inserted some circuit in source code for debug. These code aren't
ported as output and is monitored by chipscope. In order not to be
optimised by synplify, I use attribute syn_preserve to keep these
registers. But synplify still removed these signals, I can't insert
these signals into cdc file in ISE. Is there a way to keep these
signals so that it can be used in chipscope?

for example,

signal a : std_logic;
signal b : std_logic;

attribute syn_preserve : boolean;
attribute syn_preserve of a : signal is true;
attribute syn_preserve of b: signal is true;

process(clk, reset)
begin
a <= ...
b <= ...
end

signal a/b are internal signals and not sent to output port. how can I
keep these signals? thanks.
 
Gael Paul...
Posted: Tue Oct 27, 2009 2:49 pm
Guest
skyworld,

The attribute to prevent objects to be removed away is syn_keep. In
your VHDL example, simply replace syn_preserve by syn_keep.

Note: syn_preserve has a bit of misleading name. This attribute
disables sequential optimizations on sequential elements. Such
optimizations include redundancy removal (removal of duplicate
registers). However, unused registers are still removed away even in
presence of syn_preserve.

Cheers,

- gael
 
General Schvantzkoph...
Posted: Tue Oct 27, 2009 5:31 pm
Guest
On Tue, 27 Oct 2009 04:43:25 -0700, skyworld wrote:

Quote:
Hi,

I inserted some circuit in source code for debug. These code aren't
ported as output and is monitored by chipscope. In order not to be
optimised by synplify, I use attribute syn_preserve to keep these
registers. But synplify still removed these signals, I can't insert
these signals into cdc file in ISE. Is there a way to keep these signals
so that it can be used in chipscope?

for example,

Rather then rely on syn_preserve I generally use a spare pin and then OR
all the signals that I want to protect together and connect the OR to the
pin.
 
skyworld...
Posted: Wed Oct 28, 2009 1:28 am
Guest
On 10鏈27鏃, 涓嬪崍9鏃31鍒, General Schvantzkoph <schvantzk... at (no spam) yahoo.com>
wrote:
Quote:
On Tue, 27 Oct 2009 04:43:25 -0700, skyworld wrote:
Hi,

I inserted some circuit in source code for debug. These code aren't
ported as output and is monitored by chipscope. In order not to be
optimised by synplify, I use attribute syn_preserve to keep these
registers. But synplify still removed these signals, I can't insert
these signals into cdc file in ISE. Is there a way to keep these signals
so that it can be used in chipscope?

for example,

Rather then rely on syn_preserve I generally use a spare pin and then OR
all the signals that I want to protect together and connect the OR to the
pin.

Hi,

thanks for your reply. This is a big design and I don't have an option
to connect debug signals to a pin. That is the reason why I use
chipscope and use those annoying attributes.
 
skyworld...
Posted: Wed Oct 28, 2009 1:34 am
Guest
On 10月27日, 下午10时49分, Gael Paul <gael.p... at (no spam) gmail.com> wrote:
Quote:
skyworld,

The attribute to prevent objects to be removed away is syn_keep. In
your VHDL example, simply replace syn_preserve by syn_keep.

Note: syn_preserve has a bit of misleading name. This attribute
disables sequential optimizations on sequential elements. Such
optimizations include redundancy removal (removal of duplicate
registers). However, unused registers are still removed away even in
presence of syn_preserve.

Cheers,

- gael

Hi,

thanks for your reply. To my understanding, syn_keep is used to keep
wire signals and syn_preserve is used to keep sequential signals. The
signals I want to keep is generated in process(clk, reset), so it is a
sequential one and should use syn_preserve. Why you think syn_keep
should work? and why "unused registers are still removed away even in
presence of syn_preserve" (the results show you're right here)? If so,
it makes no sense to "generate" this attribute for synplify. Thanks.
 
skyworld...
Posted: Wed Oct 28, 2009 4:48 am
Guest
On 10月28日, 上午11时48分, Mike Treseler <mtrese... at (no spam) gmail.com> wrote:
Quote:
skyworld wrote:
thanks for your reply. To my understanding, syn_keep is used to keep
wire signals and syn_preserve is used to keep sequential signals. The
signals I want to keep is generated in process(clk, reset)

Synthesis works from a device input pin to an output pin.
If my process(clk, reset) does not look at an input pin
*and* drive an output pin in the top entity,
I get no gates and no flops, in any case.

-- Mike Treseler

Hi,
does this mean I don't have a way to monitor these signals? thanks.


regards
skyworld
 
Matthew Hicks...
Posted: Wed Oct 28, 2009 4:50 am
Guest
I had a similar problem with chipscope cores. Try using the syn_noprune
attribute which is an integer with a value of 1. This worked for me where
syn-keep failed.


---Matthew Hicks


Quote:
On 10鏈27鏃, 涓嬪崍7鏃43鍒, skyworld <chenyong20... at (no spam) gmail.com> wrote:

Hi,

I inserted some circuit in source code for debug. These code aren't
ported as output and is monitored by chipscope. In order not to be
optimised by synplify, I use attribute syn_preserve to keep these
registers. But synplify still removed these signals, I can't insert
these signals into cdc file in ISE. Is there a way to keep these
signals so that it can be used in chipscope?

for example,

signal a : std_logic;
signal b : std_logic;
attribute syn_preserve : boolean;
attribute syn_preserve of a : signal is true;
attribute syn_preserve of b: signal is true;
process(clk, reset)
begin
a <= ...
b <= ...
end
signal a/b are internal signals and not sent to output port. how can I
keep these signals? thanks.
 
Mike Treseler...
Posted: Wed Oct 28, 2009 5:15 am
Guest
skyworld wrote:

Quote:
thanks for your reply. To my understanding, syn_keep is used to keep
wire signals and syn_preserve is used to keep sequential signals. The
signals I want to keep is generated in process(clk, reset)

Synthesis works from a device input pin to an output pin.
If my process(clk, reset) does not look at an input pin
*and* drive an output pin in the top entity,
I get no gates and no flops, in any case.

-- Mike Treseler
 
skyworld...
Posted: Wed Oct 28, 2009 12:35 pm
Guest
On 10鏈28鏃, 涓嬪崍12鏃50鍒, Matthew Hicks <mdhic... at (no spam) uiuc.edu> wrote:
Quote:
I had a similar problem with chipscope cores. 聽Try using the syn_noprune
attribute which is an integer with a value of 1. 聽This worked for me where
syn-keep failed.

---Matthew Hicks



On 10鏈27鏃, 涓嬪崍7鏃43鍒, skyworld <chenyong20... at (no spam) gmail.com> wrote:

Hi,

I inserted some circuit in source code for debug. These code aren't
ported as output and is monitored by chipscope. In order not to be
optimised by synplify, I use attribute syn_preserve to keep these
registers. But synplify still removed these signals, I can't insert
these signals into cdc file in ISE. Is there a way to keep these
signals so that it can be used in chipscope?

for example,

signal a : std_logic;
signal b : std_logic;
attribute syn_preserve : boolean;
attribute syn_preserve of a : signal is true;
attribute syn_preserve of b: signal is true;
process(clk, reset)
begin
a <= ...
b <= ...
end
signal a/b are internal signals and not sent to output port. how can I
keep these signals? thanks.- 闅愯棌琚紩鐢ㄦ枃瀛 -

- 鏄剧ず寮曠敤鐨勬枃瀛 -

In fact I have tried this. First I tried to use syn_noprune to keep
these signals, but synplify reports this is an error usage for
syn_noprune.

At last I found the solution: I use core generator to generate icon
and ila, I connect these signals to ila and use syn_noprune to keep
ila and icon. In this way I can observe those signals in chipscope.
But this is a complicated one because VHDL doesn't like verilog, you
can infer signals from different levels, such as
level1.level2.signal_a, I have to connect signals from different
module to the correct module which I put the ila and icon. So do
anybody has a good way to use those attributes to keep these signals?
thanks.
 
General Schvantzkoph...
Posted: Wed Oct 28, 2009 4:42 pm
Guest
On Tue, 27 Oct 2009 18:28:11 -0700, skyworld wrote:

Quote:
On 10鏈27鏃, 涓嬪崍9鏃31鍒, General Schvantzkoph <schvantzk... at (no spam) yahoo.com
wrote:
On Tue, 27 Oct 2009 04:43:25 -0700, skyworld wrote:
Hi,

I inserted some circuit in source code for debug. These code aren't
ported as output and is monitored by chipscope. In order not to be
optimised by synplify, I use attribute syn_preserve to keep these
registers. But synplify still removed these signals, I can't insert
these signals into cdc file in ISE. Is there a way to keep these
signals so that it can be used in chipscope?

for example,

Rather then rely on syn_preserve I generally use a spare pin and then
OR all the signals that I want to protect together and connect the OR
to the pin.

Hi,

thanks for your reply. This is a big design and I don't have an option
to connect debug signals to a pin. That is the reason why I use
chipscope and use those annoying attributes.

Another technique that I've used is to add a bit to a status register
that accessed from a control/status register bus. Anything that would
have no effect on the actual operation of the design but fools the
synthesis tool into thinking that the registers are necessary will do the
trick.
 
 
Page 1 of 1    
All times are GMT
The time now is Sat Dec 05, 2009 1:33 pm