Code Monkey home page Code Monkey logo

kunalg123 / vsdflow Goto Github PK

View Code? Open in Web Editor NEW
148.0 32.0 56.0 13.39 MB

VSDFLOW is an automated solution to programmers, hobbyists and small scale semiconductor technology entrepreneurs who can craft their ideas in RTL language, and convert the design to hardware using VSD (RTL-to-GDS) FLOW. VSDFLOW is completely build using OPHW tools, where the user gives input RTL in verilog. From here on the VSDFLOW takes control, RTL is synthesized (using Yosys). The synthesized netlist is given to PNR tool (Qflow) and finally Sign-off is done with STA tool (using Opentimer). The output of the flow is GDSII layout and performance & area metrics of your design. VSDFLOW also provide hooks at all stages for users working at different levels of design flow. It is tested for 30k instance count design like ARM Cortex-M0, and can be further tested for multi-million instance count using hierarchical or glue logic.

License: Apache License 2.0

Shell 6.97% Verilog 68.42% Tcl 24.61%

vsdflow's Introduction

Steps to install and run on UBUNTU:
1) sudo apt-get install git
2) git clone https://github.com/kunalg123/vsdflow.git
3) cd vsdflow
4) chmod 777 opensource_eda_tool_install.sh
5) ./opensource_eda_tool_install.sh 
**NOTE for freshers : This has been tested on a fresh UBUNTU installtion
**NOTE for experienced UNIX users : It has lot of sudo apt-get and sudo remove commands, so you might want to review before running
6) ./vsdflow spi_slave_design_details.csv
7) ./vsdflow picorv32_design_details.csv

Steps to install and run on CENTOS:
First login as root using below command (IMPORTANT)
su -
Then follow below steps
1) sudo yum install git
2) git clone https://github.com/kunalg123/vsdflow.git
3) cd vsdflow
4) chmod 777 opensource_eda_tool_install_centos.sh
5) sudo ./opensource_eda_tool_install_centos.sh 
**NOTE for freshers : This has been tested on a fresh CENTOS 7 installtion
**NOTE for experienced UNIX users : It has lot of sudo yum commands, so you might want to review before running
6) ./vsdflow spi_slave_design_details.csv
7) ./vsdflow picorv32_design_details.csv

Steps to test 'vsdflow' on Ubuntu and CENTOS:
1) cd outdir_spi_slave
2) qflow display spi_slave

List of Tools installed:
1) Yosys - RTL Synthesis
2) blifFanout - High fanout net (HFN) synthesis
3) graywolf - Placement
4) qrouter - Detailed routing
5) magic - VLSI Layout tool
6) netgen - LVS
7) OpenTimer and OpenSTA - Static timing analysis tool

'vsdflow' is also the best utility ever written for learning EDA based TCL scripting...Very hard to find a tool, with its detailed explanation in form of videos. 'vsdflow' is explained (in detail) in below 2 TCL scripting courses, so you might want to have a look:

TCL scripting part 1:
https://www.udemy.com/vsd-tcl-programming-from-novice-to-expert/

TCL scripting part 2:
https://www.udemy.com/vsd-tcl-programming-from-novice-to-expert-part-2/

This course has gone to a level, where I have heard managers in VLSI industries asking their team to learn TCL only through this course and 'vsdflow'.

VSDFLOW  is  an  automated  solution  to  programmers, hobbyists and small scale semiconductor technology entrepreneurs who can craft their ideas in RTL language, and convert the design to hardware using VSD (RTL-to-GDS) FLOW. VSDFLOW  is  completely  build  using OPHW tools, where the user gives input RTL in verilog. From here on the VSDFLOW takes control, RTL is synthesized (using Yosys).

The synthesized netlist is given to PNR tool (Qflow) and finally Sign-off is done with STA tool (using Opentimer). The output of the flow is GDSII layout and performance & area metrics of your design. VSDFLOW also provide hooks at all stages for users working at different levels of design flow. It is tested for 30k instance count design like ARM Cortex-M0, RISC-V picorv32, and can be further tested for multi-million instance count using hierarchical or glue logic.

Some background about VLSI backend is needed for to understand 'vsdflow' operations, so here are 3 important courses: (check with your interviewer and they might recommend these courses):

Physical design flow:
https://www.udemy.com/vlsi-academy-physical-design-flow/

Static timing analysis - Part 1:
https://www.udemy.com/vlsi-academy-sta-checks/

Static timing analysis - Part 2:
https://www.udemy.com/vlsi-academy-sta-checks-2/

There you go...Write your first TCL script, learn it from basics to advanced to expert level, apply it from EDA perspective, and you are good to go for your job or interviews....

All the best and happy learning

vsdflow's People

Contributors

kunalg123 avatar pramitpal avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

vsdflow's Issues

opensource_eda_tool_install.sh leads to broken Ubuntu sources - PPA

From opensource_eda_tool_install.sh file:
sudo add-apt-repository ppa:saltmakrell/ppa -y

This PPA does not exist, or does not work with modern Ubuntu version. I have 20.10 (Groovy Gorilla), and end up with this problem from apt:

