Using Spreadsheet

8Core_Spreadsheet_All_Features

Browsable image of the model.

  • To download OpenWebStart click on the links -
    Windows- Compatibility:Windows 10 or higher (*)
    macOS - Compatibility:macOS 10.15 (Catalina) or higher (*)
    Linux - Compatibility:Ubuntu 18.04 LTS or higher (*)
  • For an executable version,
  • Mouse over the icons to view parameters. Click on hierarchy and plotters to reveal content (if provided).
  • To simulate, click on Launch button, open downloaded file and click Run on the Java Security Page.
_8Core_Spreadsheet_All_Featuresmodel <h2>TextDisplay</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>rowsDisplayed</td><td>10</td><td>10</td></tr><tr><td>columnsDisplayed</td><td>40</td><td>40</td></tr><tr><td>suppressBlankLines</td><td>false</td><td>false</td></tr><tr><td>title</td><td>&quot;Process Element Statistics&quot;</td><td>&quot;Process Element Statistics&quot;</td></tr><tr><td>ViewText</td><td>true</td><td>true</td></tr><tr><td>saveText</td><td>false</td><td>false</td></tr><tr><td>fileName</td><td>Enter Filename to save text</td><td>&quot;Enter Filename to save text&quot;</td></tr><tr><td>Append_Time</td><td>true</td><td>true</td></tr></table> <h2>Traffic</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Data_Structure_Name</td><td>&quot;Header&quot;</td><td>&quot;Header&quot;</td></tr><tr><td>Start_Time</td><td>0.0</td><td>0.0</td></tr><tr><td>Mean_Time</td><td>700.0</td><td>700.0</td></tr><tr><td>Spread_Time</td><td>2.0</td><td>2.0</td></tr><tr><td>Random_Seed</td><td>123457L</td><td>123457L</td></tr><tr><td>Time_Distribution</td><td>Fixed (Mean)</td><td>Fixed (Mean)</td></tr></table> <h2>Database</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>*.xml, *.csv files abs or rel (./) path\\n  -- *.csv real columns set to number\\nInput_Fields == Lookup_Fields (num, type)\\nOutput_Expr: match, match_last, match_all\\n  -- match_all.field not allowed</td><td>*.xml, *.csv files abs or rel (./) path\\n  -- *.csv real columns set to number\\nInput_Fields == Lookup_Fields (num, type)\\nOutput_Expr: match, match_last, match_all\\n  -- match_all.field not allowed</td></tr><tr><td>Linking_Name</td><td>&quot;MyDatabase&quot;</td><td>&quot;MyDatabase&quot;</td></tr><tr><td>fileOrURL</td><td>Dual_Core_Task.csv</td><td>&quot;Dual_Core_Task.csv&quot;</td></tr><tr><td>Data_Structure_Text</td><td>/* Text Template or File Path.       \\n   First row contains Field Names. */\\n     ID  MyStr  MyInt  MyDbl         \\n      0  Str_1    1     1.0    /* DS 1 */\\n      1  Str_2    2     2.0    /* DS 2 */\\n      2  Str_3    3     3.0    /* DS 3 */\\n      3  Str_4    4     4.0    /* DS 4 */\\n      4  Str_5    5     5.0    /* DS 5 */\\n</td><td>/* Text Template or File Path.       \\n   First row contains Field Names. */\\n     ID  MyStr  MyInt  MyDbl         \\n      0  Str_1    1     1.0    /* DS 1 */\\n      1  Str_2    2     2.0    /* DS 2 */\\n      2  Str_3    3     3.0    /* DS 3 */\\n      3  Str_4    4     4.0    /* DS 4 */\\n      4  Str_5    5     5.0    /* DS 5 */\\n</td></tr><tr><td>Input_Fields</td><td>&quot;Name&quot;</td><td>&quot;Name&quot;</td></tr><tr><td>Lookup_Fields</td><td>&quot;Name&quot;</td><td>&quot;Name&quot;</td></tr><tr><td>Output_Expression</td><td>&quot;output = match&quot; /* FORMAT output = match.fieldb */</td><td>&quot;output = match&quot;</td></tr><tr><td>Mode</td><td>Read</td><td>Read</td></tr></table> <h2>8Core_Spreadsheet_Model</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>SimTime</td><td>SimTime</td><td>3600.0</td></tr><tr><td>Processor_Speed_Mhz</td><td>1.0E-06</td><td>1.0E-6</td></tr><tr><td>Bus_Speed_Mhz</td><td>1.0E-06</td><td>1.0E-6</td></tr><tr><td>Memory_Speed_Mhz</td><td>1.0E-06</td><td>1.0E-6</td></tr><tr><td>Database_Reference</td><td>&quot;MyDatabase&quot;</td><td>&quot;MyDatabase&quot;</td></tr><tr><td>Animate_Block_Diagram</td><td>true</td><td>true</td></tr><tr><td>Trace_Tasks</td><td>true</td><td>true</td></tr></table> <h2>VariableList</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>Memory_Init_Text</td><td>/* Memory Initialize Template          \\nName          Type      Value             */\\nTask_List     global    {&quot;Main&quot;,&quot;Hit&quot;,&quot;Miss&quot;} ;\\nProc_List     global    {&quot;Core_1&quot;,&quot;Core_2&quot;}   ;\\nBus_List      global    {&quot;Bus_1&quot;}             ;\\nMem_List      global    {&quot;Mem_1&quot;,&quot;Mem_2&quot;}     ;</td><td>/* Memory Initialize Template          \\nName          Type      Value             */\\nTask_List     global    {&quot;Main&quot;,&quot;Hit&quot;,&quot;Miss&quot;} ;\\nProc_List     global    {&quot;Core_1&quot;,&quot;Core_2&quot;}   ;\\nBus_List      global    {&quot;Bus_1&quot;}             ;\\nMem_List      global    {&quot;Mem_1&quot;,&quot;Mem_2&quot;}     ;</td></tr></table> <h2>Latency_Plotter</h2><table border="1"><tr><td><b>Parameter</b></td><td><b>Expression</b></td><td><b>Value</b></td></tr><tr><td>Block_Documentation</td><td>Enter User Documentation Here</td><td>Enter User Documentation Here</td></tr><tr><td>fillOnWrapup</td><td>true</td><td>true</td></tr><tr><td>legend</td><td>Task</td><td>Task</td></tr><tr><td>startingDataset</td><td>0</td><td>0</td></tr><tr><td>fileName</td><td>Latency.plt</td><td>&quot;Latency.plt&quot;</td></tr><tr><td>viewPlot</td><td>true</td><td>true</td></tr><tr><td>savePlot</td><td>false</td><td>false</td></tr></table>

