Intel® Quartus® Prime Software
Intel® Quartus® Prime Design Software, Design Entry, Synthesis, Simulation, Verification, Timing Analysis, System Design (Platform Designer, formerly Qsys)

sdc and altsyncram

Altera_Forum
Honored Contributor II
1,403 Views

Hi: just wanted to check quickly that SDC (i.e. quartus sta) will honor a multicycle  

exception that goes to the read or write enable of an altsyncram? i.e. if I say  

that the altsyncram to output is a multicycle path by using set_multicycle -from on the read-enable, will that work? (and similarly -to the write enable) thank you.
0 Kudos
3 Replies
Altera_Forum
Honored Contributor II
679 Views

 

--- Quote Start ---  

Hi: just wanted to check quickly that SDC (i.e. quartus sta) will honor a multicycle  

exception ... 

--- Quote End ---  

 

 

The best way to check if any of your assignments work is to use the Timequest GUI. 

 

A multicycle exception consists of a setup and a hold exception. 

If you constrain the input (read_enable or write_enable) like the following: 

 

set_multicycle_path -end -setup -to ] 2 set_multicycle_path -end -hold -to ] 1 This means that all paths in the fan-out of your *mem_clock_read_ena* register have a multicycle of 2 mem_clock. 

This *doesn't include automatically* the output of your memory. You'll have to check that. 

 

If you want to check wether that worked (and on which paths) you'll have to open the Timequest GUI, 

click "Report Timing..." and fill in ] in the "From" and "To"-fields. Maybe you'll have to increase the value in the "Report number of paths"- 

field too. 

 

Now you can easily check weather you constrained paths obey to you multicycle. 

Note that you have to *take care in your hdl code* that this multicycle constrains makes sense.
0 Kudos
Altera_Forum
Honored Contributor II
679 Views

Hi, many thanks. But I am not sure I follow. If the timequest gui doesn't show the output  

of the memory, then what do I do? Is there a fool proof way to set the multicycle path.
0 Kudos
Altera_Forum
Honored Contributor II
679 Views

There is definitely a way to show/constrain you memory output. 

 

1. Identify the output of your memory via Timequest Name Finder. 

This is done by View -> Name Finder: Filter the search results the respective instances to your memory output (wildcards are allowed and should be used). 

 

2. Select your memory output in the Name Finder and click the right arrow. Now you can copy the text in the Name Finder's bottom line with <ctrl>-<c>. 

 

3. Click Custom Reports -> Report Timing. Paste the clipboard in the Targets "from" field. Apply "*" in the "To"-field. Increase the value in "Report number of paths" to be sure to get all (relevant) paths. 

This will show the paths fan out by the memory output. for the incoming paths flip the entries of the "From" and "To"-field. 

 

4. Now you can see in the waveform tab, if your multicycle assigment was properly taken into account. 

 

5. Repeat the procedure for the other signals you interested in (read_ena, write_ena). 

 

NB: if you write a multicycle assignment for a (set of) path(s) make sure that this paths exist.
0 Kudos
Reply