This tutorial is to walk you through the basic steps of getting started with Microwave Office. It will highlight basic steps and then you click buttons to have those steps done for your.  The intent is to show you the basic steps without getting into details of how to accomplish each step.  The specific steps are covered in the Getting Started Guides.  Please select Help > Getting Started from the Help menu to find this guide when in the software to click the button below. 

<script>
var bSystemCheck = true;
</script>
<button class="gh-button" id="reset" onclick="runAwrScript('open_gs');">Open Getting Started Guide</button>

Starting Over

Use the button below to start over at any time.

 

<button class="gh-button" id="reset" onclick="reset();">Start Over</button>

Getting Started

 

    <div id = "start" class = "start">
    <p>The first step to any design is to create a schematic or another type of simulation document (data file, netlist or EM structure).  In this example, we will 
    create a simple schematic to start our design. </p>
    <button class="gh-button" id="step1" onclick="addSchematic();">Add Schematic</button>
    </div>
    
    <div id = "step2" class = "next" style="display:none">
    <p>The next step will be to add elements to your schematics. This example will add a simple transmission line.  For linear simulation we also need ports. </p>
    <button class="gh-button" id="but2" onclick="addElements();">Add Elements</button>
    </div>
    
    <div id = "step3" class = "next" style="display:none">
    <p>Now lets take a look at the schematic layout. </p>
    <button class="gh-button" id="but3" onclick="viewLayout();">View Layout</button>
    </div>
    
    <div id = "step4" class = "next" style="display:none">
    <p>If you simulate at this point, nothing happens. You can try with clicking the button below to simulate.  This is because you have not asked for any output.  Find the 'Status Window' and notice there is nothing listed meaning no simulation occurred. </p>
    <button class="gh-button" id="but4" onclick="simulate1();">Simulate</button>
    </div>
    
    <div id = "step5" class = "next" style="display:none">
    <p>Lets fix this problem by adding a graph and a measurement to the graph.  We will add a Smith chart with an S(1,1) measurement. </p>
    <button class="gh-button" id="but5" onclick="addGraphMeas();">Add Graph and Measurement</button>
    </div>
    
    <div id = "step6" class = "next" style="display:none">
    <p>Now that we have a graph, we are ready to simulate again. </p>
    <button class="gh-button" id="but6" onclick="simulate2();">Simulate</button>
    </div>
    
    <div id = "step7" class = "next" style="display:none">
    <p>Oops, there is no substrate defined for the microstrip line.  Look at the status window to see the errors produced by the simulator. To fix this, lets add the substrate block for this microstrip line. </p>
    <button class="gh-button" id="but7" onclick="addSubstrate();">Add Substrate</button>
    </div>
    
    <div id = "step8" class = "next" style="display:none">
    <p>Now everything is ready to go, try simulating again. </p>
    <button class="gh-button" id="but8" onclick="simulate3();">Simulate</button>
    </div>
    
    <div id = "step9" class = "next" style="display:none">
    <p>Lets change the length of the line. </p>
    <button class="gh-button" id="but9" onclick="changeParams();">Change Length</button>
    </div>
    
    <div id = "step10" class = "next" style="display:none">
    <p>Notice the graph trace is dimmer than before, indicating the schematic has changed and needs to be resimulated. </p>
    <button class="gh-button" id="but10" onclick="simulate4();">Simulate</button>
    </div>
    
    <div id = "step11" class = "next" style="display:none">
    <p>Now we need to change our frequency range.  The default is 1 and 2 GHz, lets use 1 to 20 in steps of 1. </p>
    <button class="gh-button" id="but11" onclick="changeFrequency();">Change Frequency</button>
    </div>
    
    <div id = "step12" class = "next" style="display:none">
    <p>After frequencies are changed, simulate yet again. </p>
    <button class="gh-button" id="but12" onclick="simulate5();">Simulate</button>
    </div>
    
    <div id = "step13" class = "next" style="display:none">
    <p>Just for fun, lets now tune the width of the line, watch the layout, schematic results and W parameter in the schematic update. </p>
    <button class="gh-button" id="but13" onclick="tune();">Tune</button>
    </div>
    
    <div id = "step14" class = "next" style="display:none">
    <p>That is the end, hope you enjoyed. </p>
    </div>

 

 

    <script>
    function reset() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('clean', step_end);
    //document.getElementById("reset").disabled = false;
    document.getElementById("start").style.display = 'block';
    
    var divsToHide = document.getElementsByClassName("next");
    for(var i = 0; i < divsToHide.length; i++)
        {
        divsToHide[i].style.display='none';
        }
    }
    </script>
    
    <script>
    function debug_steps() {
    var divsToShow = document.getElementsByClassName("next");
    for(var i = 0; i < divsToShow.length; i++)
        {
        divsToShow[i].style.display='block';
        }
    }
    </script>
    
    <script>
    function addSchematic() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('create_schematic', step_end);
    document.getElementById("start").style.display = 'none'; 
    document.getElementById("step2").style.display = 'block'; 
    }
    </script>
    
    
    <script>
    function addElements() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('add_elements', step_end);
    document.getElementById("step2").style.display = 'none'; 
    document.getElementById("step3").style.display = 'block'; 
    }
    </script>
    
    <script>
    function viewLayout() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('view_layout', step_end);
    //document.getElementById("but1").style.backgroundColor='green';
    document.getElementById("step3").style.display = 'none'; 
    document.getElementById("step4").style.display = 'block'; 
    }
    </script>
    <script>
    function simulate1() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('simulate', step_end);
    document.getElementById("step4").style.display = 'none'; 
    document.getElementById("step5").style.display = 'block'; 
    }
    </script>
    <script>
    function addGraphMeas() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('add_graph_meas', step_end);
    document.getElementById("step5").style.display = 'none'; 
    document.getElementById("step6").style.display = 'block'; 
    }
    </script>
    <script>
    function simulate2() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('simulate', step_end);
    document.getElementById("step6").style.display = 'none'; 
    document.getElementById("step7").style.display = 'block'; 
    }
    </script>
    <script>
    function addSubstrate() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('add_sub', step_end);
    document.getElementById("step7").style.display = 'none'; 
    document.getElementById("step8").style.display = 'block';
    }
    </script>
    <script>
    function simulate3() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('simulate', step_end);
    document.getElementById("step8").style.display = 'none'; 
    document.getElementById("step9").style.display = 'block';
    }
    </script>
    <script>
    function changeParams() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('change_parameters', step_end);
    //document.getElementById("but1").style.backgroundColor='green';
    document.getElementById("step9").style.display = 'none'; 
    document.getElementById("step10").style.display = 'block';
    }
    </script>
    <script>
    function simulate4() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('simulate', step_end);
    //document.getElementById("but1").style.backgroundColor='green';
    document.getElementById("step10").style.display = 'none'; 
    document.getElementById("step11").style.display = 'block';
    }
    </script>
    <script>
    function changeFrequency() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('update_frequencies', step_end);
    document.getElementById("step11").style.display = 'none'; 
    document.getElementById("step12").style.display = 'block';
    }
    </script>
    <script>
    function simulate5() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('simulate', step_end);
    document.getElementById("step12").style.display = 'none'; 
    document.getElementById("step13").style.display = 'block';
    }
    </script>

    <script>
    function tune() {
    document.getElementById("reset").disabled = true;
    //document.getElementById("but1").disabled = true;
    runAwrScript('tune', step_end);
    //document.getElementById("but1").disabled = true;
    document.getElementById("step13").style.display = 'none'; 
    document.getElementById("step14").style.display = 'block';
    }
    </script>
    <script>
    function step_end(Response) {
    document.getElementById("reset").disabled = false;
    ShowJSONResponse(Response);
    }
    </script>
    <script id="awrscript" type="text/awrscript">
    Sub tune()
        Dim p As Parameter
        Dim Swp As Sweeper

        MWOffice.Activate
        d = 0.05
        Set p = Project.Schematics("My Schematic").Elements("MLIN.TL1").Parameters("W")
        nom = p.ValueAsDouble
        Set Swp = Project.Sweeper
        Swp.AddVariable("W",p)
        If Project.Units(mwUT_Length).UnitString = "um" Then
            strt = nom/4
            stopp = nom*4
        ElseIf Project.Units(mwUT_Length).UnitString = "mm" Then
            strt = nom/2
            stopp = nom*2
        ElseIf Project.Units(mwUT_Length).UnitString = "mil" Then
            strt = nom/4
            stopp = nom
        End If
        Stp = ((stopp-strt)/20)
        For v = strt To stopp Step stp
            Swp.Value("W") = v
            Swp.Update(True,True)

            Wait(d)
        Next v
        Project.Schematics("My Schematic").Windows(2).ViewAll
    End Sub
