Hi,
For implementing XSVF player fully, we need to be able to issue clocks
in any of the stable states, not just the TAP_IDLE state.
A "true" implementation of SVF RUNTEST means you need either clocks or
usecs delay before retrying. Then there are the new Lattice SVF
extensions that I added
which are kind of like RUNTEST but more flexible. (You can add
extensions when you own the SVF to XSVF converter code. :) )
LCOUNT, LDELAY, and LSDR are the 3 Lattice extensions. They are very
simple and were easy to add.
But to pull off LSDR correctly and RUNTEST correctly, we need
"jtag_add_clocks( in num_clocks )"
This function can verify that the existing state is stable, else
explode. Or the stable_state to wait in can be added as a new designed
in argument.
This is the bottom of LSDR support loop, approximately:
xsvf_add_statemove(loop_state);
//jtag_add_clocks(loop_clocks);
jtag_add_sleep(loop_usecs);
i.e. you have to be able to issue clocks and a delay BOTH. My guess is
the part attached to the TAP may advance internally based on clocks, but
then also needs a delay. Whatever, its called for, mostly for "erasing"
and "programming" FPGAs which have these indeterminate delays and
looping/polling of status bits to indicate completion of a particular step.
Notice that there is a state move just before jtag_add_clocks(). I
think this can be counted on.
I wonder if we can "genericize" jtag_add_runtest(xruntest, xendir) to
not be so tied to TAP_IDLE.
i.e. this would also work:
jtag_change_state_and_clock( new_stable_state, num_clocks )
The above function may boil down to jtag_add_runtest() with the right
arguments.
This would mean a fancy search and replace would get the job done, jedit
could do this with its multi-file regular expression search and replace.
Or would folks prefer a new jtag API function?
Thanks,
Dick
_______________________________________________
Openocd-development mailing list
[email protected]
https://lists.berlios.de/mailman/listinfo/openocd-development