Appendix B: Interpreter Guides

The guides in this section detail the model interpreters provided with the META tools.

This section is oriented towards test bench authors, for whom deep technical details will be valuable. This is as opposed to end-users, who will primarily be consumers of test benches, and should not need to know the technical details of interpreters.


CyPhy2Schematic

CyPhy2Schematic icon

CyPhy2Schematic generates circuit models. It has several modes which support a number of capabilities, including:

  • Generation and execution of SPICE simulation models
  • Generation of EAGLE model files
  • Generation of PCB Layouts, including signal routing
  • "ChipFit" tests

Workflow Parameters

NOTE: Values of type Boolean are considered false if they are unspecified or null. Any other value is considered true.

Key Value Type Description
doSpice Boolean If true, generate a SPICE simulation model. Ignore all other parameters.
If false, produce an EAGLE schematic model.
doChipFit Boolean Run an analysis that determines whether the given components will fit into the given dimensions.
This mode requires the TestBench to have 2 Parameters, and produces 2 Metrics. For more details, read the ChipFit Mode section below.
showChipFitVisualizer Boolean If true, a 2D viewer will be launched for the ChipFit results as part of test bench execution. Execution will be blocked until the window is closed.
doPlaceOnly Boolean Generates a layout for the PCB and saves it as an EAGLE board file
doPlaceRoute Boolean Same as doPlaceOnly, but also uses EAGLE's auto-router to route the signals on the board
skipGUI Boolean If true, don't display a GUI to the user when the interpreter runs as part of a workflow, even on the first run over a design space.

EDA Mode

If doSpice is not true, then the interpreter operates in EDA mode. In this mode, it will produce an EAGLE schematic model from the CyPhy model. Depending on the other options selected, it can also do a ChipFit analysis, auto-placement of components on the PCB, and auto-routing of the traces on the PCB.

Generated Artifacts

Filename Artifact Tag Description
layout-input.json none Input to the ChipFit and Placement tools. Provides board size and layer count constraints. For each package in the design, provides name, width, and height (in millimeters).
schema.sch none The generated EAGLE model
chipfit.bat none Runs the ChipFit analysis
placeonly.bat none Generates a board layout from layout-input.json and synthesizes an EAGLE board file as schema.brd
placement.bat none Same as placeonly.bat, but also uses EAGLE to auto-route the signals on the board.
reference_designator_mapping_table.html none Provides mapping from the auto-generated reference designators in the EAGLE model to the paths of components from the original CyPhy project.

Parameters

This mode supports the following TestBench Parameters.

Parameter Name Value Type Description Required
boardWidth real number The width (in millimeters) of the area available for components. Required
boardHeight real number The height (in millimeters) of the area available for components. Required
boardTemplate string The relative (to the project) path of a PCB board template file Optional
designRules string The relative (to the project) path of a design rule file that specifies place and route guidelines for PCB Optional
autorouterConfig string The relative (to the project) path of an EAGLE autorouter settings file to be used by the autorouter Optional
boardEdgeSpace string The minimum distance (in millimeters) between the boundary of a component and the edge of the board Optional
interChipSpace string The minimum distance (in millimeters) between the boundaries of adjacent components Optional

ChipFit Mode

If the doChipFit value is true, then the ChipFit Mode will be activated. In this mode, the test bench will run an analysis that determines whether the given components will fit into the given dimensions.

This mode produces two Metrics. If these metrics aren't provided in the TestBench, they will be added into testbench_manifest.json after ChipFit execution.

Note: In the Metric names that follow, (x) and (y) are replaced by the boardWidth and boardHeight, respectively, as defined above.

Metric Name Value Type Description
fits_(x)_by_(y) true/false Whether the components in the design will fit within the given space
pct_occupied_(x)_by_(y) float The percentage of the available space occupied by the given components.

SPICE Mode

The SPICE Mode will generate and run an NGSPICE-compatible SPICE model.

Generated Artifacts

Filename Artifact Tag Description
runspice.bat none Runs the SPICE simulation
schema.cir none The generated SPICE model
siginfo.json none Provides mappings from SPICE signals to ports in the CyPhy model

CyPhy2SystemC

CyPhy2SystemC icon

CyPhy2SystemC generates and executes behavioral test benches using a SystemC discrete event simulator. The interpreter includes the standard SystemC v2.3.1 library from the Accellera Systems Initiative and the core components of the ARA ecosystem. The interpreter targets Visual Studio 2010 (C++) with no additional/external dependencies.

