andresmmera f4d1c4a225 S-parameter viewer - Initial development (squashed)
This commit contains the first draft of the user interface
Read Touchstone files

It was implemented a basic function to read Touchstone files.

It can only read Touchstone files up to 4 ports and only S-parameter data.


Please see "Touchstone Specification, Version 2.1, ratified January 26 2024 by the IBIS Open Forum": https://ibis.org/touchstone_ver2.1/ 
Add QScrollArea widgets to the files and traces lists

Large number of files and traces are expected, so there is a need for scrollable areas in the files and traces lists.
Basic plotting structure


Add default behaviour when loading one single s2p

A default behavior is added. When a single s2p file is selected, the program automatically displays S21, S11 and S22
Replace the "Delete" message by a trash image

The delete image was taken from here

https://commons.wikimedia.org/wiki/File:Delete-button.svg

This file is licensed under the Creative Commons Attribution-Share Alike 4.0 International license.

    You are free:

        to share – to copy, distribute and transmit the work
        to remix – to adapt the work

    Under the following conditions:

        attribution – You must give appropriate credit, provide a link to the license, and indicate if changes were made. You may do so in any reasonable manner, but not in any way that suggests the licensor endorses you or your use.
        share alike – If you remix, transform, or build upon the material, you must distribute your contributions under the same or compatible license as the original.
Read Touchstone files with more than two ports


Update traces combobox depending on the selected dataset

If the user has loaded data with different number of ports, the traces combobox must be refreshed each time the user changes the dataset selection. Otherwise, this may cause that the user selects a non existing trace
Fix style in buttons for removing files

The QPushButtons were replaced by QToolButtons. With the QPushButtons the widget was too wide
Fix style in buttons for removing traces

QPushButton was converted into QToolButton
Delete dataset and its traces when the user decides to remove a file


Remove files and traces

Rework on the logic on how to remove datasets and traces
After removing a file, remove the associated widgets


Remove trace from Chart


Update file widget position in the grid after removing


Function handler for changing the color of a trace


Change linestyle depending on the combo selection


Set initial color of the color pickers


Added a spinbox control to control the trace width

It was added a spinbox that controls the width of the traces displayed. This is very convenient when a bunch of traces are being displayed and the user wants to highlight one of them easily
Added function  handler for controlling the x-axis

A handler function was added to control the x-axis settings as the user changes the minimum, maximum or the tick interval
Update traces when changing the axis settings


Fix trace plotting refresh


Fix frequency limits when loading a GHz range file


Dockable widgets


Autoadjust y-axis settings


Automatically add K, delta, mu_s, m_p, MAG and MSG traces in S2P files

When a Touchtone file has two ports, the stability metrics are automatically computed and added to the dataset
Add marker table feature

It was added a new dock consisting on a marker table and some widgets for its management
Add dot marker and vertical lines in the QChart


Make case insensitive the frequency scale

Files were found were the frequency scale is all in capital letters. This creates a problem when reading the spar data. This commit fixes this by putting the frequency scale in lower case
Auto adjust x-axis when changing the units


Put x_div values as a ComboBox

It makes no much sense in having a decimal spinbox for defining the tick interval. It leads to decimal ticks. It's better to have a closed list of possible values
y axis tick in combobox


Fix vertical line markers


Fix bad "About Qt" connection 

The "About Qt" message was not properly connected. As a consequence, when the user went to "Help-> About Qt..." nothing showed up.

This commit is intended to fix this by connecting the menu with the handler as it's done in the filter design tool
Link S-parameter viewer to Qucs-S


Add Re{Zin}, Im{Zin} traces to s1p and s2p files


Hide y-axis units

It makes no much sense for now to have it since it may happen that the y-axis represent dB, Ohm or simply its unitless (e.g. K, mu, ...)
Fix segfault when removing one single file

In previous commits, it was observed a segfault when removing one single s-par file. This happened because the program was freeing widgets already freed. This situation is avoided by ordering the list of widgets to remove
Autoadjust y-axis


Remove widgets for marker placement

They are actually not needed. The SpinBox and the combo with units just add clutter. The user can set the marker freq once added
Update x-axis limits after removing file


