Constraint clocks of SPI interfa
Hi all, I have a design where I generate an SPI clock and send some data over the slave. The slave is an ADC with its own setup/hold time constraints. In these constraints, the slave data input SDI has constraints with respect to the SCLK, but I'm not sure how to properly constraint that. What I did so far is that I constrainted the SCLK on its own as if it's a data output of the FPGA and then constraint the MOSI with referencing the SCLK. The syntax I used in the sdc file is added below. # main clock of the FPGA create_clock -name {clk} -period 100MHz [get_ports {clk}] # Specify generated clock from PLL (PLL output is 100MHz) # set_instance_assignment -name corepll_inst|altpll_component|auto_generated|pll1 -to pll_inst # create_generated_clock -name {pll_clk} -source [get_pins pll_inst|clk[0]] -divide_by 1 # constraints for SCLK and MOSI set_output_delay -clock {corepll_inst|altpll_component|auto_generated|pll1|clk[0]} -max 3 [get_ports {SCLK1}] set_output_delay -clock {corepll_inst|altpll_component|auto_generated|pll1|clk[0]} -min -2 [get_ports {SCLK1}] set_output_delay -clock {corepll_inst|altpll_component|auto_generated|pll1|clk[0]} -reference_pin SCLK1 -max 5 [get_ports {MOSI1}] set_output_delay -clock {corepll_inst|altpll_component|auto_generated|pll1|clk[0]} -reference_pin SCLK1 -min -5 [get_ports {MOSI1}] What I observe in the Timing Analyzer is that the setup and hold times are not the only things when checking the timing analyzer. For the example that you can see on the snippet attached, I would expect that the data required for the setup time of SCLK1 would be only 3 ns far from the latch clock's posedge, where the cursor is. I'm almost sure that what I want to achieve does not match with the constraints I used, therefore I'd like to ask what I'm doing wrong or missing. Any help is much appreciated, CheersSolved8.9KViews0likes35CommentsConstraint for phase-shifted external clock (Specifying Clock Waveform Edges)
Hi, I have a project in which MAX10 has an external ADC that has LVDS connections-- data, ADC_DCO, ADC_FCO. I wrote a constraint for external clocks like the next picture, but Timing Analyzer doesn't recognize the delayed rising edge of ADC_FCO to ADC_DCO. Both the launch edge and the latch edge rise at the same time. Then Timing Analyzer reports a lack of setup time. Why Timing Analyzer doesn't recognize my phase-shift clock constraint? My constraint: create_clock -name ADC_DCO -period 14.286 -waveform {0 7.143} [get_ports {ADC_DCO ADC_DCO(n)}] create_clock -name ADC_FCO -period 100 -waveform {3.571 53.571} [get_ports {ADC_FCO ADC_FCO(n)}] Timing Analyzer read the constraint above. Timing Analyzer reported a setup error. In the waveform view, the launch edge (ADC_DCO) and the latch edge (ADC_FCO) rise at the sate time. The Setup Relationship is almost 0. Naturally, the setup time is not satisfied. Why the latch edge doesn't delay to the launch edge? Thanks in advance. HKana17 My environment Quartus Prime Lite Edition: 18.1.0 Build 625 09/12/2018 SJ Lite Edition Windows7 professional sp1 Target device: MAX 10 (10M08)Solved7KViews0likes24CommentsAbout the "set_false_path" command
It would be helpful if you could tell me about the options of the "set_false_path" command. 1)It is explained that the -setup,-hold option specifies Setup(Recovery) and Hold(Removal) as False paths, but this is the same as clock edge specification, if both Setup and Hold are not specified. Am I correct in understanding that it is considered a false path? 2) When setting a false path to the first-stage register when synchronizing a signal unrelated to the clock from a DIP SW, etc., is it okay to write -from[input port] -to[register input pin]? Is it necessary to write the CLK input to the first stage register on the -to side? We apologize for the inconvenience, but it would be helpful if you could enlighten us. Please note that this may be difficult to understand as it is a machine translation.Solved6.2KViews0likes13CommentsPipeline parameter issues for LPM_Divide
Hey everyone, im new to VHDL and Quatus Prime. Im working with ADC data and i need to calculate the RMS for it using LPM_Mult, LPM_Divide and ALTSQRT, but im having problems with pipeline values only for divide. the LPM_Divide has the following parameters: lpm_drepresentation => "UNSIGNED", lpm_hint => "LPM_REMAINDERPOSITIVE=TRUE", lpm_nrepresentation => "UNSIGNED", lpm_pipeline => 24, lpm_type => "LPM_DIVIDE", lpm_widthd => 22, lpm_widthn => 24 I have read in the user guide that we cannot specify a calue for the LPM_PIPLINE parameter that is higher than LPM_WIDTHN => 24 .. and im still getting a lot of negative slacks (Please refer to the photo below for details). Any ideas and help will be appreciated ❤️ Im using Quartus Prime 18.1. FPGA Cyclone IV.5.5KViews0likes16CommentsClock missing from Timing Analyzer - Report Setup Summary
I have a clock mux along the lines in "ug-qps-03-design-recommendations.pdf" I have set the output clock to be a Global Clock in the Assignment Editor and I give it's minimum period in the sdc file. I don't get any warnings of this signal in the fitter report. It is sent to an output pin as well as used internally. However the clock is not mentioned in the Report Setup Summary whereas the other clocks of interest are. I've tried a couple of variations of changing name and assigning the output clock to the internal name. Any ideas where I might be going wrong?4.8KViews0likes32CommentsCLK-30028 - Invalid Generated Clock
Hi I'm trying to define generated clock out of the pll. and I get the following violation notification "CLK-30028: Invalid Generated Clock" https://www.intel.la/content/www/xl/es/programmable/quartushelp/current/index.htm#da_rules/clk_30028.htm since I'm sure the source clock and the target are coming to and out of the pll ( I don't get an error notification about the pin location ) my guess is that the issue is that " I need specify clock latency between clock and target." I see the PLL IP sdc is loaded , any way I can debug it and understand what is the root cause ? I'm not using derive_pll_clocks command (and I dont want to use it ) Status: FAIL Severity: High Number of violations: 1 Rule Parameters: max_violations = 5000 +------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------+ ; CLK-30028 - Invalid Generated Clock ; +---------+------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ ; Clock ; Target ; Reason ; Waived ; +---------+------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+--------+ ; pll_clk ; step_ana_pll_i|iopll_0|stratix10_altera_iopll_i|s10_iopll.fourteennm_pll|outclk[0] ; No paths exist between the clock target and its clock source. Assuming zero source clock latency. ; ; +---------+------------------------------------------------------------------------------------+----------------------------------------------------------------------------------------------------+--------+4.7KViews0likes27CommentsTiming constraints for external logic that takes input from, and outputs to an FPGA
Hello, I am using a Cyclone V device and have another external device that is supposed to take input from the FPGA and return a value to the FPGA where it is then latched. I have attached an diagram of the scenario below. What is the correct timing constraint to apply to properly constrain this? I was thinking about set_input_delay and set_output_delay, but I'm not sure how to extrapolate the required values since the input delay relies on the FPGA's internal propagation delay of the output and vice versa. That can't happen because those internal propagation delays are not known until fitting. Thank you4.6KViews0likes15CommentsTypical timing analysis cyclone V (on top of existing slow/fast)?
Hello, The setup timing results between slow and fast corners for the Cyclone V is huge. On a 45 MHz clock domain, on fast (100C) I get +5.5 ns worst slack while on slow (100C) I get -5 ns worst slack. Would it be possible to add the timing model for Typical FPGA sample at 100C too in the timing analyzer of Quartus standard? Kind Regards, Alex.Solved4.2KViews0likes9CommentsCDC-50001 - 1-Bit Asynchronous Transfer Not Synchronized
I'm trying to re-open this ticket - I didn't found how , but anyway I tried to change the default Quartus SYNCHRONIZATION_REGISTER_CHAIN_LENGTH 2 (instead of 3) and still get the same warning , any way to debug it ? https://community.intel.com/t5/Intel-Quartus-Prime-Software/CDC-50001-1-Bit-Asynchronous-Transfer-Not-Synchronized/m-p/16099714.1KViews0likes25CommentsTiming Violations in JTAG Signals
Hello, I have a Arria10 FPGA design using Platform Desginer which includes a Avalon to JTAG Brdige. I have added a jtag.sdc file to the project based on this guideline: JTAG Signals and set all the "--customize here--" sections according to my design (see attached sdc file). However the Timing Analyzer gives me several setup violations on JTAG signals: -18.207 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_8 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.582 4.240 Slow 950mV 100C Model -18.206 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_9 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.582 4.239 Slow 950mV 100C Model -18.157 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_7 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.582 4.190 Slow 950mV 100C Model -18.142 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_10 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.582 4.175 Slow 950mV 100C Model -18.123 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_11 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.582 4.156 Slow 950mV 100C Model -18.120 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_6 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.582 4.153 Slow 950mV 100C Model -17.207 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_1 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.125 3.697 Slow 950mV 0C Model -17.136 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_3 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.125 3.626 Slow 950mV 0C Model -17.069 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_2 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.125 3.559 Slow 950mV 0C Model -17.064 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM_4 altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.125 3.554 Slow 950mV 0C Model -16.972 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|int_tdo_reg~LRTM altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -2.125 3.462 Slow 950mV 0C Model -16.075 auto_fab_0|alt_sld_fab_0|alt_sld_fab_0|jtagpins|atom_inst|atom~jtag_reg__nff altera_reserved_tdo altera_reserved_tck (INVERTED) altera_reserved_tck (INVERTED) 33.333 -0.450 4.240 Slow 950mV 0C Model The listed registers look similar but not identical to the security reg listing in the jtag.sdc line 86-89 which are to be ignored. So I'm not sure if these errors are actual errors caused, e.g. by a too high JTAG clock rate, or if these registers are just missing a respective false path due to encrypted core. The Timing Analyzer does list the falling paths as encrypted: Please advise how to deal with these JTAG signal in timing analysis. Thanks FabianSolved4KViews0likes26Comments