Metadata-Version: 2.1
Name: pysysq
Version: 0.0.3
Summary: A system functional flow simulation framework using Queuing Theory
Author-email: Ajith Padman <ajith.padman@gmail.com>
License: MIT License
        
        Copyright (c) [year] [fullname]
        
        Permission is hereby granted, free of charge, to any person obtaining a copy
        of this software and associated documentation files (the "Software"), to deal
        in the Software without restriction, including without limitation the rights
        to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
        copies of the Software, and to permit persons to whom the Software is
        furnished to do so, subject to the following conditions:
        
        The above copyright notice and this permission notice shall be included in all
        copies or substantial portions of the Software.
        
        THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
        IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
        FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
        AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
        LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
        OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
        SOFTWARE.
        
Project-URL: Homepage, https://github.com/ajithpadman/PysysQ
Project-URL: Issues, https://github.com/ajithpadman/PysysQ/issues
Classifier: Development Status :: 3 - Alpha
Classifier: Programming Language :: Python :: 3
Classifier: License :: OSI Approved :: MIT License
Classifier: Operating System :: OS Independent
Classifier: Programming Language :: Python :: 3.10
Requires-Python: >=3.10
Description-Content-Type: text/markdown
License-File: LICENSE
Requires-Dist: contourpy >=1.2.0
Requires-Dist: cycler >=0.12.1
Requires-Dist: fonttools >=4.49.0
Requires-Dist: Jinja2 >=3.1.3
Requires-Dist: kiwisolver >=1.4.5
Requires-Dist: markdown-it-py >=3.0.0
Requires-Dist: MarkupSafe >=2.1.5
Requires-Dist: matplotlib >=3.8.3
Requires-Dist: mdurl >=0.1.2
Requires-Dist: numpy >=1.26.4
Requires-Dist: packaging >=23.2
Requires-Dist: pandas >=2.2.1
Requires-Dist: pillow >=10.2.0
Requires-Dist: Pygments >=2.17.2
Requires-Dist: pyparsing >=3.1.1
Requires-Dist: PySide2 >=5.15.2.1
Requires-Dist: python-dateutil >=2.9.0.post0
Requires-Dist: pytz >=2024.1
Requires-Dist: rich >=13.7.1
Requires-Dist: shiboken2 >=5.15.2.1
Requires-Dist: six >=1.16.0
Requires-Dist: tzdata >=2024.1
Requires-Dist: XlsxWriter >=3.2.0

# PySysQ
PySysQ is a python package helping to implement discrete event simulations based on queueing theory.
The package provides the following elements to create a simulation

## Simulation Elements

### 1. SQSimulator
SQSimulator composes all the simulation elements and creates relationship between them.
SQSimulator runs the simulation event loop.Each loop is counted as a single simulation time tick.
#### Properties
- `max_sim_time`: Maximum number of loops the simulator will run.
- `time_step`: the delay in seconds between two simulation loops.

### 2. SQClock
SQClock is a simulation object that ticks at specific interval on the simulation loops. 
Other Simulation Objects can make use of the SQClock object to generate self clock timing.
The Simulation objects using the same clock object as their clock source will be operating in a synchronous manner.
#### Properties
- `clk_divider`: the delay in seconds between two clock ticks with respect to the simulation loops.

### 3. SQPacketGenerator
SQPacketGenerator is a simulation object that generates packets at specific interval on the simulation loops.
#### Properties
- `clk`: clock for timing packet generation.
- `output_q`: the queue to which the generated packets will be pushed.
- `helper`: the helper class is an object of SQPktGenHelper class.
  - ##### SQPktGenHelper
  - The SQPktGenHelper class is a helper class for SQPacketGenerator.
    The class provides the following methods to help the packet generation process.
    - `generate_pkts()`: generates  packets and keeps own pushing one packet per clock tick to output queue.