Integration Framework: Autosar Virtual Functional Bus Using a Spreadsheet Modeler 2009-01-1684

The design of automotive architectures has become a complex and time consuming process with automotive designers spending more time on the modeling infrastructure and less time on creating innovative products. Concurrent interactions between Electronic Control Units (ECU's) and the communications network can cloud overall analysis of an entire system. For many years it has been relatively easy to add the necessary system level details to get better results. Standardizing common modeling elements, such as the AUTomotive Open System Architecture (AUTOSAR) - Virtual Functional Bus (VFB1), has been a positive step towards adding complex components. This paper takes the AUTOSAR VFB one step further from the perspective of abstracting essential system details into Spreadsheets. It comprises the logic and flow of the modeling components to speed up model construction while retaining accuracy. Readers not familiar with the AUTOSAR methodology can refer to the first web reference for more background information.

This methodology could be extended to ECU's and other components to provide designers with the ability to plug-n-play different topologies using spreadsheets as the primary model input. Software can be contained in C code graphical blocks at the model level, triggering Internal Modeling Blocks. It captures Communication Network Topology, Resource Utilization, Timing Latency, Power, etc. that reflect the AUTOSAR VFB components. Making a model simpler involves deleting what is not essential information? and looking at the entire modeling infrastructure to see what information is essential to obtain accurate results for:

Allocation of ECU functions

Communication bandwidths

Timing constraints

Reliability considerations

This paper will examine such a methodology, where it will take only one spreadsheet cell to process a transaction on a bus, or ECU processing element. Additional spreadsheet cells provide the necessary logic and expressions only when needed. Separate resource spreadsheets make it easier to maintain and modify the overall configuration. As a result, automotive designers will be able to spend more time on a new design, less time on the modeling infrastructure and create higher quality products.