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.1KViews0likes25CommentsAbout loading constraints
It would be helpful if you could teach me about reading the constraints of the fitter. There is no particular problem when editing the SDC with Timing Analyzer, but when compiling afterwards, a warning message appears when the fitter reads the SDC. The steps I followed are as follows. 1) Compile execution. (Since it is a very small design, it is fully compiled.) 2) Start the timing analyzer 3) Execute “Create Timing Netlist” 4) Execute "Read SDC Flie" to display the SDC File list, then open the SDC File to be edited. 5) Editing and saving SDC File. 6) Execute “Read SDC Flie” 7) Execute “Update Timing Netlist” 😎 Run full compilation The message appears as below after the fitter reads the SDC file. Info (332104): Reading SDC File: 'TFT_RX.sdc' Warning (332174): Ignored filter at TFT_RX.sdc(15): s_rlo_clk_det[0]|datad could not be matched with a pin Warning (332049): Ignored set_false_path at TFT_RX.sdc(15): Argument <to> is an empty collection Info (332050): set_false_path -from [get_ports {RLO_CLK}] -to [get_pins {s_rlo_clk_det[0]|datad}] When executing 6), there were no warnings or alarms in the timing analyzer messages. Also, I edit the SDC file using the GUI (Insert Constraint→Set False Path) instead of manually inputting it, and I also search for pins using Name Finder. Even if 7) was not executed, the result did not change. The results did not change even if the first compilation was performed up to logic synthesis instead of full compilation. In addition, there was no warning or alarm when the timing analyzer read the SDC file during full compilation. It would be helpful if you could teach me the following points in the above situation. a) Is it correct to understand that the above message means that the fitter ignores the target set_false_path? b) Is the reason why the above message appears because the pins have not been determined before fitting? c) If I change -to [get_pins {s_rlo_clk_det[0]|datad}] to -to [get_registers {s_rlo_clk_det[0]}], the above message no longer occurs, but why? Sorry for the long post, but I would appreciate it if you could explain it to me. Also, please note that the text may be difficult to understand due to machine translation.Solved4KViews0likes15Comments