Click here to Skip to main content
14,386,278 members

Hardware & Devices

 
QuestionEmulated Low Res display designer Pin
maze322-Oct-18 7:10
professionalmaze322-Oct-18 7:10 
QuestionNUC for a light shared development data server? Pin
maze33-Sep-18 1:28
professionalmaze33-Sep-18 1:28 
QuestionHuawei E3372 USB Dongle Pin
Hazel J Chua23-Aug-18 20:27
MemberHazel J Chua23-Aug-18 20:27 
QuestionSIM900 - connection issue Pin
MateoGlowinski1-Aug-18 22:30
professionalMateoGlowinski1-Aug-18 22:30 
QuestionSOLVED Raspberry Pi interrupt C/C++ - sample code / tutorial ? Pin
Vaclav_30-Jun-18 3:41
MemberVaclav_30-Jun-18 3:41 
QuestionIntel mini motherboards / MIDI IN .. Single Board Computer ? Pin
ApplesAreGood24-Apr-18 7:44
MemberApplesAreGood24-Apr-18 7:44 
AnswerRe: Intel mini motherboards / MIDI IN .. Single Board Computer ? Pin
Richard MacCutchan24-Apr-18 8:00
mveRichard MacCutchan24-Apr-18 8:00 
QuestionNeed help with internal timing constraint in FPGAs Pin
Member 137693108-Apr-18 22:33
MemberMember 137693108-Apr-18 22:33 
I'm currently trying to implement an IP-Core on a Cyclone V 5CSEBA6U23I7 FPGA-HPS System using Altera Quartus II and TimeQuest Analyzer.

The Verilog code pasted below produces a timing problem, namely the assignment fifo_wdata_289[255:0] <= {fifo_out,fifo_wdata_289[255:16]};, which writes the output of one FIFO into another FIFO register array.

The FIFOs in use are asynchronous, but the signals used are on the same clock domain.
This is being placed on the chip with a clock skew of -2.255 ns, which is a little bit less than a whole period (288 MHz clock => 3.47 ns), and makes TimeQuest complain, that the constraints are being violated.

The recommendation of TimeQuest is to Reduce the levels of combinational logic for the path (Issue Long Combinational Path) with Extra levels of combinational logic = 1, which you could get a perfect reference here [^]Discussion on the influencing factors of clock in FPGA design[^].

The 288 MHz clock is generated via PLL and I'm using Timeconstraint files (sdc) with commands derive_pll_clocks and derive_clock_uncertainty.

My question now is how to solve this problem, since I only have one layer of combinational logic (Demuxer and routing, as suggested by the assignment) and thus have no idea how to reduce that. Is there any other way I can make sure the timing requirement is met, or is there a better way to program this statemachine?