Function open_gs
    pth = MWOffice.Directories(1).ValueAsString
    stg = "hh.exe " & pth & "\Getting_Started.chm::/output/gs_intro.html"
    Shell(stg,vbMaximizedFocus)
End Function

Function blank_project_check
    'checks to make sure that it is blank project.
    If Project.Schematics.Count <> 0 Or Project.SystemDiagrams.Count <> 0 Or Project.DataFiles.Count <> 0 Or Project.Graphs.Count <> 0 Or Project.EMStructures.Count <> 0 Or Project.EM3DStructures.Count<> 0 Then
        MsgBox("This tutorial expects a new project when starting.  Please save your current project and create a new project from the File menu or click the 'Start Over' button to erase everything in the current project")
        End
    End If
End Function

Function view_layout
    Project.Schematics("My Schematic").NewWindow(mwWT_SchematicLayout)
    MWOffice.Windows.Tile(mwWTD_Horizontal)
    MWOffice.Activate
 End Function

Function change_parameters
    Dim s As Schematic
    Dim e As Element

    Set s = Project.Schematics("My Schematic")
    Set e =s.Elements("MLIN.TL1")
    If Project.Units(mwUT_Length).UnitString = "um" Then
        e.Parameters("L").ValueAsString = "1000"
    ElseIf Project.Units(mwUT_Length).UnitString = "mm" Then
        e.Parameters("L").ValueAsString = "4"
    ElseIf Project.Units(mwUT_Length).UnitString = "mil" Then
        e.Parameters("L").ValueAsString = "200"
    End If
    Project.Schematics("My Schematic").Windows(2).ViewAll
    MWOffice.Activate
 End Function


