Community
cancel
Showing results for 
Search instead for 
Did you mean: 
Highlighted
Honored Contributor I
854 Views

TimeQuest and Fitter using SDC File

I'm fairly new to the Quartus II software environment and the TimeQuest timing analyzer. I have a couple of questions that I'm trying to determine the answers: 

 

1) Which commands should definitely be placed in the .sdc file? I'm trying to determine if there which commands to use, since the .sdc file is used for both timing-driven place and route and for timing analysis. It seems to be that all clock (including PLLs, etc) and I/O constraints should be placed in the .sdc file, and all other report_timing commands should be placed in separate .tcl scripts. 

 

2) I'm familiar with Synopsys PrimeTime, so using TimeQuest is fairly straight-forward. However, there are differences in usage. Has anyone generated scripts or docs that described using the TimeQuest commands? I'm particularly interested in constraints applied to PLLs and to I/O. 

 

Any timing analysis info that you have would be appreciated. 

 

Thanks, 

Tony
0 Kudos
6 Replies
Highlighted
Honored Contributor I
5 Views

 

--- Quote Start ---  

1) Which commands should definitely be placed in the .sdc file? I'm trying to determine if there which commands to use, since the .sdc file is used for both timing-driven place and route and for timing analysis. It seems to be that all clock (including PLLs, etc) and I/O constraints should be placed in the .sdc file, and all other report_timing commands should be placed in separate .tcl scripts. 

--- Quote End ---  

 

 

Your last sentence is what Altera recommends. In addition, SDC commands like false-path exceptions belong in the .sdc file, and commands like create_timing_netlist should be in a .tcl file for a scripted setup. 

 

 

 

--- Quote Start ---  

2) I'm familiar with Synopsys PrimeTime, so using TimeQuest is fairly straight-forward. However, there are differences in usage. Has anyone generated scripts or docs that described using the TimeQuest commands? I'm particularly interested in constraints applied to PLLs and to I/O. 

--- Quote End ---  

 

 

The examples that immediately come to mind are in training material, but this should also be covered in the Quartus handbook and examples at www.altera.com. The handbook has a chapter specifically on TimeQuest. The following chapter on switching to TimeQuest might also have some good examples. TimeQuest might be included in the training that you can access for free through the web site. 

 

If you haven't found derive_pll_clocks yet, look up that one. It's covered in the Quartus on-line help.
0 Kudos
Highlighted
Honored Contributor I
5 Views

Tony, 

You can google "TimeQuest Design Example" to find a few basic SDC examples. 

As Brad said, reading the Handbook chapter on TimeQuest is a good place to start. 

If you want to quickly see all the commands supported by TimeQuest, go to your command console, and type "quartus_sh --qhelp". Then look for the "sdc", "sdc_ext" and "sta" Tcl packages. You will also find useful examples for every command. 

Good luck.
0 Kudos
Highlighted
Honored Contributor I
5 Views

I have some ideas on how to proceed forward with the timing analysis, but before I do, I wanted to see how other's have done it. I usually work on ASICs, and FPGAs are fairly new to me, having a reference would be a great help. 

 

The most puzzling thing to me is generating a netlist based on either a slow or fast model. I'm used to writing a Verilog netlist, and SDF file, overlaying the timing information based on worst-case (slow) or best-case (fast) conditions, applying constraints, and generating timing reports. 

 

It seems to me that whenever you run the TCL command "create_timing_netlist", you are actually creating a timing (SDF) file, or data set, based on the environment (fast or slow). It just seems a little cumbersome to create a new netlist every time you want to perform timing analysis.
0 Kudos
Highlighted
Honored Contributor I
5 Views

 

--- Quote Start ---  

It just seems a little cumbersome to create a new netlist every time you want to perform timing analysis. 

--- Quote End ---  

 

 

You have to select a timing model when you create the timing netlist, but you can change the timing model with set_operating_conditions without deleting and recreating the timing netlist.
0 Kudos
Highlighted
Honored Contributor I
5 Views

0 Kudos
Highlighted
Honored Contributor I
5 Views

If you're used to Synopsys, I seem to remember doing a lot of save_db and load_db(or whatever the syntax is), so you could do stuff and save your work on the fly. This was more with the synthesis tools rather than Primetime, although I wouldn't be surprised if PrimeTime works the same way. So I'm wondering if your question is, once I've done create_timing_netlist, why can't I just save it off and load it back later. Hopefully the create_timing_netlist doesn't take too long, and once in a script, is a small time of your compile(I am doing some HC240, so I know it's not too small). I have another user doing an EP2S180 with a hugely complicated .sdc, and wanted to save it off after update_timing_netlist, which might be coming. (I don't know for sure, or when.)

0 Kudos