[sv-cc] Mixed-language call chains: Disable States

From: Ralph Duncan <RDuncan_at_.....>
Date: Tue Dec 18 2007 - 13:54:45 PST
These notes analyze the disable states we can be in upon returning from an 
export subchain to its import subchain parent.

As before, the terminology is as follows: given a mixed-language call chain
	sv0i..sv0j -> ct0i..ct0j -> sv1i..sv1j

. a 'subchain' consists of consecutive task enables within the same language
. sv0i...sv0j is the inital SystemVerilog subchain in the simulator,
. ct0i..ct0j is a C subchain reached via a call to DPI C import task, ct0i.
. sv1i..sv1j is an SV subchain reached via a call to exported SV task, sv1i.

If we accept the stmts below as true, we unambiguously know possible & impossible states:

1. An import subchain is indirectly disabled when a child export subchain disables one
   of the import subchain's predecessor subchains (whether it is an SV or C subchain).

2. An import subchain is directly disabled only by a child export subchain disabling 
   the import C task at the import subchain's head. (since the enable stmt for that 
   C task necessarily appears within SV source code space).

3. Disabling an import subchain by either of these means (1 or 2 above) puts the import
   subchain in a 'disabled state' as soon as control returns to that import subchain 
   from a child subchain (34.9).

4. If the import chain is disabled, its child export subchains are disabled (before 
   control returns to the import) by the general SV rule for propagating disables:
   "disabling a task within the chain shall disable all tasks downward in the chain."
   (9.6.2).

When control returns to an import subchain the following states may occur:

	SV parent subchain	import C subchain		export SV subchain was
	is disabled			is disabled			disabled before return
0.		NO				NO				NO
1.		NO				NO				YES
2.		NO				YES				YES
3.		YES				YES				YES

Analysis
1. For example, a task in the export subchain sv1i..sv1j could disable sv1i.
2. A task in the export subchain sv1i..sv1j could disable import subcahin head ct0i.
3. A task in the export subchain could disable a task in the subchain sv0i..sv0j.

When we return to an import subchain, the following states cannot occur: 

	SV parent subchain	import C subchain		export SV subchain was
	is disabled			is disabled			disabled before return
4.		YES				YES				NO
5.		YES				NO				NO
6.		NO				YES				NO
7.		YES				NO				YES

4-7. When a subchain's predecessor subchain is disabled, the subchain is, too (9.6.2).



-- 
This message has been scanned for viruses and
dangerous content by MailScanner, and is
believed to be clean.
Received on Tue Dec 18 13:55:19 2007

This archive was generated by hypermail 2.1.8 : Tue Dec 18 2007 - 13:55:30 PST