Character search Algorithm

  • Thread starter Donald 'Paddy' McCarthy
  • Start date
D

Donald 'Paddy' McCarthy

Hi,
My problem is I'm trying to learn about the implementation of assertion
languages like PSL/Sugar in digital logic simulators.
The assertion language allows you to more easily say "if this signal
combination/sequence follows that signal combination/sequence then ..."
I feel that you should be able to think of this as the simulator
providing a stream of signal values over simulator time that could be
translated into a string of characters interleaved with clock cycle
markers. Then the temporal assertion could be translated into a regular
expression acting on the string.

When I make the mental analogy above, then I think of the practicle
problems of such an implementation. The first is, if you have a finite
bounded re - e.g. no infinite matches i.e. no plus or star characters in
the RE, but you have a simulator churning out a huge sequence of
characters, how do you do the RE match efficiently?

I am thinking of a program skeleton that looks something like this

psl_re = PSL_subset_to_RE(PSL)
simulator.start(psl_re.clock, psl_re.signals_to_capture)
for cycles_psl_signals in simulator.next_cycle():
if psl_re.optimised_search(cycles_psl_signals):
raise PSL_PRE_CONDITION_FOUND

It is the psl_re.optimised_search() routine that I am after.
Is there any way of computing how big a string buffer needs to be (call
it B), so that you could then maybe keep a sliding buffer of a minimum
of just the last 2*B characters, sliding along and matching in B
character increments and guarantee to find the matches?

Help, or alternative algorithms would be appreciated.

Thanks, Paddy.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
474,201
Messages
2,571,048
Members
47,647
Latest member
NelleMacy9

Latest Threads

Top