FOSSEE Fellowship 2020 EDA Tool on Cloud

From Fundamental Research Group
Jump to: navigation, search

General Information

  • Given below are the list of screening tasks for the FOSSEE Felllowship 2020 under the project of EDA Tool on Cloud
  • At any given time participants are allowed to work on two screening tasks. But we recommend you to focus on one screening tasks and complete it successfully.
  • See the Submission procedure section for more details
  • The selection will be purely based on the evaluation criteria.
  • Also note, you can use any of the open source libraries/technologies and attribute them appropriately based on the licence.
  • Join our chat room on Chat gitter.png to chat with us regarding any clarification or issues.
  • You can also email us at frg@cse.iitb.ac.in

FOSSEE Fellowship
Fossee.png
Indian Institute of
Technology Bombay

www.iitb.ac.in


Registrationlink
Important Dateslink
Submissions onMoodle


Contents

Screening Task 1: Scaling ngspice on the Cloud

Description

ngspice (http://ngspice.sourceforge.net/) is an open source mixed-mode mixed-signal spice simulator for electric and electronic circuits. When used on a local machine for simulations, a user expects a certain time needed for simulations, which is based on the size of netlist (circuit size) and what simulations are to be performed. Now, if we want the same ngspice to be used as a backend server for servicing thousands of such requests, each simulating a separate netlist circuit file, we need to scale ngspice on the server so that the users do not experience a long wait time.

Design and develop a Django app to handle asynchronous requests (netlist files) from the client by uploading a batch of netlist files which are then handled/processed using distributed queueing mechanism available in celery (http://www.celeryproject.org/). The system should make use of concurrency in multi-core machines. The app should demonstrate asynchronous non-blocking mechanism.

Technical Skills

  • Django and REST framework
  • Celery distributed task queueing
  • Python
  • MySQL
  • Angular(front-end)
  • Knowledge of ngspice simulator

Submission Procedure

  • Record a demo by creating either a video, screencast, or animated gif of your working project.
  • Create a private repository on GitHub (https://github.com/) and upload your project along with the demo video/animation.
  • Add 'fresearchgroup' as a collaborator in your repository.
  • We recommend that you regularly push your code to git. If you are new to git, please refer to the tutorial link given below: (https://spoken-tutorial.org/tutorial-search/?search_foss=Git&search_language=English)
  • Once you are done with the project and you intend submitting, tag a release. Note down the release URL and submit the release URL on moodle. The release URL would be similar to: https://github.com/<your username>/<your project name>/releases/tag/v1.3
  • Please note that submissions of public repositories will not be considered.

Evaluation criteria

  • Modular design
  • Clear design and documentation
  • Clear separation of backend and frontend.
  • API-based design
  • Creativity in component layout
  • Coding style
  • Inclusion of Unit test cases
  • Reusable code Clear documentation


Screening Task 2: Reading Component Symbol Library files and Rendering in the Browser

Description

Each electrical/electronic component is represented schematically using the .lib file and .dcm file.

.lib file: .lib files contain the component symbol definitions and graphic element (drawing section) descriptions. For the detailed file format for component description, please refer the file formats available at (pdf). Look at section 2 (Schematics Libraries Files Format). You may also go through the description for component symbol library (KiCAD Library Formats) available at https://www.compuphase.com/electronics/LibraryFileFormats.pdf

.dcm file: .dcm file stores the component names and descriptions and a link to the individual component datasheets for ready reference.

The data in the form of files are available at https://kicad.github.io/symbols/ Alternatively, all the KiCAD symbol files are available on GitHub with a meta file named sym-lib-table at https://github.com/KiCad/kicad-symbols

Design and implement a complete web-based system containing the following subsystems:

  • Back-end: Implement components in Django to read the library symbols in to an appropriate data structures.
  • Front-end: Implement a mechanism to display the symbols in an SVG format along with their specific names. Mechanisms could be in the form of a dropdown based on generic components, and based on the selection, it should provide dropdown for specific components.

Technical Skills

  • Django and REST framework
  • Celery distributed task queueing
  • Python
  • MySQL
  • Angular (front-end)
  • Knowledge of basic electronic circuits

Submission Procedure

  • Record a demo by creating either a video, screencast, or animated gif of your working project.
  • Create a private repository on GitHub (https://github.com/) and upload your project along with the demo video/animation.
  • Add 'fresearchgroup' as a collaborator in your repository.
  • We recommend that you regularly push your code to git. If you are new to git, please refer to the tutorial link given below: (https://spoken-tutorial.org/tutorial-search/?search_foss=Git&search_language=English)
  • Once you are done with the project and you intend submitting, tag a release. Note down the release URL and submit the release URL on moodle. The release URL would be similar to: https://github.com/<your username>/<your project name>/releases/tag/v1.3
  • Please note that submissions of public repositories will not be considered.

Evaluation criteria

  • Modular design
  • Clear design and documentation
  • Clear separation of backend and frontend.
  • API-based design
  • Creativity in component layout
  • Coding style
  • Inclusion of Unit test cases
  • Reusable code Clear documentation


Screening Task 3: Schematic Editor generating Intermediate Netlist XML file

Description

Design and develop a web-based schematic editor for designing electrical/electronic circuits. The frontend interface should allow a user to drag-and-drop various components on the grid matrix. It should allow the user to connect components using virtual wires. Various websites offer this facility, you may look at circuitlab (https://www.circuitlab.com/), partsim (https://www.partsim.com/simulator), multisim (https://www.multisim.com/), etc. It should allow the user to annotate all such components dropped on the grid with names and values. The system should be able to generate intermediate netlist .xml file. The document (https://docs.kicad-pcb.org/5.1.5/en/eeschema/eeschema.pdf) describes the general netlist file structure in section 15.5.1.

Technical Skills

  • Django and REST framework
  • Celery distributed task queueing
  • Python
  • MySQL
  • Angular (front-end)
  • Knowledge of basic electronic circuits

Submission Procedure

  • Record a demo by creating either a video, screencast, or animated gif of your working project.
  • Create a private repository on GitHub (https://github.com/) and upload your project along with the demo video/animation.
  • Add 'fresearchgroup' as a collaborator in your repository.
  • We recommend that you regularly push your code to git. If you are new to git, please refer to the tutorial link given below: (https://spoken-tutorial.org/tutorial-search/?search_foss=Git&search_language=English)
  • Once you are done with the project and you intend submitting, tag a release. Note down the release URL and submit the release URL on moodle. The release URL would be similar to: https://github.com/<your username>/<your project name>/releases/tag/v1.3
  • Please note that submissions of public repositories will not be considered.

Evaluation criteria

  • Modular design
  • Clear design and documentation
  • Clear separation of backend and frontend.
  • API-based design
  • Creativity in component layout
  • Coding style
  • Inclusion of Unit test cases
  • Reusable code Clear documentation


Screening Task 4: Intermediate Netlist XML structure to Netlist Generator

Description

Design and develop a converter to generate electric circuit Netlist compatible with ngspice simulator (http://ngspice.sourceforge.net/ngspice-tutorial.html) from Intermediate XML file structure.

The document (https://docs.kicad-pcb.org/5.1.5/en/eeschema/eeschema.pdf) describes the general netlist file structure in section 15.5.1.

Design and implement a web-based system containing the following subsystems:

  • Back-end: Implement components in Django to accept the Intermediate Netlist XML files and convert it to ngspice Netlist.
  • Front-end: Upload an Intermediate Netlist files and display the converted (at the backend) netlist file in the browser.

Technical Skills

  • Django and REST framework
  • Celery distributed task queueing
  • Python
  • MySQL
  • Angular (front-end)
  • Knowledge of basic electronic circuits

Submission Procedure

  • Record a demo by creating either a video, screencast, or animated gif of your working project.
  • Create a private repository on GitHub (https://github.com/) and upload your project along with the demo video/animation.
  • Add 'fresearchgroup' as a collaborator in your repository.
  • We recommend that you regularly push your code to git. If you are new to git, please refer to the tutorial link given below: (https://spoken-tutorial.org/tutorial-search/?search_foss=Git&search_language=English)
  • Once you are done with the project and you intend submitting, tag a release. Note down the release URL and submit the release URL on moodle. The release URL would be similar to: https://github.com/<your username>/<your project name>/releases/tag/v1.3
  • Please note that submissions of public repositories will not be considered.

Evaluation criteria

  • Modular design
  • Clear design and documentation
  • Clear separation of backend and frontend.
  • API-based design
  • Creativity in component layout
  • Coding style
  • Inclusion of Unit test cases
  • Reusable code Clear documentation


Screening Task 5: Electrical/Electronic Component Library

Description

Design and develop a web-based electrical/electronic device library management for storing datasheets of such devices. The frontend interface should allow a user to input devices with their parameters and a symbol picture for each device. Design appropriate Django models to handle storage and retrieval. Various websites (circuitlab -> https://www.circuitlab.com/, partsim -> https://www.partsim.com/simulator, multisim -> https://www.multisim.com/, etc.) have this facility which are not used by normal users, but by domain experts of the system. Look at what components they have and come up with a wider category of such components. Look at datsheets.com (https://www.datasheets.com/) for searching datasheets of various electronic components.

Technical Skills

  • Django and REST framework
  • Celery distributed task queueing
  • Python
  • MySQL
  • Angular JS (front-end)
  • Knowledge of basic electronic circuits

Submission Procedure

  • Record a demo by creating either a video, screencast, or animated gif of your working project.
  • Create a private repository on GitHub (https://github.com/) and upload your project along with the demo video/animation.
  • Add 'fresearchgroup' as a collaborator in your repository.
  • We recommend that you regularly push your code to git. If you are new to git, please refer to the tutorial link given below: (https://spoken-tutorial.org/tutorial-search/?search_foss=Git&search_language=English)
  • Once you are done with the project and you intend submitting, tag a release. Note down the release URL and submit the release URL on moodle. The release URL would be similar to: https://github.com/<your username>/<your project name>/releases/tag/v1.3
  • Please note that submissions of public repositories will not be considered.

Evaluation criteria

  • Modular design
  • Clear design and documentation
  • Clear separation of backend and frontend.
  • API-based design
  • Creativity in component layout
  • Coding style
  • Inclusion of Unit test cases
  • Reusable code Clear documentation


Screening Task 6: Simulating Electric Circuits and Displaying Waveforms Graphically

Description

Design and develop a web-based system for displaying simulation waveforms graphically. You have to choose at least 3 circuit examples of different complexity (simple, medium, complex). The netlist file should be manually made for such circuits with various simulation parameters. The system should be able to simulate waveforms graphically, based on DC Sweep, Time-Domain, Frequency-Domain, etc. You should use ngspice as a backend simulator for querying and generating such waveforms.


The web-based system should contain the following subsystems: 1. Back-end: Implement components in Django to call ngspice with the netlist file and accept results from the ngspice based on simulation parameters. 2. Front-end: Upload an Intermediate Netlist files and display appropriate waveforms (DC Sweep, Time-Domain, Frequency-Domain, etc) in the browser.

Libraries for drawing graphs:

Technical Skills

  • Django and REST framework
  • Celery distributed task queueing
  • Python
  • MySQL
  • Angular (front-end)
  • Knowledge of basic electronic circuits

Submission Procedure

  • Record a demo by creating either a video, screencast, or animated gif of your working project.
  • Create a private repository on GitHub (https://github.com/) and upload your project along with the demo video/animation.
  • Add 'fresearchgroup' as a collaborator in your repository.
  • We recommend that you regularly push your code to git. If you are new to git, please refer to the tutorial link given below: (https://spoken-tutorial.org/tutorial-search/?search_foss=Git&search_language=English)
  • Once you are done with the project and you intend submitting, tag a release. Note down the release URL and submit the release URL on moodle. The release URL would be similar to: https://github.com/<your username>/<your project name>/releases/tag/v1.3
  • Please note that submissions of public repositories will not be considered.

Evaluation criteria

  • Modular design
  • Clear design and documentation
  • Clear separation of backend and frontend.
  • API-based design
  • Creativity in component layout
  • Coding style
  • Inclusion of Unit test cases
  • Reusable code Clear documentation


Screening Task 7: Displaying Characteristic graphs for a Transistor

Description

Design and develop a web-based Django system based on the transistor datasheets and plot the below characteristics graphs:

  1. Static Characteristics
  2. Transfer Characteristics
  3. DC Current Gain
  4. Base-Emitter Saturation Voltage Collector-Emitter Saturation Voltage
  5. Output Capacitance
  6. Current Gain Bandwidth Product

This should work for any transistor based on the datasheet inputs.

Technical Skills

  • Django and REST framework
  • Celery distributed task queueing
  • Python
  • MySQL
  • Angular (front-end)
  • Knowledge of basic electronic circuits

Submission Procedure

  • Record a demo by creating either a video, screencast, or animated gif of your working project.
  • Create a private repository on GitHub (https://github.com/) and upload your project along with the demo video/animation.
  • Add 'fresearchgroup' as a collaborator in your repository.
  • We recommend that you regularly push your code to git. If you are new to git, please refer to the tutorial link given below: (https://spoken-tutorial.org/tutorial-search/?search_foss=Git&search_language=English)
  • Once you are done with the project and you intend submitting, tag a release. Note down the release URL and submit the release URL on moodle. The release URL would be similar to: https://github.com/<your username>/<your project name>/releases/tag/v1.3
  • Please note that submissions of public repositories will not be considered.

Evaluation criteria

  • Modular design
  • Clear design and documentation
  • Clear separation of backend and frontend.
  • API-based design
  • Creativity in component layout
  • Coding style
  • Inclusion of Unit test cases
  • Reusable code Clear documentation


Personal tools
Namespaces

Variants
Actions
Forum Menu
Navigation
Toolbox