Altera_Forum
Honored Contributor
16 years agoRipple clock caused by State Machines
Hi,
I'm trying to make a project, so I have 6 state machines which are related/cascaded. I have 3 state machines layers and a clock flow over those state machines as follows: Layer 1: FSM_1........FMS_2 ................|.................| Layer 2: FSM_3........FMS_4 ................|.................| Layer 3: FSM_5<==>FMS_6 ................|.................| OBS: Do not consider any "." it was put just to help show the design schema. FSM1/2 have four states: type state_type is (init, wait, processData, sendData); FSM3/4 have three states: type state_type is (init, wait, sendCompResult); FSM5 have five states: type state_type is (initState, waitState, faultState, dispState, failState); FSM6 have six states: type state_type is (initState, inativeState, waitState, faultState, dispState, failState); The changing of state in FSM3/4 occurs when FSM1/2 send a signal to those FSMs (FSM1 => FSM3 and FSM2 => FSM4). Then, this makes the following warnings appears, thus the circuit don't works as it should do. Warning: Found 2 node(s) in clock paths which may be acting as ripple and/or gated clocks -- node(s) analyzed as buffer(s) resulting in clock skew Info: Detected ripple clock "Layer2: DetecMaster|ControlUnityDetection:U01|pr_state. sendCompResult" as buffer Info: Detected ripple clock "Layer1:AplicMaster|Processor:Proc_01|ControlUnityProcessor:U01|at_state.processData" as buffer I have been trying hardly to solve this problem. I've look in many forums, but I didn't find a solution. How could I fix this problem? Should I use a derived clock? If yes, how can I assign one? I've been use a PLL as a clock... maybe the problem is related to some global clock, isn't it? I don't know what to do :( Best regards, Higor