multicycle path - synplify pro

Hi everyone,

I'm experiencing an issue with Synplify Pro E-2010.09A-1. I have to insert some multicycle paths in order to be able to implement the design (no option to break the paths with registers because the management has decided to not modify the vhdl source at *any* cost...how wise!).

The constraints are:

create_clock -period 25.0 [get_ports {clk_i}] > > set_multicycle_path 2 -from [get_cells execute0.fpu0.fpu_op_r*] \ > -to [get_cells execute0.fpu0.REGISTER_o*] > > set_multicycle_path 2 -from [get_cells execute0.fpu0.fpu_op_r*] \ > -to [get_cells execute0.fpu0.result_o*]

Which are well expanded to the following exctract (I spared you with some long list of unimportant objects):

Constraints with matching wildcard expressions > ********************************************** > > set_multicycle_path { 2 } -from { i:execute0.fpu0.fpu_op_r* } -to { i:execute0.fpu0.REGISTER_o* } > @N:|expression "execute0.fpu0.fpu_op_r*" applies to objects: > execute0.fpu0.fpu_op_r_i[7]
[skip]
execute0.fpu0.fpu_op_r[0:7] > @N:|expression "execute0.fpu0.REGISTER_o*" applies to objects: > execute0.fpu0.REGISTER_o_192
[skip]
execute0.fpu0.REGISTER_o[58:0] > set_multicycle_path { 2 } -from { i:execute0.fpu0.fpu_op_r* } -to { i:execute0.fpu0.result_o* } > @N:|expression "execute0.fpu0.fpu_op_r*" applies to objects: > execute0.fpu0.fpu_op_r_i[7]
[skip]
execute0.fpu0.fpu_op_r[0:7] > @N:|expression "execute0.fpu0.result_o*" applies to objects: > execute0.fpu0.result_o[31:0]

But when I run the synthesis I get the following timing report (worst path information):

Path information for path number 1: > Requested Period: 25.000 > - Setup time: 0.184 > + Clock delay at ending point: 0.000 (ideal) > = Required time: 24.816 > > - Propagation time: 41.571 > - Clock delay at starting point: 0.000 (ideal) > = Slack (critical) : -16.755 > > Number of logic level(s): 72 > Starting point: execute0.fpu0.alu_op_r[0] / q > Ending point: execute0.fpu0.REGISTER_o[58] / d > The start point is clocked by clk_i [rising] on pin clk > The end point is clocked by clk_i [rising] on pin clk

Now, why the 'requested period' is set to 25.000 ns it is a mistery to me. The starting and ending points should be well identified as covered by my multicycle constraint (at least from the constraint check report above).

Nevertheless the synthesis tool tries to run it as if there were no multicycle paths constraints... Any idea? Shall I file a bug report or try with another tool (we have also Precision RTL available)?

Needless to say that I verified in the *.srr file that the constraint file *is* taken into account:

[sorry for exceeding 80 chars!]
Reading constraint file: /home/debian/repos/9123_FOCS_ITA/branches/multicycle-study/mbfocs/target/rtax1000s352_1/synthesis/../synthesis/constraints.sdc > Adding property syn_multicycle_path1002, value "2.000000 delay from i:execute0.fpu0.fpu_op_r* to i:execute0.fpu0.REGISTER_o*" to view:mblite.core(arch) > Adding property syn_multicycle_path1003, value "2.000000 delay from i:execute0.fpu0.fpu_op_r* to i:execute0.fpu0.result_o*" to view:mblite.core(arch)

Thanks a lot,

Al

--
A: Because it messes up the order in which people normally read text. 
Q: Why is top-posting such a bad thing? 
A: Top-posting. 
Q: What is the most annoying thing on usenet and in e-mail?
Reply to
alb
Loading thread data ...

Hi again,

alb wrote: []

I just found that if I specify the constraint taking into account the specific register reported by the worst case:

then it works. The problem is that I need to run the synthesis for each multicycle path, while I'd like to provide all the paths concerning a set of starting points and a set of ending points directly.

From the Design Constraints User Guide (Actel) it looks like I can create indeed a list of starting points:

But I have failed to understand how a list can be described. Any ideas or references I can look at?

Al

Reply to
alb

Again it's me... to close this out!

alb wrote: []

If I read more carefully the name I would have immediately found that:

execute0.fpu0.alu_op_r != execute0.fpu0.fpu_op_r ^^^ ^^^

Sorry for cluttering the group!

Reply to
alb

ElectronDepot website is not affiliated with any of the manufacturers or service providers discussed here. All logos and trade names are the property of their respective owners.