I was wrong.  Even starting a thread outside of the ROACH control thread will cause est_brd_clk() to go bad.

To summarize, for each ROACH I start a control thread. Initializing the FPGA also starts a thread.  So at this point we have the main thread, two ROACH control threads, and two FPGA threads.  est_brd_clk() works fine for either ROACH.

Now I start another thread from the main thread to handle writing to disk from each ROACH's queue. As soon as I start one of these threads est_brd_clk() goes bad.

I believe that the firmware is not affected.  I'll verify by looking at known spectra.  I think there is something in est_brd_clk() that makes an assumption about timing that is not valid in this situation.

Regards

Tom

On 04/19/2018 02:59 PM, Tom Kuiper wrote:
On 04/19/2018 11:52 AM, Jack Hickish wrote:
Thinking about this a moment longer -- I don't think an incorrect clock phase will be related to reported board clock problems. You can completely mangle the clock phase wrt to data lines, and the FPGA should still correctly lock onto the clock and derive an appropriate rate. The only symptom will be corrupted ADC data transfer.

Well, I found the cause even if I don't understand it yet.  Since I have two ROACHs running side-by-side under a common parent, each is running in its own thread.  That is, my software is threaded, as well as the fpga in its own thread under corr launched from within my thread.  This still works. But then I start up another thread from within my thread to handle writing to disk.  Then est_brd_clk() goes bad.  Perhaps some corr expert reading this will have an explanation.

I can probably fix it by making the disk writing thread separate from the ROACH control thread.  We'll see.

--
You received this message because you are subscribed to the Google Groups 
"[email protected]" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To post to this group, send email to [email protected].

Reply via email to