- Subscribe to RSS Feed
- Mark Topic as New
- Mark Topic as Read
- Float this Topic to the Top
- Bookmark
- Subscribe
- Printer Friendly Page
How to improve my design "Component Switching Limit" for DSP48E1?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
07-01-2010 10:38 PM
Hi,
Recently I updated original design from 245MHz clock domain to 333MHz domain. After some design modification, the Timing Check for Setup Time and Hold Time is OK, but there are still "Component Switching Limit" fails for some DSP48E1(See Behind). How to improve my design? Thanks in advance.
Xi
Component Switching Limit Checks: TS_bc_ltg_i_mmcm_ddr_i_clkout0 = PERIOD TIMEGRP "bc_ltg_i_mmcm_ddr_i_clkout0"
TS_i_clk_f1_ddr_100m_p / 3.33333333 HIGH 50%;
-------------------------------------------------
Slack: -0.805ns (period - min period limit)
Period: 3.000ns
Min period limit: 3.805ns (262.812MHz) (Tdspper_AREG_PREG_MULT)
Physical resource: b_fpga_i/i_lpusch/i_lpusch_sbd/i_lpusch_sbd_ctr_rd
Logical resource: b_fpga_i/i_lpusch/i_lpusch_sbd/i_lpusch_sbd_ctr_rd
Location pin: DSP48_X5Y88.CLK
Clock network: ddr3_clk_mem_i
Solved! Go to Solution.
Re: How to improve my design "Component Switching Limit" for DSP48E1?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
07-02-2010 01:20 AM
Hi,
The component switching limit analysis is done in addition to the traditional setup and
hold analysis. This analysis ensures that the operating frequency of the device component
is not exceeded and within device specifications.
Please refer to the Datasheet of the device that you are using. Check
Refer to Maximum Frequency table.
Good Luck.
Re: How to improve my design "Component Switching Limit" for DSP48E1?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
07-02-2010 02:22 AM
After resort to DS152, solve this issue using MREG for DSP48. Thanks.
Re: How to improve my design "Component Switching Limit" for DSP48E1?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
04-26-2012 06:46 AM
I have the same kind of problem but with a Spartan-6 LXT and checking data sheet didn't solve mine.
Here is the error :
Component Switching Limit Checks: TS_sclkx4 = PERIOD TIMEGRP "sclkx4_TNM" 160 MHz HIGH 50%;
Slack: -0.869ns (period - min period limit)
Period:
6.250ns
Min period limit:
7.119ns (140.469MHz) (Tdspper_OPMODEREG_CARRYOUTREG)
Physical resource:
dbf_block/sum_sigma_2nd_stage/sigma_acc_dsp/blk000
Logical resource:
dbf_block/sum_sigma_2nd_stage/sigma_acc_dsp/blk000
Location pin:
DSP48_X1Y32.CLK
Clock network:
sclkx4
There is only one DSP with this error in my design, the one I use as an accumulator. Actually it takes a result via its PCIN input from a previous DSP PCOUT (this one using PREG), and then accumulates this data every 2 cycles, which requires a dynamic change of OPMODE : PCIN / PCIN+P / PCIN / PCIN+P / ...
I used to do that with a previous deisgn using a Virtex-6 and with an another one using a Spartan-6 but @120MHz. This time I work @160MHz.
I made de DSP instantiation by using the DSP macro IP (it's very useful for me when I decide to migrate a design on a different device). I checked all the registers inside DSP I could add (in expert mode) : SEL + PREG. I activated a global SCLR control.
I didn't find it anywhere so I'm wondering, is Tdspper_OPMODEREG_CARRYOUTREG an expected timing constraint ? I'm not intending to use the CARRYOUT signal neither actually.
Re: How to improve my design "Component Switching Limit" for DSP48E1?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
04-26-2012 08:14 AM
Are you using ISE 13.4?
If yes, these Component Switching Limit should be correct for the mode you are using. Please check the attributes of the DSP48 in FPGA Editor and let us know why you think Tdspper_OPMODEREG_CARRYOUTREG is not a relevant check.
Re: How to improve my design "Component Switching Limit" for DSP48E1?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
04-26-2012 11:08 PM
Yes I am using 13.4
I'll check in FPGA editor ASAP.
It is not that I really think Tdspper_OPMODEREG_CARRYOUTREG is not a relevant check, the first problem is that I don't even know what it is because I can't find it in the data sheet.
Now from the name, I assume it has something to do with the fact I use OPMODEREG dynamically, which is actually true, but also CARRYOUTREG. However I don't use the port for the latter, even if the DSP macro seems to have enabled its register (through the corresponding DSP48A1 attribute).
Re: How to improve my design "Component Switching Limit" for DSP48E1?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
05-04-2012 12:22 AM
Dear px1983,
How do you using MREG for DSP48?
In UCF? or in FPGA Editor?
thanks!
Re: How to improve my design "Component Switching Limit" for DSP48E1?
[ Edited ]- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
05-05-2012 12:38 AM - edited 05-05-2012 12:39 AM
Well, it's very simple, you just need to set the attribute MREG to 1 when instantiating the DSP48A1 primitive (in your verilog or vhdl file), or set it in the DSP macro IP if you use this one
danbo.liang wrote:
Dear px1983,
How do you using MREG for DSP48?
In UCF? or in FPGA Editor?
thanks!
.
Re: How to improve my design "Component Switching Limit" for DSP48E1?
[ Edited ]- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
05-06-2012 10:57 PM - edited 05-06-2012 11:00 PM
samcossais wrote:
Yes I am using 13.4
I'll check in FPGA editor ASAP.
It is not that I really think Tdspper_OPMODEREG_CARRYOUTREG is not a relevant check, the first problem is that I don't even know what it is because I can't find it in the data sheet.
Now from the name, I assume it has something to do with the fact I use OPMODEREG dynamically, which is actually true, but also CARRYOUTREG. However I don't use the port for the latter, even if the DSP macro seems to have enabled its register (through the corresponding DSP48A1 attribute).
This message is addressed to the Xilinx staff.
I was able to solve the problem. It appears that there is a bug in the DSP Macro IP and in timing analysis, can you please correct it ? The problem is described below.
Also the timing spec Tdspper_OPMODEREG_CARRYOUTREG for which I am told to check the data sheet is not actually in it. Would you mind adding it ?
** DSP Macro IP / timing analysis bug description :
My interpretation of Tdspper_OPMODEREG_CARRYOUTREG was actually correct, as it is related to the dynamic use of ports OPMODE and CARRYOUT when their respective register inside DSP is activated.
However, in my DSP Macro IP setting, I don't use CARRYOUT. Here are the non default settings activated :
Instruction 0: PCIN
Instruction 1: PCIN+P
Enable SEL (OPMODE) reg and P reg
SCLR = global
Now when I check the verilog file generated with this IP, I find in the DSP48A1 instance that the value of attribute CARRYOUTREG is set to 1. This is obviously a bug in DSP Macro IP.
Now even if CARRYOUTREG is set to 1, it shouldn't generate a timing error as CARRYOUT is not connected. This is I think a bug in timing analysis.
I have used the DSP primitive for quite a long time and I don't think I'm making a mistake here.
So could you please check this out ?
Re: How to improve my design "Component Switching Limit" for DSP48E1?
- Mark as New
- Bookmark
- Subscribe
- Subscribe to RSS Feed
- Highlight
- Email to a Friend
- Report Inappropriate Content
05-07-2012 04:30 AM
Sam,
If you want to report a bug, you should open a webcase.
-- Bob Elkind
README for newbies is here: http://forums.xilinx.com/t5/New-Users-Forum/README-first-Help-for-new-users/td-p/219369
Summary:
1. Read the manual or user guide. Have you read the manual? Can you find the manual?
2. Search the forums (and search the web) for similar topics.
3. Do not post the same question on multiple forums.
4. Do not post a new topic or question on someone else's thread, start a new thread!
5. Students: Copying code is not the same as learning to design.
6 "It does not work" is not a question which can be answered. Provide useful details (with webpage, datasheet links, please).
7. You are not charged extra fees for comments in your code.
8. I am not paid for forum posts. If I write a good post, then I have been good for nothing.











