summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRahul Paknikar2021-01-08 12:21:12 +0530
committerGitHub2021-01-08 12:21:12 +0530
commit8a22d142acda58c077ec38b8155c9c1fb56a9182 (patch)
treea6f0555a090358ec2619f1ed48995ebdfaf682db
parent5e61158c70425c61fd1af76e69e2fe8b8f7e5105 (diff)
parent6536595225331febcb60422a8b8d2dde1520c982 (diff)
downloadnghdl-2.1.tar.gz
nghdl-2.1.tar.bz2
nghdl-2.1.zip
Merge pull request #61 from rahulp13/masterv2.1
updated simulator's working for windows os
-rw-r--r--CONTRIBUTION.md25
-rw-r--r--README.md19
-rw-r--r--src/createKicadLibrary.py10
-rw-r--r--src/model_generation.py22
-rwxr-xr-xsrc/ngspice_ghdl.py13
-rw-r--r--src/outitf.c12
6 files changed, 77 insertions, 24 deletions
diff --git a/CONTRIBUTION.md b/CONTRIBUTION.md
new file mode 100644
index 0000000..dec42e8
--- /dev/null
+++ b/CONTRIBUTION.md
@@ -0,0 +1,25 @@
+## Contribution
+
+If you want to add any enhancement feature or have found any bug and want to work on it, please open a new issue regarding that and put a message "I would like to work on it." And make sure every pull request should reference to an issue.
+
+#### Points on how to make pull request
+* You need to fork this repository to your account.
+
+* Clone it using ``` git clone https://github.com/FOSSEE/nghdl.git ```
+
+* Always create a new branch before making any changes. You can create new branch using ```git branch <branch-name> ```
+
+* Checkout into your new branch using ```git checkout <branch-name>```
+
+* Make changes to code and once you are done use ```git add <path to file changed or added>```. Now commit changes with proper message using ```git commit -m "Your message"```.
+
+* After commiting your changes push your changes to your forked repository using ```git push origin <branch-name>```
+Finally create a pull request from github.
+There should be only one commit per pull request.
+
+
+* Please follow below guidelines for your commit message :
+ * Commit message should be like : Fixes issue #[issue_number] - one line message of work you did.
+ * After commit message, there should be a commit body where you can mention what you did in short or in detail.
+
+Please follow above method to file pull requests.
diff --git a/README.md b/README.md
index 8e7ef7d..d9cb62d 100644
--- a/README.md
+++ b/README.md
@@ -1,3 +1,11 @@
+![GitHub tag (latest by date)](https://img.shields.io/github/v/tag/fossee/nghdl?color=blueviolet)
+![Python](https://img.shields.io/badge/python-v3.6+-blue.svg)
+[![PEP8](https://img.shields.io/badge/code%20style-pep8-orange.svg)](https://www.python.org/dev/peps/pep-0008/)
+[![GitHub forks](https://img.shields.io/github/forks/fossee/nghdl)](https://github.com/fossee/nghdl/network)
+[![PRs Welcome](https://img.shields.io/badge/PRs-welcome-brightgreen.svg?style=flat)](https://github.com/fossee/nghdl)
+![GitHub contributors](https://img.shields.io/github/contributors/fossee/nghdl)
+
+
Ngspice Ghdl Interfacing Documentation
====
@@ -5,7 +13,7 @@ It contains all the documentation for Ngspice and GHDL related work.
## How is Ngspice interfaced with GHDL?
-Ngspice supports mixed mode simulation. It can simulate both digital and analog components.
+Ngspice supports mixed-signal simulation. It can simulate both digital and analog components.
Ngspice has something called code-model which defines the behavior of your component and can be used in the netlist. For example you can create a full-adder's code-model in Ngspice and use it in any circuit netlist of Ngspice.
@@ -20,7 +28,7 @@ GHDL's foreign language interface is used for this inter-process communication.
* Ubuntu 16.04 OS and above LTS versions.
* Microsoft Windows 7, 8 and 10.
-> Note: Refer [`installers`](https://github.com/fossee/nghdl/tree/installers) branch for documentation on packaging for above mentioned platforms.
+ > Note for other distributions: You can refer [`installers`](https://github.com/fossee/nghdl/tree/installers) branch for documentation on packaging (for above mentioned distributions) to build installers for your operating system in a similar way. For providing your build, please check the `Contribution` section mentioned below.
## Features
@@ -30,8 +38,8 @@ GHDL's foreign language interface is used for this inter-process communication.
## Pre-requisites
-* GHDL (LLVM)-v0.37
-* Ngspice-v31
+* [GHDL (LLVM - v0.37)](http://ghdl.free.fr/)
+* [Ngspice (v31+)](http://ngspice.sourceforge.net/)
## How to install?
@@ -46,3 +54,6 @@ Refer https://esim.fossee.in/ for more information.
4. Open the desired example under `eSim/Examples/Mixed_Signal/` using the "Open Project" button, double click on the project when the project is loaded in the "Projects" window.
5. Click on the "Simulation" button on eSim Main window.
+
+## Contribution
+Please refer [here](https://github.com/FOSSEE/nghdl/blob/master/CONTRIBUTION.md) for further details.
diff --git a/src/createKicadLibrary.py b/src/createKicadLibrary.py
index e98d0d0..eed8f6d 100644
--- a/src/createKicadLibrary.py
+++ b/src/createKicadLibrary.py
@@ -36,8 +36,8 @@ class AutoSchematic(QtWidgets.QWidget):
elif (xmlFound == os.path.join(self.xml_loc, 'Nghdl')):
print('Library already exists...')
ret = QtWidgets.QMessageBox.warning(
- self.parent, "Warning", '''<b>Library files for this model ''' +
- '''already exist. Do you want to overwrite it?</b><br/>
+ self.parent, "Warning", '''<b>Library files for this model''' +
+ ''' already exist. Do you want to overwrite it?</b><br/>
If yes press ok, else cancel it and ''' +
'''change the name of your vhdl file.''',
QtWidgets.QMessageBox.Ok, QtWidgets.QMessageBox.Cancel
@@ -54,9 +54,9 @@ class AutoSchematic(QtWidgets.QWidget):
else:
print('Pre existing library...')
ret = QtWidgets.QMessageBox.critical(
- self.parent, "Error", '''<b>A standard library already exists ''' +
- '''with this name.</b><br/><b>Please change the name ''' +
- '''of your vhdl file and upload it again</b>''',
+ self.parent, "Error", '''<b>A standard library already ''' +
+ '''exists with this name.</b><br/><b>Please change the ''' +
+ '''name of your vhdl file and upload it again</b>''',
QtWidgets.QMessageBox.Ok
)
diff --git a/src/model_generation.py b/src/model_generation.py
index f19a5c9..bd96bc2 100644
--- a/src/model_generation.py
+++ b/src/model_generation.py
@@ -282,13 +282,14 @@ class ModelGeneration:
int ip_count = 0;
char* my_ip = malloc(16);
- char ip_filename[40];
+ char ip_filename[100];
'''
if os.name == 'nt':
client_setup_ip += '''
- sprintf(ip_filename, ''' \
- '''"C:/Windows/Temp/NGHDL_COMMON_IP_%d.txt", getpid());
+ sprintf(ip_filename, "''' + \
+ os.getenv('LOCALAPPDATA').replace('\\', '/') + \
+ '''/Temp/NGHDL_COMMON_IP_%d.txt", getpid());
'''
else:
client_setup_ip += '''
@@ -554,15 +555,18 @@ class ModelGeneration:
if os.name == 'nt':
self.digital_home = self.parser.get('NGSPICE', 'DIGITAL_MODEL')
self.msys_home = self.parser.get('COMPILER', 'MSYS_HOME')
- cmd_str2 = "\\'start_server.sh %d %s\\'" + "\\" + "\""
+ cmd_str2 = "/start_server.sh %d %s & read" + "\\" + "\"" + "\""
cmd_str1 = os.path.normpath(
- "\"cd " + self.digital_home + "/" +
- self.fname.split('.')[0] + "/DUTghdl/ && " +
- self.msys_home + "/bash.exe -c "
+ "\"" + self.digital_home + "/" +
+ self.fname.split('.')[0] + "/DUTghdl/"
)
cmd_str1 = cmd_str1.replace("\\", "/")
- cfunc.write('\t\tsnprintf(command,1024, "start /min cmd /c ' +
- '\\' + cmd_str1 + cmd_str2 + ' &", sock_port, my_ip);')
+
+ cfunc.write(
+ '\t\tsnprintf(command,1024, "start mintty.exe -t ' +
+ '\\"VHDL-Testbench Logs\\" -h always bash.exe -c ' +
+ '\\' + cmd_str1 + cmd_str2 + ', sock_port, my_ip);'
+ )
else:
cfunc.write(
'\t\tsnprintf(command,1024,"' + self.home +
diff --git a/src/ngspice_ghdl.py b/src/ngspice_ghdl.py
index fd17d7f..4db8062 100755
--- a/src/ngspice_ghdl.py
+++ b/src/ngspice_ghdl.py
@@ -271,6 +271,12 @@ class Mainwindow(QtWidgets.QWidget):
self.process = QtCore.QProcess(self)
self.process.start(cmd)
print("make command process pid ---------- >", self.process.pid())
+
+ if os.name == "nt":
+ self.process.finished.connect(self.createSchematicLib)
+ self.process \
+ .readyReadStandardOutput.connect(self.readAllStandard)
+
except BaseException:
print("There is error in 'make' ")
sys.exit()
@@ -301,6 +307,10 @@ class Mainwindow(QtWidgets.QWidget):
sys.exit()
def createSchematicLib(self):
+ if os.name == "nt":
+ shutil.copy("ghdl/ghdl.cm", "../../../../lib/ngspice/")
+
+ os.chdir(self.cur_dir)
if Appconfig.esimFlag == 1:
if not self.errorFlag:
print('Creating library files................................')
@@ -337,7 +347,8 @@ class Mainwindow(QtWidgets.QWidget):
self.addingModelInModpath()
self.createModelFiles()
self.runMake()
- self.runMakeInstall()
+ if os.name != 'nt':
+ self.runMakeInstall()
else:
QtWidgets.QMessageBox.information(
self, 'Message', '''<b>Important Message.</b><br/>''' +
diff --git a/src/outitf.c b/src/outitf.c
index 1ac92ab..3ccf209 100644
--- a/src/outitf.c
+++ b/src/outitf.c
@@ -55,12 +55,12 @@ Modified: 2000 AlansFixes, 2013/2015 patch by Krzysztof Blaszkowski
#include <stdlib.h>
#include <string.h>
#include <errno.h>
+#include <unistd.h>
/* 27.May.2020 - BM - Added the following #include */
#ifdef __linux__
#include <sys/socket.h>
#include <arpa/inet.h>
- #include <unistd.h>
#endif
extern char *spice_analysis_get_name(int index);
@@ -128,15 +128,17 @@ static bool savenone = FALSE;
static void close_server()
{
FILE *fptr;
- char ip_filename[48];
+ char ip_filename[100];
#ifdef __linux__
sprintf(ip_filename, "/tmp/NGHDL_COMMON_IP_%d.txt", getpid());
#elif _WIN32
WSADATA WSAData;
- SOCKADDR_IN addr;
- WSAStartup(MAKEWORD(2, 2), &WSAData);
- sprintf(ip_filename, "C:\\Windows\\Temp\\NGHDL_COMMON_IP_%d.txt", getpid());
+ SOCKADDR_IN addr;
+ WSAStartup(MAKEWORD(2, 2), &WSAData);
+ char *base_path = getenv("LocalAppData");
+ sprintf(ip_filename, "\\Temp\\NGHDL_COMMON_IP_%d.txt", getpid());
+ sprintf(ip_filename, strcat(base_path, ip_filename));
#endif
fptr = fopen(ip_filename, "r");