sudo apt-get update
[sudo] password for billt:
Hit:1 http://us.archive.ubuntu.com/ubuntu groovy InRelease
Hit:3 http://security.ubuntu.com/ubuntu groovy-security InRelease
Hit:4 http://us.archive.ubuntu.com/ubuntu groovy-updates InRelease
Hit:5 http://us.archive.ubuntu.com/ubuntu groovy-backports InRelease
Hit:6 https://dl.winehq.org/wine-builds/ubuntu groovy InRelease
Hit:7 http://ppa.launchpad.net/kicad/kicad-5.1-releases/ubuntu groovy InRelease
Get:8 https://download.docker.com/linux/ubuntu groovy InRelease [27.4 kB]
Hit:2 https://apt.llvm.org/xenial llvm-toolchain-xenial-6.0 InRelease
Hit:9 http://ppa.launchpad.net/kicad/kicad-dev-nightly/ubuntu groovy InRelease
Hit:10 https://repos.codelite.org/wx3.1.4/ubuntu groovy InRelease
Ign:11 http://ppa.launchpad.net/saltmakrell/ppa/ubuntu groovy InRelease
Hit:12 http://ppa.launchpad.net/ubuntu-toolchain-r/test/ubuntu groovy InRelease
Err:13 http://ppa.launchpad.net/saltmakrell/ppa/ubuntu groovy Release
404 Not Found [IP: 91.189.95.85 80]
Reading package lists... Done
E: The repository 'http://ppa.launchpad.net/saltmakrell/ppa/ubuntu groovy Release' does not have a Release file.
N: Updating from such a repository can't be done securely, and is therefore disabled by default.
N: See apt-secure(8) manpage for repository creation and user configuration details.

What things are expected to come from the saltmakrell ppa, and what other sources might I get them from?

unable to fix error in lvs

Run parallel Netgen with 'mpirun -np xy netgen'
optfile ./ng.opt does not exist - using default values
togl-version : 2
OCC module loaded
ERROR: This operation needs a mesh
errinfo: This operation needs a mesh
while executing
"Ng_ExportMesh $file $exportfiletype"
invoked from within
".#ngmenu.#ngmenu#file invoke active"
("uplevel" body line 1)
invoked from within
"uplevel #0 [list $w invoke active]"
(procedure "tk::MenuInvoke" line 50)
invoked from within
"tk::MenuInvoke .#ngmenu.#ngmenu#file 1"
(command bound to event)
Thank you for using NETGEN
netgen failure: No file comp.out.
Premature exit.
Synthesis flow stopped due to error condition.

old version of netgen causing LVS in Qflow gui to be unsuccessful

in the eda installation file i.e .sh file ,the netgen version is old and is causing issues when used with qflow.This should be changed to 133 rather than 100 (Version number) i.e a .deb file should be there instead of untaring an old version.
qflow usually calls netgen but when i install latest version it is called as netgen-lvs ! rather then netgen Can anyone solve this?

STA failing

after running post STA failing without any log file creation

The vsdflow in the example stuck at last line "Info: Initializing number of threads, libraries, sdc, verilog netlist path... " Directory not getting created





***          ***      *************     ***        ****  *************        *******      ****   ****    ****      ****      *************
 ***        ***       ***************   ***       ****   ***************       ******      ****    ****   ****      ****      *************
  ***      ***                 ******   ***       ****            ******       ******      ****     ****  ****      ****      ****     ****
   ***    ***                   *****   ***      ****              *****       ******      ****      **** ****      ****      ****     ****
    ***  ***          ***************   ***********      ***************       ******      ****       ********      ****      ****     ****
     ******             ***********     **********         ***********         ******      ****        *******      ****      ****     ****

                    An unique User Interface (UI) that will take RTL netlist & SDC constraints as an input, and will generate
                    sythnesized netlist & pre-layout timing report as an output. It uses Yosys open-source tool for synthesis
                                            and Opentimer to generate pre-layout timing reports.

                                    Developed and Maintained by VLSI System Design Corporation Pvt. Ltd.
                                   For any queries and bugs, please drop a mail to [email protected]

                                             ********* A vlsisystemdesign.com initiative *********

-------------- Below settings will ensure the correct behavior of vsdsynth -------------------
-----Please review below settings with VSD team or drop an email to [email protected]

Set your technology using variable "tech_name"
Setting technology to osu018
This is the place where all procs are located
Setting variable 'proc_dir' to procs

tcl_precision specifies the number of digits to generate when converting floating point values to strings
Setting variable 'tcl_precision' to 3

Set run_synthesis variable to '1' if you want to run synthesis. If you want to use the.prelayout.timing.rpt of previous runs. which is stored in outdir_, set this variable to '0' to skip synthesis and jump to STA
Setting variable 'run_synthesis' to 1

Set generate_sdc to '1' if you want to generate SDC from data given in excel sheet. If you already have sdc, save it in outdir_ as .sdc and set this variable to '0'
Setting variable 'generate_sdc' to 1