<pre>           case(stateProc)<br />
                2'b00:<br />
                begin<br />
                    if(~fifo_empty&~fifo_full_289)<br />
                    begin<br />
                        fifo_wdata_289[255:0] <= {fifo_out,fifo_wdata_289[255:16]};<br />
                        fifo_wdata_289[287:256] <= {2'b11,fifo_wdata_289[287:258]};<br />
                        if(imgSize >= maxImgSize - 32'd2)//image done, transmit data and fire irq<br />
                        begin<br />
                            fifo_wdata_289[288] <= 1;<br />
                            stateProc <= 2'b01;<br />
                            imgSize <= 32'd0;<br />
                        end<br />
                        else if(fifo_wdata_289[258])//process transfer without irq //258 high means that 256 has been written in this cycle and 258 in the previous cycle<br />
                        begin<br />
                            fifo_wdata_289[288] <= 0;<br />
                            stateProc <= 2'b01;<br />
                            imgSize <= imgSize + 32'd2;<br />
                        end<br />
                        else//accumulate more data<br />
                        begin<br />
                            fifo_wdata_289[288] <= 0;<br />
                            stateProc <= 2'b00;<br />
                            imgSize <= imgSize + 32'd2;<br />
                        end<br />
                    end<br />
                    else<br />
                    begin<br />
                        fifo_wdata_289 <= fifo_wdata_289;<br />
                        imgSize <= imgSize;<br />
                        stateProc <= 2'b00;<br />
                    end<br />
                end<br />
                2'b01:<br />
                begin<br />
                    fifo_wdata_289 <= fifo_wdata_289;<br />
                    imgSize <= imgSize;<br />
                    stateProc <= 2'b11;<br />
                end<br />
                2'b11:<br />
                begin<br />
                    fifo_wdata_289 <= 0;<br />
                    imgSize <= imgSize;<br />
                    stateProc <= 2'b00;<br />
                end<br />
            endcase</pre>


The TimeQuest failing paths look mostly like this:
Slack:
-3.178

From Node:
soc_system:u0|CamConnector:camconnector_0|FIFO_289:FIFO_inst_289|dcfifo:dcfifo_component|dcfifo_6up1:auto_generated|wrptr_g[0]

To Node:
soc_system:u0|CamConnector:camconnector_0|fifo_wdata_289[267]

I'm currently using MLAB cells as FIFO storage, which are rated for 290 MHz.
Both FIFOs are asynchronous and have a synchronizaton setting of 3.
Timing closure Recommandations of TimeQuest reports the following two issues:

1. Unbalanced Combinational Logic
2. Long Combinational Path

Thanks for your help. Poke tongue | ;-P
GeneralModbus RTU with function code1 Pin
Member 105152258-Apr-18 22:08
professionalMember 105152258-Apr-18 22:08 
GeneralRe: Modbus RTU with function code1 Pin
Gerry Schmitz9-Apr-18 4:54
mveGerry Schmitz9-Apr-18 4:54 
QuestionRAM image of DVD? Pin
Member 79891227-Apr-18 4:35
MemberMember 79891227-Apr-18 4:35 
AnswerRe: RAM image of DVD? Pin
Gerry Schmitz7-Apr-18 8:04
mveGerry Schmitz7-Apr-18 8:04 
GeneralRe: RAM image of DVD? Pin
Member 79891228-Apr-18 22:26
MemberMember 79891228-Apr-18 22:26 
GeneralRe: RAM image of DVD? Pin
Gerry Schmitz9-Apr-18 3:05
mveGerry Schmitz9-Apr-18 3:05 
GeneralRe: RAM image of DVD? Pin
Member 79891229-Apr-18 3:30
MemberMember 79891229-Apr-18 3:30 
GeneralRe: RAM image of DVD? Pin
Gerry Schmitz9-Apr-18 4:10
mveGerry Schmitz9-Apr-18 4:10 
AnswerRe: RAM image of DVD? Pin
Randor 11-Apr-18 16:21
professional Randor 11-Apr-18 16:21 
QuestionIs android or windows tablet any good for occasional coding? Pin
Kanter6665-Apr-18 23:57
professionalKanter6665-Apr-18 23:57 
AnswerRe: Is android or windows tablet any good for occasional coding? Pin
OriginalGriff6-Apr-18 0:07
mveOriginalGriff6-Apr-18 0:07 
AnswerRe: Is android or windows tablet any good for occasional coding? Pin
Gerry Schmitz6-Apr-18 8:52
mveGerry Schmitz6-Apr-18 8:52 
AnswerRe: Is android or windows tablet any good for occasional coding? Pin
Eddy Vluggen9-Apr-18 4:50
mveEddy Vluggen9-Apr-18 4:50 
AnswerMessage Closed Pin
26-Sep-18 15:15
Memberphilipmorgan26-Sep-18 15:15 
QuestionWin 10 Crash again (captured DMP file) - hw Pin
raddevus17-Mar-18 8:37
mvaraddevus17-Mar-18 8:37 
AnswerRe: Win 10 Crash again (captured DMP file) - hw Pin
Munchies_Matt17-Mar-18 8:50
MemberMunchies_Matt17-Mar-18 8:50 
GeneralRe: Win 10 Crash again (captured DMP file) - hw Pin
raddevus17-Mar-18 9:24
mvaraddevus17-Mar-18 9:24 

General General    News News    Suggestion Suggestion    Question Question    Bug Bug    Answer Answer    Joke Joke    Praise Praise    Rant Rant    Admin Admin   

Use Ctrl+Left/Right to switch messages, Ctrl+Up/Down to switch threads, Ctrl+Shift+Left/Right to switch pages.