netturan
Newbie
I've recently started to explore the world of FPGA and it has really been a productive journey so far. I've been writing HDL designs and going through different resources so far. Now that I've got my first FPGA I've decided to test my design finally. I've been reading about how I need to look into more details regarding timing and I wanted to know what exactly do I need to make sure that my design works.
My design has a communication interface that takes in commands at a faster clock and sends triggers to my design to execute it. For this, I have written up a 2ff synchronizer that toggles every time a command is to be executed. For this, I'm using the JTAG internal access available on my FPGA, when the JTAG FSM goes into the UPDATE state a signal in the primitive goes high which I use as a trigger to toggle a 'sync' signal through a synchronizer. When this toggle is observed by the internal entity it loads the data that had been shifted into the primitive ( Something I read up about clock domain crossing, don't know much). I haven't handled such a design before so I've been reading up about STA and closure .etc
Keeping this in mind what should be my goal while writing timing constraints?
My design has a communication interface that takes in commands at a faster clock and sends triggers to my design to execute it. For this, I have written up a 2ff synchronizer that toggles every time a command is to be executed. For this, I'm using the JTAG internal access available on my FPGA, when the JTAG FSM goes into the UPDATE state a signal in the primitive goes high which I use as a trigger to toggle a 'sync' signal through a synchronizer. When this toggle is observed by the internal entity it loads the data that had been shifted into the primitive ( Something I read up about clock domain crossing, don't know much). I haven't handled such a design before so I've been reading up about STA and closure .etc
Keeping this in mind what should be my goal while writing timing constraints?