The interpreter needs to be executed from a proper testbench with at least one component/susbsytem under test and one or more test components. A successful execution involves the following steps:

  • The interpreter collects all leaf components with SystemC models
  • It builds the complete wiring across these components (using ports and/or connectors)
  • Source code (test_main.cpp) is generated, which instantiates and wires all components and starts the SystemC simulation. Trace statements are also added for top-level signals
  • A complete Visual C++ solution/project is extracted around the generated source file (SystemCTestBench) which includes the SystemC simulator library and the essential ARA components
  • Optional/external SystemC header and c++ files are copied into the generated folder for third party components
  • Special handling of Arduino-based components: a generic Arduino component is instantiated for each and configured with the specified firmware (the firmware is attached as a `Resource to the component in the CyPhy model)
  • Finally, the interpreter schedules the building and execution of the generates SystemC project
  • The SystemC executable produces console messages, signal traces (SystemCTestBench.vcd) and its exit status reflects the number of failed tests

Workflow Parameters

NOTE: The current version does not require nor handle any special workflow parameters.

Parameters

This interpreter supports the following Parameters.

Parameter Name Value Type Units Description
simulationTime real number Time The (maximum) length of the simulation time

Generated Artifacts

This interpreter generates a new folder for the Visual Studio Solution with subfolders containing the SystemC library and essential ARA components.

Directory/File Path Artifact Tag Description
SystemCTestBench.sln none Visual Studio solution file
SystemCTestBench.vcxproj none Visual Studio C++ project
SystemCTestBench.vcxproj.filters none Visual Studio source file folder definitions
include/* none Include files for the SystemC and ARA libraries
libD/* none Debug builds of the SystemC and ARA libraries
libR/* none Release builds of the SystemC and ARA libraries
test_main.cpp none Generated top-level SystemC source file (instantiation and wiring)
<other>.cpp/.h/ .ino none Copies of referenced SystemC sources in third party components and Arduino firmware sources

The execution of the generated test bench generates the following output file(s):

Directory/File Path Artifact Tag Description
SystemCTestBench.vcd none VCD (Value Change Dump) signal traces

CyPhy2RF

CyPhy2RF icon

The CyPhy2RF interpreter builds up the EM simulation model of the Ara module, generates the input files for OpenEMS and executes the simulator. It imports and generates the models described with CSXCAD XML scheme of OpenEMS.

The interpreter needs to be executed from a proper testbench with one System Under Test and one Excitation test component. Upon successful execution the interpreter:

  • Instantiates an Ara module with the size of the requested Endo slot (currently 1x2 and 2x2 are supported)
  • Imports the antenna component and uses it to populate the PCB of the Ara module
  • Configures the excitation for the antenna
  • Instantiates an Ara Endo and inserts the Ara module into the requested Endo slot
  • Creates a rectilinear FDTD grid for the Ara Endo with the requested resolution and aligned with the antenna feed point
  • Exports the simulation scenario for OpenEMS
  • Schedules the execution of the OpenEMS simulation and the associated directivity or SAR post-processing steps

NOTE: The current version assumes that OpenEMS is installed under the C:\OpenEMS\ directory.

Workflow Parameters

The current version does not require nor handle any special workflow parameters.

RF Interpreter Parameters

This interpreter supports the following parameters:

Parameter Name Value Type Units Description
Frequency real number Hz The center frequency of the excitation signal
Resolution real number mm The target resolution in the Ara Endo vicinity
Slot positive integer - The Ara Endo slot index to be used (see the figure below)
Ara Endo slot indexes
Ara 6x3 Endo slot indeces

Generated Artifacts (Directivity)

Directory/File Path Artifact Tag Description
run_dir_simulation.cmd - Batch file that runs the OpenEMS simulation and postprocessing
openEMS_input.xml - Simulation description for the OpenEMS simulation
nf2ff_input.xml - Simulation description for the postprocessing steps

Generated Artifacts (SAR)

Directory/File Path Artifact Tag Description
run_sar_simulation.cmd - Batch file that runs the OpenEMS simulation and postprocessing
openEMS_input.xml - Simulation description for the OpenEMS simulation
nf2ff_input.xml - Simulation description for the postprocessing steps

The execution of the SAR postprocessing generates the following output files:

Directory/File Path Artifact Tag Description
SAR-X.png CyPhy2RF:SAR:X PNG image with the Y-Z plane cross-sectional cut of the head phantom at the SAR maximum location
SAR-Y.png CyPhy2RF:SAR:Y PNG image with the X-Z plane cross-sectional cut of the head phantom at the SAR maximum location
SAR-Z.png CyPhy2RF:SAR:Z PNG image with the X-Y plane cross-sectional cut of the head phantom at the SAR maximum location

CyPhy2CADBPCB

The CyPhy2CADPCB interpreter allows a user to visualize their model in 3-D by generating either a STEP or STL file based on the layout.JSON file that is created with the CyPhy2Schematic interpreter. The layout.JSON file describes the location of components on a PCB as calculated by EAGLE. However, the origin of components in the EAGLE simulation and the origin in the CAD model may not be the same. This interpreter traverses the model searching for components that have associated CADModels. If a component also has an EDAModel connected to the CADModel, the CAD2EDATransform connection defines the transform needed to align the EDAModel and CADModel's coordinate systems. If a component contains an EDA model and no CAD model, a placeholder cube will be created in the final assembly, with the component length/width dimensions at the coordinates specified in the layout.JSON. Any components without an EDA model are excluded from the final assembly.

The assembly STEP/STL file is generated using FreeCAD. At this time, only the assembly of STEP and STL files are supported. If a component has an EDAModel that has multiple CADModels of varying format associated with it, the interpreter gives preference to the model that matches the format specified in the visualizerType parameter. If the "mix" option is chosen, STEP files are given preference over STL. If multiple CADModels of the same format point to one EDAModel, one is chosen at random. AP203 and AP214 are considered the same format.

The layout.JSON input file that the assembly is based on can be specified in 4 ways:

  • By specifying the path to a previously generated layout.JSON.
  • By locating a previously generated layout.JSON file using a GUI.
  • By using a previously generated layout.JSON that is associated with the current SystemUnderTest.
  • By executing a combined analysis where a PlaceRoute testbench is first executed to generate the layout file, followed by the visualizer program.

The interpreter needs to be executed from a proper testbench with one SystemUnderTest and a Workflow definition. Upon successful execution the interpreter:

  • Generates a JSON file describing each component, including the relative path to the CAD model and CAD2EDATransform data (if applicable).
  • Provides checks for conflicting interpreter workflow parameters.
  • Confirms the existence of the layout.JSON file specified and copies it to the output directory.

If you desire the layout file to be generated by first running the PlaceRoute testbench, the Workflow definition must contain two tasks: one for CyPhy2Schematic and the other for CyPhy2CADPCB. The tasks must be connected FROM CyPhy2Schematic TO CyPhy2CADPCB.

Workflow Parameters

NOTE: If all parameters are left as null, the interpreter defaults to having the user select a layout.JSON via a file browser.

Key Value Type Description
launchVisualizer String If true, once the assembly script has successfully run, a web visualizer will automatically launch and load the generated STEP file.
Not yet implemented - value has no effect on simulation
layoutFilePath String If specified, assembly will be created based on this layout.JSON.
runLayout String If true, a CyPhy2Schematic testbench will first be created using the doPlaceRoute parameter setting prior to executing the assembly script.
useSavedLayout String If true, use a previously generated layout.JSON associated with the testbench's SystemUnderTest. This file should be stored in the project directory's "designs" folder within a subfolder named after the component assembly's design ID.
visualizerType String Specifies the format of the CADModels to be assembled. Supported types include STEP (all STEP models), STL (all STL models), or MIX (a mixture of STEP/STL). If parameter is left as null, the program defaults to "STEP".

Interpreter Parameters

No parameters are used in the CyPhy2CADPCB interpreter. However, if the interpreter is executed with runLayout set to true, the following parameters are supported for the PlaceAndRoute analysis:

Parameter Name Value Type Description Required
boardWidth real number The width (in millimeters) of the area available for components. Required
boardHeight real number The height (in millimeters) of the area available for components. Required

Generated Artifacts

Directory/File Path Artifact Tag Description
CT.JSON - Component information file - specifies path to CAD model and associated CAD-to-EDA-model transforms.
layout.JSON - File describing component locations on PCB as determined by EAGLE.
BoardLayout.step (.stl)- STEP (STL) file of component assembly
BoardLayout.FCStd - FreeCAD native format file of component assembly.

NOTE: An assembly is able to be generated with a mixture of STEP and STL files. However, if any STL files are present, the format of the generated assembly will be STL. Due to this, the launchVisualizer workflow parameter will be disregarded.