Increase maximum x-ticks


Get suffix using Qt method

This is more robust than the previous approach
Fix frequency scale in markers


Enable drag and drop to open files


Fix segfault when removing file


Readjust frequency limits when dataset has no traces


Fix read touchstone

Files were found whose header contains no !
Fix initial marker step


Fix autoscale y-axis


Prevent docks from closing

It makes no sense the user can close the docks
Solve infinite loop when fmax=3000 [unit]


Implemented button for removing all files on a row


Implement button for removing all markers on a row
2024-09-08 08:35:42 +02:00
2023-06-19 15:32:28 +03:00
2024-09-04 14:56:21 +03:00
2024-07-15 21:31:45 +03:00
2024-02-19 18:02:46 +01:00
2024-03-19 09:11:33 +03:00
2012-08-08 14:28:03 +02:00
2023-06-19 16:00:56 +03:00
2024-01-16 20:02:21 +03:00
2022-06-30 21:34:40 +03:00
2024-09-04 14:56:21 +03:00
2013-06-16 15:00:32 +02:00
2024-03-19 16:06:53 +03:00
2009-03-12 19:36:13 +00:00
2024-09-04 14:50:23 +03:00

Qucs-S: Quite universal circuit simulator with SPICE

Boosty Telegram Website Packaging status

About Qucs-S

Qucs-S provides a fancy graphical user interface for a number of popular circuit simulation engines. Qucs-S contains instruments for schematic capture, visualization and provides differents passive and active components including device library. The following simulation kernels are supported:

  • Ngspice (recommended)
  • Xyce
  • SpiceOpus
  • Qucsator (non-spice)

See the https://ra3xdh.github.io/ for more details. Qucs-S is based on original Qucs code: https://github.com/Qucs/qucs

Donation

Qucs-S accepts donation using Boosty platform: https://boosty.to/qucs_s

Build instructions

Use CMake to build Qucs-S. Install all necessary dependencies: GCC, Qt, Flex, Bison and SPICE (optional). Install ngspice that is not needed for build, but serves as the simulation kernel.

Dependencies

Ubuntu

sudo apt-get install ngspice build-essential git cmake qtbase5-dev qttools5-dev libqt5svg5-dev flex bison gperf dos2unix

OpenSUSE Tumbleweed

sudo zypper install ngspice git cmake libqt5-qtbase-devel libqt5-qttools-devel libqt5-qtsvg-devel flex bison gperf dos2unix

Compiling

Qt5

Then clone this git repository and execute in the top directory:

git submodule init
git submodule update
mkdir builddir
cd builddir
cmake ..  -DCMAKE_INSTALL_PREFIX=/your_install_prefix/
make
make install

Where /your_install_prefix/ is desired installation directory. Substitute any desire path (for example $HOME/qucs-s) here. You may omit this option and installation steps. Default installation directory will be /usr/local if CMAKE_INSTALL_PREFIX is not defined.

Qt6

Since v1.0.1 Qucs-S supports build with Qt6. Set the WITH_QT6 flag to tell CMake use the Qt6. For example use the following command sequence for Ubuntu-22.04

cmake .. -DWITH_QT6=ON -DCMAKE_INSTALL_PREFIX=/your_install_prefix/

Running

Then run qucs-s executable to launch the application:

cd /your_installation prefix/bin
./qucs-s

clangd LSP support

Clangd looks for compile_commands.json file in parent folders of the file it processes. compile_commands.json should be generated along with other build configuration files when you run cmake as part of building routine:

mkdir builddir
cd builddir
cmake ..  -DCMAKE_INSTALL_PREFIX=/your_install_prefix/

If compile_commands.json is already there, create a symbolic link to it from project root dir:

cd project_root
ln -s ./builddir/compile_commands.json compile_commands.json

It may take some time to index files at first run. Clangd configuration is in .clangd file.

Description
Qucs-S is a circuit simulation program with Qt-based GUI
Readme 56 MiB
Languages
C++ 91.3%
Perl 3.3%
C 1.9%
CMake 1.4%
Rich Text Format 0.7%
Other 1.3%