Set enable_prelayout_timing to '1' for running STA with zero-wire load parasitics. If you have generated spef, set this variable to '0'
Setting variable 'enable_prelayout_timing' to 1

Set do_STA to '1' if you want to run STA after synthesis. Else, set this variable to '0'
Setting variable 'do_STA' to 1

Set generate_report to '1' if you want to generate QOR of your design. Else, set this variable to '0'
Setting variable 'generate_report' to 0

If generate_report is '1', there are currently 2 kinds of reporting format we provide. If you need horizontal reporting, set generate_horizontal_report to '1'
Setting variable 'generate_horizontal_report' to 1

If generate_report is '1', there are currently 2 kinds of reporting format we provide. If you need vertical reporting, set generate_horizontal_report to '1'
Setting variable 'generate_vertical_report' to 1

If run_place_and_route is '1', it will run placement and routing
Setting variable 'run_place_and_route' to 1

Info: Setting Design Name as 'spi_slave'

Info: Setting Output Directory as 'outdir_spi_slave'

Info: Setting Netlist Directory as 'verilog'

Info: Setting Early Library Path as '/usr/local/share/qflow/tech/osu018/osu018_stdcells.lib'

Info: Setting Late Library Path as '/usr/local/share/qflow/tech/osu018/osu018_stdcells.lib'

Info: Setting Constraints File as 'spi_slave_design_constraints.csv'

Info: Below are the list of initial variables and their values. User can use these variables for further debug. Use 'puts ' command to query value of below variables
DesignName = spi_slave
OutputDirectory = /home/rakesh/vsd/vsdflow/outdir_spi_slave
NetlistDirectory = /home/rakesh/vsd/vsdflow/verilog
EarlyLibraryPath = /usr/local/share/qflow/tech/osu018/osu018_stdcells.lib
LateLibraryPath = /usr/local/share/qflow/tech/osu018/osu018_stdcells.lib
ConstraintsFile = /home/rakesh/vsd/vsdflow/spi_slave_design_constraints.csv

Info: Early cell library found in path /usr/local/share/qflow/tech/osu018/osu018_stdcells.lib

Info: Late cell library found in path /usr/local/share/qflow/tech/osu018/osu018_stdcells.lib

Info: Output directory found in path /home/rakesh/vsd/vsdflow/outdir_spi_slave

Info: RTL netlist directory found in path /home/rakesh/vsd/vsdflow/verilog

Info: Constraints file found in path /home/rakesh/vsd/vsdflow/spi_slave_design_constraints.csv

Info: Dumping SDC constraints for spi_slave

Info-SDC: Working on clock constraints.....

Info-SDC: Working on IO constraints.....

Info-SDC: Categorizing input ports as bits and bussed

Info-SDC: Working on IO constraints.....

Info-SDC: Categorizing output ports as bits and bussed

Info: SDC created. Please use constraints in path /home/rakesh/vsd/vsdflow/outdir_spi_slave/spi_slave.sdc

Starting synthesis using qflow

Synthesis finished without errors

Please review log file "/home/rakesh/vsd/vsdflow/outdir_spi_slave/log/synth.log" for errors/warnings

Info: Please find the synthesized netlist for spi_slave at below path. You can use this netlist for STA or PNR

/home/rakesh/vsd/vsdflow/outdir_spi_slave/synthesis/spi_slave_synth.rtlbb.v

Info: Pre-layout STA started

Info: Timing Analysis Started....

Info: Initializing number of threads, libraries, sdc, verilog netlist path...

Info: enable_prelayout_timing is 1. Enabling zero-wire load parasitics

Info: Timing Analysis Started....

Info: Initializing number of threads, libraries, sdc, verilog netlist path...
input conf file is /home/rakesh/vsd/vsdflow/outdir_spi_slave/spi_slave.prelayout.conf
output report file is /home/rakesh/vsd/vsdflow/outdir_spi_slave/spi_slave.prelayout.timing.rpt

Info: STA finished in 0sec seconds

Info: Refer to /home/rakesh/vsd/vsdflow/outdir_spi_slave/spi_slave.prelayout.timing.rpt for warnings and errors

Info: Pre-layout STA finished

Creating a backup of synthesis netlist

Place and Route step from qflow started

Place and Route step from qflow finished

Info: Post-layout STA started

Info: Timing Analysis Started....

Info: Initializing number of threads, libraries, sdc, verilog netlist path...

helpppppp meeeeeee !!!

Technology set to osu018 from existing qflow_vars.sh file
Regenerating files for existing project spi_slave
No DISPLAY var, not running graphical magic.

what should i do sir please help me

opensource_eda_tool_install.sh installs cmake at /usr/local without any alternative

The opensource_eda_tool_install.sh script installs several tools at usr/local. Most of them are EDA-specific, but not cmake. It seems to be dangerous to install such a common tool in the hard-coded directory and may result in a conflict with those instances of cmake that are installed in a traditional way (sudo apt-get install cmake).
It would be great to have an option for installation script that will specify the VSDFLOW installation directory. An uninstaller is a desired feature too.

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.