When I designed a full adder using Cadence, the user interface of setting stimulus isn't convenient. This tool provides an easy way to setup a stimulus file.
After uploading the stimulus file to a unix server, using following command to change the format:
tr -d "\r" < dosfile >unixfile
#include <vcl.h> #pragma hdrstop #include "main.h" //--------------------------------------------------------------------------- #pragma package(smart_init) #pragma resource "*.dfm" TForm1 *Form1; /* vdd (vdd! 0) dc=5 va1 (a1 0) type=pulse val0=0 val1=0 delay=0 rise=2n fall=2n width=25n period=50n */ TStringList *ListT1,*ListT2,*ListT3,*ListT4,*ListT5,*ListT6; TStringList *ListV1,*ListV2,*ListV3,*ListV4,*ListV5,*ListV6; //--------------------------------------------------------------------------- void __fastcall TForm1::Btn_GenClick(TObject *Sender) { Memo_StimulusFile->Text = ""; AnsiString va = " v" + Edit_Input1->Text; AnsiString vb = " v" + Edit_Input2->Text; AnsiString vcin = " v" + Edit_Input3->Text; AnsiString a = " (" + Edit_Input1->Text; AnsiString b = " (" + Edit_Input2->Text; AnsiString cin = " " + vcin+ "(" + Edit_Input3->Text + " 0)"; if(PageControl_Function->TabIndex == 0) //pulse { Memo_StimulusFile->Text = Memo_StimulusFile->Text + ("vdd (vdd! 0) dc=" + Edit_DC->Text + "\r\n" ); AnsiString para1,para2; para2 = " " + Edit_DT->Text + " " + Edit_RT->Text + " " + Edit_FT->Text + " " + Edit_PW->Text + " "+ Edit_Period->Text + "\r\n"; for(int i=1;i<=16;i++) { if( i>=1 && i<=4 ) { if( Edit_Bin_A1->Text.SubString(5-i,1) == 0 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (va+IntToStr(i) + a+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V1->Text + para2); else if( Edit_Bin_A1->Text.SubString(5-i,1) == 1 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (va+IntToStr(i) + a+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V2->Text + para2); } if( i>=5 && i<=8 ) { if( Edit_Bin_A2->Text.SubString(5-(i-4),1) == 0 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (va+IntToStr(i) + a+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V1->Text + para2); else if( Edit_Bin_A2->Text.SubString(5- (i-4),1) == 1 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (va+IntToStr(i) + a+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V2->Text + para2); } if( i>=9 && i<=12 ) { if( Edit_Bin_A3->Text.SubString(5-(i-8),1) == 0 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (va+IntToStr(i) + a+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V1->Text + para2); else if( Edit_Bin_A3->Text.SubString(5-(i-8),1) == 1 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (va+IntToStr(i) + a+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V2->Text + para2); } if( i>=13 && i<=16 ) { if( Edit_Bin_A4->Text.SubString(5-(i-12),1) == 0 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (va+IntToStr(i) + a+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V1->Text + para2); else if( Edit_Bin_A4->Text.SubString(5-(i-12),1) == 1 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (va+IntToStr(i) + a+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V2->Text + para2); } } for(int i=1;i<=16;i++) { if( i>=1 && i<=4 ) { if( Edit_Bin_B1->Text.SubString(5-i,1) == 0 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (vb+IntToStr(i) + b+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V1->Text + para2); else if( Edit_Bin_B1->Text.SubString(5-i,1) == 1 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (vb+IntToStr(i) + b+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V2->Text + para2); } if( i>=5 && i<=8 ) { if( Edit_Bin_B2->Text.SubString(5-(i-4),1) == 0 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (vb+IntToStr(i) + b+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V1->Text + para2); else if( Edit_Bin_B2->Text.SubString(5- (i-4),1) == 1 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (vb+IntToStr(i) + b+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V2->Text + para2); } if( i>=9 && i<=12 ) { if( Edit_Bin_B3->Text.SubString(5-(i-8),1) == 0 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (vb+IntToStr(i) + b+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V1->Text + para2); else if( Edit_Bin_B3->Text.SubString(5-(i-8),1) == 1 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (vb+IntToStr(i) + b+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V2->Text + para2); } if( i>=13 && i<=16 ) { if( Edit_Bin_B4->Text.SubString(5-(i-12),1) == 0 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (vb+IntToStr(i) + b+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V1->Text + para2); else if( Edit_Bin_B4->Text.SubString(5-(i-12),1) == 1 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (vb+IntToStr(i) + b+IntToStr(i)+" 0) pulse "+Edit_V1->Text+ " "+Edit_V2->Text + para2); } } if( Edit_Cin->Text == 0 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (cin + " pulse "+Edit_V1->Text+ " "+Edit_V1->Text + para2 + "\r\n" ); else if( Edit_Cin->Text == 1 ) Memo_StimulusFile->Text = Memo_StimulusFile->Text + (cin + " pulse "+Edit_V1->Text+ " "+Edit_V2->Text + para2 + "\r\n" ); } else if(PageControl_Function->TabIndex == 1) //pwl { Memo_StimulusFile->Text = Memo_StimulusFile->Text + ("vdd (vdd! 0) dc=" + Edit_PWL_DC->Text + "\r\n" ); AnsiString para1,para2; para2 = Edit_PLW_T1->Text + " " + Edit_PLW_V1->Text + " " + Edit_PLW_T2->Text + " " + Edit_PLW_V2->Text + " " + Edit_PLW_T3->Text + " " + Edit_PLW_V3->Text + " " + Edit_PLW_T4->Text + " " + Edit_PLW_V4->Text + " " + Edit_PLW_T5->Text + " " + Edit_PLW_V5->Text + " " + Edit_PLW_T6->Text + " " + Edit_PLW_V6->Text + "\r\n"; //vA1 A1 0 pwl 0n 0 50n 0 50.0001n 5 100n 5 100.0001n 0 250n 0 for(int i=1;i<=16;i++) { Memo_StimulusFile->Text = Memo_StimulusFile->Text + (va + IntToStr(i) + a +IntToStr(i)+ " 0) pwl " + ListT1->Strings[0] + " " + ListV1->Strings[0] + " " + ListT2->Strings[0] + " " + ListV2->Strings[0] + " " + ListT3->Strings[0] + " " + ListV3->Strings[0] + " " + ListT4->Strings[0] + " " + ListV4->Strings[0] + " " + ListT5->Strings[0] + " " + ListV5->Strings[0] + " " + ListT6->Strings[0] + " " + ListV6->Strings[0] + "\r\n"); } for(int i=1;i<=16;i++) { Memo_StimulusFile->Text = Memo_StimulusFile->Text + (vb + IntToStr(i) + b +IntToStr(i)+ " 0) pwl " + ListT1->Strings[1] + " " + ListV1->Strings[1] + " " + ListT2->Strings[1] + " " + ListV2->Strings[1] + " " + ListT3->Strings[1] + " " + ListV3->Strings[1] + " " + ListT4->Strings[1] + " " + ListV4->Strings[1] + " " + ListT5->Strings[1] + " " + ListV5->Strings[1] + " " + ListT6->Strings[1] + " " + ListV6->Strings[1] + "\r\n"); } Memo_StimulusFile->Text = Memo_StimulusFile->Text + (cin + " pwl " + ListT1->Strings[2] + " " + ListV1->Strings[2] + " " + ListT2->Strings[2] + " " + ListV2->Strings[2] + " " + ListT3->Strings[2] + " " + ListV3->Strings[2] + " " + ListT4->Strings[2] + " " + ListV4->Strings[2] + " " + ListT5->Strings[2] + " " + ListV5->Strings[2] + " " + ListT6->Strings[2] + " " + ListV6->Strings[2] + " " + Edit_PLW_T7->Text + " " + Edit_PLW_V7->Text + " " + Edit_PLW_T8->Text + " " + Edit_PLW_V8->Text + " " + Edit_PLW_T9->Text + " " + Edit_PLW_V9->Text + " " + Edit_PLW_T10->Text + " " + Edit_PLW_V10->Text + "\r\n"); } } //---------------------------------------------------------------------------