Continue to Site

Welcome to EDAboard.com

Welcome to our site! EDAboard.com is an international Electronics Discussion Forum focused on EDA software, circuits, schematics, books, theory, papers, asic, pld, 8051, DSP, Network, RF, Analog Design, PCB, Service Manuals... and a whole lot more! To participate you need to register. Registration is free. Click here to register now.

Questions related to STIL DFT protocol file

Status
Not open for further replies.

hiral.kotak

Full Member level 2
Joined
Aug 28, 2008
Messages
128
Helped
42
Reputation
84
Reaction score
31
Trophy points
1,308
Activity points
2,172
stil dft

HI,

These are the line, I got in the protocol file generated by DFT compiler. Can anyone explain the significant of W,V, C ...etc and regarding the syntax and value.

"load_unload" {
W "BROADSIDE_TIMING" ;
V {CLOCK=0; RESETB=1; SCAN_ENABLE=1; BIDI_DISABLE=1;
bidi_ports = \r16 Z;}
V {}
V { bidi_ports = \r4 1010 ; }
Shift {
W "SHIFT_TIMING" ;
V { _si=####; _so=####; CLOCK=P;}
}
W "BROADSIDE_TIMING" ;
V { CLOCK=0; RESETB=1; SCAN_ENABLE=0;}
} // end load_unload
} //end procedures

Thanks..

HAK..
 

stil file

hiral.kotak said:
HI,

These are the line, I got in the protocol file generated by DFT compiler. Can anyone explain the significant of W,V, C ...etc and regarding the syntax and value.

"load_unload" {
W "BROADSIDE_TIMING" ;
V {CLOCK=0; RESETB=1; SCAN_ENABLE=1; BIDI_DISABLE=1;
bidi_ports = \r16 Z;}
V {}
V { bidi_ports = \r4 1010 ; }
Shift {
W "SHIFT_TIMING" ;
V { _si=####; _so=####; CLOCK=P;}
}
W "BROADSIDE_TIMING" ;
V { CLOCK=0; RESETB=1; SCAN_ENABLE=0;}
} // end load_unload
} //end procedures

Thanks..

HAK..

W means Waveform Table --basically it is time plate
V means Vectors cycle
C means Condition statements.
In above case
W "BROADSIDE_TIMING" ;
## Broadside_timing timeplate is used for the load_unload
V {CLOCK=0; RESETB=1; SCAN_ENABLE=1; BIDI_DISABLE=1;
bidi_ports = \r16 Z;}
First vector cycle with the above values on those pins
V {}
second is empty cycle, this provides a cycle delay between BIDI_DISABLE and turning off bidi drivers. this is a equivalent of dead cycles in FS.
V { bidi_ports = \r4 1010 ; }
here bidi ports are driven to non-Z state so the bidi's will not float, r4 means repetition of 4 cycles.
 
stil protocol file

HI Santhosh,

Thanks for the reply.

Can u pls explain me the lines mentioned below:

"load_unload" {
W "_default_WFT_";
C {
"all_inputs" = 0 \r568 N 0 \r563 N;
"all_outputs" = \r1417 X;
}
"Internal_scan_pre_shift" : V {
"_clk" = 00;
"_si" = N;
"_so" = X;
"se" = 1;
}
Shift {
V {
"_clk" = P0;
"_si" = #;
"_so" = #;
}
}
}

What is the meaning of #, I read in one of the documents that it is a formal argument but didn't get any detail information.

Pls reply me as soon as possible.

Thanks..

HAK..
 

c {} conditional statements stil

hiral.kotak said:
HI Santhosh,

Thanks for the reply.

Can u pls explain me the lines mentioned below:

"load_unload" {
-- This default timeplate is used during load_unload
W "_default_WFT_";
--- first cyle with costrained values on all inputs. Here N means the specific input pins are intialized to X. in STIL N for X.
C {
"all_inputs" = 0 \r568 N 0 \r563 N;
"all_outputs" = \r1417 X;
}
-- next vector cycle starts.
"Internal_scan_pre_shift" : V {
"_clk" = 00;
--- _Si input values are constrained to X.
"_si" = N;
-- _SO output values are measured and the results are masked.
In STIL X means masking the output pins after perfoming measure.

"_so" = X;
"se" = 1;
}
--- next shift cycles starts
Shift {
V {
"_clk" = P0;
--- _si inputs are set from the next available stimulus data.
"_si" = #;
-- _so outputs are measured from the next available expected data. here Number # indicates no of scan chains in the design.
"_so" = #;
}
}
}

