Forum Discussion
Altera_Forum
Honored Contributor
12 years ago --- Quote Start --- ...snip... I don't have a multicycle_path handy, but I guess (almost sure) that tying the 'attribute' to the 'architecture' and the double quotes to embed the sdc command into the attribute string is what makes it work. --- Quote End --- Yes, you were right. That made it work. At least almost. I tried that approach before but I always got error messages from quartus. Obviously I made a syntactical mistake. I guess it was something with the double quotes... So it works much better now than before but I still don't get the same result as with the .sdc file. The corrected line looks like this now:
attribute altera_attribute of rtl : architecture is "-name SDC_STATEMENT ""set_multicycle_path -setup -end -from -to 2"""; That makes TimeQuest not longer show that failing path but a slightly different one. It goes from SourceEntity (exactly as it did before) to TargetEntity. But the "To node" is somewhere else in the TargetEntity and the value of the slack changed as well. How could that happen? Even though I put a wildcard behind TargetEntity_Inst? I did some testing and found out that if I write the whole path from top level to SourceEntity and TargetEntity into the sdc statement (as I did in the .sdc file) it works exactly like in the .sdc file. But that of course is useless for the purpose of reusability of that design file. I expected that the statement affects only MyEntity and Entities below and that everything above MyEntity ist not of interest for the statement. In Quartus Handbook I found that: --- Quote Start --- Example 16–121 through Example 16–123 use the altera_attribute to disable the Auto Shift Register Replacement synthesis option for an entity. To apply the Altera Attribute to a VHDL entity, you must set the attribute on its architecture rather than on the entity itself. --- Quote End --- That confirms my assumption. Otherwise "Auto Shift Register Replacement" synthesis option would be disabled for the whole design. But obviously I understood something wrong...