Function update_frequencies
    Project.Frequencies.Clear
    For i = 1 To 20
        Project.Frequencies.Add(i*1e9)
    Next i
    MWOffice.Activate
 End Function

Function simulate
    Project.Simulator.Analyze
    MWOffice.Activate
 End Function

Function create_schematic
    blank_project_check
    Dim s As Schematic
    Set s = Project.Schematics.Add("My Schematic")
    s.Windows(1).WindowState=mwWS_Maximized
    MWOffice.Activate
 End Function
Function add_elements
    Project.Schematics("My Schematic").Elements.Add("Port",0,0)
    Project.Schematics("My Schematic").Elements.Add("Port",1000,0,180)
    Project.Schematics("My Schematic").Elements.Add("MLIN",0,0,0)
    Project.Schematics("My Schematic").Views(1).ViewAll
    MWOffice.Activate
 End Function
Function add_graph_meas
    Dim g As Graph
    Set g = Project.Graphs.Add("Match",mwGT_SmithChart)
    g.Measurements.Add("My Schematic","S(1,1)")
    MWOffice.Windows(2).Activate
    MWOffice.Windows.Tile(mwWTD_Horizontal)
    MWOffice.Activate
End Function
Function get_errors
'want to print on web page when return them.
    Dim grp As StatusGroup
    Dim allerrors As StatusItems
    Dim er As StatusItem
    Dim txt As String
    txt = ""
    For Each grp In MWOffice.Status.Groups
        Set allerrors=grp.Search("",mwRIC_Error)
        For Each er In allerrors
            'Debug.Print er.Text
            txt = txt & er.Text & vbCrLf
        Next er
    Next grp
    get_errors = txt
End Function
Function add_sub
    Project.Schematics("My Schematic").Elements.Add("MSUB",0,1000)
    Project.Schematics("My Schematic").Views(1).ViewAll
    MWOffice.Activate
 End Function
Function clean
	MWOffice.New("Getting Started")
End Function
</script>