What is the meaning of #, I read in one of the documents that it is a formal argument but didn't get any detail information.

Pls reply me as soon as possible.

Thanks..

HAK..

# it is a positional arugument it doesnt carry any specific values.
for example:
V {"_clk" = #} means optional clock pulse which means clock is not required to pulse every sequence.
please see the comments embedded.

 

dft protoco

Hello,

I'm STIL expert in my division.
there is some error in our explanation.

You said that # is an optional parameter and this is totaly false. In the Std1450, it is written :
“ #” defines where incremental data substitution is to occur. As such, # is used to pass values into the scan
signals of a Shift block. Each iteration of the Shift block substitutes the next normalized scan state into any signal that has a # for a WaveformChar. Only a single value is substituted for each iteration of the Shift block. Therefore, if a Signal defines the # WaveformChar in multiple vectors within the Shift block, then the same value is substituted in each vector for the iteration.

Regards
 

stil conditional statement

HELLO ALL

These are the line, I got in the protocol file generated by DFT compiler.
it has a condition statement in each of the procedures (load_unload, capture, capture_CLK, capture_RST) followed by a vector statement (which does a force_pi, measure_po). In the pattern block, each pattern calls for the
load_unload procedure and then for one of the capture procedures. Can anyone explain me the significant of the syntax " Capture"{ , "Capture_CLk"{


Procedures {
"load_unload" {
W "_default_WFT_";
C { "calib_ok"=X; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_so1"=X; "DATA[3]"=X; }
V { "Clk"=0; "test_se"=1; "_so"=###; }
Shift { W "_default_WFT_";
V { "Clk"=P; "test_se"=1; "_so"=###; "_si"=###; }
}
}
"capture" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }
V { "_pi"=\r8 # ; "_po"=\r10 # ; }
}
"capture_Clk" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }
"forcePI": V { "_pi"=\r8 # ; }
"measurePO": V { "_po"=\r10 # ; }
C { "_po"=\r10 X ; }
"pulse": V { "Clk"=P; }
}
}
MacroDefs {
"test_setup" {
W "_default_WFT_";
V { "Clk"=0; }
V { "Clk"=0; }
}
}
Pattern "__pattern__" {
W "_default_WFT_";
"precondition all Signals": C { "_pi"=\r8 0 ; "_po"=\r10 X ; }
Macro "test_setup";
"pattern 0": Call "load_unload" {
"test_si1"=00110; "test_si2"=00110; "test_si3"=00110; }
Call "capture" {
"_pi"=01011001; "_po"=HHLLLHHLLL; }
"pattern 1": Call "load_unload" {
"test_so1"=LLHHL; "DATA[3]"=LLHHL; "calib_ok"=LLHHL; "test_si1"=11011; "test_si2"=00000;
"test_si3"=10001; }
Call "capture_Clk" {
"_pi"=01110000; "_po"=LLLLHLLLHH; }
"pattern 2": Call "load_unload" {
"test_so1"=HHLHH; "DATA[3]"=LLLLL; "calib_ok"=LLLLL; "test_si1"=11100; "test_si2"=01011;
"test_si3"=01100; }
Call "capture_Clk" {
"_pi"=00100101; "_po"=HLHLLLHHLH; }
"pattern 3": Call "load_unload" {
"test_so1"=HHHLL; "DATA[3]"=LLLLH; "calib_ok"=LLLLL; "test_si1"=00101; "test_si2"=10001;
"test_si3"=11011; }
Call "capture_Clk" {
"_pi"=01000111; "_po"=LLLHHHLHHL; }

i have 37 patterns in my STIL FILE (you can see all the patterns in (file attachment)


and also why in the following syntax

"capture" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }


I DON't understand why -> "CLK=0" and what is C,W,X in this case?????

The same case in the synthax "capture_Clk" {

CLK=0 but after clk=P ????

"capture_Clk" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }
"forcePI": V { "_pi"=\r8 # ; }
"measurePO": V { "_po"=\r10 # ; }
C { "_po"=\r10 X ; }
"pulse": V { "Clk"=P; }

Finaly in the Timing synthax i didn't understand what is T ??????

Timing {
WaveformTable "_default_WFT_" {
Period '100ns';
Waveforms {
"all_inputs" { 0 { '5ns' D; } }
"all_inputs" { 1 { '5ns' U; } }
"all_inputs" { Z { '5ns' Z; } }
"all_inputs" { N { '5ns' N; } }
"all_outputs" { X { '0ns' X; } }
"all_outputs" { H { '0ns' X; '95ns' H; } }
"all_outputs" { L { '0ns' X; '95ns' L; } }
"all_outputs" { T { '0ns' X; '95ns' T; } }
"Clk" { P { '0ns' D; '45ns' U; '55ns' D; } }
}


I would greatly appreciate your help regarding this,

Thanks
 

stil protocol file

nabilos said:
HELLO ALL

These are the line, I got in the protocol file generated by DFT compiler.
it has a condition statement in each of the procedures (load_unload, capture, capture_CLK, capture_RST) followed by a vector statement (which does a force_pi, measure_po). In the pattern block, each pattern calls for the
load_unload procedure and then for one of the capture procedures. Can anyone explain me the significant of the syntax " Capture"{ , "Capture_CLk"{


Procedures {
"load_unload" {
W "_default_WFT_";
C { "calib_ok"=X; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_so1"=X; "DATA[3]"=X; }
V { "Clk"=0; "test_se"=1; "_so"=###; }
Shift { W "_default_WFT_";
V { "Clk"=P; "test_se"=1; "_so"=###; "_si"=###; }
}
}
"capture" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }
V { "_pi"=\r8 # ; "_po"=\r10 # ; }
}
"capture_Clk" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }
"forcePI": V { "_pi"=\r8 # ; }
"measurePO": V { "_po"=\r10 # ; }
C { "_po"=\r10 X ; }
"pulse": V { "Clk"=P; }
}
}
MacroDefs {
"test_setup" {
W "_default_WFT_";
V { "Clk"=0; }
V { "Clk"=0; }
}
}
Pattern "__pattern__" {
W "_default_WFT_";
"precondition all Signals": C { "_pi"=\r8 0 ; "_po"=\r10 X ; }
Macro "test_setup";
"pattern 0": Call "load_unload" {
"test_si1"=00110; "test_si2"=00110; "test_si3"=00110; }
Call "capture" {
"_pi"=01011001; "_po"=HHLLLHHLLL; }
"pattern 1": Call "load_unload" {
"test_so1"=LLHHL; "DATA[3]"=LLHHL; "calib_ok"=LLHHL; "test_si1"=11011; "test_si2"=00000;
"test_si3"=10001; }
Call "capture_Clk" {
"_pi"=01110000; "_po"=LLLLHLLLHH; }
"pattern 2": Call "load_unload" {
"test_so1"=HHLHH; "DATA[3]"=LLLLL; "calib_ok"=LLLLL; "test_si1"=11100; "test_si2"=01011;
"test_si3"=01100; }
Call "capture_Clk" {
"_pi"=00100101; "_po"=HLHLLLHHLH; }
"pattern 3": Call "load_unload" {
"test_so1"=HHHLL; "DATA[3]"=LLLLH; "calib_ok"=LLLLL; "test_si1"=00101; "test_si2"=10001;
"test_si3"=11011; }
Call "capture_Clk" {
"_pi"=01000111; "_po"=LLLHHHLHHL; }

i have 37 patterns in my STIL FILE (you can see all the patterns in (file attachment)


and also why in the following syntax

"capture" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }


I DON't understand why -> "CLK=0" and what is C,W,X in this case?????

Here W -- Wavefrom table equivalent to timeplate
C -- Conditional stimulus
X-- dont care. the values of the listed pins are dont care

The same case in the synthax "capture_Clk" {

CLK=0 but after clk=P ????

"capture_Clk" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }
"forcePI": V { "_pi"=\r8 # ; }
"measurePO": V { "_po"=\r10 # ; }
C { "_po"=\r10 X ; }
"pulse": V { "Clk"=P; }

Here Clk is pulsed to capture the value. basically a Capture clock pulse

Finaly in the Timing synthax i didn't understand what is T ??????

Timing {
WaveformTable "_default_WFT_" {
Period '100ns';
Waveforms {
"all_inputs" { 0 { '5ns' D; } }
"all_inputs" { 1 { '5ns' U; } }
"all_inputs" { Z { '5ns' Z; } }
"all_inputs" { N { '5ns' N; } }
"all_outputs" { X { '0ns' X; } }
"all_outputs" { H { '0ns' X; '95ns' H; } }
"all_outputs" { L { '0ns' X; '95ns' L; } }
"all_outputs" { T { '0ns' X; '95ns' T; } }
"Clk" { P { '0ns' D; '45ns' U; '55ns' D; } }
}


I would greatly appreciate your help regarding this,

Thanks
 

load_unload procedure

To santhosh007



Thank you for your answers
I just wanna understand how to interpret the results of the patterns generated by Tetramax, because it's the first time iam using TETRAMAX


Procedures {
"load_unload" {
W "_default_WFT_";
C { "calib_ok"=X; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_so1"=X; "DATA[3]"=X; }
V { "Clk"=0; "test_se"=1; "_so"=###; }
Shift { W "_default_WFT_";
V { "Clk"=P; "test_se"=1; "_so"=###; "_si"=###; }
}
}
"capture" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }
V { "_pi"=\r8 # ; "_po"=\r10 # ; }
}
"capture_Clk" {
W "_default_WFT_";
C { "DATA[1]"=X; "DATA[7]"=X; "calib_start"=0; "calib_ok"=X; "DATA[0]"=X; "DATA[6]"=X; "Rst"=0;
"DATA[5]"=X; "Clk"=0; "test_si3"=0; "test_si2"=0; "test_si1"=0; "test_se"=0; "DATA[4]"=X;
"test_so1"=X; "DATA[3]"=X; "DATA[2]"=X; "niv_compar"=0; }
"forcePI": V { "_pi"=\r8 # ; }
"measurePO": V { "_po"=\r10 # ; }
C { "_po"=\r10 X ; }
"pulse": V { "Clk"=P; }
}
}
MacroDefs {
"test_setup" {
W "_default_WFT_";
V { "Clk"=0; }
V { "Clk"=0; }
}
}
Pattern "__pattern__" {
W "_default_WFT_";
"precondition all Signals": C { "_pi"=\r8 0 ; "_po"=\r10 X ; }
Macro "test_setup";


"pattern 0": Call "load_unload" {
"test_si1"=00110; "test_si2"=00110; "test_si3"=00110; }
Call "capture" {
"_pi"=01011001; "_po"=HHLLLHHLLL; }


"pattern 1": Call "load_unload" {
"test_so1"=LLHHL; "DATA[3]"=LLHHL; "calib_ok"=LLHHL; "test_si1"=11011; "test_si2"=00000;
"test_si3"=10001; }
Call "capture_Clk" {
"_pi"=01110000; "_po"=LLLLHLLLHH; }


"pattern 2": Call "load_unload" {
"test_so1"=HHLHH; "DATA[3]"=LLLLL; "calib_ok"=LLLLL; "test_si1"=11100; "test_si2"=01011;
"test_si3"=01100; }
Call "capture_Clk" {
"_pi"=00100101; "_po"=HLHLLLHHLH; }

CAN YOU PLEASE explain me how we obtained the values _pi=01110000 and po=LLLLHLLLHH in Call "capture_Clk for the pattern 1

thank you for all
 

Hello nabilos,

I will add some comments concerning your STIL file and some explanations.

1. Concerning the Timing block, it defines for each signal the possible waveforms by affecting it a WFC (WaveFormCharacter). This WFC will be used in Pattern block (or Procedures/MacroDefs blocks) to assigned the real value for each signal.
The "T" WFC in "all_outputs" { T { '0ns' X; '95ns' T; } } means that we assign the WFC "T" for the group "all_outputs". The waveform associated with WFC "T" has the shape '0ns' X; '95ns' T in the period. The event T means High Impedance in output mode.

2. The procedures block is used to define parametrized functions that could be called in the Pattern block to "lighten" the size of the STIL file. In your case, "load_unload", "capture" and "capture_Clk" are defined in the Procedures block.

3. The "W" (or "Waveform" keyword) character is a keyword in STIL language to say that which WaveformTable we are selecting. The "C" statement is used to set a value by default in the Procedure or Pattern for a set of signals. For example, "Clk"=0 means that we affect to Clk the WFC 0 by default.

4. Concerning the values affected to "_pi=01110000 and po=LLLLHLLLHH in Call "capture_Clk for the pattern 1", I think you must know the algorithm that TMax uses to generate the pattern.

I hope this coudl help you.

Best Regards,
Moez
 

[DFT & Tetramax] Questions related to STIL DFT protocol file

Hi SPIL experts,

I met a problem about writing a spf.
1. During the initial stage, the test clock pin is required to set at 1'b1 for serving as a control signal (like reset), and then become to 1'b0 after a period of 5000ns.
2. After the reset is done, the test mode can only be triggered by a sequence of control inputs. And then the clock can be pulsed to start the scanning.

I tried to use V { "clk" = 1} in "test_setup" section to force the clk is in high state during the beginning. But the tetramax complains errors that "clk" should be pulsed, not forced on.

How can I write such spf for tetramax?

Thx a lot.
 

Status
Not open for further replies.

Part and Inventory Search

Welcome to EDABoard.com

Sponsor

Back
Top