ADS学习日志

ADS学习日志

AEL脚本

decl CKT_BATCH_QUEUE_STATE;
decl CKT_NUM = 0;

decl i = 0;
decl j = 0;
decl k = 0;

defun mybatch_simulation()
{

  if(ckt_simulaion_is_running())   
  {
     de_info("A circuit simulation is currently running.\nPlease wait until this simulation is done.");
     return;
  }

  // desim_use_queued_simulators() was introduced in ADS 2004A
  // This line makes sure the code works in earlier versions
  if ( ! is_word( find_word( "desim_use_queued_simulators" ) ) )
       execute( "defun desim_use_queued_simulators( )  { return FALSE; }" );

  // Save the queue state
  CKT_BATCH_QUEUE_STATE = desim_use_queued_simulators(FALSE);

  mybatch_simulate_design();   
}

defun mybatch_simulate_design()
{



  k = CKT_NUM%5;
  j = ((CKT_NUM-k)/5)%4;
  i = (((CKT_NUM-k)/5-j)/4)%2;


    // Open desired schematic
    //de_open_design("mybatch_test",FALSE);  // Tweak to desired name..

    de_set_window_by_sequence(0, 0);
    de_open_workspace("E:\ADS\LTE\QYL_LTE_TESTwrk");


    //de_bring_view_to_top_or_open_new_window("QYL_LTE_TESTwrk1_lib_1", "LTE", "schematic", 3);
    de_get_design_context_from_name("QYL_LTE_TESTwrk1_lib:LTE:schematic");


    decl itemInfo0SP=de_edit_item("VAR2");
    de_set_item_id(itemInfo0SP, "VAR2");
    de_set_item_parameters(itemInfo0SP, list(list(prm_ex("ads_datacmps","VarFormEditcompPowerVar",prm_ex("ads_datacmps","VarNameForm","CType1"),prm_ex("ads_datacmps","VarValueForm",i)),prm_ex("ads_datacmps","VarFormEditcompPowerVar",prm_ex("ads_datacmps","VarNameForm","CType"),prm_ex("ads_datacmps","VarValueForm","if (CType1==0) then 0 elseif (CType1==1) then 2 else 0 endif")))));
    de_end_edit_item(itemInfo0SP);
    itemInfo0SP=de_free_item(itemInfo0SP);

    decl itemInfo1SP=de_edit_item("SNR_Computation1");
    de_set_item_id(itemInfo1SP, "SNR_Computation1");
    de_set_item_parameters(itemInfo1SP, list(list(prm_ex("ads_datacmps","VarFormEditcompPowerVar",prm_ex("ads_datacmps","VarNameForm","SNR1"),prm_ex("ads_datacmps","VarValueForm",j)),prm_ex("ads_datacmps","VarFormEditcompPowerVar",prm_ex("ads_datacmps","VarNameForm","RS_EPRE"),prm_ex("ads_datacmps","VarValueForm","-25")),prm_ex("ads_datacmps","VarFormEditcompPowerVar",prm_ex("ads_datacmps","VarNameForm","NDensity"),prm_ex("ads_datacmps","VarValueForm","RS_EPRE-10*log10(15e3)-SNR")),prm_ex("ads_datacmps","VarFormEditcompPowerVar",prm_ex("ads_datacmps","VarNameForm","SNR"),prm_ex("ads_datacmps","VarValueForm","if (SNR1==0) then 0 elseif (SNR1==1) then -10 elseif (SNR1==2) then -20 elseif (SNR1==3) then -30  else 0 endif")))));
    de_end_edit_item(itemInfo1SP);
    itemInfo1SP=de_free_item(itemInfo1SP);

    decl itemInfo2SP=de_edit_item("VAR1");
    de_set_item_id(itemInfo2SP, "VAR1");
    de_set_item_parameters(itemInfo2SP, list(list(prm_ex("ads_datacmps","VarFormEditcompPowerVar",prm_ex("ads_datacmps","VarNameForm","LoFreq"),prm_ex("ads_datacmps","VarValueForm","1895e6+LoFreq2 Hz")),prm_ex("ads_datacmps","VarFormEditcompPowerVar",prm_ex("ads_datacmps","VarNameForm","LoFreq1"),prm_ex("ads_datacmps","VarValueForm",k)),prm_ex("ads_datacmps","VarFormEditcompPowerVar",prm_ex("ads_datacmps","VarNameForm","LoFreq2"),prm_ex("ads_datacmps","VarValueForm","if (LoFreq1==0) then 0 elseif (LoFreq1==1) then 100 elseif (LoFreq1==2) then 1000 elseif (LoFreq1==3) then 10000 elseif (LoFreq1==4) then 100000 else 0 endif")))));
    de_end_edit_item(itemInfo2SP);
    itemInfo2SP=de_free_item(itemInfo2SP);


 // Simulate it
 decl wInst=api_get_current_window(); 
 de_analyze();

 // Wait for the simulation to finish
 // install a timer function
 api_set_timer("cktSimTimer",  // timer name
               1000,             // number of milliseconds b/n calls 
               1,             // auto repeat
               "ckt_sim_check_timer_cb", // callback
               NULL);                   // cbData of callback
}

defun ckt_sim_check_timer_cb (cbData, callData) 
{

  if (!ckt_simulaion_is_running()) 
  {

     // make sure to remove timer function 
     api_remove_timer("cktSimTimer");

     // Increase Design Number
     CKT_NUM++;

     // More designs to simulate?
     if ( CKT_NUM <= 39 )
        mybatch_simulate_design();
     else
     {
        // Reset the queue state
        desim_use_queued_simulators(CKT_BATCH_QUEUE_STATE);
        de_info("Done!");         
     }
  }
}

defun ckt_simulaion_is_running()
{
  //decl dsnDir = de_current_design_name();
  //decl workDir = de_mom_get_working_dir(db_get_design(dsnDir));

  if (desim_foreground_simulation_running()) 
  {       
     return TRUE;
  }
  else
  {
     return FALSE;
  } 
}

mybatch_simulation();
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值