Compare commits
307 Commits
Author | SHA1 | Date | |
---|---|---|---|
![]() |
565efd3b81 | ||
![]() |
dfcab0a850 | ||
![]() |
6c9f859a8b | ||
![]() |
b058169b94 | ||
![]() |
20812e9e67 | ||
![]() |
5fb8e45e98 | ||
![]() |
36c29e226e | ||
![]() |
6f253a768e | ||
![]() |
a9af3730be | ||
![]() |
50630daab7 | ||
![]() |
d82a737a98 | ||
![]() |
f945d54f80 | ||
![]() |
f5d7ca1219 | ||
![]() |
a138bcbda4 | ||
![]() |
9c59da8c99 | ||
![]() |
20caefadf8 | ||
![]() |
69bb9c3a1e | ||
![]() |
577aa2f331 | ||
![]() |
82c95156a5 | ||
![]() |
12feece0ba | ||
![]() |
2c68ab5dd1 | ||
![]() |
00439f0d95 | ||
![]() |
b9604a066e | ||
![]() |
fceb207734 | ||
![]() |
ccd39804d5 | ||
![]() |
3a91c4e19b | ||
![]() |
5967818993 | ||
![]() |
3a71ba1afc | ||
![]() |
ca39ef07a5 | ||
![]() |
ad8714d56b | ||
![]() |
8db56a38b9 | ||
![]() |
ba57f6f3f0 | ||
![]() |
2a59b089e8 | ||
![]() |
d44b2921c5 | ||
![]() |
c377135f7f | ||
![]() |
702e5dac0d | ||
![]() |
0cabe22a1c | ||
![]() |
e317aa50dc | ||
![]() |
3a4056880a | ||
![]() |
cd14ebabe9 | ||
![]() |
2c0d49649b | ||
![]() |
db0cff79f9 | ||
![]() |
26ffe6b4b2 | ||
![]() |
df9ce13d9a | ||
![]() |
c0804cc07f | ||
![]() |
eff2da648a | ||
![]() |
f114398101 | ||
![]() |
57816d6596 | ||
![]() |
b392e25627 | ||
![]() |
253c985864 | ||
![]() |
c1a05d4c03 | ||
![]() |
3ac7d9e435 | ||
![]() |
8c99e2f1b1 | ||
![]() |
5733d1827d | ||
![]() |
1ac773f4f2 | ||
![]() |
cbfb060786 | ||
![]() |
8f0fc38487 | ||
![]() |
6fb5f15c57 | ||
![]() |
43aa0f518b | ||
![]() |
d4d487298c | ||
![]() |
a1a157b7c8 | ||
![]() |
df2353b911 | ||
![]() |
191971d4aa | ||
![]() |
3440d36941 | ||
![]() |
d047c7e9e1 | ||
![]() |
cc490858f8 | ||
![]() |
75040f363d | ||
![]() |
4637aa9260 | ||
![]() |
50f3f08ec8 | ||
![]() |
e74100f94c | ||
![]() |
2147756fb3 | ||
![]() |
e2f63ad2e1 | ||
![]() |
c98551d9a2 | ||
![]() |
65bb557775 | ||
![]() |
1600e3f53a | ||
![]() |
5dfd16975b | ||
![]() |
ec9624a268 | ||
![]() |
e27883ff95 | ||
![]() |
63d6d07000 | ||
![]() |
b79d94ef2a | ||
![]() |
e6f35a35ff | ||
![]() |
b4d985d268 | ||
![]() |
a09b9c68fe | ||
![]() |
2261b6caf2 | ||
![]() |
fcdcaeaebe | ||
![]() |
6adc782cff | ||
![]() |
d609a25547 | ||
![]() |
cc7dd5f95f | ||
![]() |
03a0c6b2ca | ||
![]() |
050665e022 | ||
![]() |
63e087eb6f | ||
![]() |
b549138221 | ||
![]() |
b6c789b5d3 | ||
![]() |
f0fb726b2b | ||
![]() |
31e87288d3 | ||
![]() |
c87ef57bd2 | ||
![]() |
058d69cc30 | ||
![]() |
7a662b7d4a | ||
![]() |
9ce9e0304a | ||
![]() |
f842cf2d7d | ||
![]() |
25df9f1a4b | ||
![]() |
0d97f032bb | ||
![]() |
ac24a25bfb | ||
![]() |
efb112d74d | ||
![]() |
b955037fc1 | ||
![]() |
f876e6f9fd | ||
![]() |
11d0c1adaa | ||
![]() |
55748eb73e | ||
![]() |
3c5e71ab0a | ||
![]() |
008895cb65 | ||
![]() |
171bb805fe | ||
![]() |
6b206d3362 | ||
![]() |
7a6813c4c1 | ||
![]() |
f6d86ddd0a | ||
![]() |
b848b70da2 | ||
![]() |
387d720892 | ||
![]() |
ebc4a9506d | ||
![]() |
601fe85f14 | ||
![]() |
f8cf328ec4 | ||
![]() |
a80cebe228 | ||
![]() |
a40ad6d755 | ||
![]() |
3dd56e6b1f | ||
![]() |
df644c1c2a | ||
![]() |
03a8bec7ee | ||
![]() |
cb3c78f29f | ||
![]() |
0f5068fca3 | ||
![]() |
d89665b89a | ||
![]() |
fbcb9da573 | ||
![]() |
38434ff353 | ||
![]() |
8c779b1162 | ||
![]() |
c909b21d7f | ||
![]() |
e469274fc0 | ||
![]() |
96c3cf6584 | ||
![]() |
d7ecac818d | ||
![]() |
434930e9be | ||
![]() |
7fde61997c | ||
![]() |
6b39fda03c | ||
![]() |
07970d566a | ||
![]() |
c56bb4f966 | ||
![]() |
7e61aa13aa | ||
![]() |
88a4b113f1 | ||
![]() |
4c901ed4b2 | ||
![]() |
3742c83e20 | ||
![]() |
dde7480f53 | ||
![]() |
0a738d1f6f | ||
![]() |
7c9c40e360 | ||
![]() |
7ffbcc5824 | ||
![]() |
55428164d0 | ||
![]() |
6e985de6ce | ||
![]() |
187f2a71b8 | ||
![]() |
909f02340d | ||
![]() |
2c086e62b0 | ||
![]() |
3dec901955 | ||
![]() |
2813ae7f78 | ||
![]() |
68fbbbf6ff | ||
![]() |
b8492fd287 | ||
![]() |
91c21c193d | ||
![]() |
930c532427 | ||
![]() |
ad319b3f0c | ||
![]() |
8fb5295531 | ||
![]() |
f2fd2fe204 | ||
![]() |
d11f8c0af0 | ||
![]() |
718d9c37ca | ||
![]() |
62fe9727a6 | ||
![]() |
47af743871 | ||
![]() |
80d4a57532 | ||
![]() |
8dcde7e4fa | ||
![]() |
fe6c33a980 | ||
![]() |
c04edc69cc | ||
![]() |
c74ae467e8 | ||
![]() |
f152ee25ce | ||
![]() |
b0523fa392 | ||
![]() |
48c4248773 | ||
![]() |
9482caafe9 | ||
![]() |
10e1e6f288 | ||
![]() |
a2fda8002e | ||
![]() |
a7c6729d2c | ||
![]() |
03b791fa73 | ||
![]() |
86073b5be1 | ||
![]() |
526eeedaf5 | ||
![]() |
8a9c64004f | ||
![]() |
aa3354b9ff | ||
![]() |
0fe4bc40c9 | ||
![]() |
5913133324 | ||
![]() |
eb3aad2452 | ||
![]() |
1a3ce1797c | ||
![]() |
9e4ac5a13d | ||
![]() |
c1cae1605d | ||
![]() |
7053e95a05 | ||
![]() |
fac5e64104 | ||
![]() |
1d3441eedf | ||
![]() |
efabb31d59 | ||
![]() |
d48cbade77 | ||
![]() |
185ac83c56 | ||
![]() |
046f2f7003 | ||
![]() |
b433a2c0e6 | ||
![]() |
7a330e287b | ||
![]() |
043cb8214c | ||
![]() |
c94049bf52 | ||
![]() |
96fb011ee6 | ||
![]() |
b847af10c7 | ||
![]() |
07b2171dc8 | ||
![]() |
9bf9776b7c | ||
![]() |
241d2ff3f8 | ||
![]() |
e5034305f7 | ||
![]() |
ee21251275 | ||
![]() |
0d74f553d7 | ||
![]() |
9268acebe8 | ||
![]() |
5226827389 | ||
![]() |
f44b7cf49d | ||
![]() |
4ef7a9b6bb | ||
![]() |
b826d12020 | ||
![]() |
b100745875 | ||
![]() |
7fa2a01596 | ||
![]() |
6b7d368593 | ||
![]() |
683e4af9eb | ||
![]() |
c227c973d6 | ||
![]() |
3d1182142e | ||
![]() |
fb686be61f | ||
![]() |
5a97a35bd0 | ||
![]() |
1f91a7e4b4 | ||
![]() |
c4d24f568c | ||
![]() |
c9dd2ea489 | ||
![]() |
37da481d77 | ||
![]() |
b10abc128b | ||
![]() |
486c95826b | ||
![]() |
7a4744cf4c | ||
![]() |
6949a88aac | ||
![]() |
8378690331 | ||
![]() |
38d37c3b03 | ||
![]() |
5d47d790b3 | ||
![]() |
9bcb20b393 | ||
![]() |
5e36d2f9d1 | ||
![]() |
673e38002d | ||
![]() |
e27b4523b6 | ||
![]() |
ed28844d5e | ||
![]() |
782f5929ff | ||
![]() |
03261edd80 | ||
![]() |
ccbac4408a | ||
![]() |
871b51c755 | ||
![]() |
08b72b59a6 | ||
![]() |
e41e6bc73b | ||
![]() |
b6258a38bf | ||
![]() |
dc6f657824 | ||
![]() |
de5fff9999 | ||
![]() |
174d206857 | ||
![]() |
ea17222811 | ||
![]() |
784c7cbc07 | ||
![]() |
e63feb804b | ||
![]() |
14f603b52e | ||
![]() |
8070f2a517 | ||
![]() |
c7ab11f4f4 | ||
![]() |
3e852a43d1 | ||
![]() |
8b21b3ce29 | ||
![]() |
86144ab8ee | ||
![]() |
a8e7ea989b | ||
![]() |
b38f3e6f8e | ||
![]() |
4bab808750 | ||
![]() |
6a1ad91454 | ||
![]() |
bcd45d7c67 | ||
![]() |
a97f8df9a5 | ||
![]() |
1bbd4bd700 | ||
![]() |
62cf2d4bdc | ||
![]() |
9d55075db8 | ||
![]() |
35304542a1 | ||
![]() |
dda56bfe30 | ||
![]() |
ae7765b85f | ||
![]() |
3fbc44bccc | ||
![]() |
61222d150a | ||
![]() |
a19e46086c | ||
![]() |
ce95dd4c74 | ||
![]() |
dc6367938e | ||
![]() |
42e2a797ce | ||
![]() |
fea45c996e | ||
![]() |
31d5c90ed8 | ||
![]() |
9d3e5d3927 | ||
![]() |
4c2b7dcbf4 | ||
![]() |
f1f186dc03 | ||
![]() |
8cd942be2e | ||
![]() |
48e695c1b6 | ||
![]() |
24590c3b77 | ||
![]() |
913ccdeb75 | ||
![]() |
e6a97e0ace | ||
![]() |
7c3a180bf0 | ||
![]() |
8b0aa2a77a | ||
![]() |
b5ef1a455e | ||
![]() |
fcb458f7d2 | ||
![]() |
6c0a474470 | ||
![]() |
cc7e68c248 | ||
![]() |
e9017a0393 | ||
![]() |
e42cc19f9e | ||
![]() |
25ec6c2d8a | ||
![]() |
f655886d01 | ||
![]() |
ea4bc2c79a | ||
![]() |
c23178eac8 | ||
![]() |
ed3b5864d8 | ||
![]() |
cd30614bb1 | ||
![]() |
468bc55132 | ||
![]() |
c309600c32 | ||
![]() |
c14c81c8b1 | ||
![]() |
25bf41ed6e | ||
![]() |
b6fbdcefca | ||
![]() |
50dc69b0e9 | ||
![]() |
fa36ac584f | ||
![]() |
b25d59dc07 | ||
![]() |
ebaf0897d1 | ||
![]() |
8a7d158067 |
46
.github/workflows/cmake.yml
vendored
@ -1,46 +0,0 @@
|
||||
name: CMake Linux Qt5
|
||||
|
||||
on:
|
||||
push:
|
||||
branches: [ "master", "current", "release/*" ]
|
||||
paths: [ "**.cpp", "**.h", "**/CMakeLists.txt" ]
|
||||
pull_request:
|
||||
branches: [ "master", "current", "release/*" ]
|
||||
paths: [ "**.cpp", "**.h", "**/CMakeLists.txt" ]
|
||||
|
||||
env:
|
||||
# Customize the CMake build type here (Release, Debug, RelWithDebInfo, etc.)
|
||||
BUILD_TYPE: Release
|
||||
|
||||
jobs:
|
||||
|
||||
|
||||
|
||||
build:
|
||||
# The CMake configure and build commands are platform agnostic and should work equally well on Windows or Mac.
|
||||
# You can convert this to a matrix build if you need cross-platform coverage.
|
||||
# See: https://docs.github.com/en/free-pro-team@latest/actions/learn-github-actions/managing-complex-workflows#using-a-build-matrix
|
||||
runs-on: ubuntu-latest
|
||||
|
||||
steps:
|
||||
- uses: actions/checkout@v3
|
||||
|
||||
- name: InstallQt5
|
||||
run: |
|
||||
sudo apt-get update
|
||||
sudo apt-get install -y qtbase5-dev qttools5-dev qtscript5-dev libqt5svg5-dev flex bison libqt5charts5-dev
|
||||
- name: Configure CMake
|
||||
# Configure CMake in a 'build' subdirectory. `CMAKE_BUILD_TYPE` is only required if you are using a single-configuration generator such as make.
|
||||
# See https://cmake.org/cmake/help/latest/variable/CMAKE_BUILD_TYPE.html?highlight=cmake_build_type
|
||||
run: cmake -B ${{github.workspace}}/build -DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}}
|
||||
|
||||
- name: Build
|
||||
# Build your program with the given configuration
|
||||
run: cmake --build ${{github.workspace}}/build -j`nproc` --config ${{env.BUILD_TYPE}}
|
||||
|
||||
#- name: Test
|
||||
# working-directory: ${{github.workspace}}/build
|
||||
# Execute tests defined by the CMake configuration.
|
||||
# See https://cmake.org/cmake/help/latest/manual/ctest.1.html for more detail
|
||||
# run: ctest -C ${{env.BUILD_TYPE}}
|
||||
|
379
.github/workflows/deploy.yml
vendored
@ -11,20 +11,20 @@ on:
|
||||
|
||||
env:
|
||||
APP_NAME: "Qucs-S"
|
||||
CI_VERSION: 24.4.99
|
||||
EXECUTABLE_NAME: "qucs-s"
|
||||
PUBLISHER_NAME: "The Qucs-S Team"
|
||||
BUILD_TYPE: Release
|
||||
QT_VERSION: 6.8.0
|
||||
QUCS_MACOS_BIN: build/qucs/qucs-s.app/Contents/MacOS/bin
|
||||
QUCS_MACOS_RESOURCES: build/qucs/qucs-s.app/Contents/MacOS/share/qucs-s
|
||||
NGSPICE_URL: https://downloads.sourceforge.net/project/ngspice/ng-spice-rework/43/ngspice-43_64.7z
|
||||
QT_VERSION: 6.8.2
|
||||
QUCS_MACOS_BIN: ${{github.workspace}}/build/qucs/qucs-s.app/Contents/MacOS/bin
|
||||
QUCS_MACOS_RESOURCES: ${{github.workspace}}/build/qucs/qucs-s.app/Contents/MacOS/share/qucs-s
|
||||
NGSPICE_URL: https://downloads.sourceforge.net/project/ngspice/ng-spice-rework/44.2/ngspice-44.2_64.7z
|
||||
|
||||
jobs:
|
||||
setup:
|
||||
runs-on: ubuntu-latest
|
||||
outputs:
|
||||
version: ${{ steps.read_version.outputs.version }}
|
||||
short_hash: ${{ steps.read_version.outputs.short_hash }}
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
@ -32,19 +32,28 @@ jobs:
|
||||
- name: Read version from file
|
||||
id: read_version
|
||||
run: |
|
||||
if [ "${{github.ref_type}}" == "tag" ]; then
|
||||
if [ "${{ github.ref_type }}" == "tag" ]; then
|
||||
VERSION=${{ github.ref_name }}
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
else
|
||||
VERSION=${{ env.CI_VERSION }}
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
SHORT_HASH=""
|
||||
else
|
||||
MAJOR_MINOR=$(cut -d. -f1-2 VERSION)
|
||||
VERSION="${MAJOR_MINOR}.99"
|
||||
# Get the short hash of the current commit
|
||||
COMMIT_HASH=$(echo ${{ github.sha }} | cut -c1-7)
|
||||
SHORT_HASH="-$COMMIT_HASH"
|
||||
fi
|
||||
|
||||
- name: Print version
|
||||
run: echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
|
||||
echo "VERSION=$VERSION" >> $GITHUB_ENV
|
||||
echo "version=$VERSION" >> $GITHUB_OUTPUT
|
||||
|
||||
echo "SHORT_HASH=$SHORT_HASH" >> $GITHUB_ENV
|
||||
echo "short_hash=$SHORT_HASH" >> $GITHUB_OUTPUT
|
||||
|
||||
- name: Print version and hash
|
||||
run: |
|
||||
echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
echo "Qucs-S short hash is ${{ env.SHORT_HASH }}"
|
||||
|
||||
build-linux-appimage-qt6:
|
||||
runs-on: ubuntu-22.04
|
||||
needs: setup
|
||||
@ -54,10 +63,14 @@ jobs:
|
||||
submodules: recursive
|
||||
|
||||
- name: Set version environment variable
|
||||
run: echo "VERSION=${{ needs.setup.outputs.version }}" >> $GITHUB_ENV
|
||||
run: |
|
||||
echo "VERSION=${{ needs.setup.outputs.version }}" >> $GITHUB_ENV
|
||||
echo "SHORT_HASH=${{ needs.setup.outputs.short_hash }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Print version
|
||||
run: echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
- name: Print version and hash
|
||||
run: |
|
||||
echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
echo "Qucs-S short hash is ${{ env.SHORT_HASH }}"
|
||||
|
||||
- name: Install Dependencies
|
||||
run: |
|
||||
@ -76,11 +89,15 @@ jobs:
|
||||
install-deps: 'true'
|
||||
modules: 'qtcharts'
|
||||
|
||||
|
||||
- name: '⚙️ Install CMake'
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: 'Configure CMake'
|
||||
run: |
|
||||
cmake -B ${{github.workspace}}/build \
|
||||
cmake -B ${{github.workspace}}/build -G 'Ninja' \
|
||||
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \
|
||||
-DCMAKE_INSTALL_PREFIX=/usr \
|
||||
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}/AppDir/usr \
|
||||
-DWITH_QT6=ON \
|
||||
-DCI_VERSION="${{env.VERSION}}"
|
||||
|
||||
@ -88,7 +105,7 @@ jobs:
|
||||
# Build your program with the given configuration
|
||||
run: |
|
||||
cmake --build ${{github.workspace}}/build -j`nproc` --config ${{env.BUILD_TYPE}}
|
||||
make -C ${{github.workspace}}/build install DESTDIR=${{github.workspace}}/AppDir
|
||||
cmake --build ${{github.workspace}}/build --target install
|
||||
|
||||
|
||||
- name: 'Install linuxdeploy'
|
||||
@ -109,13 +126,13 @@ jobs:
|
||||
--plugin=qt --output appimage
|
||||
rm linuxdeploy-x86_64.AppImage
|
||||
rm linuxdeploy-plugin-qt-x86_64.AppImage
|
||||
mv *.AppImage ${{ env.APP_NAME }}-${{env.VERSION}}-linux-x86_64.AppImage
|
||||
mv *.AppImage ${{ env.APP_NAME }}-${{env.VERSION}}${{env.SHORT_HASH}}-linux-x86_64.AppImage
|
||||
|
||||
- name: 'Upload artifact: AppImage'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.APP_NAME }}-${{env.VERSION}}-linux-x86_64
|
||||
path: ${{ env.APP_NAME }}-${{env.VERSION}}-linux-x86_64.AppImage
|
||||
name: ${{ env.APP_NAME }}-${{env.VERSION}}${{env.SHORT_HASH}}-linux-x86_64
|
||||
path: ${{ env.APP_NAME }}-${{env.VERSION}}${{env.SHORT_HASH}}-linux-x86_64.AppImage
|
||||
|
||||
|
||||
build-mac-intel:
|
||||
@ -129,10 +146,14 @@ jobs:
|
||||
xcode-version: latest-stable
|
||||
|
||||
- name: Set version environment variable
|
||||
run: echo "VERSION=${{ needs.setup.outputs.version }}" >> $GITHUB_ENV
|
||||
run: |
|
||||
echo "VERSION=${{ needs.setup.outputs.version }}" >> $GITHUB_ENV
|
||||
echo "SHORT_HASH=${{ needs.setup.outputs.short_hash }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Print version
|
||||
run: echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
- name: Print version and hash
|
||||
run: |
|
||||
echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
echo "Qucs-S short hash is ${{ env.SHORT_HASH }}"
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
@ -157,8 +178,7 @@ jobs:
|
||||
export LDFLAGS="-L$(brew --prefix bison)/lib"
|
||||
source ~/.bashrc
|
||||
brew link bison --force
|
||||
|
||||
|
||||
|
||||
- name: 'Configure CMake'
|
||||
run: |
|
||||
cmake -B ${{github.workspace}}/build -G 'Ninja' \
|
||||
@ -177,19 +197,19 @@ jobs:
|
||||
mkdir -p ${{env.QUCS_MACOS_RESOURCES}}/examples
|
||||
mkdir -p ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
mkdir -p ${{env.QUCS_MACOS_RESOURCES}}/symbols
|
||||
cp -pR ./build/qucs-activefilter/qucs-sactivefilter.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-attenuator/qucs-sattenuator.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-filter/qucs-sfilter.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-powercombining/qucs-spowercombining.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-s-spar-viewer/qucs-sspar-viewer.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-transcalc/qucs-strans.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucsator_rf/src/qucsator_rf ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucsator_rf/src/converter/qucsconv_rf ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./examples/* ${{env.QUCS_MACOS_RESOURCES}}/examples
|
||||
cp -pR ./library/*.lib ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
cp -pR ./library/*.blacklist ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
cp -pR ./library/symbols/* ${{env.QUCS_MACOS_RESOURCES}}/symbols
|
||||
macdeployqt ./build/qucs/qucs-s.app
|
||||
cp -pR ${{github.workspace}}/build/qucs-activefilter/qucs-sactivefilter.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-attenuator/qucs-sattenuator.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-filter/qucs-sfilter.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-powercombining/qucs-spowercombining.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-s-spar-viewer/qucs-sspar-viewer.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-transcalc/qucs-strans.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucsator_rf/src/qucsator_rf ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucsator_rf/src/converter/qucsconv_rf ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/examples/* ${{env.QUCS_MACOS_RESOURCES}}/examples
|
||||
cp -pR ${{github.workspace}}/library/*.lib ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
cp -pR ${{github.workspace}}/library/*.blacklist ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
cp -pR ${{github.workspace}}/library/symbols/* ${{env.QUCS_MACOS_RESOURCES}}/symbols
|
||||
macdeployqt ${{github.workspace}}/build/qucs/qucs-s.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-sactivefilter.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-sattenuator.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-sfilter.app
|
||||
@ -198,10 +218,10 @@ jobs:
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-strans.app
|
||||
strip ${{env.QUCS_MACOS_BIN}}/qucsator_rf
|
||||
strip ${{env.QUCS_MACOS_BIN}}/qucsconv_rf
|
||||
codesign --force --deep --sign - ./build/qucs/qucs-s.app
|
||||
codesign --force --deep --sign - ${{github.workspace}}/build/qucs/qucs-s.app
|
||||
npm install --global create-dmg
|
||||
create-dmg ./build/qucs/qucs-s.app ./build/qucs/ || true
|
||||
cp -pR ./build/qucs/qucs-*.dmg ./${{ env.APP_NAME }}-${{env.VERSION}}-macOSX-x86_64.dmg
|
||||
create-dmg ${{github.workspace}}/build/qucs/qucs-s.app ${{github.workspace}}/build/qucs/ || true
|
||||
cp -pR ${{github.workspace}}/build/qucs/qucs-*.dmg ${{github.workspace}}/${{ env.APP_NAME }}-${{env.VERSION}}-macOSX-x86_64.dmg
|
||||
|
||||
- name: 'Upload build artifacts'
|
||||
uses: actions/upload-artifact@v4
|
||||
@ -221,10 +241,14 @@ jobs:
|
||||
xcode-version: latest-stable
|
||||
|
||||
- name: Set version environment variable
|
||||
run: echo "VERSION=${{ needs.setup.outputs.version }}" >> $GITHUB_ENV
|
||||
run: |
|
||||
echo "VERSION=${{ needs.setup.outputs.version }}" >> $GITHUB_ENV
|
||||
echo "SHORT_HASH=${{ needs.setup.outputs.short_hash }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Print version
|
||||
run: echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
- name: Print version and hash
|
||||
run: |
|
||||
echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
echo "Qucs-S short hash is ${{ env.SHORT_HASH }}"
|
||||
|
||||
- uses: actions/checkout@v4
|
||||
with:
|
||||
@ -244,24 +268,24 @@ jobs:
|
||||
- name: 'Install Dependencies'
|
||||
shell: bash
|
||||
run: |
|
||||
brew install gperf dos2unix bison flex ninja graphicsmagick imagemagick
|
||||
echo 'export PATH="$(brew --prefix bison)/bin:$PATH"' >> /Users/runner/.bashrc
|
||||
export LDFLAGS="-L$(brew --prefix bison)/lib"
|
||||
source ~/.bashrc
|
||||
brew link bison --force
|
||||
brew install gperf dos2unix bison flex ninja graphicsmagick imagemagick
|
||||
echo 'export PATH="$(brew --prefix bison)/bin:$PATH"' >> /Users/runner/.bashrc
|
||||
export LDFLAGS="-L$(brew --prefix bison)/lib"
|
||||
source ~/.bashrc
|
||||
brew link bison --force
|
||||
|
||||
|
||||
- name: 'Configure CMake'
|
||||
run: |
|
||||
cmake -B ${{github.workspace}}/build -G 'Ninja' \
|
||||
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_QT6=1 \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 \
|
||||
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
|
||||
-DCI_VERSION="${{env.VERSION}}"
|
||||
cmake -B ${{github.workspace}}/build -G 'Ninja' \
|
||||
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} -DWITH_QT6=1 \
|
||||
-DCMAKE_OSX_DEPLOYMENT_TARGET=12.0 \
|
||||
-DCMAKE_OSX_ARCHITECTURES="arm64;x86_64" \
|
||||
-DCI_VERSION="${{env.VERSION}}"
|
||||
|
||||
- name: 'Build Qucs-s'
|
||||
run: |
|
||||
cmake --build ${{github.workspace}}/build --parallel --config=${{env.BUILD_TYPE}}
|
||||
cmake --build ${{github.workspace}}/build --parallel --config=${{env.BUILD_TYPE}}
|
||||
|
||||
- name: 'Package App Bundle'
|
||||
run: |
|
||||
@ -269,40 +293,152 @@ jobs:
|
||||
mkdir -p ${{env.QUCS_MACOS_RESOURCES}}/examples
|
||||
mkdir -p ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
mkdir -p ${{env.QUCS_MACOS_RESOURCES}}/symbols
|
||||
cp -pR ./build/qucs-activefilter/qucs-sactivefilter.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-attenuator/qucs-sattenuator.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-filter/qucs-sfilter.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-powercombining/qucs-spowercombining.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-s-spar-viewer/qucs-sspar-viewer.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucs-transcalc/qucs-strans.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucsator_rf/src/qucsator_rf ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./build/qucsator_rf/src/converter/qucsconv_rf ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ./examples/* ${{env.QUCS_MACOS_RESOURCES}}/examples
|
||||
cp -pR ./library/*.lib ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
cp -pR ./library/*.blacklist ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
cp -pR ./library/symbols/* ${{env.QUCS_MACOS_RESOURCES}}/symbols
|
||||
macdeployqt ./build/qucs/qucs-s.app
|
||||
cp -pR ${{github.workspace}}/build/qucs-activefilter/qucs-sactivefilter.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-attenuator/qucs-sattenuator.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-filter/qucs-sfilter.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-powercombining/qucs-spowercombining.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-s-spar-viewer/qucs-sspar-viewer.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucs-transcalc/qucs-strans.app ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucsator_rf/src/qucsator_rf ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/build/qucsator_rf/src/converter/qucsconv_rf ${{env.QUCS_MACOS_BIN}}
|
||||
cp -pR ${{github.workspace}}/examples/* ${{env.QUCS_MACOS_RESOURCES}}/examples
|
||||
cp -pR ${{github.workspace}}/library/*.lib ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
cp -pR ${{github.workspace}}/library/*.blacklist ${{env.QUCS_MACOS_RESOURCES}}/library
|
||||
cp -pR ${{github.workspace}}/library/symbols/* ${{env.QUCS_MACOS_RESOURCES}}/symbols
|
||||
macdeployqt ${{github.workspace}}/build/qucs/qucs-s.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-sactivefilter.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-sattenuator.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-sfilter.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-spowercombining.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-strans.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-sspar-viewer.app
|
||||
macdeployqt ${{env.QUCS_MACOS_BIN}}/qucs-strans.app
|
||||
strip ${{env.QUCS_MACOS_BIN}}/qucsator_rf
|
||||
strip ${{env.QUCS_MACOS_BIN}}/qucsconv_rf
|
||||
codesign --force --deep --sign - ./build/qucs/qucs-s.app
|
||||
strip ${{env.QUCS_MACOS_BIN}}/qucsconv_rf
|
||||
codesign --force --deep --sign - ${{github.workspace}}/build/qucs/qucs-s.app
|
||||
npm install --global create-dmg
|
||||
create-dmg ./build/qucs/qucs-s.app ./build/qucs/ || true
|
||||
cp -pR ./build/qucs/qucs-*.dmg ./${{ env.APP_NAME }}-${{env.VERSION}}-macOS.dmg
|
||||
create-dmg ${{github.workspace}}/build/qucs/qucs-s.app ${{github.workspace}}/build/qucs/ || true
|
||||
cp -pR ${{github.workspace}}/build/qucs/qucs-*.dmg ${{github.workspace}}/${{ env.APP_NAME }}-${{env.VERSION}}-macOS.dmg
|
||||
|
||||
- name: 'Upload build artifacts'
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.APP_NAME }}-${{env.VERSION}}-macOS
|
||||
path: ${{ env.APP_NAME }}-${{env.VERSION}}-macOS.dmg
|
||||
|
||||
build-windows-msvc:
|
||||
runs-on: windows-latest
|
||||
needs: setup
|
||||
strategy:
|
||||
fail-fast: false
|
||||
defaults:
|
||||
run:
|
||||
shell: pwsh
|
||||
steps:
|
||||
- name: Disable autocrlf in Git
|
||||
run: |
|
||||
git config --global core.autocrlf false
|
||||
git config --global core.eol lf
|
||||
|
||||
- name: Set version environment variable
|
||||
run: |
|
||||
echo "VERSION=${{ needs.setup.outputs.version }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "SHORT_HASH=${{ needs.setup.outputs.short_hash }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
|
||||
- name: Print version and hash
|
||||
run: |
|
||||
echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
echo "Qucs-S short hash is ${{ env.SHORT_HASH }}"
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: 'Install Qt6'
|
||||
uses: jurplel/install-qt-action@v4
|
||||
with:
|
||||
version: ${{env.QT_VERSION}}
|
||||
host: 'windows'
|
||||
target: 'desktop'
|
||||
cache: true
|
||||
arch: 'win64_msvc2022_64'
|
||||
install-deps: 'true'
|
||||
modules: 'qtcharts'
|
||||
|
||||
- name: '⚙️ Install CMake'
|
||||
uses: lukka/get-cmake@latest
|
||||
|
||||
- name: '🛠 Setup MSVC Development Environment'
|
||||
uses: TheMrMilchmann/setup-msvc-dev@v3
|
||||
with:
|
||||
arch: x64
|
||||
|
||||
- name: 'Configure CMake'
|
||||
run: |
|
||||
cmake -B ${{github.workspace}}\build -G 'Ninja' -DWITH_QT6=1 `
|
||||
-DCMAKE_INSTALL_PREFIX=${{github.workspace}}\build\qucs-suite `
|
||||
-DCMAKE_CXX_COMPILER=cl -DCMAKE_C_COMPILER=cl `
|
||||
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} `
|
||||
-DCI_VERSION="${{env.VERSION}}"
|
||||
|
||||
- name: 'Build Qucs-s'
|
||||
run: |
|
||||
cmake --build ${{github.workspace}}\build --parallel --config=${{env.BUILD_TYPE}}
|
||||
|
||||
- name: 'Cmake install'
|
||||
run: |
|
||||
cmake --build ${{github.workspace}}\build --target install
|
||||
|
||||
- name: 'Deploy Qt6 dependencies'
|
||||
run: |
|
||||
$qucs_bin_dir = "${{github.workspace}}\build\qucs-suite\bin"
|
||||
$executables = @(
|
||||
"qucs-s.exe", "qucs-sactivefilter.exe", "qucs-sattenuator.exe",
|
||||
"qucs-sfilter.exe", "qucs-spowercombining.exe", "qucs-strans.exe",
|
||||
"qucs-sspar-viewer.exe"
|
||||
)
|
||||
|
||||
$executables | ForEach-Object { windeployqt "$qucs_bin_dir\$_" --no-translations --no-opengl-sw --no-system-d3d-compiler --no-network --no-compiler-runtime }
|
||||
|
||||
- name: 'Add ngspice to release'
|
||||
run: |
|
||||
$qucs_dir = "${{github.workspace}}\build\qucs-suite"
|
||||
curl -sL --retry 3 --retry-delay 5 -o ngspice.7z ${{ env.NGSPICE_URL }}
|
||||
7z.exe x ngspice.7z -ongspice
|
||||
New-Item -ItemType Directory -Path "$qucs_dir\lib\ngspice" -Force
|
||||
Copy-Item -Recurse -Force ngspice\Spice64\bin\ $qucs_dir
|
||||
Copy-Item -Recurse -Force ngspice\Spice64\lib\ $qucs_dir
|
||||
Copy-Item -Recurse -Force ngspice\Spice64\share\ $qucs_dir
|
||||
|
||||
- name: 'Create zip archive for release'
|
||||
run: |
|
||||
$qucs_dir = "${{github.workspace}}\build\qucs-suite"
|
||||
New-Item -ItemType Directory -Path "$qucs_dir\misc" -Force
|
||||
Copy-Item -Recurse -Force "contrib\InnoSetup\misc" "$qucs_dir"
|
||||
cd $qucs_dir
|
||||
$zipName = "${env:APP_NAME}-${env:VERSION}${env:SHORT_HASH}-MSVC-x64.zip"
|
||||
Compress-Archive -Path ./bin, ./share, ./lib, ./misc -DestinationPath "${{github.workspace}}\$zipName"
|
||||
cd ${{github.workspace}}
|
||||
|
||||
- name: Compile .ISS to .EXE Installer
|
||||
uses: Minionguyjpro/Inno-Setup-Action@v1.2.5
|
||||
with:
|
||||
path: contrib/InnoSetup/qucs.iss
|
||||
options: /Qp /O"${{github.workspace}}" /DAPPNAME=${{ env.APP_NAME }} /DRELEASE="${{ env.VERSION }}${{ env.SHORT_HASH }}-MSVC"
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.APP_NAME }}-${{ env.VERSION }}${{ env.SHORT_HASH }}-MSVC-x64
|
||||
path: ${{ env.APP_NAME }}-${{ env.VERSION }}${{ env.SHORT_HASH }}-MSVC-x64.zip
|
||||
|
||||
- name: Upload exe artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.APP_NAME }}-${{ env.VERSION }}${{ env.SHORT_HASH }}-MSVC-setup
|
||||
path: ${{ env.APP_NAME }}-${{ env.VERSION }}${{ env.SHORT_HASH }}-MSVC-setup.exe
|
||||
|
||||
build-windows:
|
||||
runs-on: windows-2022
|
||||
continue-on-error: true
|
||||
needs: setup
|
||||
strategy:
|
||||
fail-fast: false
|
||||
@ -320,10 +456,13 @@ jobs:
|
||||
shell: pwsh
|
||||
run: |
|
||||
echo "VERSION=${{ needs.setup.outputs.version }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
echo "SHORT_HASH=${{ needs.setup.outputs.short_hash }}" | Out-File -FilePath $env:GITHUB_ENV -Encoding utf8 -Append
|
||||
|
||||
- name: Print version
|
||||
- name: Print version and hash
|
||||
shell: pwsh
|
||||
run: echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
run: |
|
||||
echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
echo "Qucs-S short hash is ${{ env.SHORT_HASH }}"
|
||||
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
@ -336,51 +475,40 @@ jobs:
|
||||
msystem: ucrt64
|
||||
cache: true
|
||||
update: true
|
||||
install: >-
|
||||
bison
|
||||
flex
|
||||
dos2unix
|
||||
curl
|
||||
zip
|
||||
p7zip
|
||||
pacboy: >-
|
||||
cmake:p
|
||||
gcc:p
|
||||
qt6-base:p
|
||||
qt6-tools:p
|
||||
qt6-svg:p
|
||||
make:p
|
||||
ninja:p
|
||||
python:p
|
||||
gperf:p
|
||||
github-cli:p
|
||||
qt6-charts:p
|
||||
install: bison flex dos2unix curl zip p7zip
|
||||
pacboy: cmake:p gcc:p qt6-base:p qt6-tools:p qt6-svg:p make:p ninja:p python:p gperf:p github-cli:p qt6-charts:p
|
||||
|
||||
|
||||
- name: Build project with CMake
|
||||
run: |
|
||||
cmake.exe -B build/ -G "MinGW Makefiles" \
|
||||
cmake.exe -B build/ -G 'Ninja' \
|
||||
-DCMAKE_BUILD_TYPE=${{env.BUILD_TYPE}} \
|
||||
-DCMAKE_INSTALL_PREFIX=build/qucs-suite \
|
||||
-DWITH_QT6=ON \
|
||||
-DCI_VERSION="${{env.VERSION}}"
|
||||
cmake.exe --build build/ -j$(nproc) --config ${{env.BUILD_TYPE}}
|
||||
cmake.exe --build build/ --parallel --config ${{env.BUILD_TYPE}}
|
||||
|
||||
- name: Make install
|
||||
run: |
|
||||
cd build/ && mingw32-make.exe install DESTDIR=./ -j$(nproc)
|
||||
cp -rf 'Program Files (x86)/qucs-suite' ./
|
||||
cd ..
|
||||
cmake --build build/ --target install
|
||||
strip build/qucs-suite/bin/*.exe
|
||||
|
||||
- name: Deploy Qt6 dependencies
|
||||
run: |
|
||||
windeployqt-qt6.exe build/qucs-suite/bin/qucs-s.exe --svg --no-translations
|
||||
windeployqt-qt6.exe build/qucs-suite/bin/qucs-sactivefilter.exe --no-translations
|
||||
windeployqt-qt6.exe build/qucs-suite/bin/qucs-sattenuator.exe --no-translations
|
||||
windeployqt-qt6.exe build/qucs-suite/bin/qucs-sfilter.exe --no-translations
|
||||
windeployqt-qt6.exe build/qucs-suite/bin/qucs-spowercombining.exe --no-translations
|
||||
windeployqt-qt6.exe build/qucs-suite/bin/qucs-strans.exe --no-translations
|
||||
windeployqt-qt6.exe build/qucs-suite/bin/qucs-sspar-viewer.exe --no-translations
|
||||
deploy_tool="windeployqt-qt6.exe"
|
||||
bin_dir="build/qucs-suite/bin"
|
||||
options="--svg --no-translations --no-system-d3d-compiler --no-network"
|
||||
|
||||
executables=(
|
||||
"qucs-s.exe" "qucs-sactivefilter.exe" "qucs-sattenuator.exe"
|
||||
"qucs-sfilter.exe" "qucs-spowercombining.exe" "qucs-strans.exe"
|
||||
"qucs-sspar-viewer.exe"
|
||||
)
|
||||
|
||||
for exe in "${executables[@]}"; do
|
||||
$deploy_tool "$bin_dir/$exe" $options
|
||||
done
|
||||
|
||||
- name: Copy non-Qt DLLs to bin directory
|
||||
run: |
|
||||
shopt -s extglob
|
||||
@ -398,32 +526,33 @@ jobs:
|
||||
mkdir -p build/qucs-suite/lib/ngspice
|
||||
cp -rf ngspice/Spice64/bin/ build/qucs-suite
|
||||
cp -rf ngspice/Spice64/lib/ build/qucs-suite
|
||||
cp -rf ngspice/Spice64/share/ build/qucs-suite
|
||||
|
||||
- name: Create zip archive for release
|
||||
run: |
|
||||
mkdir -p build/qucs-suite/misc
|
||||
cp -rf contrib/InnoSetup/misc build/qucs-suite/
|
||||
cd build/qucs-suite
|
||||
zip -r ../../${{ env.APP_NAME }}-${{ env.VERSION }}-win64.zip ./bin ./share ./lib ./misc
|
||||
zip -r ../../${{ env.APP_NAME }}-${{ env.VERSION }}${{ env.SHORT_HASH }}-win64.zip ./bin ./share ./lib ./misc
|
||||
cd ../..
|
||||
|
||||
- name: Compile .ISS to .EXE Installer
|
||||
uses: Minionguyjpro/Inno-Setup-Action@v1.2.4
|
||||
uses: Minionguyjpro/Inno-Setup-Action@v1.2.5
|
||||
with:
|
||||
path: contrib/InnoSetup/qucs.iss
|
||||
options: /Qp /O"${{github.workspace}}" /DAPPNAME=${{ env.APP_NAME }} /DRELEASE="${{ env.VERSION }}"
|
||||
options: /Qp /O"${{github.workspace}}" /DAPPNAME=${{ env.APP_NAME }} /DRELEASE="${{ env.VERSION }}${{ env.SHORT_HASH }}"
|
||||
|
||||
- name: Upload build artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.APP_NAME }}-${{ env.VERSION }}-win64
|
||||
path: ${{ env.APP_NAME }}-${{ env.VERSION }}-win64.zip
|
||||
name: ${{ env.APP_NAME }}-${{ env.VERSION }}${{ env.SHORT_HASH }}-win64
|
||||
path: ${{ env.APP_NAME }}-${{ env.VERSION }}${{ env.SHORT_HASH }}-win64.zip
|
||||
|
||||
- name: Upload exe artifacts
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: ${{ env.APP_NAME }}-${{ env.VERSION }}-setup
|
||||
path: ${{ env.APP_NAME }}-${{ env.VERSION }}-setup.exe
|
||||
name: ${{ env.APP_NAME }}-${{ env.VERSION }}${{ env.SHORT_HASH }}-setup
|
||||
path: ${{ env.APP_NAME }}-${{ env.VERSION }}${{ env.SHORT_HASH }}-setup.exe
|
||||
|
||||
create-release:
|
||||
runs-on: ubuntu-latest
|
||||
@ -434,10 +563,14 @@ jobs:
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set version environment variable
|
||||
run: echo "VERSION=${{ needs.setup.outputs.version }}" >> $GITHUB_ENV
|
||||
run: |
|
||||
echo "VERSION=${{ needs.setup.outputs.version }}" >> $GITHUB_ENV
|
||||
echo "SHORT_HASH=${{ needs.setup.outputs.short_hash }}" >> $GITHUB_ENV
|
||||
|
||||
- name: Print version
|
||||
run: echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
- name: Print version and hash
|
||||
run: |
|
||||
echo "Qucs-S version is ${{ env.VERSION }}"
|
||||
echo "Qucs-S short hash is ${{ env.SHORT_HASH }}"
|
||||
|
||||
- name: Download build artifacts
|
||||
uses: actions/download-artifact@v4
|
||||
@ -449,7 +582,7 @@ jobs:
|
||||
run: |
|
||||
cd ~/artifacts
|
||||
> hashes.sha256
|
||||
for file in $(find . -type f \( -name "*.exe" -o -name "*.zip" -o -name "*.dmg" -o -name "*.AppImage" \)); do
|
||||
for file in $(find . -type f \( -name "*-setup.exe" ! -name "*-MSVC-setup.exe" -o -name "*-win64.zip" -o -name "*.dmg" -o -name "*.AppImage" \)); do
|
||||
filename=$(basename "$file")
|
||||
sha256sum "$file" | awk -v fname="$filename" '{print $1 " *" fname}' >> hashes.sha256
|
||||
done
|
||||
@ -475,8 +608,8 @@ jobs:
|
||||
run: |
|
||||
# Find existing artifact files
|
||||
hash_files=$(find ~/artifacts -name "*.sha256" -print0 | xargs -0 echo)
|
||||
exe_files=$(find ~/artifacts -name "*.exe" -print0 | xargs -0 echo)
|
||||
zip_files=$(find ~/artifacts -name "*.zip" -print0 | xargs -0 echo)
|
||||
exe_files=$(find ~/artifacts -name "*-setup.exe" ! -name "*-MSVC-setup.exe" -print0 | xargs -0 echo)
|
||||
zip_files=$(find ~/artifacts -name "*-win64.zip" -print0 | xargs -0 echo)
|
||||
dmg_files=$(find ~/artifacts -name "*.dmg" -print0 | xargs -0 echo)
|
||||
appimage_files=$(find ~/artifacts -name "*.AppImage" -print0 | xargs -0 echo)
|
||||
|
||||
|
3
.gitignore
vendored
@ -57,5 +57,6 @@ __pycache__
|
||||
.vscode/settings.json
|
||||
.vscode/tasks.json
|
||||
/cmake-build-debug/
|
||||
|
||||
.cache/
|
||||
/qt/
|
||||
build-qucs-s-spar-viewer-Desktop-Debug/
|
||||
|
@ -39,14 +39,8 @@ endif()
|
||||
|
||||
message(STATUS "${PROJECT_NAME} ${CMAKE_INSTALL_PREFIX} ${qucs-suite_BINARY_DIR}" )
|
||||
|
||||
if(WITH_QT6)
|
||||
set(QT_VERSION_MAJOR 6)
|
||||
else()
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
endif()
|
||||
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets LinguistTools)
|
||||
set(QT_VERSION ${Qt${QT_VERSION_MAJOR}Core_VERSION})
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets LinguistTools)
|
||||
set(QT_VERSION ${Qt6Core_VERSION})
|
||||
|
||||
message(STATUS "Qt Version: " ${QT_VERSION})
|
||||
|
||||
|
74
NEWS.md
@ -1,3 +1,77 @@
|
||||
# Qucs-S 25.1.1
|
||||
|
||||
## Bugfixes and general improvemnt
|
||||
|
||||
* Add UIC option for FFT analysis #1261
|
||||
* Improve wire editing #1253
|
||||
* Fix crash when deleting shorted devices #1254
|
||||
* Fix removing labels #1255
|
||||
|
||||
## Localization
|
||||
|
||||
* Russian translation update #1246
|
||||
|
||||
## Packaging
|
||||
|
||||
* Update Gentoo ebuidl #1252
|
||||
|
||||
## Known issues
|
||||
|
||||
* The .OPTIONS and .FUNC devices not working properly. Use the *INCLUDE SCRIPT* instead. See #1260
|
||||
|
||||
# Qucs-S 25.1.0
|
||||
|
||||
## New features
|
||||
|
||||
* Component properties dialog redesign #1054
|
||||
* CDL netlist export #1165
|
||||
* Implemented plotting XSPICE digital nodes #1138
|
||||
* Add individual CLI oparameters setting for each simulator #1152
|
||||
* Add .CSPARAM virtual device #1136
|
||||
* Add Qt aplication style selection #1118
|
||||
* Add default graph line thickness setting #1066
|
||||
* Add setting for grid visibility #1065
|
||||
* Allow parameter passing for SPICE file device #1197
|
||||
* S-parameter files viewer improvements #1133
|
||||
* Added background when renderign DC bias labels #1121
|
||||
* Added possibility to create libraries from SpiceLibraryDevice components #944 #1210
|
||||
* Added two new wire forms #1232
|
||||
|
||||
## Bugfixes and general improvemnt
|
||||
|
||||
* CI improvement #1103 #1091 #1086
|
||||
* Fixed graph renderign performance #984
|
||||
* Fixed SPICE models processing bugs #861 #1055 #1090 #1142
|
||||
* Default shorted resistance changed from 0 Ohms to 1/GMIN #1116
|
||||
* Fixed diagram memory leak #1139
|
||||
* Added offset parameter for AC current source #1218
|
||||
* Fixed schematic editing issues #1159 #1134
|
||||
|
||||
## Component library
|
||||
|
||||
This release contains a massive library extention:
|
||||
|
||||
* Added libraries for 74HC, 74LV, CD4000 digital ICs for analog mode #1034 #1160
|
||||
* Added XSPICE generic logic gates library for analog mode #1199
|
||||
* Added XSPICE digital auxillary devices #1193
|
||||
* Added Laser diode library #942
|
||||
* Added generic triac device in Thyristor.lib #924
|
||||
* Added vaccum tubes extended library #846 #1216
|
||||
* Added neon bulb model #846 #1216
|
||||
* Added MOC3063/MOC3062 optocouple models #846 #1216
|
||||
* Added Analog ICs and dual gate MOSFET libraries #1229
|
||||
* Added RC with parasitics library #1240
|
||||
|
||||
## Packaging
|
||||
|
||||
* Qt5 build deprecated; switch to Qt6 by default #938
|
||||
* Windows package improvements #1123
|
||||
|
||||
## Localization
|
||||
|
||||
* Update Turkish translation #1094
|
||||
|
||||
|
||||
# Qucs-S 24.4.1
|
||||
|
||||
## Bugfixes
|
||||
|
36
README.md
@ -31,23 +31,30 @@ Use CMake to build Qucs-S. Install all necessary dependencies: GCC, Qt, Flex, Bi
|
||||
|
||||
### Dependencies
|
||||
|
||||
#### Ubuntu
|
||||
Qucs-S requires Qt6 libraries including QtCharts, CMake, flex, bison, gperf, and dos2unix as compile time
|
||||
dependencies. Install these packages using the package manager of your distribution before compiling Qucs-S.
|
||||
Ngspice is not required at compile time, but it is required as runtime dependency to run the simulation.
|
||||
|
||||
Here are some examples for the popular Linux distributions.
|
||||
|
||||
#### Ubuntu or Debian
|
||||
|
||||
~~~
|
||||
sudo apt-get install ngspice build-essential git cmake qtbase5-dev qttools5-dev libqt5svg5-dev libqt5charts5-dev flex bison gperf dos2unix
|
||||
sudo apt-get install ngspice build-essential git cmake flex bison gperf dos2unix
|
||||
sudo apt-get install qt6-base-dev qt6-tools-dev qt6-tools-dev-tools libglx-dev linguist-qt6
|
||||
sudo apt-get install qt6-l10n-tools libqt6svg6-dev libgl1-mesa-dev qt6-charts-dev libqt6opengl6-dev
|
||||
~~~
|
||||
|
||||
#### OpenSUSE Tumbleweed
|
||||
#### Fedora
|
||||
|
||||
~~~
|
||||
sudo zypper install ngspice git cmake libqt5-qtbase-devel libqt5-qttools-devel libqt5-qtsvg-devel libqt5-qtcharts-devel flex bison gperf dos2unix
|
||||
sudo dnf install gcc-c++ cmake git flex bison gperf dos2unix ngspice
|
||||
sudo dnf install qt6-qtbase-devel cmake qt6-qtsvg-devel qt6-qttools-devel qt6-qtcharts-devel
|
||||
~~~
|
||||
|
||||
### Compiling
|
||||
|
||||
#### Qt5
|
||||
|
||||
Then clone this git repository and execute in the top directory:
|
||||
After installing the dependecies, clone this git repository and execute in the top directory:
|
||||
|
||||
~~~
|
||||
git submodule init
|
||||
@ -59,19 +66,16 @@ 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
|
||||
Since the v25.1.0 the Qucs-S will be configured with Qt6 by default. Substutute the `/your_install_prefix/`
|
||||
as 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
|
||||
### Qt5/Qt6 support
|
||||
|
||||
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
|
||||
Qt5 support has been dropped since v25.1.0. Only Qt6 libraries are supported. Set the `WITH_QT6=ON`
|
||||
cmake flag if compiling the Qucs-S versions before v25.1.0
|
||||
|
||||
~~~
|
||||
cmake .. -DWITH_QT6=ON -DCMAKE_INSTALL_PREFIX=/your_install_prefix/
|
||||
~~~
|
||||
|
||||
### Running
|
||||
|
||||
|
@ -1,5 +1,5 @@
|
||||
;
|
||||
; qucs.iss - inno Setup script file
|
||||
; Qucs-S Inno Setup script file
|
||||
; Refactored for improved readability and maintainability
|
||||
;
|
||||
; Copyright (C) 2005-2011 Stefan Jahn <stefan@lkcc.org>
|
||||
; Copyright (C) 2014-2016 Guilherme Brondani Torri <guitorri@gmail.com>
|
||||
@ -18,7 +18,7 @@
|
||||
; along with this package; see the file COPYING. If not, write to
|
||||
; the Free Software Foundation, Inc., 51 Franklin Street - Fifth Floor,
|
||||
; Boston, MA 02110-1301, USA.
|
||||
;
|
||||
|
||||
#ifndef RELEASE
|
||||
#define RELEASE "24.3.0"
|
||||
#endif
|
||||
@ -31,37 +31,34 @@
|
||||
#define TREE "..\..\build\qucs-suite\"
|
||||
|
||||
[Setup]
|
||||
AppName={# APPNAME}
|
||||
AppVersion={# RELEASE}
|
||||
AppName={#APPNAME}
|
||||
AppVersion={#RELEASE}
|
||||
AppPublisher=The Qucs-S Team
|
||||
AppPublisherURL={# URL}
|
||||
AppSupportURL={# URL}
|
||||
AppUpdatesURL={# URL}
|
||||
AppPublisherURL={#URL}
|
||||
AppSupportURL={#URL}
|
||||
AppUpdatesURL={#URL}
|
||||
DefaultDirName={pf}\Qucs-S
|
||||
DefaultGroupName=Qucs-S
|
||||
AllowNoIcons=yes
|
||||
LicenseFile={# TREE}\misc\gpl.rtf
|
||||
OutputBaseFilename={# APPNAME}-{# RELEASE}-setup
|
||||
LicenseFile={#TREE}\misc\gpl.rtf
|
||||
OutputBaseFilename={#APPNAME}-{#RELEASE}-setup
|
||||
Compression=lzma2/max
|
||||
SolidCompression=yes
|
||||
ChangesEnvironment=yes
|
||||
UsePreviousAppDir=yes
|
||||
WizardStyle=modern
|
||||
SetupIconFile={# TREE}\misc\qucs.ico
|
||||
|
||||
; [Registry]
|
||||
; Root: HKLM; Subkey: SYSTEM\CurrentControlSet\Control\Session Manager\Environment; ValueType: string; ValueName: QUCSDIR; ValueData: "{app}"; Flags: deletevalue createvalueifdoesntexist noerror; MinVersion: 0,4.00.1381
|
||||
SetupIconFile={#TREE}\misc\qucs.ico
|
||||
Uninstallable=yes
|
||||
ArchitecturesInstallIn64BitMode=x64compatible
|
||||
|
||||
[Tasks]
|
||||
Name: "desktopicon"; Description: "{cm:CreateDesktopIcon}"; GroupDescription: "{cm:AdditionalIcons}"; Flags: unchecked
|
||||
|
||||
[Files]
|
||||
Source: "{# TREE}\bin\*"; DestDir: "{app}\bin"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
; Source: "{# TREE}\include\*"; DestDir: "{app}\include"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
; Source: "{# TREE}\lib\*"; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{# TREE}\misc\*"; DestDir: "{app}\misc"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{# TREE}\lib\*"; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{# TREE}\share\*"; DestDir: "{app}\share"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{#TREE}\bin\*"; DestDir: "{app}\bin"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{#TREE}\misc\*"; DestDir: "{app}\misc"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{#TREE}\lib\*"; DestDir: "{app}\lib"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
Source: "{#TREE}\share\*"; DestDir: "{app}\share"; Flags: ignoreversion recursesubdirs createallsubdirs
|
||||
|
||||
[Icons]
|
||||
Name: "{group}\Qucs-S Simulator"; Filename: "{app}\bin\qucs-s.exe"; IconFilename: "{app}\misc\qucs.ico"; WorkingDir: "{app}\bin"
|
||||
@ -70,3 +67,16 @@ Name: "{group}\Technical Online Documentation"; Filename: "{app}\misc\docsite.ur
|
||||
Name: "{group}\{cm:UninstallProgram,Qucs}"; Filename: "{uninstallexe}"
|
||||
Name: "{userdesktop}\Qucs-S"; Filename: "{app}\bin\qucs-s.exe"; IconFilename: "{app}\misc\qucs.ico"; WorkingDir: "{app}\bin"; Tasks: desktopicon
|
||||
|
||||
[Code]
|
||||
procedure CurStepChanged(CurStep: TSetupStep);
|
||||
var
|
||||
ResultCode: Integer;
|
||||
Uninstall: String;
|
||||
begin
|
||||
if (CurStep = ssInstall) then begin
|
||||
if RegQueryStringValue(HKLM, 'SOFTWARE\Microsoft\Windows\CurrentVersion\Uninstall\{#APPNAME}_is1', 'UninstallString', Uninstall) then begin
|
||||
MsgBox('An existing version of {#APPNAME} was detected. It will now be removed before installing the new version.', mbInformation, MB_OK);
|
||||
Exec(RemoveQuotes(Uninstall), ' /SILENT', '', SW_SHOWNORMAL, ewWaitUntilTerminated, ResultCode);
|
||||
end;
|
||||
end;
|
||||
end;
|
||||
|
25
contrib/gentoo/README.md
Normal file
@ -0,0 +1,25 @@
|
||||
qucs_s
|
||||
===============
|
||||
|
||||
Gentoo overlay with ebuild for Qucs-S package
|
||||
|
||||
To use, follow https://wiki.gentoo.org/wiki/Creating_an_ebuild_repository
|
||||
and copy content of this folder to new repository
|
||||
|
||||
===============
|
||||
TODO list:
|
||||
|
||||
to Science project (sci-electronics)
|
||||
|
||||
docs examples test USE flags ?
|
||||
lib as separate package ? with meta like kicad-meta ?
|
||||
qucsatorrf - separate ebuild ?
|
||||
|
||||
qucs - qucsator ebuild
|
||||
gnucsator - gnucap based - ebuild
|
||||
|
||||
openvaf - ebuild ?
|
||||
|
||||
xyce ebuild ?
|
||||
spiceopus ebuild ?
|
||||
|
1
contrib/gentoo/metadata/layout.conf
Normal file
@ -0,0 +1 @@
|
||||
masters = gentoo
|
1
contrib/gentoo/profiles/repo_name
Normal file
@ -0,0 +1 @@
|
||||
qucs_s
|
@ -1,52 +0,0 @@
|
||||
# Copyright 1999-2024 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
if [[ ${PV} == "9999" ]]; then
|
||||
EGIT_REPO_URI="https://github.com/ra3xdh/qucs_s.git"
|
||||
inherit git-r3
|
||||
else
|
||||
SRC_URI="https://github.com/ra3xdh/qucs_s/releases/download/${PV}/${P}.tar.gz"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
fi
|
||||
|
||||
inherit cmake-multilib xdg-utils
|
||||
|
||||
DESCRIPTION="Quite universal circuit simulator with SPICE"
|
||||
HOMEPAGE="https://github.com/ra3xdh/qucs_s"
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
IUSE=""
|
||||
RESTRICT="mirror"
|
||||
|
||||
DEPEND="
|
||||
dev-qt/qtsvg:6
|
||||
sci-electronics/ngspice
|
||||
"
|
||||
RDEPEND="${DEPEND}"
|
||||
BDEPEND="
|
||||
dev-qt/qttools:6
|
||||
sys-devel/flex
|
||||
sys-devel/bison
|
||||
app-text/dos2unix
|
||||
dev-util/gperf
|
||||
"
|
||||
|
||||
multilib_src_configure() {
|
||||
local mycmakeargs=(
|
||||
-DWITH_QT6=ON
|
||||
-DCMAKE_INSTALL_PREFIX=/usr
|
||||
)
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
xdg_icon_cache_update
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_icon_cache_update
|
||||
}
|
||||
|
6
contrib/gentoo/sci-electronics/qucs_s/Manifest
Normal file
@ -0,0 +1,6 @@
|
||||
DIST qucs-s-24.4.1.tar.gz 4659723 BLAKE2B aeb2b3613f8ea2aeaeabfe3aa18fc0aca70bd7acecd862aac81cbc53e5c5ef671db7c76ebcaaf9ec4e15a2d1bf2fbc373f18d96e67fd228e683a412b87102f5d SHA512 ef96395c9932e4f90f718d1515a1f8550650005c5ba263580d911ae827bf22c63c7b8d6bac0f46f35bb4946ee17f587f424c60d0bf0fb53602383b8d375a3e19
|
||||
DIST qucs-s-25.1.0.tar.gz 4690986 BLAKE2B 285d475bd61e1fb807d8d25edb9b437fb8aa43c590257ce02bec61ac0cd09c3c62b116262372113bf1d319f68837a17bbcb2b5c528a0d561f5ffb5c7b10ab08c SHA512 3ce980491685974dae9cea5d2758d6b227dde0e427152001520f1b46bcd0a4841c27ddd1256a9f3a1bb2742f039271bf0f45d1ab8986864f2168af17f414a815
|
||||
EBUILD qucs_s-24.4.1.ebuild 1341 BLAKE2B 60c34a9e9448d1c62c42809621ab238398b8cd3a986999d36082ff286a1d1cc6add75e83b85d2d75dc2294c8804d1c734bec474bb5f11fe8c3086f30cd9dd8e3 SHA512 43cf52a729500785db06aa645089e01fc8f8cdde2794139740e9312da8e5b76cdb17551485c7294f0b94e5bb443c61778b15b96878289360eeb9d4ec831b5a9f
|
||||
EBUILD qucs_s-25.1.0.ebuild 1325 BLAKE2B 9469756e62eeb2a97736d19648223d6ad73dd638f4352bf61564a5afcd34be9e96b311c56c57b687ec7619a6298ac2123307297dc7db36239b7e2b31f3c92c4d SHA512 e0c0bbee39f6085c2f6f7a6451ae821c5bd2b06befb3407085124ff8196fbe05375720ddab882f8c923abde4f696414b98e147c91f87adfbdb23af80c4896907
|
||||
EBUILD qucs_s-9999.ebuild 1325 BLAKE2B 9469756e62eeb2a97736d19648223d6ad73dd638f4352bf61564a5afcd34be9e96b311c56c57b687ec7619a6298ac2123307297dc7db36239b7e2b31f3c92c4d SHA512 e0c0bbee39f6085c2f6f7a6451ae821c5bd2b06befb3407085124ff8196fbe05375720ddab882f8c923abde4f696414b98e147c91f87adfbdb23af80c4896907
|
||||
MISC metadata.xml 5020 BLAKE2B e4a4aea13d1b47cfc598fb9849c5e8adeb6f0b420bc006fed43ff8ff8294de0aabadfb2c8490b5cb9c9ee4b3bf8733f27f25e0a8249c09965f3d3b3573ae9205 SHA512 bb4c2d6f2e7b65a65e491883d48239ea0567a0dcd88c23e86af8ce635be6216ceeb9401c51cd8acc2bbcdbf8937821925242b9fe34cd92157282a12733084ae0
|
72
contrib/gentoo/sci-electronics/qucs_s/metadata.xml
Normal file
@ -0,0 +1,72 @@
|
||||
<?xml version="1.0" encoding="UTF-8"?>
|
||||
<!DOCTYPE pkgmetadata SYSTEM "http://www.gentoo.org/dtd/metadata.dtd">
|
||||
<pkgmetadata>
|
||||
<maintainer type="person">
|
||||
<name>Vadim Kuznetsov</name>
|
||||
<email>ra3xdh@gmail.com</email>
|
||||
</maintainer>
|
||||
<maintainer type="project">
|
||||
<name>Proxy Maintainers</name>
|
||||
<email>proxy-maint@gentoo.org</email>
|
||||
</maintainer>
|
||||
<longdescription lang="en">
|
||||
Qucs-S is a circuit simulation program based on Qucs circuit simulator. The "S" letter indicates SPICE.
|
||||
The purpose of the Qucs-S project is to use free circuit simulation kernels (Ngspice, Qucsator, Xyce)
|
||||
with the unified GUI based on Qt6 toolkit. It merges the power of SPICE and the simplicity of the Qucs GUI.
|
||||
Qucs-S is not a simulator by itself, but it requires to use an external simulation backend with it.
|
||||
Qucs-S allows to use the following open-source simulation kernels:
|
||||
|
||||
<pkg>sci-electronics/ngspice</pkg> is recommended to use.
|
||||
Ngspice is powerful mixed-level/mixed-signal circuit simulator. The most of industrial SPICE models
|
||||
are compatible with Ngspice. It has an excellent simulation performance and powerful postprocessor.
|
||||
Google Skywater 130nm PDK supports Ngspice.
|
||||
|
||||
XYCE is a new SPICE-compatible circuit simulator written by Sandia from the scratch. It supports
|
||||
basic SPICE simulation types and has an advanced RF simulation features such as Harmonic balance simulation.
|
||||
|
||||
QucsatorRF for RF and microwave circuits design. It provides advanced models for such devices microstrip
|
||||
lines and waveguides. QucsatorRF is not SPICE compatible. The general purpose circuits simulation is
|
||||
also possible but not recommended.
|
||||
|
||||
SpiceOpus is developed by the Faculty of Electrical Engineering of the Ljubljana University. It based on
|
||||
the SPICE-3f5 code
|
||||
</longdescription>
|
||||
<longdescription lang="ru">
|
||||
Qucs-S - это кроссплатформенная программа с открытым исходным кодом для аналогового моделирования
|
||||
электронных схем с графическим интерфейсом, написанная на С++ на базе библиотек Qt6.
|
||||
|
||||
Qucs-S основан как форк проекта Qucs, а буква "S" обозначает SPICE - стандарт де-факто в аналоговом
|
||||
моделировании. Он объединяет мощь разных SPICE-симуляторов с универсальным и простым в использовании
|
||||
интерфейсом Qucs.
|
||||
|
||||
Qucs-S не моделирует схему сам по себе, а использует внешний симулятор:
|
||||
|
||||
<pkg>sci-electronics/ngspice</pkg> - рекомендуется как наиболее распространённый симулятор
|
||||
с открытым исходным кодом. Большая часть доступных SPICE-моделей компонентов совместима с Ngspice.
|
||||
У него отличная скорость работы, а также мощный и гибкий постпроцессор обработки результатов.
|
||||
Как один из примеров, Google Skywater 130nm PDK, библиотека компонентов для разработки микросхем
|
||||
от Google, включает модели для Ngspice.
|
||||
|
||||
QucsatorRF - предназначен для радиочастотного моделирования. Несовместим с SPICE-моделями, зато имеет
|
||||
продвинутые модели для микрополосковых линий и волноводов. Также способен моделировать обычные схемы,
|
||||
но это не рекомендуется.
|
||||
Не требует отдельной установки, поскольку входит в комплект Qucs-S.
|
||||
|
||||
XYCE - новый SPICE-симулятор, написаный с руля, от Sandia National Laboratories. Поддерживает
|
||||
как стандартные типы моделей SPICE, так и продвинутые функции для радиочастотного моделирования,
|
||||
к примеру метод гармонического баланса.
|
||||
|
||||
SpiceOpus - бесплатный симулятор с закрытым исходным кодом от инженерного факультета университета Любляны.
|
||||
Основан на оигинальном коде SPICE-3f5 с различными улучшениями и расширениями.
|
||||
</longdescription>
|
||||
<upstream>
|
||||
<maintainer status="active">
|
||||
<name>Vadim Kuznetsov</name>
|
||||
<email>ra3xdh@gmail.com</email>
|
||||
</maintainer>
|
||||
<changelog>https://github.com/ra3xdh/qucs_s/releases</changelog>
|
||||
<doc lang="en">https://ra3xdh.github.io/pdf/qucs_s_tutorial.pdf</doc>
|
||||
<bugs-to>mailto:ra3xdh@gmail.com</bugs-to>
|
||||
<remote-id type="github">ra3xdh/qucs_s</remote-id>
|
||||
</upstream>
|
||||
</pkgmetadata>
|
65
contrib/gentoo/sci-electronics/qucs_s/qucs_s-24.4.1.ebuild
Normal file
@ -0,0 +1,65 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit cmake-multilib optfeature xdg
|
||||
|
||||
DESCRIPTION="Quite universal circuit simulator with SPICE"
|
||||
HOMEPAGE="https://github.com/ra3xdh/qucs_s"
|
||||
|
||||
MY_PN="qucs-s"
|
||||
MY_P=${MY_PN}-${PV}
|
||||
|
||||
if [[ ${PV} == 9999 ]]; then
|
||||
EGIT_REPO_URI="https://github.com/ra3xdh/${PN}.git"
|
||||
inherit git-r3
|
||||
else
|
||||
SRC_URI="https://github.com/ra3xdh/${PN}/releases/download/${PV}/${MY_P}.tar.gz"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
fi
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
|
||||
DEPEND="
|
||||
dev-qt/qtbase:6[gui,widgets]
|
||||
dev-qt/qtsvg:6
|
||||
"
|
||||
RDEPEND="${DEPEND}"
|
||||
BDEPEND="
|
||||
dev-qt/qttools:6[linguist]
|
||||
sys-devel/flex
|
||||
sys-devel/bison
|
||||
dev-util/gperf
|
||||
app-text/dos2unix
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
DOCS="${S}/AUTHORS ${S}/ChangeLog ${S}/debian/changelog ${S}/CONTRIBUTING.md ${S}/NEWS.md ${S}/NEWS_qucs ${S}/README.md ${S}/README_qucs ${S}/THANKS ${S}/TODO"
|
||||
|
||||
multilib_src_configure() {
|
||||
local mycmakeargs=(
|
||||
-DWITH_QT6=ON
|
||||
-DCMAKE_INSTALL_PREFIX=/usr
|
||||
)
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
xdg_pkg_preinst
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
optfeature "Result postprocessing in Octave" sci-mathematics/octave
|
||||
|
||||
optfeature_header "Install optonal simulator backends:"
|
||||
optfeature "Ngspice" sci-electronics/ngspice
|
||||
|
||||
xdg_pkg_postinst
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_pkg_postrm
|
||||
}
|
64
contrib/gentoo/sci-electronics/qucs_s/qucs_s-25.1.0.ebuild
Normal file
@ -0,0 +1,64 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit cmake-multilib optfeature xdg
|
||||
|
||||
DESCRIPTION="Quite universal circuit simulator with SPICE"
|
||||
HOMEPAGE="https://github.com/ra3xdh/qucs_s"
|
||||
|
||||
MY_PN="qucs-s"
|
||||
MY_P=${MY_PN}-${PV}
|
||||
|
||||
if [[ ${PV} == 9999 ]]; then
|
||||
EGIT_REPO_URI="https://github.com/ra3xdh/${PN}.git"
|
||||
inherit git-r3
|
||||
else
|
||||
SRC_URI="https://github.com/ra3xdh/${PN}/releases/download/${PV}/${MY_P}.tar.gz"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
fi
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
|
||||
DEPEND="
|
||||
dev-qt/qtbase:6[gui,widgets]
|
||||
dev-qt/qtsvg:6
|
||||
"
|
||||
RDEPEND="${DEPEND}"
|
||||
BDEPEND="
|
||||
dev-qt/qttools:6[linguist]
|
||||
sys-devel/flex
|
||||
sys-devel/bison
|
||||
dev-util/gperf
|
||||
app-text/dos2unix
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
DOCS="${S}/AUTHORS ${S}/ChangeLog ${S}/debian/changelog ${S}/CONTRIBUTING.md ${S}/NEWS.md ${S}/NEWS_qucs ${S}/README.md ${S}/README_qucs ${S}/THANKS ${S}/TODO"
|
||||
|
||||
multilib_src_configure() {
|
||||
local mycmakeargs=(
|
||||
-DCMAKE_INSTALL_PREFIX=/usr
|
||||
)
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
xdg_pkg_preinst
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
optfeature "Result postprocessing in Octave" sci-mathematics/octave
|
||||
|
||||
optfeature_header "Install optonal simulator backends:"
|
||||
optfeature "Ngspice" sci-electronics/ngspice
|
||||
|
||||
xdg_pkg_postinst
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_pkg_postrm
|
||||
}
|
64
contrib/gentoo/sci-electronics/qucs_s/qucs_s-9999.ebuild
Normal file
@ -0,0 +1,64 @@
|
||||
# Copyright 1999-2025 Gentoo Authors
|
||||
# Distributed under the terms of the GNU General Public License v2
|
||||
|
||||
EAPI=8
|
||||
|
||||
inherit cmake-multilib optfeature xdg
|
||||
|
||||
DESCRIPTION="Quite universal circuit simulator with SPICE"
|
||||
HOMEPAGE="https://github.com/ra3xdh/qucs_s"
|
||||
|
||||
MY_PN="qucs-s"
|
||||
MY_P=${MY_PN}-${PV}
|
||||
|
||||
if [[ ${PV} == 9999 ]]; then
|
||||
EGIT_REPO_URI="https://github.com/ra3xdh/${PN}.git"
|
||||
inherit git-r3
|
||||
else
|
||||
SRC_URI="https://github.com/ra3xdh/${PN}/releases/download/${PV}/${MY_P}.tar.gz"
|
||||
KEYWORDS="~amd64 ~x86"
|
||||
fi
|
||||
|
||||
LICENSE="GPL-2"
|
||||
SLOT="0"
|
||||
|
||||
DEPEND="
|
||||
dev-qt/qtbase:6[gui,widgets]
|
||||
dev-qt/qtsvg:6
|
||||
"
|
||||
RDEPEND="${DEPEND}"
|
||||
BDEPEND="
|
||||
dev-qt/qttools:6[linguist]
|
||||
sys-devel/flex
|
||||
sys-devel/bison
|
||||
dev-util/gperf
|
||||
app-text/dos2unix
|
||||
"
|
||||
|
||||
S="${WORKDIR}/${MY_P}"
|
||||
|
||||
DOCS="${S}/AUTHORS ${S}/ChangeLog ${S}/debian/changelog ${S}/CONTRIBUTING.md ${S}/NEWS.md ${S}/NEWS_qucs ${S}/README.md ${S}/README_qucs ${S}/THANKS ${S}/TODO"
|
||||
|
||||
multilib_src_configure() {
|
||||
local mycmakeargs=(
|
||||
-DCMAKE_INSTALL_PREFIX=/usr
|
||||
)
|
||||
cmake_src_configure
|
||||
}
|
||||
|
||||
pkg_preinst() {
|
||||
xdg_pkg_preinst
|
||||
}
|
||||
|
||||
pkg_postinst() {
|
||||
optfeature "Result postprocessing in Octave" sci-mathematics/octave
|
||||
|
||||
optfeature_header "Install optonal simulator backends:"
|
||||
optfeature "Ngspice" sci-electronics/ngspice
|
||||
|
||||
xdg_pkg_postinst
|
||||
}
|
||||
|
||||
pkg_postrm() {
|
||||
xdg_pkg_postrm
|
||||
}
|
@ -35,6 +35,12 @@
|
||||
</screenshots>
|
||||
|
||||
<releases>
|
||||
<release version="25.1.1" date="2025-03-14">
|
||||
<url type="details">https://github.com/ra3xdh/qucs_s/releases/tag/25.1.1</url>
|
||||
</release>
|
||||
<release version="25.1.0" date="2025-02-20">
|
||||
<url type="details">https://github.com/ra3xdh/qucs_s/releases/tag/25.1.0</url>
|
||||
</release>
|
||||
<release version="24.4.1" date="2024-11-14">
|
||||
<url type="details">https://github.com/ra3xdh/qucs_s/releases/tag/24.4.1</url>
|
||||
</release>
|
||||
|
48
contrib/translate_with_deepl.py
Normal file
@ -0,0 +1,48 @@
|
||||
import os
|
||||
import xml.etree.ElementTree as ET
|
||||
import deepl # Import DeepL API
|
||||
|
||||
# Set up DeepL API key
|
||||
token = 'your_deepL_api_key' # Replace with your DeepL API key
|
||||
translator = deepl.Translator(token)
|
||||
|
||||
# select target lang
|
||||
def translate_text(text, source_lang="EN", target_lang="XX"):
|
||||
"""
|
||||
Translates text using DeepL API.
|
||||
"""
|
||||
try:
|
||||
# Call DeepL API for translation
|
||||
result = translator.translate_text(text, source_lang=source_lang, target_lang=target_lang)
|
||||
return result.text
|
||||
except Exception as e:
|
||||
print(f"Error translating text: {e}")
|
||||
return text # Return the original text in case of an error
|
||||
|
||||
def process_ts_file(input_file, output_file):
|
||||
"""
|
||||
Processes a .ts XML file to translate `unfinished` entries.
|
||||
"""
|
||||
tree = ET.parse(input_file)
|
||||
root = tree.getroot()
|
||||
|
||||
for context in root.findall("context"):
|
||||
for message in context.findall("message"):
|
||||
source = message.find("source")
|
||||
translation = message.find("translation")
|
||||
if translation is not None and translation.get("type") == "unfinished":
|
||||
if source is not None:
|
||||
source_text = source.text
|
||||
# Translate the source text
|
||||
translated_text = translate_text(source_text)
|
||||
print(f"Translating: {source_text} -> {translated_text}")
|
||||
translation.text = translated_text
|
||||
translation.attrib.pop("type", None) # Remove 'unfinished' attribute
|
||||
|
||||
# Save the updated file
|
||||
tree.write(output_file, encoding="utf-8", xml_declaration=True)
|
||||
|
||||
# Example usage
|
||||
input_ts_file = "qucs_xx.ts" # Replace with your input file path
|
||||
output_ts_file = "qucs_xx_translated.ts" # Replace with your desired output file path
|
||||
process_ts_file(input_ts_file, output_ts_file)
|
194
examples/templates_ngspice/PwrAmpTHD.sch
Normal file
@ -0,0 +1,194 @@
|
||||
<Qucs Schematic 24.4.1>
|
||||
<Properties>
|
||||
<View=2,-136,1511,748,1.0431,0,0>
|
||||
<Grid=10,10,1>
|
||||
<DataSet=PwrAmpTHD.dat>
|
||||
<DataDisplay=PwrAmpTHD.dpl>
|
||||
<OpenDisplay=0>
|
||||
<Script=PwrAmpTHD.m>
|
||||
<RunScript=0>
|
||||
<showFrame=0>
|
||||
<FrameText0=Title>
|
||||
<FrameText1=Drawn By:>
|
||||
<FrameText2=Date:>
|
||||
<FrameText3=Revision:>
|
||||
</Properties>
|
||||
<Symbol>
|
||||
</Symbol>
|
||||
<Components>
|
||||
<_BJT Q2N3905_2 1 550 470 -74 -26 0 2 "pnp" 0 "1.05e-15" 0 "1" 0 "1" 0 "0.1" 0 "0" 0 "240" 0 "0" 0 "1.003e-09" 0 "4" 0 "1.003e-09" 0 "4" 0 "220" 0 "1" 0 "0" 0 "0" 0 "0.2" 0 "0.5" 0 "3" 0 "5.7e-12" 0 "0.75" 0 "0.33" 0 "4.32e-12" 0 "0.75" 0 "0.33" 0 "1" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "3.35e-10" 0 "0" 0 "0" 0 "0" 0 "1.7e-07" 0 "26.85" 0 "4e-15" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "0" 0 "0" 0 "3" 0 "1.11" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<_BJT Q2N3904_1 1 370 170 8 -26 0 0 "npn" 0 "1.4e-14" 0 "1" 0 "1" 0 "0.025" 0 "0" 0 "100" 0 "0" 0 "3e-13" 0 "1.5" 0 "0" 0 "2" 0 "300" 0 "7.5" 0 "0" 0 "0" 0 "2.4" 0 "0" 0 "0" 0 "4.5e-12" 0 "0.75" 0 "0.33" 0 "3.5e-12" 0 "0.75" 0 "0.33" 0 "1" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "4e-10" 0 "0" 0 "0" 0 "0" 0 "2.1e-08" 0 "26.85" 0 "9e-16" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "0" 0 "1.5" 0 "3" 0 "1.11" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<_BJT Q2N3904_2 1 550 170 -74 -26 1 2 "npn" 0 "1.4e-14" 0 "1" 0 "1" 0 "0.025" 0 "0" 0 "100" 0 "0" 0 "3e-13" 0 "1.5" 0 "0" 0 "2" 0 "300" 0 "7.5" 0 "0" 0 "0" 0 "2.4" 0 "0" 0 "0" 0 "4.5e-12" 0 "0.75" 0 "0.33" 0 "3.5e-12" 0 "0.75" 0 "0.33" 0 "1" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "4e-10" 0 "0" 0 "0" 0 "0" 0 "2.1e-08" 0 "26.85" 0 "9e-16" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "0" 0 "1.5" 0 "3" 0 "1.11" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<R R11 1 580 230 -71 -26 1 1 "1.8Meg" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R12 1 370 230 15 -26 0 1 "22k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R5 1 370 410 15 -26 0 1 "22k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R6 1 580 410 -71 -26 1 1 "1.8Meg" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<_BJT Q2N3905_1 1 370 470 8 -26 1 0 "pnp" 0 "1.05e-15" 0 "1" 0 "1" 0 "0.1" 0 "0" 0 "240" 0 "0" 0 "1.003e-09" 0 "4" 0 "1.003e-09" 0 "4" 0 "220" 0 "1" 0 "0" 0 "0" 0 "0.2" 0 "0.5" 0 "3" 0 "5.7e-12" 0 "0.75" 0 "0.33" 0 "4.32e-12" 0 "0.75" 0 "0.33" 0 "1" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "3.35e-10" 0 "0" 0 "0" 0 "0" 0 "1.7e-07" 0 "26.85" 0 "4e-15" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "0" 0 "0" 0 "3" 0 "1.11" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<R R23 1 620 200 15 -26 0 1 "2.7k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R22 1 620 440 15 -26 0 1 "2.7k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<GND * 1 620 290 0 0 0 0>
|
||||
<GND * 1 620 350 0 0 0 2>
|
||||
<C C13 1 620 260 20 -26 1 3 "47u" 1 "" 0 "polar" 0>
|
||||
<C C14 1 620 380 20 -26 1 3 "47u" 1 "" 0 "polar" 0>
|
||||
<R R18 1 370 660 15 -26 0 1 "2.2k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R13 1 340 690 -26 -49 1 0 "470" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<C C8 1 250 660 20 -26 1 3 "10u" 1 "" 0 "polar" 0>
|
||||
<Lib D1 1 190 660 -109 -32 1 3 "Z-Diodes" 0 "1N4742A" 1>
|
||||
<C C12 1 620 660 17 -26 0 1 "680p" 1 "" 0 "neutral" 0>
|
||||
<_BJT Q2N3904_3 1 710 10 8 -26 0 0 "npn" 0 "1.4e-14" 0 "1" 0 "1" 0 "0.025" 0 "0" 0 "100" 0 "0" 0 "3e-13" 0 "1.5" 0 "0" 0 "2" 0 "300" 0 "7.5" 0 "0" 0 "0" 0 "2.4" 0 "0" 0 "0" 0 "4.5e-12" 0 "0.75" 0 "0.33" 0 "3.5e-12" 0 "0.75" 0 "0.33" 0 "1" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "4e-10" 0 "0" 0 "0" 0 "0" 0 "2.1e-08" 0 "26.85" 0 "9e-16" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "0" 0 "1.5" 0 "3" 0 "1.11" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<R R29 1 820 -20 15 -26 0 1 "100" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R16 1 820 100 15 -26 0 1 "330" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<GND * 1 820 130 0 0 0 0>
|
||||
<GND * 1 710 130 0 0 0 0>
|
||||
<R R20 1 710 100 15 -26 0 1 "2.2k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R28 1 970 10 -26 15 0 0 "4.7" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R21 1 370 -20 15 -26 0 1 "2.2k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R14 1 340 -50 -26 15 0 0 "470" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<C C9 1 250 -20 20 -26 1 3 "10u" 1 "" 0 "polar" 0>
|
||||
<Lib D2 1 190 -20 -109 -32 1 3 "Z-Diodes" 0 "1N4742A" 1>
|
||||
<C C11 1 620 -20 17 -26 0 1 "680p" 1 "" 0 "neutral" 0>
|
||||
<R R26 1 970 630 -26 15 0 0 "4.7" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R24 1 1000 470 -26 15 1 2 "47k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<C C15 1 1000 440 -26 -51 1 0 "22p" 1 "" 0 "neutral" 0>
|
||||
<R R25 1 1000 170 -26 -49 0 2 "47k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<C C16 1 1000 200 -26 17 0 0 "22p" 1 "" 0 "neutral" 0>
|
||||
<R R31 1 1030 270 15 -26 0 1 "0.47" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R30 1 1030 370 15 -26 0 1 "0.47" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R17 1 940 270 -43 -26 1 1 "22" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<C C17 1 940 370 -55 -26 1 1 "10u" 1 "" 0 "polar" 0>
|
||||
<R R39 1 1110 350 15 -26 0 1 "3.3" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<C C18 1 1110 410 17 -26 0 1 "47n" 1 "" 0 "neutral" 0>
|
||||
<GND * 1 1110 440 0 0 0 0>
|
||||
<GND * 1 1140 630 0 0 0 2>
|
||||
<Vdc VEE 1 1140 660 18 -26 0 1 "20" 1>
|
||||
<Vdc VCC 1 1140 -20 18 -26 0 1 "20" 1>
|
||||
<GND * 1 1140 10 0 0 0 0>
|
||||
<GND * 1 190 10 0 0 0 0>
|
||||
<GND * 1 250 10 0 0 0 0>
|
||||
<GND * 1 190 630 0 0 0 2>
|
||||
<GND * 1 250 630 0 0 0 2>
|
||||
<_BJT Q2N2955_1 1 1030 10 8 -26 1 0 "pnp" 0 "4.66e-12" 0 "1" 0 "1" 0 "0.25" 0 "0" 0 "100" 0 "0" 0 "3.339e-11" 0 "1.5" 0 "5e-09" 0 "2" 0 "360" 0 "2" 0 "0.4" 0 "0.001" 0 "0.04" 0 "0" 0 "3" 0 "5.802e-10" 0 "1.2" 0 "0.45" 0 "2.121e-10" 0 "0.75" 0 "0.4" 0 "1" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "8e-08" 0 "1" 0 "0" 0 "3" 0 "2.55e-06" 0 "26.85" 0 "0" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "120" 0 "1" 0 "3" 0 "1.11" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<_BJT Q2N3055_1 1 1030 630 8 -26 0 0 "npn" 0 "4.66e-12" 0 "1" 0 "1" 0 "0.25" 0 "0" 0 "100" 0 "0" 0 "3.339e-11" 0 "1.5" 0 "5e-09" 0 "2" 0 "360" 0 "2" 0 "0.4" 0 "0.001" 0 "0.04" 0 "0" 0 "3" 0 "5.802e-10" 0 "1.2" 0 "0.45" 0 "2.121e-10" 0 "0.75" 0 "0.4" 0 "1" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "8e-08" 0 "1" 0 "0" 0 "3" 0 "2.55e-06" 0 "26.85" 0 "0" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "120" 0 "1" 0 "3" 0 "1.11" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<_BJT BD136_138_140_1 1 820 40 8 -26 1 0 "pnp" 0 "2.9537e-13" 0 "1" 0 "1.021" 0 "1.0993" 0 "0.1" 0 "137" 0 "8.41" 0 "1.8002e-13" 0 "1.5" 0 "7.0433e-12" 0 "1.38" 0 "201.4" 0 "23.765" 0 "0.01" 0 "0.011" 0 "0.01" 0 "0.1109" 0 "1.98" 0 "2.1982e-10" 0 "0.7211" 0 "0.3685" 0 "6.8291e-11" 0 "0.5499" 0 "0.3668" 0 "0.5287" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "0" 0 "0" 0 "0" 0 "0" 0 "0" 0 "26.85" 0 "0" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "0" 0 "1.4883" 0 "3" 0 "1.2343" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<R R10 1 310 230 15 -26 0 1 "1k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R7 1 310 410 15 -26 0 1 "1k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<C C7 1 250 290 20 -26 1 3 "1u" 1 "" 0 "polar" 0>
|
||||
<C C6 1 250 350 20 -26 1 3 "1u" 1 "" 0 "polar" 0>
|
||||
<GND * 1 250 440 0 0 0 0>
|
||||
<GND * 1 250 200 0 0 0 2>
|
||||
<C C5 1 160 350 17 -26 0 1 "330p" 1 "" 0 "neutral" 0>
|
||||
<R R4 1 130 320 -26 -49 1 0 "3.3k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<GND * 1 160 380 0 0 0 0>
|
||||
<R R3 1 100 350 -57 -26 1 1 "100k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<GND * 1 100 380 0 0 0 0>
|
||||
<GND * 1 100 200 0 0 0 2>
|
||||
<R R8 1 250 410 -50 -26 1 1 "47k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R9 1 250 230 -50 -26 1 1 "47k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<_BJT Q2N3905_3 1 710 630 8 -26 1 0 "pnp" 0 "1.05e-15" 0 "1" 0 "1" 0 "0.1" 0 "0" 0 "240" 0 "0" 0 "1.003e-09" 0 "4" 0 "1.003e-09" 0 "4" 0 "220" 0 "1" 0 "0" 0 "0" 0 "0.2" 0 "0.5" 0 "3" 0 "5.7e-12" 0 "0.75" 0 "0.33" 0 "4.32e-12" 0 "0.75" 0 "0.33" 0 "1" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "3.35e-10" 0 "0" 0 "0" 0 "0" 0 "1.7e-07" 0 "26.85" 0 "4e-15" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "0" 0 "0" 0 "3" 0 "1.11" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<R R27 1 820 660 15 -26 0 1 "100" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R15 1 820 540 15 -26 0 1 "330" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<R R19 1 710 540 15 -26 0 1 "2.2k" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<_BJT BD135_137_139_1 1 820 600 8 -26 0 0 "npn" 0 "2.3985e-13" 0 "1" 0 "1.007" 0 "1.1863" 0 "0.1445" 0 "98.5" 0 "7.46" 0 "1.0471e-14" 0 "1.2" 0 "1.9314e-11" 0 "1.45" 0 "244.9" 0 "78.11" 0 "0.001" 0 "0.031" 0 "0.01" 0 "0.0832" 0 "2.14" 0 "2.92702e-10" 0 "0.67412" 0 "0.33" 0 "4.8831e-11" 0 "0.5258" 0 "0.3928" 0 "0.5287" 0 "0" 0 "0.75" 0 "0" 0 "0.5" 0 "0" 0 "0" 0 "0" 0 "0" 0 "0" 0 "26.85" 0 "0" 0 "1" 0 "1" 0 "0" 0 "1" 0 "1" 0 "0" 0 "1.1398" 0 "3" 0 "1.2105" 0 "26.85" 0 "1" 0 "yes" 0>
|
||||
<GND * 1 710 510 0 0 0 2>
|
||||
<GND * 1 820 510 0 0 0 2>
|
||||
<GND * 1 1110 200 0 0 0 2>
|
||||
<R RL 1 1110 230 15 -26 0 1 "8" 1 "26.85" 0 "0.0" 0 "0.0" 0 "26.85" 0 "european" 0>
|
||||
<SpicePar SpicePar1 1 1250 -40 -27 18 0 0 "vin=600m" 1>
|
||||
<.CUSTOMSIM CUSTOM1 1 1230 30 0 40 0 0 "\ncompose vin start=100m stop=1 step=100m\nlet n=length(vin)\nlet thd=vector(n)\nlet out_rms=vector(n)\n\nset nfreqs=20\n\nlet i=0\nrepeat $&n\n let vin_i=vin[i]\n alterparam vin=$&vin_i\n reset\n\n tran 10u 10m\n fourier 1k v(out)\n meas tran orms_i rms out\n let out_rms[i]=orms_i\n\n let j=2\n let sum_i=0\n let f=i+1\n while j < $nfreqs\n let sum_i=sum_i+fourier{$&f}1[1][j]^2\n let j=j+1\n end\n let thd_i=100*sqrt(sum_i)/fourier{$&f}1[1][1]\n let thd[i]=thd_i\n\n destroy $curplot\n let i=i+1\nend\n\nsetscale out_rms\n\ndestroy all\nreset" 0 "thd;vin" 0 "" 0>
|
||||
<S4Q_V V1 1 100 230 19 5 1 3 "sin(0 {vin} 1k)" 1 "" 0 "" 0 "" 0 "" 0>
|
||||
</Components>
|
||||
<Wires>
|
||||
<370 440 550 440 "" 0 0 0 "">
|
||||
<370 200 550 200 "" 0 0 0 "">
|
||||
<580 170 580 200 "" 0 0 0 "">
|
||||
<370 260 470 260 "" 0 0 0 "">
|
||||
<370 380 460 380 "" 0 0 0 "">
|
||||
<580 440 580 470 "" 0 0 0 "">
|
||||
<580 470 620 470 "" 0 0 0 "">
|
||||
<580 170 620 170 "" 0 0 0 "">
|
||||
<370 500 370 630 "" 0 0 0 "">
|
||||
<250 690 310 690 "" 0 0 0 "">
|
||||
<190 690 250 690 "" 0 0 0 "">
|
||||
<370 690 620 690 "" 0 0 0 "">
|
||||
<370 630 620 630 "" 0 0 0 "">
|
||||
<710 -50 710 -20 "" 0 0 0 "">
|
||||
<710 -50 820 -50 "" 0 0 0 "">
|
||||
<710 40 790 40 "" 0 0 0 "">
|
||||
<710 40 710 70 "" 0 0 0 "">
|
||||
<820 10 940 10 "" 0 0 0 "">
|
||||
<820 -50 1030 -50 "" 0 0 0 "">
|
||||
<1030 -50 1030 -20 "" 0 0 0 "">
|
||||
<370 10 370 140 "" 0 0 0 "">
|
||||
<250 -50 310 -50 "" 0 0 0 "">
|
||||
<190 -50 250 -50 "" 0 0 0 "">
|
||||
<370 -50 620 -50 "" 0 0 0 "">
|
||||
<370 10 620 10 "" 0 0 0 "">
|
||||
<620 10 680 10 "" 0 0 0 "">
|
||||
<620 -50 710 -50 "" 0 0 0 "">
|
||||
<470 260 580 260 "" 0 0 0 "">
|
||||
<470 260 470 510 "" 0 0 0 "">
|
||||
<620 470 940 470 "" 0 0 0 "">
|
||||
<1030 660 1030 690 "" 0 0 0 "">
|
||||
<1030 470 1030 600 "" 0 0 0 "">
|
||||
<1030 440 1030 470 "" 0 0 0 "">
|
||||
<620 170 940 170 "" 0 0 0 "">
|
||||
<1030 40 1030 170 "" 0 0 0 "">
|
||||
<1030 170 1030 200 "" 0 0 0 "">
|
||||
<1030 300 1030 320 "" 0 0 0 "">
|
||||
<1030 200 1030 240 "" 0 0 0 "">
|
||||
<1030 400 1030 440 "" 0 0 0 "">
|
||||
<940 300 940 340 "" 0 0 0 "">
|
||||
<940 200 970 200 "" 0 0 0 "">
|
||||
<940 200 940 240 "" 0 0 0 "">
|
||||
<940 170 970 170 "" 0 0 0 "">
|
||||
<940 170 940 200 "" 0 0 0 "">
|
||||
<940 440 970 440 "" 0 0 0 "">
|
||||
<940 400 940 440 "" 0 0 0 "">
|
||||
<940 470 970 470 "" 0 0 0 "">
|
||||
<940 440 940 470 "" 0 0 0 "">
|
||||
<460 380 580 380 "" 0 0 0 "">
|
||||
<1030 320 1030 340 "" 0 0 0 "">
|
||||
<1030 320 1110 320 "" 0 0 0 "">
|
||||
<1030 690 1140 690 "" 0 0 0 "">
|
||||
<1030 -50 1140 -50 "" 0 0 0 "">
|
||||
<160 320 250 320 "" 0 0 0 "">
|
||||
<250 260 310 260 "" 0 0 0 "">
|
||||
<310 170 310 200 "" 0 0 0 "">
|
||||
<310 170 340 170 "" 0 0 0 "">
|
||||
<250 380 310 380 "" 0 0 0 "">
|
||||
<310 440 310 470 "" 0 0 0 "">
|
||||
<310 470 340 470 "" 0 0 0 "">
|
||||
<620 690 710 690 "" 0 0 0 "">
|
||||
<820 630 940 630 "" 0 0 0 "">
|
||||
<820 690 1030 690 "" 0 0 0 "">
|
||||
<620 630 680 630 "" 0 0 0 "">
|
||||
<710 660 710 690 "" 0 0 0 "">
|
||||
<710 600 790 600 "" 0 0 0 "">
|
||||
<710 690 820 690 "" 0 0 0 "">
|
||||
<710 570 710 600 "" 0 0 0 "">
|
||||
<460 130 460 380 "" 0 0 0 "">
|
||||
<310 130 460 130 "" 0 0 0 "">
|
||||
<310 -50 310 130 "" 0 0 0 "">
|
||||
<550 130 550 140 "" 0 0 0 "">
|
||||
<460 130 550 130 "" 0 0 0 "">
|
||||
<310 510 310 690 "" 0 0 0 "">
|
||||
<310 510 470 510 "" 0 0 0 "">
|
||||
<550 500 550 510 "" 0 0 0 "">
|
||||
<470 510 550 510 "" 0 0 0 "">
|
||||
<1110 260 1110 320 "" 0 0 0 "">
|
||||
<100 260 100 320 "" 0 0 0 "">
|
||||
<1110 320 1110 320 "out" 1070 290 0 "">
|
||||
<100 320 100 320 "in" 70 300 0 "">
|
||||
</Wires>
|
||||
<Diagrams>
|
||||
<Rect 1230 270 240 160 3 #c0c0c0 1 00 1 1.08481 2 10.7141 1 -0.0601316 0.5 0.68536 1 -1 1 1 315 0 225 1 0 0 "" "" "">
|
||||
<"ngspice/thd" #0000ff 2 3 0 0 0>
|
||||
</Rect>
|
||||
<Tab 1230 525 154 205 3 #c0c0c0 1 00 1 0 1 1 1 0 1 1 1 0 1 1 315 0 225 1 0 0 "" "" "">
|
||||
<"ngspice/thd" #0000ff 0 3 1 0 0>
|
||||
<"ngspice/vin" #0000ff 0 3 1 0 0>
|
||||
</Tab>
|
||||
</Diagrams>
|
||||
<Paintings>
|
||||
<Text 540 -90 20 #000000 0 "Musical Fidelity A1">
|
||||
</Paintings>
|
2153
library/Analog.lib
Normal file
@ -1,6 +1,7 @@
|
||||
|
||||
SET(COMPLIBS
|
||||
555_timer.lib
|
||||
Analog.lib
|
||||
AudioIC.lib
|
||||
Bridges.lib
|
||||
BJT_Extended.lib
|
||||
@ -9,12 +10,20 @@ Crystal.lib
|
||||
Diodes.lib
|
||||
DiodesSchottky.lib
|
||||
Diodes_Extended.lib
|
||||
Digital_AUX.lib
|
||||
Digital_CD.lib
|
||||
Digital_HC.lib
|
||||
Digital_LV.lib
|
||||
Digital_XSPICE.lib
|
||||
DualGateMOSFET.lib
|
||||
GeDiodes.lib
|
||||
Ideal.lib
|
||||
JFETs.lib
|
||||
LEDs.lib
|
||||
LaserDiodes.lib
|
||||
Loudspeaker.lib
|
||||
MixerIC.lib
|
||||
Neon.lib
|
||||
MOSFETs.lib
|
||||
NMOSFETs.lib
|
||||
OpAmps.lib
|
||||
@ -23,6 +32,7 @@ PhotovoltaicRelay.lib
|
||||
PMOSFETs.lib
|
||||
PWM_Controller.lib
|
||||
Regulators.lib
|
||||
RC.lib
|
||||
Substrates.lib
|
||||
Transistors.lib
|
||||
Varistors.lib
|
||||
@ -32,6 +42,7 @@ SPICE_TLine.lib
|
||||
Thermistor.lib
|
||||
Thyristor.lib
|
||||
Transformers.lib
|
||||
TubesExtended.lib
|
||||
Xanalogue.lib
|
||||
XyceDigital.lib
|
||||
Xyce_Digital_TTL_Technology.lib
|
||||
@ -53,6 +64,9 @@ xyce.blacklist
|
||||
|
||||
INSTALL( FILES ${COMPLIBS} ${BLACKLIST} DESTINATION share/${QUCS_NAME}/library )
|
||||
INSTALL( DIRECTORY "symbols" DESTINATION share/${QUCS_NAME}/ )
|
||||
INSTALL( DIRECTORY "TubesExtended" DESTINATION share/${QUCS_NAME}/library)
|
||||
INSTALL( DIRECTORY "Optocoupler" DESTINATION share/${QUCS_NAME}/library )
|
||||
INSTALL( DIRECTORY "DualGateMOSFET" DESTINATION share/${QUCS_NAME}/library )
|
||||
|
||||
ADD_SUBDIRECTORY( XyceDigital)
|
||||
|
||||
|
1027
library/Digital_AUX.lib
Normal file
1328
library/Digital_CD.lib
Normal file
1400
library/Digital_HC.lib
Normal file
936
library/Digital_LV.lib
Normal file
@ -0,0 +1,936 @@
|
||||
<Qucs Library 24.4.1 "Digital_LV">
|
||||
|
||||
<Component 74LV00>
|
||||
<Description>
|
||||
2-Input NAND Gate
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV00 _net0 _net1 _net2
|
||||
Sub:X1 _net0 _net1 _net2 gnd Type="n74LV00_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV00.cir.lst">
|
||||
<Spice>
|
||||
* The timing parameters for all of these models were taken from the specifications for a
|
||||
* 3.3V power supply and a 50pF capacitive load.
|
||||
|
||||
* ----------------------------------------------------------- 74LV00A ------
|
||||
* Quad 2-Input Positive-Nand Gates
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/18/03
|
||||
*
|
||||
.SUBCKT 74LV00A 1A 1B 1Y
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 nand(2) DPWR_3V DGND_3V
|
||||
+ 1A 1B 1Y
|
||||
+ DLY_LV00 IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
.model DLY_LV00 ugate (tplhTY=6.9ns tplhMX=11.4ns tphlTY=6.9ns tphlMX=11.4ns)
|
||||
|
||||
.ENDS 74LV00A
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV00 gnd _net0 _net1 _net2
|
||||
X1 _net0 _net1 _net2 74LV00A
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<EArc -30 -20 40 40 4320 2880 #000080 2 1>
|
||||
<Ellipse 10 -4 8 8 #000080 1 1 #000080 1 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<.PortSym -30 -10 1 0 P1>
|
||||
<.PortSym -30 10 2 0 P2>
|
||||
<.PortSym 30 0 3 180 P3>
|
||||
<.ID 10 14 Y>
|
||||
<Line -10 20 0 -40 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV02>
|
||||
<Description>
|
||||
2-Input NOR Gate
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV02 _net0 _net1 _net2
|
||||
Sub:X1 _net0 _net1 _net2 gnd Type="n74LV02_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV02.cir.lst">
|
||||
<Spice>
|
||||
* ---------------------------------- 74LV02A ---------------------
|
||||
* Quad 2-Input Nor Gates
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/18/03
|
||||
*
|
||||
.SUBCKT 74LV02A 1A 1B 1Y
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 nor(2) DPWR_3V DGND_3V
|
||||
+ 1A 1B 1Y
|
||||
+ DLY_LV02 IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
.model DLY_LV02 ugate (tplhTY=7.6ns tplhMX=11.4ns tphlTY=7.6ns tphlMX=11.4ns)
|
||||
|
||||
.ENDS 74LV02A
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV02 gnd _net0 _net1 _net2
|
||||
X1 _net0 _net1 _net2 74LV02A
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 -10 1 0 P1>
|
||||
<.PortSym -30 10 2 0 P2>
|
||||
<.PortSym 30 0 3 180 P3>
|
||||
<.ID 10 14 Y>
|
||||
<EArc -30 -20 40 40 4320 2880 #000080 2 1>
|
||||
<Ellipse 10 -4 8 8 #000080 1 1 #000080 1 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<EArc -20 -20 10 40 4320 2880 #000080 2 1>
|
||||
<Line -10 20 -5 0 #000080 2 1>
|
||||
<Line -10 -20 -5 0 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV04>
|
||||
<Description>
|
||||
Inverter
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV04 _net0 _net1
|
||||
Sub:X1 _net0 _net1 gnd Type="n74LV04_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV04.cir.lst">
|
||||
<Spice>
|
||||
* -------------------------- 74LV04A --------------------------------
|
||||
* Hex Inverters
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 1/2/03
|
||||
*
|
||||
.SUBCKT 74LV04A 1A 1Y
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 inv DPWR_3V DGND_3V
|
||||
+ 1A 1Y
|
||||
+ DLY_LV04 IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
.model DLY_LV04 ugate (tplhTY=7.3ns tplhMX=10.6ns tphlTY=7.3ns tphlMX=10.6ns)
|
||||
|
||||
.ENDS 74LV04A
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV04 gnd _net0 _net1
|
||||
X1 _net0 _net1 74LV04A
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<EArc -30 -20 40 40 4320 2880 #000080 2 1>
|
||||
<Line -10 20 0 -40 #000080 2 1>
|
||||
<Ellipse 10 -4 8 8 #000080 1 1 #000080 1 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<.ID 10 14 Y>
|
||||
<.PortSym 30 0 2 180 P2>
|
||||
<Line -30 0 20 0 #000080 2 1>
|
||||
<.PortSym -30 0 1 0 P1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV08>
|
||||
<Description>
|
||||
2-Input AND Gate
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV08 _net0 _net1 _net2
|
||||
Sub:X1 _net0 _net1 _net2 gnd Type="n74LV08_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV08.cir.lst">
|
||||
<Spice>
|
||||
* ---------------------------- 74LV08A ------------------------------
|
||||
* Quad 2-Input AND Gate
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/21/03
|
||||
*
|
||||
.SUBCKT 74LV08A 1A 1B 1Y
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 and(2) DPWR_3V DGND_3V
|
||||
+ 1A 1B 1Y
|
||||
+ DLY_LV08 IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
.model DLY_LV08 ugate (tplhTY=7.5ns tplhMX=12.3ns tphlTY=7.5ns tphlMX=12.3ns)
|
||||
|
||||
.ENDS 74LV08A
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV08 gnd _net0 _net1 _net2
|
||||
X1 _net0 _net1 _net2 74LV08A
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 -10 1 0 P1>
|
||||
<.PortSym -30 10 2 0 P2>
|
||||
<.PortSym 30 0 3 180 P3>
|
||||
<.ID 10 14 Y>
|
||||
<EArc -30 -20 40 40 4320 2880 #000080 2 1>
|
||||
<Line -10 20 0 -40 #000080 2 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV20>
|
||||
<Description>
|
||||
4-Input NAND Gate
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV20 _net0 _net1 _net2 _net3 _net4
|
||||
Sub:X1 _net0 _net1 _net2 _net3 _net4 gnd Type="n74LV20_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV20.cir.lst">
|
||||
<Spice>
|
||||
* ----------------------------- 74LV20A -------------------------
|
||||
* Dual 4-Input Nand Gate
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/24/03
|
||||
*
|
||||
.SUBCKT 74LV20A 1A 1B 1C 1D 1Y
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 nand(4) DPWR_3V DGND_3V
|
||||
+ 1A 1B 1C 1D 1Y
|
||||
+ DLY_LV20 IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
.model DLY_LV20 ugate (tplhTY=6.5ns tplhMX=10.1ns tphlTY=6.5ns tphlMX=10.1ns)
|
||||
|
||||
.ENDS 74LV20A
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV20 gnd _net0 _net1 _net2 _net3 _net4
|
||||
X1 _net0 _net1 _net2 _net3 _net4 74LV20A
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line -30 -30 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<Line -30 30 20 0 #000080 2 1>
|
||||
<Line -10 40 0 -80 #000080 2 1>
|
||||
<Ellipse 20 -4 8 8 #000080 1 1 #000080 1 1>
|
||||
<EArc -20 -20 40 40 4320 2880 #000080 2 1>
|
||||
<Line 0 20 -10 0 #000080 2 1>
|
||||
<.PortSym -30 -30 1 0 P1>
|
||||
<.PortSym -30 -10 2 0 P2>
|
||||
<.PortSym -30 10 3 0 P3>
|
||||
<.PortSym -30 30 4 0 P4>
|
||||
<.PortSym 40 0 5 180 P5>
|
||||
<.ID 20 14 Y>
|
||||
<Line 28 0 12 0 #000080 2 1>
|
||||
<Line 0 -20 -10 0 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV32>
|
||||
<Description>
|
||||
2-Input OR Gate
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV32 _net0 _net1 _net2
|
||||
Sub:X1 _net0 _net1 _net2 gnd Type="n74LV32_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV32.cir.lst">
|
||||
<Spice>
|
||||
* -------------------------- 74LV32A ----------------------------
|
||||
* Quad 2-Input Or Gate
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/24/03
|
||||
*
|
||||
.SUBCKT 74LV32A 1A 1B 1Y
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 or(2) DPWR_3V DGND_3V
|
||||
+ 1A 1B 1Y
|
||||
+ DLY_LV32 IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
.model DLY_LV32 ugate (tplhTY=6.9ns tplhMX=11.4ns tphlTY=6.9ns tphlMX=11.4ns)
|
||||
|
||||
.ENDS 74LV32A
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV32 gnd _net0 _net1 _net2
|
||||
X1 _net0 _net1 _net2 74LV32A
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 -10 1 0 P1>
|
||||
<.PortSym -30 10 2 0 P2>
|
||||
<.PortSym 30 0 3 180 P3>
|
||||
<.ID 10 14 Y>
|
||||
<EArc -30 -20 40 40 4320 2880 #000080 2 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<EArc -20 -20 10 40 4320 2880 #000080 2 1>
|
||||
<Line -10 20 -5 0 #000080 2 1>
|
||||
<Line -10 -20 -5 0 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV74>
|
||||
<Description>
|
||||
D-Type Positive Edge Triggered Flip-Flop With Preset And Clear
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV74 _net0 _net1 _net2 _net3 _net4 _net5
|
||||
Sub:X1 _net0 _net1 _net2 _net3 _net4 _net5 gnd Type="n74LV74_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV74.cir.lst">
|
||||
<Spice>
|
||||
* The timing parameters for all of these models were taken from the specifications for a
|
||||
* 3.3V power supply and a 50pF capacitive load.
|
||||
*
|
||||
* -------------------------------------- 74LV74A ---------------------------
|
||||
* Dual Positive Edge Triggered D-Type Flip-Flop
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/24/03
|
||||
*
|
||||
.SUBCKT 74LV74A 1PREBAR 1CLRBAR 1CLK 1D 1Q 1QBAR
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 DFF(1) DPWR_3V DGND_3V
|
||||
+ 1PREBAR 1CLRBAR 1CLK 1D 1Q 1QBAR
|
||||
+ DLY_LV74 IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
.model DLY_LV74 ueff(tppcqlhty=9.2ns tppcqlhmx=15.8ns tppcqhlty=9.2ns tppcqhlmx=15.8ns
|
||||
+ tpclkqlhty=10.2ns tpclkqlhmx=15.4ns tpclkqhlty=10.2ns tpclkqhlmx=15.4ns
|
||||
+ twpclmn=6ns twclklmn=6ns twclkhmn=6ns tsudclkmn=6n tsupcclkhmn=5ns
|
||||
+ thdclkmn=.5n)
|
||||
|
||||
.ENDS 74LV74A
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV74 gnd _net0 _net1 _net2 _net3 _net4 _net5
|
||||
X1 _net0 _net1 _net2 _net3 _net4 _net5 74LV74A
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Rectangle -30 -40 60 80 #000080 2 1 #c0c0c0 1 0>
|
||||
<Line -50 20 20 0 #000080 2 1>
|
||||
<Line -50 -20 20 0 #000080 2 1>
|
||||
<Line 30 -20 20 0 #000080 2 1>
|
||||
<Line 0 -40 0 -20 #000080 2 1>
|
||||
<Ellipse -4 40 8 8 #000080 1 1 #000080 1 1>
|
||||
<Line 30 20 20 0 #000080 2 1>
|
||||
<Ellipse -4 -48 8 8 #000080 1 1 #000080 1 1>
|
||||
<Line 14 11 12 0 #000080 2 1>
|
||||
<Text 14 -31 12 #000080 0 "Q">
|
||||
<Text 14 9 12 #000080 0 "Q">
|
||||
<Text -28 -30 12 #000080 0 "D">
|
||||
<Line -15 20 -15 -10 #000080 2 1>
|
||||
<Line -30 30 15 -10 #000080 2 1>
|
||||
<Line 0 61 0 -20 #000080 2 1>
|
||||
<Text -6 -41 12 #000080 0 "C">
|
||||
<Text -3 19 12 #000080 0 "P">
|
||||
<.PortSym 0 60 1 0 P1>
|
||||
<.ID 20 44 Y>
|
||||
<.PortSym 0 -60 2 0 P2>
|
||||
<.PortSym -50 -20 4 0 P4>
|
||||
<.PortSym -50 20 3 0 P3>
|
||||
<.PortSym 50 -20 5 180 P5>
|
||||
<.PortSym 50 20 6 180 P6>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV86>
|
||||
<Description>
|
||||
2-Input Exclusive-OR Gate
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV86 _net0 _net1 _net2
|
||||
Sub:X1 _net0 _net1 _net2 gnd Type="n74LV86_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV86.cir.lst">
|
||||
<Spice>
|
||||
* ----------------------------------------------------------- 74LV86A ------
|
||||
* Quad 2-Input Exclusive-Or Gate
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/24/03
|
||||
*
|
||||
.SUBCKT 74LV86 1A 1B 1Y
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 xor DPWR_3V DGND_3V
|
||||
+ 1A 1B 1Y
|
||||
+ DLY_LV86 IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
.model DLY_LV86 ugate (tplhTY=7.4ns tplhMX=14.5ns tphlTY=7.4ns tphlMX=14.5ns)
|
||||
|
||||
.ENDS 74LV86
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV86 gnd _net0 _net1 _net2
|
||||
X1 _net0 _net1 _net2 74LV86
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 -10 1 0 P1>
|
||||
<.PortSym -30 10 2 0 P2>
|
||||
<.PortSym 30 0 3 180 P3>
|
||||
<.ID 10 14 Y>
|
||||
<EArc -30 -20 40 40 4320 2880 #000080 2 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<EArc -20 -20 10 40 4320 2880 #000080 2 1>
|
||||
<EArc -15 -20 10 40 4320 2880 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV138>
|
||||
<Description>
|
||||
3-Line To 8-Line Decoder/Demultiplexer
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV138 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 _net12 _net13
|
||||
Sub:X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 _net12 _net13 gnd Type="n74LV138_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV138.cir.lst">
|
||||
<Spice>
|
||||
*-----------------------------------------------------------74LV138A-----
|
||||
* 3-Line To 8-Line Decoder/Demultiplexer
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/25/03
|
||||
|
||||
.SUBCKT 74LV138A A B C G1 G2ABAR G2BBAR Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 LOGICEXP(6,8) DPWR_3V DGND_3V
|
||||
+ A B C G1 G2ABAR G2BBAR
|
||||
+ Y0O Y1O Y2O Y3O Y4O Y5O Y6O Y7O
|
||||
+ D0_GATE IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
+ LOGIC:
|
||||
+ ENAB = {G1 & ~G2ABAR & ~G2BBAR}
|
||||
+ Y0O = {~(~A & ~B & ~C & ENAB)}
|
||||
+ Y1O = {~(A & ~B & ~C & ENAB)}
|
||||
+ Y2O = {~(~A & B & ~C & ENAB)}
|
||||
+ Y3O = {~(A & B & ~C & ENAB)}
|
||||
+ Y4O = {~(~A & ~B & C & ENAB)}
|
||||
+ Y5O = {~(A & ~B & C & ENAB)}
|
||||
+ Y6O = {~(~A & B & C & ENAB)}
|
||||
+ Y7O = {~(A & B & C & ENAB)}
|
||||
|
||||
U2 PINDLY(8,0,6) DPWR_3V DGND_3V
|
||||
+ Y0O Y1O Y2O Y3O Y4O Y5O Y6O Y7O
|
||||
+ A B C G1 G2ABAR G2BBAR
|
||||
+ Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7
|
||||
+ IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
+ BOOLEAN:
|
||||
+ IN = {CHANGED(A,0) | CHANGED(B,0) | CHANGED(C,0)}
|
||||
+ ENBAR = {CHANGED(G2ABAR,0) | CHANGED(G2BBAR,0)}
|
||||
+ EN = {CHANGED(G1,0)}
|
||||
+ PINDLY:
|
||||
+ Y0 Y1 Y2 Y3 Y4 Y5 Y6 Y7 = {
|
||||
+ CASE(
|
||||
+ EN & TRN_LH, DELAY(-1,10.6ns,16.3ns),
|
||||
+ EN & TRN_HL, DELAY(-1,10.6ns,16.3ns),
|
||||
+ ENBAR & TRN_LH, DELAY(-1,10ns,14.9ns),
|
||||
+ ENBAR & TRN_HL, DELAY(-1,10ns,14.9ns),
|
||||
+ IN & TRN_LH, DELAY(-1,10.3ns,15.8ns),
|
||||
+ IN & TRN_HL, DELAY(-1,10.3ns,15.8ns),
|
||||
+ DELAY(-1,11ns,17ns))}
|
||||
|
||||
.ENDS 74LV138A
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV138 gnd _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 _net12 _net13
|
||||
X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 _net12 _net13 74LV138A
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line 30 20 20 0 #000080 2 1>
|
||||
<Rectangle -30 -20 60 180 #000080 2 1 #c0c0c0 1 0>
|
||||
<Line 30 0 20 0 #000080 2 1>
|
||||
<Line 30 60 20 0 #000080 2 1>
|
||||
<Line 30 40 20 0 #000080 2 1>
|
||||
<Line 30 100 20 0 #000080 2 1>
|
||||
<Line 30 80 20 0 #000080 2 1>
|
||||
<Line 30 140 20 0 #000080 2 1>
|
||||
<Line 30 120 20 0 #000080 2 1>
|
||||
<Line -50 0 20 0 #000080 2 1>
|
||||
<.PortSym 50 0 7 180 Y0>
|
||||
<.PortSym 50 20 8 180 Y1>
|
||||
<.PortSym 50 40 9 180 Y2>
|
||||
<.PortSym 50 60 10 180 Y3>
|
||||
<.PortSym 50 80 11 180 Y4>
|
||||
<.PortSym 50 100 12 180 Y5>
|
||||
<.PortSym 50 120 13 180 Y6>
|
||||
<.PortSym 50 140 14 180 Y7>
|
||||
<Line -50 20 20 0 #000080 2 1>
|
||||
<Line -50 40 20 0 #000080 2 1>
|
||||
<.PortSym -50 20 2 0 B>
|
||||
<.PortSym -50 0 1 0 A>
|
||||
<.PortSym -50 40 3 0 C>
|
||||
<Line -50 80 20 0 #000080 2 1>
|
||||
<Line -50 100 20 0 #000080 2 1>
|
||||
<Ellipse -31 96 -8 8 #000080 1 1 #000080 1 1>
|
||||
<Line -50 120 20 0 #000080 2 1>
|
||||
<Ellipse -31 116 -8 8 #000080 1 1 #000080 1 1>
|
||||
<.PortSym -50 80 4 0 G1>
|
||||
<.PortSym -50 100 5 0 G2AB>
|
||||
<.PortSym -50 120 6 0 G2BB>
|
||||
<Text -25 -11 12 #000080 0 "A">
|
||||
<Text 6 29 12 #000080 0 "Y2">
|
||||
<Text 6 49 12 #000080 0 "Y3">
|
||||
<Text 6 129 12 #000080 0 "Y7">
|
||||
<Text 6 9 12 #000080 0 "Y1">
|
||||
<Text 6 89 12 #000080 0 "Y5">
|
||||
<Text 6 -11 12 #000080 0 "Y0">
|
||||
<Text 6 69 12 #000080 0 "Y4">
|
||||
<Text 6 109 12 #000080 0 "Y6">
|
||||
<Text -25 9 12 #000080 0 "B">
|
||||
<Text -25 69 12 #000080 0 "G1">
|
||||
<Text -25 89 12 #000080 0 "G2">
|
||||
<Text -25 109 12 #000080 0 "G3">
|
||||
<.ID -10 164 Y>
|
||||
<Text -25 29 12 #000080 0 "C">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV164>
|
||||
<Description>
|
||||
8-Bit Parallel-Out Serial Shift Register
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
.PARAM: vcc=5
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV164 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11
|
||||
Sub:X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 gnd Type="n74LV164_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV164.cir.lst">
|
||||
<Spice>
|
||||
* ----------------------------------------------------------- 74LV164 ------
|
||||
* 8-Bit Parallel-Out Serial Shift Register
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/26/03
|
||||
*
|
||||
.SUBCKT 74LV164 A B CLRBAR CLK QA QB QC QD QE QF QG QH
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U74164 LOGICEXP (3,3) DPWR_3V DGND_3V
|
||||
+ CLK A B
|
||||
+ r0 s0 clkbar
|
||||
+ D0_GATE IO_LV-A IO_LEVEL={IO_LEVEL}
|
||||
+
|
||||
+ LOGIC:
|
||||
+ r0 = { (~(A & B)) }
|
||||
+ s0 = { (~r0) }
|
||||
+ clkbar = { (~CLK) }
|
||||
|
||||
uf0 JKff(8) DPWR_3V DGND_3V
|
||||
+ $D_HI CLRBAR clkbar
|
||||
+ s0 QA_O QB_O QC_O QD_O QE_O QF_O QG_O
|
||||
+ r0 qabar qbbar qcbar qdbar qebar qfbar qgbar
|
||||
+ QA_O QB_O QC_O QD_O QE_O QF_O QG_O QH_O
|
||||
+ qabar qbbar qcbar qdbar qebar qfbar qgbar qhbar
|
||||
+ D0_EFF IO_LV-A
|
||||
|
||||
Udly PINDLY (8,0,2) DPWR_3V DGND_3V
|
||||
+ QA_O QB_O QC_O QD_O QE_O QF_O QG_O QH_O
|
||||
+ CLRBAR CLK
|
||||
+ QA QB QC QD QE QF QG QH
|
||||
+ IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
+
|
||||
+ BOOLEAN:
|
||||
+ CLOCK= { CHANGED(CLK,0) }
|
||||
+ CLEAR= { CHANGED_HL(CLRBAR,0) }
|
||||
+
|
||||
+ PINDLY:
|
||||
+ QA QB QC QD QE QF QG QH = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,7.9ns,16.3ns),
|
||||
+ CLOCK, DELAY(-1,8.3ns,16.3ns),
|
||||
+ DELAY(-1,9ns,17ns)
|
||||
+ )
|
||||
+ }
|
||||
|
||||
Ucnstr CONSTRAINT(4) DPWR_3V DGND_3V
|
||||
+ CLRBAR CLK A B
|
||||
+ IO_LV-A
|
||||
+
|
||||
+ FREQ:
|
||||
+ NODE = CLK
|
||||
+ MAXFREQ = 120MEG
|
||||
+ WIDTH:
|
||||
+ NODE = CLK
|
||||
+ MIN_HI = 5ns
|
||||
+ MIN_LO = 5ns
|
||||
+ WIDTH:
|
||||
+ NODE = CLRBAR
|
||||
+ MIN_LO = 5ns
|
||||
+ SETUP_HOLD:
|
||||
+ CLOCK LH = CLK
|
||||
+ DATA(2) = A B
|
||||
+ SETUPTIME = 5ns
|
||||
+ WHEN = { CLRBAR != '0 }
|
||||
+ SETUP_HOLD:
|
||||
+ DATA(1) = CLRBAR
|
||||
+ CLOCK LH = CLK
|
||||
+ SETUPTIME_HI = 2.5ns
|
||||
|
||||
.ENDS 74LV164
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV164 gnd _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11
|
||||
X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 74LV164
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line 30 20 20 0 #000080 2 1>
|
||||
<Text 4 9 12 #000080 0 "QB">
|
||||
<Text 4 -11 12 #000080 0 "QA">
|
||||
<Text 4 29 12 #000080 0 "QC">
|
||||
<Text 4 49 12 #000080 0 "QD">
|
||||
<Text 4 69 12 #000080 0 "QE">
|
||||
<Line -50 0 20 0 #000080 2 1>
|
||||
<Text -28 -10 12 #000080 0 "A">
|
||||
<Rectangle -30 -20 60 180 #000080 2 1 #c0c0c0 1 0>
|
||||
<Line 30 0 20 0 #000080 2 1>
|
||||
<Text 4 89 12 #000080 0 "QF">
|
||||
<Text 4 109 12 #000080 0 "QG">
|
||||
<Text 4 129 12 #000080 0 "QH">
|
||||
<Line 30 60 20 0 #000080 2 1>
|
||||
<Line 30 40 20 0 #000080 2 1>
|
||||
<Line 30 100 20 0 #000080 2 1>
|
||||
<Line 30 80 20 0 #000080 2 1>
|
||||
<Line 30 140 20 0 #000080 2 1>
|
||||
<Line 30 120 20 0 #000080 2 1>
|
||||
<Line -50 20 20 0 #000080 2 1>
|
||||
<Line -50 60 20 0 #000080 2 1>
|
||||
<Text -28 10 12 #000080 0 "B">
|
||||
<Text -28 50 12 #000080 0 "CLR">
|
||||
<Ellipse -31 56 -8 8 #000080 1 1 #000080 1 1>
|
||||
<Line -50 140 20 0 #000080 2 1>
|
||||
<Line -15 140 -15 -10 #000080 2 1>
|
||||
<Line -30 150 15 -10 #000080 2 1>
|
||||
<.PortSym -50 60 3 0 CLRBAR>
|
||||
<.ID -10 164 Y>
|
||||
<.PortSym -50 0 1 0 A>
|
||||
<.PortSym -50 20 2 0 B>
|
||||
<.PortSym -50 140 4 0 CLK>
|
||||
<.PortSym 50 0 5 180 QA>
|
||||
<.PortSym 50 20 6 180 QB>
|
||||
<.PortSym 50 40 7 180 QC>
|
||||
<.PortSym 50 60 8 180 QD>
|
||||
<.PortSym 50 80 9 180 QE>
|
||||
<.PortSym 50 100 10 180 QF>
|
||||
<.PortSym 50 120 11 180 QG>
|
||||
<.PortSym 50 140 12 180 QH>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component 74LV4040>
|
||||
<Description>
|
||||
12-Stage Binary Ripple Counter
|
||||
XSPICE Based Model
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_LV_74LV4040 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 _net12 _net13
|
||||
Sub:X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 _net12 _net13 gnd Type="n74LV4040_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "74LV4040.cir.lst">
|
||||
<Spice>
|
||||
*
|
||||
*---------------------74LV4040A-----------------------
|
||||
* 12-Bit Asynchronous Binary Counter
|
||||
*
|
||||
* TI PDF File
|
||||
* bss 2/28/03
|
||||
|
||||
.SUBCKT 74LV4040 CLR CLK QA QB QC QD QE QF QG QH QI QJ QK QL
|
||||
+ optional: DPWR_3V=$G_DPWR_3V DGND_3V=$G_DGND_3V
|
||||
+ params: MNTYMXDLY=0 IO_LEVEL=0
|
||||
|
||||
U1 LOGICEXP(1,1) DPWR_3V DGND_3V
|
||||
+ CLR
|
||||
+ RESETBAR
|
||||
+ D0_GATE IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
+ LOGIC:
|
||||
+ RESETBAR = {~CLR}
|
||||
|
||||
U2 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR CLK
|
||||
+ $D_HI $D_HI Q_A $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U3 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_A
|
||||
+ $D_HI $D_HI Q_B $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U4 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_B
|
||||
+ $D_HI $D_HI Q_C $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U5 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_C
|
||||
+ $D_HI $D_HI Q_D $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U6 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_D
|
||||
+ $D_HI $D_HI Q_E $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U7 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_E
|
||||
+ $D_HI $D_HI Q_F $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U8 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_F
|
||||
+ $D_HI $D_HI Q_G $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U9 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_G
|
||||
+ $D_HI $D_HI Q_H $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U10 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_H
|
||||
+ $D_HI $D_HI Q_I $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U11 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_I
|
||||
+ $D_HI $D_HI Q_J $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U12 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_J
|
||||
+ $D_HI $D_HI Q_K $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U13 JKFF(1) DPWR_3V DGND_3V
|
||||
+ $D_HI RESETBAR Q_K
|
||||
+ $D_HI $D_HI Q_L $D_NC
|
||||
+ D0_EFF IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
|
||||
U14 PINDLY(12,0,2) DPWR_3V DGND_3V
|
||||
+ Q_A Q_B Q_C Q_D Q_E Q_F Q_G Q_H Q_I Q_J Q_K Q_L
|
||||
+ CLR CLK
|
||||
+ QA QB QC QD QE QF QG QH QI QJ QK QL
|
||||
+ IO_LV-A MNTYMXDLY={MNTYMXDLY} IO_LEVEL={IO_LEVEL}
|
||||
+ BOOLEAN:
|
||||
+ CLEAR = {CHANGED_LH(CLR,0)}
|
||||
+ ACLK = {CHANGED_HL(CLK,0)}
|
||||
+ PINDLY:
|
||||
+ QA = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,7.5ns,15.4ns),
|
||||
+ DELAY(-1,10ns,17ns))}
|
||||
+ QB = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,8.7ns,19.8ns),
|
||||
+ DELAY(-1,10ns,20ns))}
|
||||
+ QC = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,9.9ns,24.2ns),
|
||||
+ DELAY(-1,10ns,25ns))}
|
||||
+ QD = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,11.1ns,28.6ns),
|
||||
+ DELAY(-1,12ns,29ns))}
|
||||
+ QE = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,12.3ns,33ns),
|
||||
+ DELAY(-1,13ns,34ns))}
|
||||
+ QF = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,13.5ns,37.4ns),
|
||||
+ DELAY(-1,14ns,38ns))}
|
||||
+ QG = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,14.7ns,41.8ns),
|
||||
+ DELAY(-1,15ns,42ns))}
|
||||
+ QH = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,15.9ns,46.2ns),
|
||||
+ DELAY(-1,16ns,47ns))}
|
||||
+ QI = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,17.1ns,50.6ns),
|
||||
+ DELAY(-1,18ns,51ns))}
|
||||
+ QJ = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,18.3ns,55ns),
|
||||
+ DELAY(-1,19ns,56ns))}
|
||||
+ QK = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,19.5ns,59.4ns),
|
||||
+ DELAY(-1,20ns,60ns))}
|
||||
+ QL = {
|
||||
+ CASE(
|
||||
+ CLEAR & TRN_HL, DELAY(-1,9ns,16.3ns),
|
||||
+ ACLK, DELAY(-1,20.7ns,63.8ns),
|
||||
+ DELAY(-1,21ns,64ns))}
|
||||
|
||||
U15 CONSTRAINT(2) DPWR_3V DGND_3V
|
||||
+ CLK CLR
|
||||
+ IO_LV-A IO_LEVEL={IO_LEVEL}
|
||||
+ SETUP_HOLD:
|
||||
+ CLOCK HL = CLK
|
||||
+ DATA(1) = CLR
|
||||
+ SETUPTIME_LO = 5NS
|
||||
+ WIDTH:
|
||||
+ NODE = CLK
|
||||
+ MIN_HI = 5NS
|
||||
+ MIN_LO = 5NS
|
||||
+ WIDTH:
|
||||
+ NODE = CLR
|
||||
+ MIN_HI = 5NS
|
||||
+ FREQ:
|
||||
+ NODE = CLK
|
||||
+ MAXFREQ = 130MEG
|
||||
|
||||
.ENDS 74LV4040
|
||||
*
|
||||
|
||||
.SUBCKT Digital_LV_74LV4040 gnd _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 _net12 _net13
|
||||
X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 _net9 _net10 _net11 _net12 _net13 74LV4040
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line 30 20 20 0 #000080 2 1>
|
||||
<Text 4 9 12 #000080 0 "QB">
|
||||
<Text 4 -11 12 #000080 0 "QA">
|
||||
<Text 4 29 12 #000080 0 "QC">
|
||||
<Text 4 49 12 #000080 0 "QD">
|
||||
<Text 4 69 12 #000080 0 "QE">
|
||||
<Rectangle -30 -20 60 260 #000080 2 1 #c0c0c0 1 0>
|
||||
<Line 30 0 20 0 #000080 2 1>
|
||||
<Text 4 89 12 #000080 0 "QF">
|
||||
<Text 4 109 12 #000080 0 "QG">
|
||||
<Text 4 129 12 #000080 0 "QH">
|
||||
<Line 30 60 20 0 #000080 2 1>
|
||||
<Line 30 40 20 0 #000080 2 1>
|
||||
<Line 30 100 20 0 #000080 2 1>
|
||||
<Line 30 80 20 0 #000080 2 1>
|
||||
<Line 30 140 20 0 #000080 2 1>
|
||||
<Line 30 120 20 0 #000080 2 1>
|
||||
<Line 30 160 20 0 #000080 2 1>
|
||||
<Line 30 180 20 0 #000080 2 1>
|
||||
<Line 30 200 20 0 #000080 2 1>
|
||||
<Line 30 220 20 0 #000080 2 1>
|
||||
<.PortSym 50 0 3 180 QA>
|
||||
<.PortSym 50 20 4 180 QB>
|
||||
<.PortSym 50 40 5 180 QC>
|
||||
<.PortSym 50 60 6 180 QD>
|
||||
<.PortSym 50 80 7 180 QE>
|
||||
<.PortSym 50 100 8 180 QF>
|
||||
<.PortSym 50 120 9 180 QG>
|
||||
<.PortSym 50 140 10 180 QH>
|
||||
<.PortSym 50 160 11 180 QI>
|
||||
<.PortSym 50 180 12 180 QJ>
|
||||
<Text 4 149 12 #000080 0 "QI">
|
||||
<Text 4 169 12 #000080 0 "QJ">
|
||||
<Text 4 189 12 #000080 0 "QK">
|
||||
<Text 4 209 12 #000080 0 "QL">
|
||||
<.ID -10 244 Y>
|
||||
<.PortSym 50 200 13 180 QK>
|
||||
<.PortSym 50 220 14 180 QL>
|
||||
<.PortSym -50 0 2 0 CLK>
|
||||
<Line -50 0 20 0 #000080 2 1>
|
||||
<Line -15 0 -15 -10 #000080 2 1>
|
||||
<Line -30 10 15 -10 #000080 2 1>
|
||||
<Line -50 60 20 0 #000080 2 1>
|
||||
<Text -28 50 12 #000080 0 "CLR">
|
||||
<.PortSym -50 60 1 0 CLR>
|
||||
</Symbol>
|
||||
</Component>
|
988
library/Digital_XSPICE.lib
Normal file
@ -0,0 +1,988 @@
|
||||
<Qucs Library 24.4.1 "Digital_XSPICE">
|
||||
|
||||
<Component d_AND2>
|
||||
<Description>
|
||||
2-Input AND
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_AND2 _net0 _net2 _net1 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net2 _net1 gnd Type="d_and2_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_and2.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 2-Input AND ****
|
||||
*
|
||||
.subckt d_and2X A B Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B] Y and1
|
||||
.model and1 d_and(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_and2X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_AND2 gnd _net0 _net2 _net1 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net2 _net1 d_and2X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line -10 20 0 -40 #0000ff 2 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<.PortSym -30 10 2 0 B>
|
||||
<.PortSym 30 0 3 180 Y>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_AND3>
|
||||
<Description>
|
||||
3-Input AND
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_AND3 _net0 _net1 _net2 _net3 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 _net2 _net3 gnd Type="d_and3_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_and3.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 3-Input AND ****
|
||||
*
|
||||
.subckt d_and3X A B C Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B C] Y and1
|
||||
.model and1 d_and(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_and3X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_AND3 gnd _net0 _net1 _net2 _net3 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 _net2 _net3 d_and3X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line -10 20 0 -40 #0000ff 2 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
<Line -30 0 20 0 #000080 2 1>
|
||||
<.PortSym -30 0 2 0 B>
|
||||
<.PortSym -30 10 3 0 C>
|
||||
<.PortSym 30 0 4 180 Y>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_AND4>
|
||||
<Description>
|
||||
4-Input AND
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_AND4 _net0 _net1 _net2 _net3 _net4 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 _net2 _net3 _net4 gnd Type="d_and4_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_and4.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 4-Input AND ****
|
||||
*
|
||||
.subckt d_and4X A B C D Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B C D] Y and1
|
||||
.model and1 d_and(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_and4X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_AND4 gnd _net0 _net1 _net2 _net3 _net4 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 _net2 _net3 _net4 d_and4X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 -30 1 0 A>
|
||||
<.PortSym -30 -10 2 0 B>
|
||||
<.PortSym -30 10 3 0 C>
|
||||
<.PortSym -30 30 4 0 D>
|
||||
<.PortSym 40 0 5 180 Y>
|
||||
<.ID 20 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<Line -30 -30 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<Line -30 30 20 0 #000080 2 1>
|
||||
<Line -10 40 0 -80 #0000ff 2 1>
|
||||
<Line 20 0 20 0 #000080 2 1>
|
||||
<EArc -20 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line 0 20 -10 0 #0000ff 2 1>
|
||||
<Line 0 -20 -10 0 #0000ff 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_AND8>
|
||||
<Description>
|
||||
8-Input AND
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_AND8 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 gnd Type="d_and8_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_and8.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 8-Input AND ****
|
||||
*
|
||||
.subckt d_and8X A B C D E F G H Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B C D E F G H] Y and1
|
||||
.model and1 d_and(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_and8X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_AND8 gnd _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 d_and8X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.ID 20 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<Line -30 -30 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<Line -30 30 20 0 #000080 2 1>
|
||||
<Line 20 0 20 0 #000080 2 1>
|
||||
<EArc -20 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line 0 20 -10 0 #0000ff 2 1>
|
||||
<Line 0 -20 -10 0 #0000ff 2 1>
|
||||
<Line -30 50 20 0 #000080 2 1>
|
||||
<Line -30 70 20 0 #000080 2 1>
|
||||
<Line -30 -70 20 0 #000080 2 1>
|
||||
<Line -30 -50 20 0 #000080 2 1>
|
||||
<.PortSym -30 -70 1 0 A>
|
||||
<.PortSym -30 -50 2 0 B>
|
||||
<.PortSym -30 -30 3 0 C>
|
||||
<.PortSym -30 -10 4 0 D>
|
||||
<.PortSym -30 10 5 0 E>
|
||||
<.PortSym -30 30 6 0 F>
|
||||
<.PortSym -30 50 7 0 G>
|
||||
<.PortSym -30 70 8 0 H>
|
||||
<.PortSym 40 0 9 180 Y>
|
||||
<Line -10 80 0 -160 #0000ff 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_NAND2>
|
||||
<Description>
|
||||
2-Input NAND
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_NAND2 _net0 _net1 _net2 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 _net2 gnd Type="d_nand2_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_nand2.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 2-Input NAND ****
|
||||
*
|
||||
.subckt d_nand2X A B Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B] Y nand1
|
||||
.model nand1 d_nand(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_nand2X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_NAND2 gnd _net0 _net1 _net2 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 _net2 d_nand2X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 10 2 0 B>
|
||||
<.PortSym 30 0 3 180 Y>
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line -10 20 0 -40 #0000ff 2 1>
|
||||
<Ellipse 10 -4 8 8 #0000ff 1 1 #0000ff 1 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<Line 18 0 12 0 #000080 2 1>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_NAND3>
|
||||
<Description>
|
||||
3-Input NAND
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_NAND3 _net0 _net1 _net2 _net3 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 _net2 _net3 gnd Type="d_nand3_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_nand3.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 3-Input NAND ****
|
||||
*
|
||||
.subckt d_nand3X A B C Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B C] Y nand1
|
||||
.model nand1 d_nand(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_nand3X
|
||||
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_NAND3 gnd _net0 _net1 _net2 _net3 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 _net2 _net3 d_nand3X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line -10 20 0 -40 #0000ff 2 1>
|
||||
<Ellipse 10 -4 8 8 #0000ff 1 1 #0000ff 1 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<Line 18 0 12 0 #000080 2 1>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<Line -30 0 20 0 #000080 2 1>
|
||||
<.PortSym -30 0 2 0 B>
|
||||
<.PortSym -30 10 3 0 C>
|
||||
<.PortSym 30 0 4 180 Y>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_NAND4>
|
||||
<Description>
|
||||
4-Input NAND
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_NAND4 _net0 _net1 _net2 _net3 _net4 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 _net2 _net3 _net4 gnd Type="d_nand4_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_nand4.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 4-Input NAND ****
|
||||
*
|
||||
.subckt d_nand4X A B C D Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B C D] Y nand1
|
||||
.model nand1 d_nand(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_nand4X
|
||||
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_NAND4 gnd _net0 _net1 _net2 _net3 _net4 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 _net2 _net3 _net4 d_nand4X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line -30 -30 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<Line -30 30 20 0 #000080 2 1>
|
||||
<Line -10 40 0 -80 #0000ff 2 1>
|
||||
<.PortSym -30 -30 1 0 A>
|
||||
<.PortSym -30 -10 2 0 B>
|
||||
<.PortSym -30 10 3 0 C>
|
||||
<.PortSym -30 30 4 0 D>
|
||||
<.PortSym 40 0 5 180 Y>
|
||||
<Line 28 0 12 0 #000080 2 1>
|
||||
<Ellipse 20 -4 8 8 #0000ff 1 1 #0000ff 1 1>
|
||||
<EArc -20 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line 0 20 -10 0 #0000ff 2 1>
|
||||
<Line 0 -20 -10 0 #0000ff 2 1>
|
||||
<.ID 20 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_NAND8>
|
||||
<Description>
|
||||
8-Input NAND
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_NAND8 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 gnd Type="d_nand8_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_nand8.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 8-Input AND ****
|
||||
*
|
||||
.subckt d_nand8X A B C D E F G H Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B C D E F G H] Y nand1
|
||||
.model nand1 d_nand(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_nand8X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_NAND8 gnd _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 _net2 _net3 _net4 _net5 _net6 _net7 _net8 d_nand8X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.ID 20 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<Line -30 -30 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<Line -30 30 20 0 #000080 2 1>
|
||||
<EArc -20 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line 0 20 -10 0 #0000ff 2 1>
|
||||
<Line 0 -20 -10 0 #0000ff 2 1>
|
||||
<Line -30 50 20 0 #000080 2 1>
|
||||
<Line -30 70 20 0 #000080 2 1>
|
||||
<Line -30 -70 20 0 #000080 2 1>
|
||||
<Line -30 -50 20 0 #000080 2 1>
|
||||
<.PortSym -30 -70 1 0 A>
|
||||
<.PortSym -30 -50 2 0 B>
|
||||
<.PortSym -30 -30 3 0 C>
|
||||
<.PortSym -30 -10 4 0 D>
|
||||
<.PortSym -30 10 5 0 E>
|
||||
<.PortSym -30 30 6 0 F>
|
||||
<.PortSym -30 50 7 0 G>
|
||||
<.PortSym -30 70 8 0 H>
|
||||
<.PortSym 40 0 9 180 Y>
|
||||
<Line -10 80 0 -160 #0000ff 2 1>
|
||||
<Ellipse 20 -4 8 8 #0000ff 1 1 #0000ff 1 1>
|
||||
<Line 28 0 12 0 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_OR2>
|
||||
<Description>
|
||||
2-Input OR
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_OR2 _net0 _net2 _net1 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net2 _net1 gnd Type="d_or2_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_or2.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 2-Input OR ****
|
||||
*
|
||||
.subckt d_or2X A B Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B] Y or1
|
||||
.model or1 d_or(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_or2X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_OR2 gnd _net0 _net2 _net1 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net2 _net1 d_or2X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 10 2 0 B>
|
||||
<.PortSym 30 0 3 180 Y>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<EArc -20 -20 10 40 4320 2880 #0000ff 2 1>
|
||||
<Line -10 20 -5 0 #0000ff 2 1>
|
||||
<Line -10 -20 -5 0 #0000ff 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_OR3>
|
||||
<Description>
|
||||
3-Input OR
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_OR3 _net0 _net1 _net2 _net3 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 _net2 _net3 gnd Type="d_or3_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_or3.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 3-Input OR ****
|
||||
*
|
||||
.subckt d_or3X A B C Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B C] Y or1
|
||||
.model or1 d_or(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_or3X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_OR3 gnd _net0 _net1 _net2 _net3 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 _net2 _net3 d_or3X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<EArc -20 -20 10 40 4320 2880 #0000ff 2 1>
|
||||
<Line -10 20 -5 0 #0000ff 2 1>
|
||||
<Line -10 -20 -5 0 #0000ff 2 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<Line -30 0 20 0 #000080 2 1>
|
||||
<.PortSym -30 0 2 0 B>
|
||||
<.PortSym -30 10 3 0 C>
|
||||
<.PortSym 30 0 4 180 Y>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_NOR2>
|
||||
<Description>
|
||||
2-Input NOR
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_NOR2 _net0 _net2 _net1 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net2 _net1 gnd Type="d_nor2_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_nor2.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 2-Input NOR ****
|
||||
*
|
||||
.subckt d_nor2X A B Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B] Y nor1
|
||||
.model nor1 d_nor(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_nor2X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_NOR2 gnd _net0 _net2 _net1 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net2 _net1 d_nor2X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 10 2 0 B>
|
||||
<.PortSym 30 0 3 180 Y>
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<EArc -20 -20 10 40 4320 2880 #0000ff 2 1>
|
||||
<Line -10 20 -5 0 #0000ff 2 1>
|
||||
<Line -10 -20 -5 0 #0000ff 2 1>
|
||||
<Ellipse 10 -4 8 8 #0000ff 1 1 #0000ff 1 1>
|
||||
<Line 18 0 12 0 #000080 2 1>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_NOR3>
|
||||
<Description>
|
||||
2-Input NOR
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_NOR3 _net0 _net1 _net2 _net3 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 _net2 _net3 gnd Type="d_nor3_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_nor3.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 3-Input NOR ****
|
||||
*
|
||||
.subckt d_nor3X A B C Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B C] Y nor1
|
||||
.model nor1 d_nor(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_nor3X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_NOR3 gnd _net0 _net1 _net2 _net3 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 _net2 _net3 d_nor3X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<EArc -20 -20 10 40 4320 2880 #0000ff 2 1>
|
||||
<Line -10 20 -5 0 #0000ff 2 1>
|
||||
<Line -10 -20 -5 0 #0000ff 2 1>
|
||||
<Ellipse 10 -4 8 8 #0000ff 1 1 #0000ff 1 1>
|
||||
<Line 18 0 12 0 #000080 2 1>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<Line -30 0 20 0 #000080 2 1>
|
||||
<.PortSym -30 0 2 0 B>
|
||||
<.PortSym -30 10 3 0 C>
|
||||
<.PortSym 30 0 4 180 Y>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_XOR2>
|
||||
<Description>
|
||||
2-Input XOR
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_XOR2 _net0 _net2 _net1 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net2 _net1 gnd Type="d_xor2_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_xor2.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 2-Input XOR ****
|
||||
*
|
||||
.subckt d_xor2X A B Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B] Y xor1
|
||||
.model xor1 d_xor(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_xor2X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_XOR2 gnd _net0 _net2 _net1 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net2 _net1 d_xor2X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 10 2 0 B>
|
||||
<.PortSym 30 0 3 180 Y>
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line 10 0 20 0 #000080 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<EArc -20 -20 10 40 4320 2880 #0000ff 2 1>
|
||||
<EArc -15 -20 10 40 4320 2880 #0000ff 2 1>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_XNOR2>
|
||||
<Description>
|
||||
2-Input XNOR
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_XNOR2 _net0 _net2 _net1 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net2 _net1 gnd Type="d_nor2_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_nor2.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital 2-Input NOR ****
|
||||
*
|
||||
.subckt d_nor2X A B Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 [A B] Y nor1
|
||||
.model nor1 d_nor(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_nor2X
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_XNOR2 gnd _net0 _net2 _net1 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net2 _net1 d_nor2X RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.PortSym -30 10 2 0 B>
|
||||
<.PortSym 30 0 3 180 Y>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<.PortSym -30 -10 1 0 A>
|
||||
<EArc -30 -20 40 40 4320 2880 #0000ff 2 1>
|
||||
<Line -30 -10 20 0 #000080 2 1>
|
||||
<Line -30 10 20 0 #000080 2 1>
|
||||
<EArc -20 -20 10 40 4320 2880 #0000ff 2 1>
|
||||
<EArc -15 -20 10 40 4320 2880 #0000ff 2 1>
|
||||
<Ellipse 10 -4 8 8 #0000ff 1 1 #0000ff 1 1>
|
||||
<Line 18 0 12 0 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_BUF>
|
||||
<Description>
|
||||
Digital Buffer
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_BUF _net0 _net1 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 gnd Type="d_buf_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_buf.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital Buffer ****
|
||||
*
|
||||
.subckt d_bufX A Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 A Y buf1
|
||||
.model buf1 d_buffer(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_bufX
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_BUF gnd _net0 _net1 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 d_bufX RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line 15 0 15 0 #000080 2 1>
|
||||
<Line -30 0 20 0 #000080 2 1>
|
||||
<Line -10 -15 25 15 #0000ff 2 1>
|
||||
<Line -10 15 0 -30 #0000ff 2 1>
|
||||
<Line -10 15 25 -15 #0000ff 2 1>
|
||||
<.PortSym -30 0 1 0 A>
|
||||
<.PortSym 30 0 2 180 Y>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_INV>
|
||||
<Description>
|
||||
Digital Inverter
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_INV _net0 _net1 Rise_Delay="1e-10" Fall_Delay="1e-10" Input_Load="0.5e-12"
|
||||
Sub:X1 _net0 _net1 gnd Type="d_inv_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_inv.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital Inverter ****
|
||||
*
|
||||
.subckt d_invX A Y rise_delay=1e-10 fall_delay=1e-10 input_load=0.5e-12
|
||||
*
|
||||
a1 A Y inv1
|
||||
.model inv1 d_inverter(rise_delay='rise_delay' fall_delay='fall_delay' input_load='input_load')
|
||||
*
|
||||
.ends d_invX
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_INV gnd _net0 _net1 Rise_Delay=1e-10 Fall_Delay=1e-10 Input_Load=0.5e-12
|
||||
X1 _net0 _net1 d_invX RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY INPUT_LOAD=INPUT_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.ID 10 14 Y "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=">
|
||||
<Line -30 0 20 0 #000080 2 1>
|
||||
<Line -10 -15 25 15 #0000ff 2 1>
|
||||
<Line -10 15 0 -30 #0000ff 2 1>
|
||||
<Line -10 15 25 -15 #0000ff 2 1>
|
||||
<.PortSym -30 0 1 0 A>
|
||||
<.PortSym 30 0 2 180 Y>
|
||||
<Ellipse 10 -4 8 8 #0000ff 1 1 #0000ff 1 1>
|
||||
<Line 18 0 12 0 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_TRI>
|
||||
<Description>
|
||||
Tri-State Buffer
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_TRI _net0 _net2 _net1 Delay="1e-10" Input_Load="0.5e-12" Enable_Load="0.5e-12"
|
||||
SpLib:X1 _net0 _net2 _net1 File="d_tri.cir" Device="D_TRIX" SymPattern="auto" Params="DELAY=DELAY INPUT_LOAD=INPUT_LOAD ENABLE_LOAD=ENABLE_LOAD" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT Digital_XSPICE_d_TRI gnd _net0 _net2 _net1 Delay=1e-10 Input_Load=0.5e-12 Enable_Load=0.5e-12
|
||||
XX1 _net0 _net2 _net1 D_TRIX DELAY=DELAY INPUT_LOAD=INPUT_LOAD ENABLE_LOAD=ENABLE_LOAD
|
||||
.ENDS
|
||||
</Spice>
|
||||
<VerilogModel>
|
||||
module Sub_Digital_XSPICE_d_TRI (net_net0, net_net2, net_net1);
|
||||
inout net_net0, net_net1, net_net2;
|
||||
|
||||
parameter Delay = 1e-10;
|
||||
parameter Input_Load = 0.5e-12;
|
||||
parameter Enable_Load = 0.5e-12;
|
||||
|
||||
endmodule
|
||||
</VerilogModel>
|
||||
<VHDLModel>
|
||||
library ieee;
|
||||
use ieee.std_logic_1164.all;
|
||||
entity Sub_Digital_XSPICE_d_TRI is
|
||||
generic (Delay : real := 1e-10;
|
||||
Input_Load : real := 0.5e-12;
|
||||
Enable_Load : real := 0.5e-12;
|
||||
);
|
||||
port (net_net0 : inout ;
|
||||
net_net2 : inout ;
|
||||
net_net1 : inout );
|
||||
end entity;
|
||||
use work.all;
|
||||
architecture Arch_Sub_Digital_XSPICE_d_TRI of Sub_Digital_XSPICE_d_TRI is
|
||||
begin
|
||||
end architecture;
|
||||
</VHDLModel>
|
||||
<Symbol>
|
||||
<Line 15 0 15 0 #000080 2 1>
|
||||
<Line -30 0 20 0 #000080 2 1>
|
||||
<Line -10 -15 25 15 #0000ff 2 1>
|
||||
<Line -10 15 0 -30 #0000ff 2 1>
|
||||
<Line -10 15 25 -15 #0000ff 2 1>
|
||||
<.PortSym -30 0 1 0 A>
|
||||
<.PortSym 30 0 3 180 Y>
|
||||
<.ID 20 14 Y "1=Delay=1e-10=Delay (sec)=" "1=Input_Load=0.5e-12=Input Load (F)=" "1=Enable_Load=0.5e-12=Enable Load (F)=">
|
||||
<Line 0 10 0 10 #000080 2 1>
|
||||
<.PortSym 0 20 2 0 E>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_D_FF>
|
||||
<Description>
|
||||
D Flip-Flop
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_D_FF _net0 _net1 _net4 _net5 _net2 _net3 Clk_Delay="1e-10" Set_Delay="1e-10" Reset_Delay="1e-10" IC="0" Rise_Delay="1e-10" Fall_Delay="1e-10"
|
||||
Sub:X1 _net0 _net1 _net4 _net5 _net2 _net3 gnd Type="d_dff_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_dff.cir.lst">
|
||||
<Spice>
|
||||
* XSPICE d_dff Digital D Flip-Flop
|
||||
*
|
||||
.subckt d_ff d_d d_c d_set d_reset d_q d_q_ clk_delay=1.0e-10 set_delay=1.0e-10 reset_delay=1.0e-10 ic=0 rise_delay=1.0e-10 fall_delay=1e-10
|
||||
*
|
||||
ad1 d_d d_c d_set d_reset d_q d_q_ flop1
|
||||
.model flop1 d_dff(clk_delay='clk_delay' set_delay='set_delay' reset_delay='reset_delay' ic='ic' rise_delay='rise_delay' fall_delay='fall_delay')
|
||||
*
|
||||
.ends d_dff
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_D_FF gnd _net0 _net1 _net4 _net5 _net2 _net3 Clk_Delay=1e-10 Set_Delay=1e-10 Reset_Delay=1e-10 IC=0 Rise_Delay=1e-10 Fall_Delay=1e-10
|
||||
X1 _net0 _net1 _net4 _net5 _net2 _net3 d_ff CLK_DELAY=CLK_DELAY SET_DELAY=SET_DELAY RESET_DELAY=RESET_DELAY IC=IC RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line 0 -40 0 -20 #000080 2 1>
|
||||
<Line 0 61 0 -20 #000080 2 1>
|
||||
<Line -50 20 20 0 #000080 2 1>
|
||||
<Line -50 -20 20 0 #000080 2 1>
|
||||
<Line 30 -20 20 0 #000080 2 1>
|
||||
<Line 30 20 20 0 #000080 2 1>
|
||||
<Line 14 11 12 0 #000080 2 1>
|
||||
<Text 14 -31 12 #000080 0 "Q">
|
||||
<Text 14 9 12 #000080 0 "Q">
|
||||
<Line -15 20 -15 -10 #000080 2 1>
|
||||
<Line -30 30 15 -10 #000080 2 1>
|
||||
<.PortSym -50 -20 1 0 D>
|
||||
<.PortSym -50 20 2 0 C>
|
||||
<.PortSym 50 -20 5 180 Q>
|
||||
<.PortSym 50 20 6 180 Q_>
|
||||
<Text -6 -40 12 #000080 0 "S">
|
||||
<Text -6 20 12 #000080 0 "R">
|
||||
<Text -26 -30 12 #000080 0 "D">
|
||||
<Rectangle -30 -40 60 80 #0000ff 2 1 #c0c0c0 1 0>
|
||||
<.PortSym 0 60 4 0 Reset>
|
||||
<.PortSym 0 -60 3 0 Set>
|
||||
<.ID 20 44 Y "1=Clk_Delay=1e-10=Clock Delay (sec)=" "1=Set_Delay=1e-10=Set Delay (sec)=" "1=Reset_Delay=1e-10=Reset Delay (sec)=" "1=IC=0=Output Initial State=" "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_D_FF_B>
|
||||
<Description>
|
||||
D Flip-Flop
|
||||
Set-Reset Swapped
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_D_FF_B _net0 _net1 _net4 _net5 _net2 _net3 Clk_Delay="1e-10" Set_Delay="1e-10" Reset_Delay="1e-10" IC="0" Rise_Delay="1e-10" Fall_Delay="1e-10"
|
||||
Sub:X1 _net0 _net1 _net4 _net5 _net2 _net3 gnd Type="d_dff_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_dff.cir.lst">
|
||||
<Spice>
|
||||
* XSPICE d_dff Digital D Flip-Flop
|
||||
*
|
||||
.subckt d_ff d_d d_c d_set d_reset d_q d_q_ clk_delay=1.0e-10 set_delay=1.0e-10 reset_delay=1.0e-10 ic=0 rise_delay=1.0e-10 fall_delay=1e-10
|
||||
*
|
||||
ad1 d_d d_c d_set d_reset d_q d_q_ flop1
|
||||
.model flop1 d_dff(clk_delay='clk_delay' set_delay='set_delay' reset_delay='reset_delay' ic='ic' rise_delay='rise_delay' fall_delay='fall_delay')
|
||||
*
|
||||
.ends d_dff
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_D_FF_B gnd _net0 _net1 _net4 _net5 _net2 _net3 Clk_Delay=1e-10 Set_Delay=1e-10 Reset_Delay=1e-10 IC=0 Rise_Delay=1e-10 Fall_Delay=1e-10
|
||||
X1 _net0 _net1 _net4 _net5 _net2 _net3 d_ff CLK_DELAY=CLK_DELAY SET_DELAY=SET_DELAY RESET_DELAY=RESET_DELAY IC=IC RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line 0 -40 0 -20 #000080 2 1>
|
||||
<Line 0 61 0 -20 #000080 2 1>
|
||||
<Line -50 20 20 0 #000080 2 1>
|
||||
<Line -50 -20 20 0 #000080 2 1>
|
||||
<Line 30 -20 20 0 #000080 2 1>
|
||||
<Line 30 20 20 0 #000080 2 1>
|
||||
<Line 14 11 12 0 #000080 2 1>
|
||||
<Text 14 -31 12 #000080 0 "Q">
|
||||
<Text 14 9 12 #000080 0 "Q">
|
||||
<Line -15 20 -15 -10 #000080 2 1>
|
||||
<Line -30 30 15 -10 #000080 2 1>
|
||||
<.PortSym -50 -20 1 0 D>
|
||||
<.PortSym -50 20 2 0 C>
|
||||
<.PortSym 50 -20 5 180 Q>
|
||||
<.PortSym 50 20 6 180 Q_>
|
||||
<Text -26 -30 12 #000080 0 "D">
|
||||
<Rectangle -30 -40 60 80 #0000ff 2 1 #c0c0c0 1 0>
|
||||
<.ID 20 44 Y "1=Clk_Delay=1e-10=Clock Delay (sec)=" "1=Set_Delay=1e-10=Set Delay (sec)=" "1=Reset_Delay=1e-10=Reset Delay (sec)=" "1=IC=0=Output Initial State=" "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=">
|
||||
<Text -6 20 12 #000080 0 "S">
|
||||
<Text -6 -40 12 #000080 0 "R">
|
||||
<.PortSym 0 -60 4 0 Reset>
|
||||
<.PortSym 0 60 3 0 Set>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_JK_FF>
|
||||
<Description>
|
||||
JK Flip-Flop
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_JK_FF _net0 _net3 _net1 _net5 _net6 _net4 _net2 Clk_Delay="1e-10" Set_Delay="1e-10" Reset_Delay="1e-10" IC="0" Rise_Delay="1e-10" Fall_Delay="1e-10"
|
||||
Sub:X1 _net0 _net3 _net1 _net5 _net6 _net4 _net2 gnd Type="d_jkff_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_jkff.cir.lst">
|
||||
<Spice>
|
||||
* XSPICE d_jkff Digital J-K Flip-Flop
|
||||
*
|
||||
.subckt d_jkff d_j d_k d_c d_set d_reset d_q d_q_ clk_delay=1.0e-10 set_delay=1.0e-10 reset_delay=1.0e-10 ic=0 rise_delay=1.0e-10 fall_delay=1e-10
|
||||
*
|
||||
ad1 d_j d_k d_c d_set d_reset d_q d_q_ flop1
|
||||
.model flop1 d_jkff(clk_delay='clk_delay' set_delay='set_delay' reset_delay='reset_delay' ic='ic' rise_delay='rise_delay' fall_delay='fall_delay')
|
||||
*
|
||||
.ends d_jkff
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_JK_FF gnd _net0 _net3 _net1 _net5 _net6 _net4 _net2 Clk_Delay=1e-10 Set_Delay=1e-10 Reset_Delay=1e-10 IC=0 Rise_Delay=1e-10 Fall_Delay=1e-10
|
||||
X1 _net0 _net3 _net1 _net5 _net6 _net4 _net2 d_jkff CLK_DELAY=CLK_DELAY SET_DELAY=SET_DELAY RESET_DELAY=RESET_DELAY IC=IC RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line 0 -40 0 -20 #000080 2 1>
|
||||
<Line 0 61 0 -20 #000080 2 1>
|
||||
<Line -50 20 20 0 #000080 2 1>
|
||||
<Line -50 -20 20 0 #000080 2 1>
|
||||
<Line 30 -20 20 0 #000080 2 1>
|
||||
<Line 30 20 20 0 #000080 2 1>
|
||||
<Line 14 11 12 0 #000080 2 1>
|
||||
<Text 14 -31 12 #000080 0 "Q">
|
||||
<Text 14 9 12 #000080 0 "Q">
|
||||
<.PortSym -50 -20 1 0 J>
|
||||
<.PortSym -50 20 2 0 K>
|
||||
<Text -6 -40 12 #000080 0 "S">
|
||||
<Text -6 20 12 #000080 0 "R">
|
||||
<Text -26 -30 12 #000080 0 "J">
|
||||
<Rectangle -30 -40 60 80 #0000ff 2 1 #c0c0c0 1 0>
|
||||
<Line -15 0 -15 -10 #000080 2 1>
|
||||
<Line -30 10 15 -10 #000080 2 1>
|
||||
<Line -50 0 20 0 #000080 2 1>
|
||||
<.PortSym -50 0 3 0 C>
|
||||
<.PortSym 0 -60 4 0 Set>
|
||||
<.PortSym 0 60 5 0 Reset>
|
||||
<.PortSym 50 -20 6 180 Q>
|
||||
<.PortSym 50 20 7 180 Q_>
|
||||
<Text -26 10 12 #000080 0 "K">
|
||||
<.ID 20 44 Y "1=Clk_Delay=1e-10=Clock Delay (sec)=" "1=Set_Delay=1e-10=Set Delay (sec)=" "1=Reset_Delay=1e-10=Reset Delay (sec)=" "1=IC=0=Output Initial State=" "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_SR_FF>
|
||||
<Description>
|
||||
SR Flip-Flop
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_SR_FF _net5 _net6 _net0 _net3 _net4 _net2 _net1 Clk_Delay="1e-10" Set_Delay="1e-10" Reset_Delay="1e-10" IC="0" Rise_Delay="1e-10" Fall_Delay="1e-10"
|
||||
Sub:X1 _net5 _net6 _net0 _net3 _net4 _net2 _net1 gnd Type="d_srff_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_srff.cir.lst">
|
||||
<Spice>
|
||||
* XSPICE d_srff Digital S-R Flip-Flop
|
||||
*
|
||||
.subckt d_srff d_s d_r d_c d_set d_reset d_q d_q_ clk_delay=1.0e-10 set_delay=1.0e-10 reset_delay=1.0e-10 ic=0 rise_delay=1.0e-10 fall_delay=1e-10
|
||||
*
|
||||
ad1 d_s d_r d_c d_set d_reset d_q d_q_ flop1
|
||||
.model flop1 d_srff(clk_delay='clk_delay' set_delay='set_delay' reset_delay='reset_delay' ic='ic' rise_delay='rise_delay' fall_delay='fall_delay')
|
||||
*
|
||||
.ends d_srff
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_SR_FF gnd _net5 _net6 _net0 _net3 _net4 _net2 _net1 Clk_Delay=1e-10 Set_Delay=1e-10 Reset_Delay=1e-10 IC=0 Rise_Delay=1e-10 Fall_Delay=1e-10
|
||||
X1 _net5 _net6 _net0 _net3 _net4 _net2 _net1 d_srff CLK_DELAY=CLK_DELAY SET_DELAY=SET_DELAY RESET_DELAY=RESET_DELAY IC=IC RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line 0 -40 0 -20 #000080 2 1>
|
||||
<Line 0 61 0 -20 #000080 2 1>
|
||||
<Line -50 20 20 0 #000080 2 1>
|
||||
<Line -50 -20 20 0 #000080 2 1>
|
||||
<Line 30 -20 20 0 #000080 2 1>
|
||||
<Line 30 20 20 0 #000080 2 1>
|
||||
<Line 14 11 12 0 #000080 2 1>
|
||||
<Text 14 -31 12 #000080 0 "Q">
|
||||
<Text 14 9 12 #000080 0 "Q">
|
||||
<.PortSym -50 -20 1 0 S>
|
||||
<.PortSym -50 20 2 0 R>
|
||||
<Text -6 -40 12 #000080 0 "S">
|
||||
<Text -6 20 12 #000080 0 "R">
|
||||
<Text -26 -30 12 #000080 0 "S">
|
||||
<Rectangle -30 -40 60 80 #0000ff 2 1 #c0c0c0 1 0>
|
||||
<.ID 20 44 Y "1=Clk_Delay=1e-10=Clock Delay (sec)=" "1=Set_Delay=1e-10=Set Delay (sec)=" "1=Reset_Delay=1e-10=Reset Delay (sec)=" "1=IC=0=Output Initial State=" "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=">
|
||||
<Line -15 0 -15 -10 #000080 2 1>
|
||||
<Line -30 10 15 -10 #000080 2 1>
|
||||
<Line -50 0 20 0 #000080 2 1>
|
||||
<.PortSym -50 0 3 0 C>
|
||||
<.PortSym 0 -60 4 0 Set>
|
||||
<.PortSym 0 60 5 0 Reset>
|
||||
<.PortSym 50 -20 6 180 Q>
|
||||
<.PortSym 50 20 7 180 Q_>
|
||||
<Text -26 10 12 #000080 0 "R">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component d_Divider>
|
||||
<Description>
|
||||
Digital Divider
|
||||
50/50 Duty Requires
|
||||
High-Cycles=(Div-Factor)/2
|
||||
XSPICE Based
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Digital_XSPICE_d_Divider _net0 _net1 Div_Factor="2" High_Cycles="1" I_Count="0" Rise_Delay="1e-10" Fall_Delay="1e-10"
|
||||
Sub:X1 _net0 _net1 gnd Type="d_divider_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "d_divider.cir.lst">
|
||||
<Spice>
|
||||
**** XSPICE digital divider d_fdiv ****
|
||||
*
|
||||
* d_fin - digital input
|
||||
* d_fout - digital output
|
||||
*
|
||||
.subckt dig_div d_fin d_fout div_factor=2 high_cycles=1 i_count=0 rise_delay=1e-10 fall_delay=1e-10)
|
||||
*
|
||||
adiv1 d_fin d_fout divider
|
||||
*
|
||||
.model divider d_fdiv(div_factor='div_factor' high_cycles='high_cycles' i_count='i_count' rise_delay='rise_delay' fall_delay='fall_delay')
|
||||
*
|
||||
.ends dig_div
|
||||
|
||||
.SUBCKT Digital_XSPICE_d_Divider gnd _net0 _net1 Div_Factor=2 High_Cycles=1 I_Count=0 Rise_Delay=1e-10 Fall_Delay=1e-10
|
||||
X1 _net0 _net1 dig_div DIV_FACTOR=DIV_FACTOR HIGH_CYCLES=HIGH_CYCLES I_COUNT=I_COUNT RISE_DELAY=RISE_DELAY FALL_DELAY=FALL_DELAY
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line 9 0 -17 0 #000000 2 1>
|
||||
<Ellipse -3 5 6 6 #000000 1 1 #000000 1 1>
|
||||
<Ellipse -3 -11 6 6 #000000 1 1 #000000 1 1>
|
||||
<.PortSym -50 0 1 0 IN>
|
||||
<.PortSym 50 0 2 180 OUT>
|
||||
<Rectangle -30 -20 60 40 #0000ff 2 1 #c0c0c0 1 0>
|
||||
<Line -50 0 20 0 #000080 2 1>
|
||||
<Line 30 0 20 0 #000080 2 1>
|
||||
<Text -24 -10 12 #000080 0 "I">
|
||||
<Text 15 -10 12 #000080 0 "O">
|
||||
<.ID -20 24 DIV "1=Div_Factor=2=Division Ratio=" "1=High_Cycles=1=Number of high clock cycles=" "1=I_Count=0=Initial count value=" "1=Rise_Delay=1e-10=Rise Delay (sec)=" "1=Fall_Delay=1e-10=Fall Delay (sec)=">
|
||||
</Symbol>
|
||||
</Component>
|
306
library/DualGateMOSFET.lib
Normal file
@ -0,0 +1,306 @@
|
||||
<Qucs Library 25.1.0 "DualGateMOSFET">
|
||||
|
||||
<Component BF980>
|
||||
<Description>
|
||||
BF980 dual gate MOSFET
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:DualGateMOSFET_BF980 _net0 _net1 _net2 _net3
|
||||
SpLib:X1 _net0 _net1 _net2 _net3 File="DualGateMos.cir" Device="BF980A" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT DualGateMOSFET_BF980 gnd _net0 _net1 _net2 _net3
|
||||
XX1 _net0 _net1 _net2 _net3 BF980A
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "DualGateMos.cir">
|
||||
<Symbol>
|
||||
<.ID 8 -26 T>
|
||||
<Line -10 -11 10 0 #000080 2 1>
|
||||
<Line 0 -11 0 -19 #000080 2 1>
|
||||
<Line -10 11 10 0 #000080 2 1>
|
||||
<Line 0 0 0 30 #000080 2 1>
|
||||
<Line -10 0 10 0 #000080 2 1>
|
||||
<Line -10 -4 0 8 #000080 3 1>
|
||||
<Line -10 7 0 9 #000080 3 1>
|
||||
<Line -9 0 5 -5 #000080 2 1>
|
||||
<Line -9 0 5 5 #000080 2 1>
|
||||
<Line -30 10 16 0 #000080 2 1>
|
||||
<Line -30 -10 16 0 #000080 2 1>
|
||||
<Line -10 -16 0 9 #000080 3 1>
|
||||
<Line -14 -15 0 5 #000080 3 1>
|
||||
<Line -14 5 0 5 #000080 3 1>
|
||||
<.PortSym 0 30 4 0 P4>
|
||||
<.PortSym 0 -30 1 0 P1>
|
||||
<.PortSym -30 10 3 0 P3>
|
||||
<.PortSym -30 -10 2 0 P2>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component BF981>
|
||||
<Description>
|
||||
BF981 dual gate MOSFET
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:DualGateMOSFET_BF981 _net1 _net2 _net3 _net0
|
||||
SpLib:X1 _net0 _net1 _net2 _net3 File="DualGateMos.cir" Device="BF981" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT DualGateMOSFET_BF981 gnd _net1 _net2 _net3 _net0
|
||||
XX1 _net0 _net1 _net2 _net3 BF981
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "DualGateMos.cir">
|
||||
<Symbol>
|
||||
<.ID 8 -26 T>
|
||||
<Line -10 -11 10 0 #000080 2 1>
|
||||
<Line 0 -11 0 -19 #000080 2 1>
|
||||
<Line -10 11 10 0 #000080 2 1>
|
||||
<Line 0 0 0 30 #000080 2 1>
|
||||
<Line -10 0 10 0 #000080 2 1>
|
||||
<Line -10 -4 0 8 #000080 3 1>
|
||||
<Line -10 7 0 9 #000080 3 1>
|
||||
<Line -9 0 5 -5 #000080 2 1>
|
||||
<Line -9 0 5 5 #000080 2 1>
|
||||
<Line -30 10 16 0 #000080 2 1>
|
||||
<Line -30 -10 16 0 #000080 2 1>
|
||||
<Line -10 -16 0 9 #000080 3 1>
|
||||
<Line -14 -15 0 5 #000080 3 1>
|
||||
<Line -14 5 0 5 #000080 3 1>
|
||||
<.PortSym 0 30 1 0 P1>
|
||||
<.PortSym 0 -30 2 0 P2>
|
||||
<.PortSym -30 -10 3 0 P3>
|
||||
<.PortSym -30 10 4 0 P4>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component BF992>
|
||||
<Description>
|
||||
BF992 dual gate MOSFET
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:DualGateMOSFET_BF992 _net0 _net1 _net3 _net2
|
||||
SpLib:X1 _net0 _net1 _net3 _net2 File="DualGateMos.cir" Device="BF992" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT DualGateMOSFET_BF992 gnd _net0 _net1 _net3 _net2
|
||||
XX1 _net0 _net1 _net3 _net2 BF992
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "DualGateMos.cir">
|
||||
<Symbol>
|
||||
<.ID 8 -26 T>
|
||||
<Line -10 -11 10 0 #000080 2 1>
|
||||
<Line 0 -11 0 -19 #000080 2 1>
|
||||
<Line -10 11 10 0 #000080 2 1>
|
||||
<Line 0 0 0 30 #000080 2 1>
|
||||
<Line -10 0 10 0 #000080 2 1>
|
||||
<Line -10 -4 0 8 #000080 3 1>
|
||||
<Line -10 7 0 9 #000080 3 1>
|
||||
<Line -9 0 5 -5 #000080 2 1>
|
||||
<Line -9 0 5 5 #000080 2 1>
|
||||
<Line -30 10 16 0 #000080 2 1>
|
||||
<Line -30 -10 16 0 #000080 2 1>
|
||||
<Line -10 -16 0 9 #000080 3 1>
|
||||
<Line -14 -15 0 5 #000080 3 1>
|
||||
<Line -14 5 0 5 #000080 3 1>
|
||||
<.PortSym 0 30 1 0 P1>
|
||||
<.PortSym 0 -30 2 0 P2>
|
||||
<.PortSym -30 -10 3 0 P3>
|
||||
<.PortSym -30 10 4 0 P4>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component BF993>
|
||||
<Description>
|
||||
BF993 dual gate MOSFET
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:DualGateMOSFET_BF993 _net0 _net1 _net2 _net3
|
||||
SpLib:X1 _net0 _net1 _net2 _net3 File="DualGateMos.cir" Device="BF993" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT DualGateMOSFET_BF993 gnd _net0 _net1 _net2 _net3
|
||||
XX1 _net0 _net1 _net2 _net3 BF993
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "DualGateMos.cir">
|
||||
<Symbol>
|
||||
<.ID 8 -26 T>
|
||||
<Line -10 -11 10 0 #000080 2 1>
|
||||
<Line 0 -11 0 -19 #000080 2 1>
|
||||
<Line -10 11 10 0 #000080 2 1>
|
||||
<Line 0 0 0 30 #000080 2 1>
|
||||
<Line -10 0 10 0 #000080 2 1>
|
||||
<Line -10 -4 0 8 #000080 3 1>
|
||||
<Line -10 7 0 9 #000080 3 1>
|
||||
<Line -9 0 5 -5 #000080 2 1>
|
||||
<Line -9 0 5 5 #000080 2 1>
|
||||
<Line -30 10 16 0 #000080 2 1>
|
||||
<Line -30 -10 16 0 #000080 2 1>
|
||||
<Line -10 -16 0 9 #000080 3 1>
|
||||
<Line -14 -15 0 5 #000080 3 1>
|
||||
<Line -14 5 0 5 #000080 3 1>
|
||||
<.PortSym 0 -30 1 0 P1>
|
||||
<.PortSym -30 -10 2 0 P2>
|
||||
<.PortSym -30 10 3 0 P3>
|
||||
<.PortSym 0 30 4 0 P4>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component BF994>
|
||||
<Description>
|
||||
BF994 dual gate MOSFET
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:DualGateMOSFET_BF994 _net0 _net1 _net3 _net2
|
||||
SpLib:X1 _net0 _net1 _net3 _net2 File="DualGateMos.cir" Device="BF994S" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT DualGateMOSFET_BF994 gnd _net0 _net1 _net3 _net2
|
||||
XX1 _net0 _net1 _net3 _net2 BF994S
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "DualGateMos.cir">
|
||||
<Symbol>
|
||||
<.ID 8 -26 T>
|
||||
<Line -10 -11 10 0 #000080 2 1>
|
||||
<Line 0 -11 0 -19 #000080 2 1>
|
||||
<Line -10 11 10 0 #000080 2 1>
|
||||
<Line 0 0 0 30 #000080 2 1>
|
||||
<Line -10 0 10 0 #000080 2 1>
|
||||
<Line -10 -4 0 8 #000080 3 1>
|
||||
<Line -10 7 0 9 #000080 3 1>
|
||||
<Line -9 0 5 -5 #000080 2 1>
|
||||
<Line -9 0 5 5 #000080 2 1>
|
||||
<Line -30 10 16 0 #000080 2 1>
|
||||
<Line -30 -10 16 0 #000080 2 1>
|
||||
<Line -10 -16 0 9 #000080 3 1>
|
||||
<Line -14 -15 0 5 #000080 3 1>
|
||||
<Line -14 5 0 5 #000080 3 1>
|
||||
<.PortSym 0 30 1 0 P1>
|
||||
<.PortSym 0 -30 2 0 P2>
|
||||
<.PortSym -30 -10 3 0 P3>
|
||||
<.PortSym -30 10 4 0 P4>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component BF998>
|
||||
<Description>
|
||||
BF998 dual gate MOSFET
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:DualGateMOSFET_BF998 _net0 _net1 _net3 _net2
|
||||
SpLib:X1 _net0 _net1 _net3 _net2 File="DualGateMos.cir" Device="BF998" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT DualGateMOSFET_BF998 gnd _net0 _net1 _net3 _net2
|
||||
XX1 _net0 _net1 _net3 _net2 BF998
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "DualGateMos.cir">
|
||||
<Symbol>
|
||||
<.ID 8 -26 T>
|
||||
<Line -10 -11 10 0 #000080 2 1>
|
||||
<Line 0 -11 0 -19 #000080 2 1>
|
||||
<Line -10 11 10 0 #000080 2 1>
|
||||
<Line 0 0 0 30 #000080 2 1>
|
||||
<Line -10 0 10 0 #000080 2 1>
|
||||
<Line -10 -4 0 8 #000080 3 1>
|
||||
<Line -10 7 0 9 #000080 3 1>
|
||||
<Line -9 0 5 -5 #000080 2 1>
|
||||
<Line -9 0 5 5 #000080 2 1>
|
||||
<Line -30 10 16 0 #000080 2 1>
|
||||
<Line -30 -10 16 0 #000080 2 1>
|
||||
<Line -10 -16 0 9 #000080 3 1>
|
||||
<Line -14 -15 0 5 #000080 3 1>
|
||||
<Line -14 5 0 5 #000080 3 1>
|
||||
<.PortSym 0 30 1 0 P1>
|
||||
<.PortSym 0 -30 2 0 P2>
|
||||
<.PortSym -30 -10 3 0 P3>
|
||||
<.PortSym -30 10 4 0 P4>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component BF998WR>
|
||||
<Description>
|
||||
BF998WR dual gate MOSFET
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:DualGateMOSFET_BF998WR _net0 _net1 _net3 _net2
|
||||
SpLib:X1 _net0 _net1 _net3 _net2 File="DualGateMos.cir" Device="BF998WR" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT DualGateMOSFET_BF998WR gnd _net0 _net1 _net3 _net2
|
||||
XX1 _net0 _net1 _net3 _net2 BF998WR
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "DualGateMos.cir">
|
||||
<Symbol>
|
||||
<.ID 8 -26 T>
|
||||
<Line -10 -11 10 0 #000080 2 1>
|
||||
<Line 0 -11 0 -19 #000080 2 1>
|
||||
<Line -10 11 10 0 #000080 2 1>
|
||||
<Line 0 0 0 30 #000080 2 1>
|
||||
<Line -10 0 10 0 #000080 2 1>
|
||||
<Line -10 -4 0 8 #000080 3 1>
|
||||
<Line -10 7 0 9 #000080 3 1>
|
||||
<Line -9 0 5 -5 #000080 2 1>
|
||||
<Line -9 0 5 5 #000080 2 1>
|
||||
<Line -30 10 16 0 #000080 2 1>
|
||||
<Line -30 -10 16 0 #000080 2 1>
|
||||
<Line -10 -16 0 9 #000080 3 1>
|
||||
<Line -14 -15 0 5 #000080 3 1>
|
||||
<Line -14 5 0 5 #000080 3 1>
|
||||
<.PortSym 0 30 1 0 P1>
|
||||
<.PortSym 0 -30 2 0 P2>
|
||||
<.PortSym -30 -10 3 0 P3>
|
||||
<.PortSym -30 10 4 0 P4>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component MN201>
|
||||
<Description>
|
||||
MN201 (3N201) dual gate MOSFET
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:DualGateMOSFET_MN201 _net0 _net2 _net1 _net3
|
||||
SpLib:X1 _net0 _net2 _net1 _net3 File="DualGateMos.cir" Device="MN201" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT DualGateMOSFET_MN201 gnd _net0 _net2 _net1 _net3
|
||||
XX1 _net0 _net2 _net1 _net3 MN201
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "DualGateMos.cir">
|
||||
<Symbol>
|
||||
<.ID 8 -26 T>
|
||||
<Line -10 -11 10 0 #000080 2 1>
|
||||
<Line 0 -11 0 -19 #000080 2 1>
|
||||
<Line -10 11 10 0 #000080 2 1>
|
||||
<Line 0 0 0 30 #000080 2 1>
|
||||
<Line -10 0 10 0 #000080 2 1>
|
||||
<Line -10 -4 0 8 #000080 3 1>
|
||||
<Line -10 7 0 9 #000080 3 1>
|
||||
<Line -9 0 5 -5 #000080 2 1>
|
||||
<Line -9 0 5 5 #000080 2 1>
|
||||
<Line -30 10 16 0 #000080 2 1>
|
||||
<Line -30 -10 16 0 #000080 2 1>
|
||||
<Line -10 -16 0 9 #000080 3 1>
|
||||
<Line -14 -15 0 5 #000080 3 1>
|
||||
<Line -14 5 0 5 #000080 3 1>
|
||||
<.PortSym 0 30 4 0 P4>
|
||||
<.PortSym 0 -30 1 0 P1>
|
||||
<.PortSym -30 10 3 0 P3>
|
||||
<.PortSym -30 -10 2 0 P2>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
242
library/DualGateMOSFET/DualGateMos.cir
Normal file
@ -0,0 +1,242 @@
|
||||
* BF992 SPICE MODEL JANUARY 1996 PHILIPS SEMICONDUCTORS
|
||||
* ENVELOPE SOT143
|
||||
* 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1;
|
||||
.SUBCKT BF992 1 2 3 4
|
||||
L10 1 10 0.12N
|
||||
L20 2 20 0.12N
|
||||
L30 3 30 0.12N
|
||||
L40 4 40 0.12N
|
||||
L11 10 11 1.20N
|
||||
L21 20 21 1.20N
|
||||
L31 30 31 1.20N
|
||||
L41 40 41 1.20N
|
||||
C13 10 30 0.085P
|
||||
C14 10 40 0.085P
|
||||
C21 10 20 0.017P
|
||||
C23 20 30 0.085P
|
||||
C24 20 40 0.005P
|
||||
D11 42 11 ZENER
|
||||
D12 42 41 ZENER
|
||||
D21 32 11 ZENER
|
||||
D22 32 31 ZENER
|
||||
RS 10 12 100
|
||||
MOS1 61 41 11 12 GATE1 L=2E-6 W=2200E-6
|
||||
MOS2 21 31 61 12 GATE2 L=3.0E-6 W=2200E-6
|
||||
|
||||
.MODEL ZENER D BV=10 CJO=1.2E-12 RS=10
|
||||
|
||||
.MODEL GATE1
|
||||
+ NMOS LEVEL=3 UO=904.9 VTO=-0.2051 NFS=300E9 TOX=60E-9
|
||||
+ NSUB=3E15 VMAX=140E3 RS=2.0 RD=2.0 XJ=500E-9 THETA=0.11
|
||||
+ ETA=0.2095 KAPPA=0.6488 LD=0.3E-6
|
||||
+ CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12
|
||||
|
||||
.MODEL GATE2
|
||||
+ NMOS LEVEL=3 UO=600 VTO=-0.2051 NFS=300E9 TOX=60E-9
|
||||
+ NSUB=3E15 VMAX=100E3 RS=2.0 RD=2.0 XJ=500E-9 THETA=0.11
|
||||
+ ETA=0.06 KAPPA=2 LD=0.3E-6
|
||||
+ CGSO=0.3E-9 CGDO=0.3E-9 CBD=1.467E-12 CBS=0.5E-12
|
||||
|
||||
.ENDS BF992
|
||||
|
||||
|
||||
|
||||
* BF998 SPICE MODEL OCTOBER 1993 PHILIPS SEMICONDUCTORS
|
||||
* ENVELOPE SOT143
|
||||
* 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1;
|
||||
.SUBCKT BF998 1 2 3 4
|
||||
L10 1 10 0.12N
|
||||
L20 2 20 0.12N
|
||||
L30 3 30 0.12N
|
||||
L40 4 40 0.12N
|
||||
L11 10 11 1.20N
|
||||
L21 20 21 1.20N
|
||||
L31 30 31 1.20N
|
||||
L41 40 41 1.20N
|
||||
C13 10 30 0.085P
|
||||
C14 10 40 0.085P
|
||||
C21 10 20 0.017P
|
||||
C23 20 30 0.085P
|
||||
C24 20 40 0.005P
|
||||
D11 42 11 ZENER
|
||||
D12 42 41 ZENER
|
||||
D21 32 11 ZENER
|
||||
D22 32 31 ZENER
|
||||
RS 10 12 100
|
||||
MOS1 61 41 11 12 GATE1 L=1.1E-6 W=1150E-6
|
||||
MOS2 21 31 61 12 GATE2 L=2.0E-6 W=1150E-6
|
||||
|
||||
.MODEL ZENER D BV=10 CJO=1.2E-12 RS=10
|
||||
|
||||
.MODEL GATE1
|
||||
+ NMOS LEVEL=3 UO=600 VTO=-0.250 NFS=300E9 TOX=42E-9
|
||||
+ NSUB=3E15 VMAX=140E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11
|
||||
+ ETA=0.06 KAPPA=2 LD=0.1E-6
|
||||
+ CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12
|
||||
|
||||
.MODEL GATE2
|
||||
+ NMOS LEVEL=3 UO=600 VTO=-0.250 NFS=300E9 TOX=42E-9
|
||||
+ NSUB=3E15 VMAX=100E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11
|
||||
+ ETA=0.06 KAPPA=2 LD=0.1E-6
|
||||
+ CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12
|
||||
|
||||
.ENDS BF998
|
||||
|
||||
|
||||
* BF998WR SPICE MODEL OCTOBER 1993 PHILIPS SEMICONDUCTORS
|
||||
* ENVELOPE SOT343R
|
||||
* 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1;
|
||||
.SUBCKT BF998WR 1 2 3 4
|
||||
L10 1 10 0.10N
|
||||
L20 2 20 0.34N
|
||||
L30 3 30 0.34N
|
||||
L40 4 40 0.34N
|
||||
L11 10 11 1.10N
|
||||
L21 20 21 1.10N
|
||||
L31 30 31 1.10N
|
||||
L41 40 41 1.10N
|
||||
C13 10 30 0.060P
|
||||
C14 10 40 0.060P
|
||||
C21 10 20 0.050P
|
||||
C23 20 30 0.070P
|
||||
C24 20 40 0.005P
|
||||
D11 42 11 ZENER
|
||||
D12 42 41 ZENER
|
||||
D21 32 11 ZENER
|
||||
D22 32 31 ZENER
|
||||
RS 10 12 100
|
||||
MOS1 61 41 11 12 GATE1 L=1.1E-6 W=1150E-6
|
||||
MOS2 21 31 61 12 GATE2 L=2.0E-6 W=1150E-6
|
||||
|
||||
.MODEL ZENER D BV=10 CJO=1.2E-12 RS=10
|
||||
|
||||
.MODEL GATE1
|
||||
+ NMOS LEVEL=3 UO=600 VTO=-0.250 NFS=300E9 TOX=42E-9
|
||||
+ NSUB=3E15 VMAX=140E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11
|
||||
+ ETA=0.06 KAPPA=2 LD=0.1E-6
|
||||
+ CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12
|
||||
|
||||
.MODEL GATE2
|
||||
+ NMOS LEVEL=3 UO=600 VTO=-0.250 NFS=300E9 TOX=42E-9
|
||||
+ NSUB=3E15 VMAX=100E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11
|
||||
+ ETA=0.06 KAPPA=2 LD=0.1E-6
|
||||
+ CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12
|
||||
|
||||
.ENDS BF998WR
|
||||
|
||||
|
||||
* BF994S SPICE MODEL MARCH 1996 PHILIPS SEMICONDUCTORS
|
||||
* ENVELOPE SOT143
|
||||
* 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1;
|
||||
.SUBCKT BF994S 1 2 3 4
|
||||
L10 1 10 0.12N
|
||||
L20 2 20 0.12N
|
||||
L30 3 30 0.12N
|
||||
L40 4 40 0.12N
|
||||
L11 10 11 1.20N
|
||||
L21 20 21 1.20N
|
||||
L31 30 31 1.20N
|
||||
L41 40 41 1.20N
|
||||
C13 10 30 0.085P
|
||||
C14 10 40 0.085P
|
||||
C21 10 20 0.017P
|
||||
C23 20 30 0.085P
|
||||
C24 20 40 0.005P
|
||||
D11 42 11 ZENER
|
||||
D12 42 41 ZENER
|
||||
D21 32 11 ZENER
|
||||
D22 32 31 ZENER
|
||||
RS 10 12 100
|
||||
MOS1 61 41 11 12 GATE1 L=2E-6 W=1280E-6
|
||||
MOS2 21 31 61 12 GATE2 L=3.0E-6 W=1280E-6
|
||||
|
||||
.MODEL ZENER D BV=10 CJO=1.2E-12 RS=10
|
||||
|
||||
.MODEL GATE1
|
||||
+ NMOS LEVEL=3 UO=750 VTO=-0.4357 NFS=300E9 TOX=60E-9
|
||||
+ NSUB=3E15 VMAX=140E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11
|
||||
+ ETA=0.1686 KAPPA=2.282 LD=0.3E-6
|
||||
+ CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12
|
||||
|
||||
.MODEL GATE2
|
||||
+ NMOS LEVEL=3 UO=600 VTO=-0.4357 NFS=300E9 TOX=60E-9
|
||||
+ NSUB=3E15 VMAX=100E3 RS=2.0 RD=2.0 XJ=200E-9 THETA=0.11
|
||||
+ ETA=0.06 KAPPA=2 LD=0.3E-6
|
||||
+ CGSO=0.3E-9 CGDO=0.3E-9 CBD=0.5E-12 CBS=0.5E-12
|
||||
|
||||
.ENDS BF994S
|
||||
|
||||
|
||||
|
||||
*.SUBCKT BF981 1 2 3 4
|
||||
*Drain Gate2 Gate1 Source
|
||||
|
||||
* Pin order changed in BF981 model
|
||||
* 1.: SOURCE; 2.: DRAIN; 3.: GATE 2; 4.: GATE 1;
|
||||
.SUBCKT BF981 4 1 2 3
|
||||
|
||||
*Dual Gate Mosfet
|
||||
MD1 5 3 4 4 BF981A
|
||||
MD2 1 2 5 4 BF981B W=50U
|
||||
.MODEL BF981A NMOS (LEVEL=1 VTO=-1.1 KP=15M GAMMA=3.3U
|
||||
+ PHI=.75 LAMBDA=3.75M RS=2.2 IS=12.5F PB=.8 MJ=.46
|
||||
+ CBD=3.43P CBS=4.11P CGSO=240P CGDO=200P CGBO=20.5N)
|
||||
.MODEL BF981B NMOS (LEVEL=1 VTO=-.9 KP=18M GAMMA=19.08U
|
||||
+ PHI=.75 LAMBDA=13.75M RD=41.3 IS=12.5F PB=.8 MJ=.46
|
||||
+ CBD=3.43P CBS=4.11P CGSO=240P CGDO=200P CGBO=14.5N)
|
||||
* Philips
|
||||
* N-Channel Depletion DG-MOSFET
|
||||
.ENDS BF981
|
||||
*
|
||||
**********
|
||||
* Copyright Intusoft 1991
|
||||
* All Rights Reserved
|
||||
**********
|
||||
*SYM=DGMOS
|
||||
.SUBCKT BF993 1 2 3 4
|
||||
*Connections Drain Gate2 Gate1 Source
|
||||
*Dual Gate Mosfet
|
||||
MD1 5 3 4 4 BF993G1
|
||||
MD2 1 2 5 4 BF993G2 W=65U
|
||||
.MODEL BF993G1 NMOS (LEVEL=1 VTO=-1.0 KP=23M GAMMA=7.4U
|
||||
+ PHI=.75 LAMBDA=13.75M RS=2.5 IS=31.2F PB=.8 MJ=.46
|
||||
+ CBD=9.66P CBS=11.5P CGSO=600P CGDO=500P CGBO=61.4N
|
||||
.MODEL BF993G2 NMOS (LEVEL=1 VTO=-.9 KP=25M GAMMA=30.4U
|
||||
+ PHI=.75 LAMBDA=23.75M RD=74.4 IS=31.2F PB=.8 MJ=.46
|
||||
+ CBD=9.66P CBS=11.5P CGSO=600P CGDO=500P CGBO=61.4N
|
||||
* Siemens
|
||||
* N-Channel Depletion DG-MOSFET
|
||||
.ENDS
|
||||
**********
|
||||
*SYM=DGMOS
|
||||
.SUBCKT BF980A 1 2 3 4
|
||||
*Connections Drain Gate2 Gate1 Source
|
||||
*Dual Gate Mosfet
|
||||
MD1 5 3 4 4 BF980AA
|
||||
MD2 1 2 5 4 BF980AB W=50U
|
||||
.MODEL BF980AA NMOS (LEVEL=1 VTO=-1.0 KP=17M GAMMA=4.34U
|
||||
+ PHI=.75 LAMBDA=4.16M RS=3.2 IS=20.8F PB=.8 MJ=.46
|
||||
+ CBD=2.89P CBS=3.47P CGSO=300P CGDO=250P CGBO=25.4N)
|
||||
.MODEL BF980AB NMOS (LEVEL=1 VTO=-.9 KP=20M GAMMA=17.47U
|
||||
+ PHI=.75 LAMBDA=14.16M RD=30 IS=20.8F PB=.8 MJ=.46
|
||||
+ CBD=2.89P CBS=3.47P CGSO=300P CGDO=250P CGBO=25.4N)
|
||||
* Philips
|
||||
* N-Channel Depletion DG-MOSFET
|
||||
.ENDS
|
||||
**********
|
||||
*SYM=DGMOS
|
||||
.SUBCKT MN201 1 2 3 4
|
||||
*Connections Drain Gate2 Gate1 Source
|
||||
*Dual Gate Mosfet
|
||||
MD1 5 3 4 4 MN201-1
|
||||
MD2 1 2 5 4 MN201-2 W=35U
|
||||
.MODEL MN201-1 NMOS (LEVEL=1 VTO=-1.45 KP=11.8M GAMMA=3.26U
|
||||
+ PHI=.75 LAMBDA=30M RD=1M RS=20.8 IS=25F PB=.8 MJ=.46
|
||||
+ CBD=6.64P CBS=7.97P CGSO=168P CGDO=140P CGBO=32.6N)
|
||||
.MODEL MN201-2 NMOS (LEVEL=1 VTO=-1.00 KP=12.5M GAMMA=27.26U
|
||||
+ PHI=.75 LAMBDA=37M RD=15.3 RS=1M IS=30F PB=.8 MJ=.46
|
||||
+ CBD=6.64P CBS=7.97P CGSO=168P CGDO=140P CGBO=32.6N)
|
||||
* Motorola
|
||||
* N-Channel Depletion DG-MOSFET
|
||||
.ENDS
|
||||
*************
|
264
library/LaserDiodes.lib
Normal file
@ -0,0 +1,264 @@
|
||||
<Qucs Library 24.3.0 "LaserDiodes">
|
||||
|
||||
<Component LaserDiodeRed>
|
||||
<Description>
|
||||
Generic 650nm 100mw Laser Diode
|
||||
LD=150ma, PD=15piv
|
||||
by Alexander Bordodynov
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:LaserDiodes_LaserDiodeRed _net0 _net2 _net1 _net3
|
||||
Sub:X1 _net0 _net2 _net1 _net3 gnd Type="LaserDiodeRed_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "LaserDiodeRed.cir.lst">
|
||||
<Spice>
|
||||
* Alexander Bordodynov
|
||||
* 650nm 100mw Laser Diode
|
||||
.Subckt Laser com lk pha pw Pnom=100m inom=150m ith=35m iphnom=0.1m Pth=1m cLd=10p cph=40p rsLd=1 nLd=2 isLD=1e-17 tauLD=1n tauFd=5n
|
||||
.param k=(Pnom-Pth*inom/ith)/(inom-ith)
|
||||
.param kf=iphnom/Pnom
|
||||
.param ctau=0.001*tauFd
|
||||
cLd com lk {cLD}
|
||||
cph com pha {cph}
|
||||
D1 5 lk0 dLd
|
||||
D10 com lk0 dLd2
|
||||
rs lk0 lk {rsLd}
|
||||
VAm1 com 5 0
|
||||
rut lk com 10Meg
|
||||
v1 ith 0 {ith}
|
||||
*v3 kf 0 {iphnom/Pnom}
|
||||
Hled pwled 0 vam1 {2*Pth/ith}
|
||||
B1 pw pwled v=uramp(2*i(vam1)-v(ith))*{k}
|
||||
CtauFd pwtau 0 {ctau}
|
||||
Rtau pwtau pw 1k
|
||||
B2 com pha i=v(pwtau)*{kf}
|
||||
.model dLd D is={isLd/2} n={nLd} eg={nLd*1.11}
|
||||
.model dLd2 D is={isLd/2} n={nLd} eg={nLd*1.11} tt={tauLD*2}
|
||||
.ends Laser
|
||||
*
|
||||
.SUBCKT LaserDiodes_LaserDiodeRed gnd _net0 _net2 _net1 _net3
|
||||
X1 _net0 _net2 _net1 _net3 Laser
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line -40 -20 0 40 #000080 2 1>
|
||||
<Line -40 20 80 0 #000080 2 1>
|
||||
<Line 20 30 0 -20 #000080 2 1>
|
||||
<Line 40 -20 0 40 #000080 2 1>
|
||||
<Line 40 0 10 0 #000080 2 1>
|
||||
<Line -40 -20 80 0 #000080 2 1>
|
||||
<Line 11 11 18 0 #000080 2 1>
|
||||
<Line 11 -1 18 0 #000080 2 1>
|
||||
<Line 20 11 -9 -12 #000080 2 1>
|
||||
<Line 20 11 9 -12 #000080 2 1>
|
||||
<Line -11 -1 -18 0 #000080 2 1>
|
||||
<Line -11 11 -18 0 #000080 2 1>
|
||||
<Line -20 -1 9 12 #000080 2 1>
|
||||
<Line -20 -1 -9 12 #000080 2 1>
|
||||
<Line 15 4 10 0 #000080 2 1>
|
||||
<Line 20 -10 0 9 #000080 2 1>
|
||||
<Line -20 -10 0 9 #000080 2 1>
|
||||
<Ellipse -3 -13 6 6 #000080 1 1 #000080 1 1>
|
||||
<Line -20 -10 40 0 #000080 2 1>
|
||||
<Line -20 11 0 19 #000080 2 1>
|
||||
<Line 0 -30 0 20 #000080 2 1>
|
||||
<Text -36 -18 8 #000000 0 "PD">
|
||||
<Text 24 -18 8 #000000 0 "LD">
|
||||
<Line 36 5 -8 0 #000080 2 1>
|
||||
<Line 8 5 -15 0 #000080 2 1>
|
||||
<.PortSym 0 -30 1 0 COM>
|
||||
<.PortSym -20 30 3 0 PHA>
|
||||
<.PortSym 20 30 2 180 LK>
|
||||
<.PortSym 50 0 4 180 PW>
|
||||
<.ID 20 -46 LD>
|
||||
<Line 34 2 3 3 #000080 2 1>
|
||||
<Line 34 8 3 -3 #000080 2 1>
|
||||
<Line -5 8 -3 -3 #000080 2 1>
|
||||
<Line -5 2 -3 3 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component SLD1121VS>
|
||||
<Description>
|
||||
Sony SLD1121VS
|
||||
670nm 5mw Laser Diode
|
||||
PIN Diode Power Monitor
|
||||
LD=50ma, PD=15piv
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:LaserDiodes_SLD1121VS _net0 _net2 _net1
|
||||
Sub:X1 _net0 _net2 _net1 gnd Type="SLD1121VS_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "SLD1121VS.cir.lst">
|
||||
<Spice>
|
||||
* SLD1121VS from Sony EDN, RAP 7/97
|
||||
* LD = Laser diode cathode
|
||||
* C = Common pin
|
||||
* PD = Photodiode anode
|
||||
.SUBCKT SLD1121 LD C PD
|
||||
Dld C I dlaser
|
||||
Vid I LD
|
||||
Eop op 0 TABLE {I(Vid)} (0,0) (37m,0.3m) (40m,0.5m) (47m,5m) (100m,40m)
|
||||
Rdummy op 0 1k
|
||||
Gopd C PD TABLE {V(op)} (0,0) (30m,1.5m) (60m,3.0m)
|
||||
Dpd PD C pdetec
|
||||
.model dlaser D IS=5E-37 N=1 RS=2 BV=2 IBV=10u
|
||||
*EG=2.8 XTI=3
|
||||
.model pdetec D CJO=5p BV=15 IBV=10u
|
||||
.ends SLD1121
|
||||
*
|
||||
|
||||
.SUBCKT LaserDiodes_SLD1121VS gnd _net0 _net2 _net1
|
||||
X1 _net0 _net2 _net1 SLD1121
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line -40 -20 0 40 #000080 2 1>
|
||||
<Line -40 20 80 0 #000080 2 1>
|
||||
<Line 20 30 0 -20 #000080 2 1>
|
||||
<Line 40 -20 0 40 #000080 2 1>
|
||||
<Line -40 -20 80 0 #000080 2 1>
|
||||
<Line 11 11 18 0 #000080 2 1>
|
||||
<Line 11 -1 18 0 #000080 2 1>
|
||||
<Line 20 11 -9 -12 #000080 2 1>
|
||||
<Line 20 11 9 -12 #000080 2 1>
|
||||
<Line -11 -1 -18 0 #000080 2 1>
|
||||
<Line -11 11 -18 0 #000080 2 1>
|
||||
<Line -20 -1 9 12 #000080 2 1>
|
||||
<Line -20 -1 -9 12 #000080 2 1>
|
||||
<Line 15 4 10 0 #000080 2 1>
|
||||
<Line 20 -10 0 9 #000080 2 1>
|
||||
<Line -20 -10 0 9 #000080 2 1>
|
||||
<Ellipse -3 -13 6 6 #000080 1 1 #000080 1 1>
|
||||
<Line -20 -10 40 0 #000080 2 1>
|
||||
<Line -20 11 0 19 #000080 2 1>
|
||||
<Line 0 -30 0 20 #000080 2 1>
|
||||
<Text -36 -18 8 #000000 0 "PD">
|
||||
<Text 24 -18 8 #000000 0 "LD">
|
||||
<Line 36 5 -8 0 #000080 2 1>
|
||||
<Line 8 5 -15 0 #000080 2 1>
|
||||
<.PortSym -20 30 3 0 PD>
|
||||
<.ID 20 -46 LD>
|
||||
<Line 34 2 3 3 #000080 2 1>
|
||||
<Line 34 8 3 -3 #000080 2 1>
|
||||
<Line -5 8 -3 -3 #000080 2 1>
|
||||
<Line -5 2 -3 3 #000080 2 1>
|
||||
<.PortSym 0 -30 2 0 C>
|
||||
<.PortSym 20 30 1 180 LD>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component RLD90QZW3>
|
||||
<Description>
|
||||
Rolm RLD90QZW3
|
||||
905nm 90W Pulsed Laser Diode
|
||||
LD=28A, Duty Cycle=0.1%
|
||||
Requirements:
|
||||
.spiceinit: set ngbehavior=psa
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:LaserDiodes_RLD90QZW3 _net0 _net1 _net2 _net3
|
||||
Sub:X1 _net0 _net1 _net2 _net3 gnd Type="RLD90QZW3_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "RLD90QZW3.cir.lst">
|
||||
<Spice>
|
||||
* RLD90QZW3
|
||||
* Optical Power model
|
||||
* LD
|
||||
* 4V 50A
|
||||
* Model Generated by ROHM
|
||||
* All Rights Reserved
|
||||
* Commercial Use or Resale Restricted
|
||||
* Date: 2020/06/10
|
||||
* model version: 1
|
||||
**********************A C
|
||||
.SUBCKT RLD90QZW3_sub 1 2 OPT GND
|
||||
.PARAM T0=25
|
||||
*
|
||||
.PARAM s_rate= 1
|
||||
*
|
||||
.PARAM K1_fw= 794.3u
|
||||
.PARAM M1_fw= -5.817k
|
||||
.PARAM N1_fw= -498.5
|
||||
.PARAM k2_fw= 790m
|
||||
.PARAM M2_fw= -9.271k
|
||||
.PARAM k3_fw= 230m
|
||||
.PARAM M3_fw= 448.3
|
||||
.PARAM N3_fw= -89.69
|
||||
*
|
||||
.PARAM k1_rv= 1.259u
|
||||
.PARAM K2_rv= 500
|
||||
.PARAM M1_rv= 16.67
|
||||
.PARAM k3_rv= 115.3n
|
||||
.PARAM M3_rv= -1k
|
||||
.PARAM N3_rv= 314.6
|
||||
.PARAM K4_rv= 55.56
|
||||
.PARAM M4_rv= -5.405k
|
||||
*
|
||||
.PARAM k1_cr= 10.43
|
||||
.PARAM k2_cr= 3.956
|
||||
.PARAM k3_cr= 40.13
|
||||
.PARAM k4_cr= 7.911
|
||||
.PARAM k5_cr= -653.7m
|
||||
.PARAM k6_cr= -5k
|
||||
*
|
||||
.PARAM v1_lm_n= 300k
|
||||
.PARAM v1_lm_p= 400k
|
||||
.PARAM v42_lm_n= 6k
|
||||
.PARAM v42_lm_p= 10000
|
||||
*
|
||||
.FUNC R1(I) {k3_fw*I*EXP((TEMP-T0)/M3_fw*EXP((TEMP-T0)/N3_fw))}
|
||||
.FUNC I1(V) {MIN(MAX(IF(TIME>0,IF(V>0,{K1_fw*(EXP(V/k2_fw/EXP((TEMP-T0)/M2_fw))-1)*
|
||||
+ EXP((TEMP-T0)/M1_fw*EXP((TEMP-T0)/N1_fw))},0),0),-1MEG),1MEG)}
|
||||
.FUNC I2(V) {(EXP(V/K2_rv)-1)*k1_rv*EXP((TEMP-T0)/M1_rv)}
|
||||
.FUNC I3(V) {(EXP(-V/(K4_rv *EXP((TEMP-T0)/M4_rv)))-1)*
|
||||
+ k3_rv*EXP((TEMP-T0)/M3_rv *EXP((TEMP-T0)/N3_rv))}
|
||||
.FUNC C1(V,W) {k1_cr*(V-k2_cr)+k3_cr*(1-(-k6_cr)*TANH(W/(-k6_cr))/k4_cr)**k5_cr}
|
||||
V1 1 3 0
|
||||
E1 3 4 VALUE={R1(MIN(MAX(I(V1)/s_rate,-v1_lm_n),v1_lm_p))}
|
||||
V2 4 5 0
|
||||
C1 5 2 {1p * s_rate}
|
||||
G1 4 2 VALUE={s_rate*(I1(MIN(V(4,2),v42_lm_p))+
|
||||
+ I2(MIN(V(4,2),v42_lm_p))-I3(MAX(V(4,2),-v42_lm_n)))+
|
||||
+ I(V2)*C1(MAX(V(4,2),k2_cr),MIN(V(4,2),k2_cr))}
|
||||
R1 4 2 10T
|
||||
********* ********* ********* ********* ********* ********* ********* ********* ********* ********* *********
|
||||
E11 OPT GND VALUE={MIN(MAX(IF(TIME>0,IF(I(V1)>0.95,(-4.00458853433877E-05)*I(V1)*I(V1)*I(V1)+(-0.00857231667301519)*I(V1)*I(V1)+(3.42809879019094)*I(V1)+(-3.21312517416111),0),0),-1MEG),1MEG)}
|
||||
*
|
||||
.ENDS RLD90QZW3_sub
|
||||
|
||||
|
||||
.SUBCKT LaserDiodes_RLD90QZW3 gnd _net0 _net1 _net2 _net3
|
||||
X1 _net0 _net1 _net2 _net3 RLD90QZW3_sub
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line -30 20 60 0 #000080 2 1>
|
||||
<Line 0 -6 0 -24 #000080 2 1>
|
||||
<Line 0 30 0 -24 #000080 2 1>
|
||||
<Line -9 6 18 0 #000080 2 1>
|
||||
<Line -9 -6 18 0 #000080 2 1>
|
||||
<Line 0 6 -9 -12 #000080 2 1>
|
||||
<Line 0 6 9 -12 #000080 2 1>
|
||||
<Line -5 -1 10 0 #000080 2 1>
|
||||
<Line 16 0 -8 0 #000080 2 1>
|
||||
<Line 14 -3 3 3 #000080 2 1>
|
||||
<Line 14 3 3 -3 #000080 2 1>
|
||||
<Line 30 -20 0 40 #000080 2 1>
|
||||
<Line 30 -10 10 0 #000080 2 1>
|
||||
<Line 30 10 10 0 #000080 2 1>
|
||||
<Line -30 -20 0 40 #000080 2 1>
|
||||
<Line -30 -20 60 0 #000080 2 1>
|
||||
<Text -26 -18 8 #000000 0 "LD">
|
||||
<Text 14 -18 8 #000000 0 "PO">
|
||||
<Text 14 2 8 #000000 0 "GD">
|
||||
<.PortSym 40 10 4 180 GND>
|
||||
<.PortSym 40 -10 3 180 OPT>
|
||||
<.PortSym 0 -30 1 0 A>
|
||||
<.PortSym 0 30 2 0 C>
|
||||
<.ID 20 -46 LD>
|
||||
</Symbol>
|
||||
</Component>
|
51
library/Neon.lib
Normal file
@ -0,0 +1,51 @@
|
||||
<Qucs Library 24.3.0 "Neon">
|
||||
|
||||
<Component Neon>
|
||||
<Description>
|
||||
65V Neon Lamp Spice Model
|
||||
Author: Zabb Csaba
|
||||
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Neon_Neon _net0 _net1
|
||||
Sub:X1 _net0 _net1 gnd Type="Neon_sp"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "Neon.sp.lst">
|
||||
<Spice>
|
||||
.SUBCKT NB1 10 20
|
||||
D1 10 1 D1
|
||||
D2 20 1 D1
|
||||
D3 2 10 D1
|
||||
D4 2 20 D1
|
||||
D5 1 4 D2
|
||||
V1 4 5 0
|
||||
H1 6 0 V1 4.8E4
|
||||
R1 0 6 1E6
|
||||
B1 5 7 I=3.7E-4*V(5,7)+5.75E-3*V(5,7)*V(6)
|
||||
C1 5 7 1.3E-11
|
||||
R2 7 2 2.13E3
|
||||
R3 3 5 3.5E3
|
||||
R4 3 8 1.85E3
|
||||
V2 8 2 1.442E2
|
||||
.MODEL D1 D(IS=8E-16)
|
||||
.MODEL D2 D(IS=2.1E-13 N=1.8)
|
||||
.ENDS NB1
|
||||
|
||||
|
||||
.SUBCKT Neon_Neon gnd _net0 _net1
|
||||
X1 _net0 _net1 NB1
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line -40 0 30 0 #000080 2 1>
|
||||
<Line 10 0 30 0 #000080 2 1>
|
||||
<Line -10 -20 0 40 #000080 2 1>
|
||||
<Line 10 -20 0 40 #000080 2 1>
|
||||
<Ellipse -30 -30 60 60 #ffaa00 2 1 #c0c0c0 12 1>
|
||||
<.PortSym -40 0 1 0 P1>
|
||||
<.PortSym 40 0 2 180 P2>
|
||||
<.ID -20 44 NB>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
@ -516,3 +516,108 @@ X1 _net0 _net3 _net1 _net2 moc3082_sub
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component MOC3052>
|
||||
<Description>
|
||||
600V triac optocoupler; no zero-cross. LTspice mode is required for this model. Designed by Zabb Csaba: https://fotoelektronika.com/spice-models/
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Optocoupler_MOC3052 _net0 _net3 _net1 _net2
|
||||
SpLib:X1 _net0 _net3 _net1 _net2 File="moc3052_3062.cir" Device="MOC3052" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT Optocoupler_MOC3052 gnd _net0 _net3 _net1 _net2
|
||||
XX1 _net0 _net3 _net1 _net2 MOC3052
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "moc3052_3062.cir">
|
||||
<Symbol>
|
||||
<.ID -40 -96 X>
|
||||
<.PortSym -60 -30 1 0 P1>
|
||||
<.PortSym -60 30 2 0 P2>
|
||||
<.PortSym 80 -30 3 180 P3>
|
||||
<.PortSym 80 30 4 180 P4>
|
||||
<Line -30 -30 -30 0 #000080 2 1>
|
||||
<Line -60 30 30 0 #000080 2 1>
|
||||
<Line -40 -10 20 0 #000080 2 1>
|
||||
<Line -40 -10 10 20 #000080 2 1>
|
||||
<Line -40 10 20 0 #000080 2 1>
|
||||
<Line -30 30 0 -20 #000080 2 1>
|
||||
<Line -30 -30 0 20 #000080 2 1>
|
||||
<Line -30 10 10 -20 #000080 2 1>
|
||||
<Rectangle -50 -50 120 100 #000080 2 1 #c0c0c0 1 0>
|
||||
<Line 40 6 0 24 #000080 2 1>
|
||||
<Line 40 -30 0 24 #000080 2 1>
|
||||
<Line 58 6 -36 0 #000080 2 1>
|
||||
<Line 31 6 -9 -12 #000080 2 1>
|
||||
<Line 31 6 9 -12 #000080 2 1>
|
||||
<Line 49 -6 9 12 #000080 2 1>
|
||||
<Line 49 -6 -9 12 #000080 2 1>
|
||||
<Line 58 -6 -36 0 #000080 2 1>
|
||||
<Line 80 30 -40 0 #000080 2 1>
|
||||
<Line 80 -30 -40 0 #000080 2 1>
|
||||
<Line 0 2 4 -4 #000080 2 1>
|
||||
<Line -6 -4 6 6 #000080 2 1>
|
||||
<Arrow 4 -2 10 10 9 3 #000080 2 1 1>
|
||||
<Arrow 2 8 10 10 9 3 #000080 2 1 1>
|
||||
<Line -2 12 4 -4 #000080 2 1>
|
||||
<Line -8 6 6 6 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component MOC3063>
|
||||
<Description>
|
||||
600V triac optocoupler with zero-cross detector. LTspice mode is required for this model. Designed by Zabb Csaba: https://fotoelektronika.com/spice-models/
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Optocoupler_MOC3063 _net0 _net3 _net1 _net2
|
||||
SpLib:X1 _net0 _net3 _net1 _net2 File="moc3052_3062.cir" Device="MOC3063" SymPattern="auto" Params="" PinAssign=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT Optocoupler_MOC3063 gnd _net0 _net3 _net1 _net2
|
||||
XX1 _net0 _net3 _net1 _net2 MOC3063
|
||||
.ENDS
|
||||
</Spice>
|
||||
<SpiceAttach "moc3052_3062.cir">
|
||||
<Symbol>
|
||||
<.ID -40 -96 X>
|
||||
<.PortSym -60 -30 1 0 P1>
|
||||
<.PortSym -60 30 2 0 P2>
|
||||
<.PortSym 80 -30 3 180 P3>
|
||||
<.PortSym 80 30 4 180 P4>
|
||||
<Line -30 -30 -30 0 #000080 2 1>
|
||||
<Line -60 30 30 0 #000080 2 1>
|
||||
<Line -40 -10 20 0 #000080 2 1>
|
||||
<Line -40 -10 10 20 #000080 2 1>
|
||||
<Line -40 10 20 0 #000080 2 1>
|
||||
<Line -30 30 0 -20 #000080 2 1>
|
||||
<Line -30 -30 0 20 #000080 2 1>
|
||||
<Line -30 10 10 -20 #000080 2 1>
|
||||
<Rectangle -50 -50 120 100 #000080 2 1 #c0c0c0 1 0>
|
||||
<Line 40 6 0 24 #000080 2 1>
|
||||
<Line 40 -30 0 24 #000080 2 1>
|
||||
<Line 58 6 -36 0 #000080 2 1>
|
||||
<Line 22 10 5 0 #000080 2 3>
|
||||
<Line 27 10 4 -4 #000080 2 3>
|
||||
<Line 31 6 -9 -12 #000080 2 1>
|
||||
<Line 31 6 9 -12 #000080 2 1>
|
||||
<Line 49 -6 9 12 #000080 2 1>
|
||||
<Line 49 -6 -9 12 #000080 2 1>
|
||||
<Line 58 -6 -36 0 #000080 2 1>
|
||||
<Line -10 2 4 -4 #000080 2 1>
|
||||
<Line -16 -4 6 6 #000080 2 1>
|
||||
<Arrow -6 -2 10 10 9 3 #000080 2 1 1>
|
||||
<Arrow -8 8 10 10 9 3 #000080 2 1 1>
|
||||
<Line -12 12 4 -4 #000080 2 1>
|
||||
<Line -18 6 6 6 #000080 2 1>
|
||||
<Rectangle 6 14 24 20 #000080 2 1 #c0c0c0 1 0>
|
||||
<Line 22 14 0 -4 #000080 2 3>
|
||||
<Text 8 18 8 #000080 0 "ZCC">
|
||||
<Line 14 14 0 -28 #000080 2 3>
|
||||
<Line 14 -14 26 0 #000080 2 3>
|
||||
<Line 30 24 10 0 #000080 2 3>
|
||||
<Line 80 30 -40 0 #000080 2 1>
|
||||
<Line 80 -30 -40 0 #000080 2 1>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
144
library/Optocoupler/moc3052_3062.cir
Normal file
@ -0,0 +1,144 @@
|
||||
* MOC3063 Zero-Cross Optoisolators Triac Driver Output Spice Model
|
||||
* Date : 08/09/2024
|
||||
* Author: Zabb Csaba
|
||||
* IRED emitting diodes optically coupled to monolithic silicon detectors
|
||||
* performing the functions of Zero Voltage Crossing bilateral triac drivers.
|
||||
* VINH=Inhibit Voltage (MT1–MT2 Voltage above which device will not trigger.)
|
||||
*
|
||||
.SUBCKT MOC3063 1 2 6 4
|
||||
* A K MT2 MT1
|
||||
DL 1 3 IRLED
|
||||
V1 3 2 0
|
||||
H1 17 0 V1 1
|
||||
E1 DEL 0 TABLE {V(17)}
|
||||
+ (5m, 50)
|
||||
+ (10m, 30)
|
||||
+ (15m, 19)
|
||||
+ (20m, 14)
|
||||
+ (25m, 11)
|
||||
+ (30m, 10)
|
||||
+ (35m, 9.0)
|
||||
+ (40m, 8.0)
|
||||
+ (45m, 7.0)
|
||||
+ (50m, 6.5)
|
||||
+ (55m, 6.1)
|
||||
E2 11 0 VALUE {IF(V(17)>5m,1,0)}
|
||||
X1 11 10 DEL 0 VCRES
|
||||
C1 10 0 1n
|
||||
E3 12 4 VALUE {IF(V(10)>0.63,1,0)}
|
||||
S1 6 13 11 0 SW1
|
||||
R1 13 8 3MEG
|
||||
C2 8 4 10p
|
||||
D1 8 7 DX
|
||||
D2 4 7 DX
|
||||
E4 9 4 VALUE {IF(ABS(V(8,4))<12,1,0)}
|
||||
B1 G 4 I=V(12,4)*V(9,4)*10m
|
||||
C3 2 4 800f
|
||||
R2 2 4 10G
|
||||
X2 6 4 G TRIAC Ih=0.25m
|
||||
.MODEL DX D(BV=50 IBV=10u)
|
||||
.MODEL SW1 VSWITCH (ROFF=1G RON=1 VOFF=0 VON=1)
|
||||
.MODEL IRLED D (IS=8E-17 N=1.5 RS=2 IKF=7.5E-2 IBV=1.5E-08 NBV=7E1 BV=1.6E1 CJO=4E-11 TT=1E-08 EG=1.46)
|
||||
.ENDS MOC3063
|
||||
|
||||
* Author: Zabb Csaba
|
||||
* IRED emitting diode optically coupled to a non-zero-crossing silicon bilateral AC switch (triac).
|
||||
*
|
||||
.SUBCKT MOC3052 1 2 6 4
|
||||
* A K MT2 MT1
|
||||
DL 1 5 IRLED
|
||||
V1 5 2 0
|
||||
H1 7 0 V1 1
|
||||
E1 DEL 0 TABLE {V(7)}
|
||||
+ (10m, 30)
|
||||
+ (15m, 19)
|
||||
+ (20m, 14)
|
||||
+ (25m, 11)
|
||||
+ (30m, 10)
|
||||
+ (35m, 9.0)
|
||||
+ (40m, 8.0)
|
||||
+ (45m, 7.0)
|
||||
+ (50m, 6.5)
|
||||
+ (55m, 6.1)
|
||||
E2 11 0 VALUE {IF(V(7)>10m,1,0)}
|
||||
X1 11 9 DEL 0 VCRES
|
||||
C1 9 0 1n
|
||||
E3 8 4 VALUE {IF(V(9)>0.63,1,0)}
|
||||
G1 G 4 8 4 10m
|
||||
C2 2 4 800f
|
||||
R1 2 4 10G
|
||||
X2 6 4 G TRIAC Ih=0.28m
|
||||
.MODEL IRLED D (IS=8E-17 N=1.5 RS=2 IKF=7.5E-2 IBV=1.5E-08 NBV=7E1 BV=1.6E1 CJO=4E-11 TT=1E-08 EG=1.46)
|
||||
.ENDS MOC3052
|
||||
|
||||
*
|
||||
.SUBCKT VCRES 1 2 4 5
|
||||
+PARAMS: R1=1k
|
||||
ERES 1 3 VALUE={IF(V(4,5)>0,I(VSENSE)*{R1}*V(4,5),-I(VSENSE)*{R1}*V(4,5))}
|
||||
VSENSE 3 2 0
|
||||
.ENDS VCRES
|
||||
*
|
||||
.SUBCKT TRIAC MT2 MT1 G params:
|
||||
+ Vdrm=600
|
||||
+ Igt=5m
|
||||
+ Ih=0.28m
|
||||
+ Rt=3.3
|
||||
+ Standard=1
|
||||
S1 MT2 2 3 0 SW1
|
||||
D1 2 4 DAK
|
||||
R1 2 4 1k
|
||||
V1 4 MT1 0
|
||||
S2 MT2 5 6 0 SW1
|
||||
D2 7 5 DAK
|
||||
R2 5 7 1k
|
||||
V2 MT1 7 0
|
||||
R3 G MT1 1G
|
||||
D3 8 G DGK
|
||||
D4 G 8 DGK
|
||||
V3 8 MT1 0
|
||||
R4 G 8 1k
|
||||
R5 9 3 2.2
|
||||
C1 0 3 5u
|
||||
E1 9 0 VALUE {IF(((V(10)>0.5)|(V(13)>0.5)|(V(12)>0.5)),400,0)}
|
||||
R6 14 6 2.2
|
||||
C2 0 6 5u
|
||||
E2 14 0 VALUE {IF(((V(10)>0.5)|(V(11)>0.5)|(V(12)>0.5)),400,0)}
|
||||
E3 15 0 VALUE {IF((ABS(I(V3)))>(Igt-1u),1,0)}
|
||||
E4 16 0 VALUE {V(17)*V(15)}
|
||||
E5 17 0 VALUE {IF(((I(V3)>(Igt-1u))&((V(MT2)-V(MT1))<0)&(Standard==0)),0,1)}
|
||||
X1 16 10 BUFDELAY
|
||||
E6 18 0 VALUE {IF(((I(V1))>(Ih/2)),1,0)}
|
||||
E7 19 0 VALUE {IF(((I(V1))>(Ih/3)),1,0)}
|
||||
E8 20 0 VALUE {IF((V(18)*V(19)+V(19)*(1-V(18))*(V(21)))>0.5,1,0)}
|
||||
C3 21 0 1n
|
||||
R7 20 21 1k
|
||||
R8 21 0 100MEG
|
||||
X2 21 13 BUFDELAY
|
||||
E9 22 0 VALUE {IF(((I(V2))>(Ih/2)),1,0)}
|
||||
E10 23 0 VALUE {IF(((I(V2))>(Ih/3)),1,0)}
|
||||
E11 24 0 VALUE {IF((V(22)*V(23)+V(23)*(1-V(22))*(V(25)))>0.5,1,0)}
|
||||
C4 25 0 1n
|
||||
R9 24 25 1k
|
||||
R10 25 0 100MEG
|
||||
X3 25 11 BUFDELAY
|
||||
E12 26 0 VALUE {IF((ABS(V(MT2)-V(MT1))>(Vdrm*1.3)),1,0)}
|
||||
E13 27 0 VALUE {IF((I(V1)>(Vdrm*1.3)/5MEG)|(I(V2)>(Vdrm*1.3)/5MEG),1,0)}
|
||||
E14 28 0 VALUE {IF((V(26)+(1-V(26))*V(27)*V(29) )>0.5,1,0)}
|
||||
C5 29 0 1n
|
||||
R11 28 29 100
|
||||
R12 29 0 100MEG
|
||||
X4 29 12 BUFDELAY
|
||||
.MODEL SW1 VSWITCH (ROFF=1G RON={Rt} VOFF=0 VON=1)
|
||||
.MODEL DAK D(IS=3E-12 N=1.66 CJO=5p)
|
||||
.MODEL DGK D(IS=1E-16 CJO=50p Rs=5)
|
||||
.ENDS TRIAC
|
||||
*
|
||||
.SUBCKT BUFDELAY A Y PARAMS:DELAY=1u
|
||||
E1 Y1 0 VALUE {IF(V(A)>0.5,1,0)}
|
||||
R1 Y1 Y2 1
|
||||
C1 Y2 0 {DELAY*1.44}
|
||||
E2 Y3 0 VALUE {IF(V(Y2)>0.5,1,0)}
|
||||
R2 Y3 Y 1
|
||||
C2 Y 0 1n
|
||||
.ENDS BUFDELAY
|
||||
*$
|
124
library/RC.lib
Normal file
@ -0,0 +1,124 @@
|
||||
<Qucs Library 25.1.0 "RC">
|
||||
|
||||
<Component C>
|
||||
<Description>
|
||||
Capacitor with parasitic inductance and ESR. The model contains the generic data. Substitute the ESR and parasitic inductance value after RF measurements before insertion in the schematic!
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:RC_C _net0 _net1 Cs="100n" Rs="1" Ls="1n"
|
||||
C:C1 _net0 _net2 C="Cs" V=""
|
||||
L:L1 _net3 _net1 L="Ls" I=""
|
||||
R:R1 _net2 _net3 R="Rs" Temp="26.85" Tc1="0.0" Tc2="0.0" Tnom="26.85"
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT RC_C gnd _net0 _net1 Cs=100n Rs=1 Ls=1n
|
||||
C1 _net0 _net2 {CS}
|
||||
L1 _net3 _net1 {LS}
|
||||
R1 _net2 _net3 {RS} tc1=0.0 tc2=0.0
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.ID -20 14 SUB "1=Cs=100n=Capacitance (F)=" "1=Rs=1=Series resististance ESR (Ohms)=" "1=Ls=1n=Series inductance (H)=">
|
||||
<.PortSym -30 0 1 0 P1>
|
||||
<.PortSym 30 0 2 0 P2>
|
||||
<Line -30 0 26 0 #000080 2 1>
|
||||
<Line -4 -11 0 22 #000080 3 1>
|
||||
<Line 4 -11 0 22 #000080 3 1>
|
||||
<Line 4 0 26 0 #000080 2 1>
|
||||
<Text -20 -40 12 #000000 0 "PAR">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component C_ESR>
|
||||
<Description>
|
||||
Capacitor with ESR. The model contains the generic data. Substitute the ESR value before insertion in the schematic!
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:RC_C_ESR _net0 _net1 Cs="10u" Rs="1"
|
||||
R:R1 _net2 _net1 R="Rs" Temp="26.85" Tc1="0.0" Tc2="0.0" Tnom="26.85"
|
||||
C:C1 _net0 _net2 C="Cs" V=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT RC_C_ESR gnd _net0 _net1 Cs=10u Rs=1
|
||||
R1 _net2 _net1 {RS} tc1=0.0 tc2=0.0
|
||||
C1 _net0 _net2 {CS}
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.ID -20 14 X "1=Cs=10u=Series capacitance (F)=" "1=Rs=1=Series resistance ESD (Ohms)=">
|
||||
<.PortSym -30 0 1 0 P1>
|
||||
<.PortSym 30 0 2 0 P2>
|
||||
<Line -30 0 26 0 #000080 2 1>
|
||||
<Line 4 0 26 0 #000080 2 1>
|
||||
<Line -14 -8 6 0 #ff0000 2 1>
|
||||
<Line -4 -11 0 22 #000080 3 1>
|
||||
<EArc 4 -12 20 24 1952 1856 #000080 3 1>
|
||||
<Line -11 -5 0 -6 #ff0000 2 1>
|
||||
<Text -10 -40 12 #000000 0 "ESR">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component R>
|
||||
<Description>
|
||||
Resistor with parasitic inductance and capacitance. The model contains the generic data. Substitute the parasitics value after RF measurements before insertion in the schematic!
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:RC_R _net2 _net1 Rs="1k" Ls="10n" Cp="1p"
|
||||
L:L1 _net0 _net1 L="Ls" I=""
|
||||
R:R1 _net2 _net0 R="Rs" Temp="26.85" Tc1="0.0" Tc2="0.0" Tnom="26.85"
|
||||
C:C1 _net2 _net1 C="Cp" V=""
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT RC_R gnd _net2 _net1 Rs=1k Ls=10n Cp=1p
|
||||
L1 _net0 _net1 {LS}
|
||||
R1 _net2 _net0 {RS} tc1=0.0 tc2=0.0
|
||||
C1 _net2 _net1 {CP}
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line -30 0 12 0 #000080 2 1>
|
||||
<Line 18 0 12 0 #000080 2 1>
|
||||
<Line -18 -9 36 0 #000080 2 1>
|
||||
<Line 18 -9 0 18 #000080 2 1>
|
||||
<Line 18 9 -36 0 #000080 2 1>
|
||||
<Line -18 9 0 -18 #000080 2 1>
|
||||
<.PortSym -30 0 1 0 P1>
|
||||
<.PortSym 30 0 2 0 P2>
|
||||
<.ID -20 14 X "1=Rs=1k=Resistance (Ohms)=" "1=Ls=10n=Series inductance (H)=" "1=Cp=1p=Parallel capacitance (F)=">
|
||||
<Text -20 -30 12 #000000 0 "PAR">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component R_L>
|
||||
<Description>
|
||||
Resistor with parasitic inductance. The model contains the generic data. Substitute the parasitic inductance value after measurements before insertion in the schematic!
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:RC_R_L _net2 _net1 Rs="1k" Ls="10n"
|
||||
L:L1 _net0 _net1 L="Ls" I=""
|
||||
R:R1 _net2 _net0 R="Rs" Temp="26.85" Tc1="0.0" Tc2="0.0" Tnom="26.85"
|
||||
.Def:End
|
||||
</Model>
|
||||
<Spice>
|
||||
.SUBCKT RC_R_L gnd _net2 _net1 Rs=1k Ls=10n
|
||||
L1 _net0 _net1 {LS}
|
||||
R1 _net2 _net0 {RS} tc1=0.0 tc2=0.0
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<Line -30 0 12 0 #000080 2 1>
|
||||
<Line 18 0 12 0 #000080 2 1>
|
||||
<Line -18 -9 36 0 #000080 2 1>
|
||||
<Line 18 -9 0 18 #000080 2 1>
|
||||
<Line 18 9 -36 0 #000080 2 1>
|
||||
<Line -18 9 0 -18 #000080 2 1>
|
||||
<.PortSym -30 0 1 0 P1>
|
||||
<.PortSym 30 0 2 0 P2>
|
||||
<.ID -20 14 X "1=Rs=1k=Resistance (Ohms)=" "1=Ls=10n=Series inductance (H)=">
|
||||
<Text -20 -30 12 #000000 0 "PAR">
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
@ -333,3 +333,158 @@ X1 _net0 _net1 _net2 XS8020L
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
<Component TriacGeneric>
|
||||
<Description>
|
||||
Generic triac model from ST microelectronics. This model works only with LTSpice compatibility option:
|
||||
============================
|
||||
* Vdrm : Repetitive forward off-state voltage
|
||||
* Ih : Holding current
|
||||
* Igt : Gate trigger current
|
||||
* Rt : Dynamic on-state resistance
|
||||
* Standard : Differenciation between Snubberless and Standard TRIACs
|
||||
* (Standard=0 => Snubberless TRIACs, Standard=1 => Standard TRIACs)
|
||||
</Description>
|
||||
<Model>
|
||||
.Def:Thyristor_TriacGeneric _net0 _net1 _net2 Vdrm="400" Igt="20m" Ih="6m" Rt="0.10" Standard="1"
|
||||
Sub:X1 _net0 _net2 _net1 gnd Type="TriacST_orig_cir"
|
||||
.Def:End
|
||||
</Model>
|
||||
<ModelIncludes "TriacST_orig.cir.lst">
|
||||
<Spice>
|
||||
.subckt Triac_ST A K G PARAMS:
|
||||
+ Vdrm=400v
|
||||
+ Igt=20ma
|
||||
+ Ih=6ma
|
||||
+ Rt=0.01
|
||||
+ Standard=1
|
||||
*
|
||||
* Vdrm : Repetitive forward off-state voltage
|
||||
* Ih : Holding current
|
||||
* Igt : Gate trigger current
|
||||
* Rt : Dynamic on-state resistance
|
||||
* Standard : Differenciation between Snubberless and Standard TRIACs
|
||||
* (Standard=0 => Snubberless TRIACs, Standard=1 => Standard TRIACs)
|
||||
*
|
||||
****************************
|
||||
* Power circuit *
|
||||
****************************
|
||||
*
|
||||
****************************
|
||||
*Switch circuit*
|
||||
****************************
|
||||
* Q1 & Q2 Conduction
|
||||
S_S3 A Plip1 positive 0 Smain
|
||||
*RS_S3 positive 0 1G
|
||||
D_DAK1 Plip1 Plip2 Dak
|
||||
R_Rlip Plip1 Plip2 1k
|
||||
V_Viak Plip2 K DC 0 AC 0
|
||||
*
|
||||
* Q3 & Q4 Conduction
|
||||
S_S4 A Plin1 negative 0 Smain
|
||||
*RS_S4 negative 0 1G
|
||||
D_DKA1 Plin2 Plin1 Dak
|
||||
R_Rlin Plin1 Plin2 1k
|
||||
V_Vika K Plin2 DC 0 AC 0
|
||||
****************************
|
||||
*Gate circuit*
|
||||
****************************
|
||||
R_Rgk G K 10G
|
||||
D_DGKi Pg2 G Dgk
|
||||
D_DGKd G Pg2 Dgk
|
||||
V_Vig Pg2 K DC 0 AC 0
|
||||
R_Rlig G Pg2 1k
|
||||
*
|
||||
****************************
|
||||
*Interface circuit*
|
||||
****************************
|
||||
* positive pilot
|
||||
R_Rp Controlp positive 2.2
|
||||
C_Cp 0 positive 1u
|
||||
E_IF15OR3 Controlp 0 VALUE {IF( ( (V(CMDIG)>0.5) | (V(CMDILIH)>0.5) | (V(CMDVdrm)>0.5) ),400,0 )}
|
||||
*
|
||||
* negative pilot
|
||||
R_Rn Controln negative 2.2
|
||||
C_Cn 0 negative 1u
|
||||
E_IF14OR3 Controln 0 VALUE {IF( ( (V(CMDIG)>0.5) | (V(CMDILIHN)>0.5) | (V(CMDVdrm)>0.5) ),400,0 )}
|
||||
*
|
||||
****************************
|
||||
* Pilots circuit *
|
||||
****************************
|
||||
****************************
|
||||
* Pilot Gate *
|
||||
****************************
|
||||
E_IF1IG inIG 0 VALUE {IF( ( ABS(I(V_Vig)) ) > (Igt-1u) ,1,0 )}
|
||||
E_MULT2MULT CMDIG 0 VALUE {V(Q4)*V(inIG)}
|
||||
E_IF2Quadrant4 Q4 0 VALUE {IF(((I(V_Vig)>(Igt-0.000001))&((V(A)-V(K))<0)&(Standard==0)),0,1)}
|
||||
*
|
||||
****************************
|
||||
* Pilot IHIL *
|
||||
****************************
|
||||
*
|
||||
E_IF10IL inIL 0 VALUE {IF( ((I(V_Viak))>(Ih/2)),1,0 )}
|
||||
E_IF5IH inIH 0 VALUE {IF( ((I(V_Viak))>(Ih/3)),1,0 )}
|
||||
*
|
||||
* Flip_flop IHIL
|
||||
E_IF6DIHIL SDIHIL 0 VALUE {IF((V(inIL)*V(inIH)+V(inIH)*(1-V(inIL))*(V(CMDILIH)) )>0.5,1,0)}
|
||||
C_CIHIL CMDILIH 0 1n
|
||||
R_RIHIL SDIHIL CMDILIH 1K
|
||||
R_RIHIL2 CMDILIH 0 100Meg
|
||||
*
|
||||
****************************
|
||||
* Pilot IHILN *
|
||||
****************************
|
||||
*
|
||||
E_IF11ILn inILn 0 VALUE {IF( ((I(V_Vika))>(Ih/2)),1,0 )}
|
||||
E_IF3IHn inIHn 0 VALUE {IF( ((I(V_Vika))>(Ih/3)),1,0 )}
|
||||
* Flip_flop IHILn
|
||||
E_IF4DIHILN SDIHILN 0 VALUE {IF((V(inILn)*V(inIHn)+V(inIHn)*(1-V(inILn))*(V(CMDILIHN)) )>0.5,1,0)}
|
||||
C_CIHILn CMDILIHN 0 1n
|
||||
R_RIHILn SDIHILN CMDILIHN 1K
|
||||
R_RIHILn2 CMDILIHN 0 100Meg
|
||||
*
|
||||
****************************
|
||||
* Pilot VDRM *
|
||||
****************************
|
||||
E_IF8Vdrm inVdrm 0 VALUE {IF( (ABS(V(A)-V(K))>(Vdrm*1.3)),1,0 )}
|
||||
E_IF9IHVDRM inIhVdrm 0 VALUE {IF( (I(V_Viak)>(Vdrm*1.3)/1.2meg)| (I(V_Vika)>(Vdrm*1.3)/1.2meg),1,0)}
|
||||
* Flip_flop VDRM
|
||||
E_IF7DVDRM SDVDRM 0 VALUE {IF((V(inVdrm)+(1-V(inVdrm))*V(inIhVdrm)*V(CMDVdrm) )>0.5,1,0)}
|
||||
C_CVdrm CMDVdrm 0 1n
|
||||
R_RVdrm SDVDRM CMDVdrm 100
|
||||
R_RVdrm2 CMDVdrm 0 100Meg
|
||||
*
|
||||
****************************
|
||||
* Switch Model *
|
||||
****************************
|
||||
.MODEL Smain VSWITCH Roff=1.2meg Ron={Rt} Voff=0 Von=100
|
||||
****************
|
||||
* Diodes Model *
|
||||
****************
|
||||
.MODEL Dak D( Is=3E-12 Cjo=5pf)
|
||||
.MODEL Dgk D( Is=1E-16 Cjo=50pf Rs=5)
|
||||
.ends
|
||||
|
||||
|
||||
.SUBCKT Thyristor_TriacGeneric gnd _net0 _net1 _net2 Vdrm=400 Igt=20m Ih=6m Rt=0.10 Standard=1
|
||||
X1 _net0 _net2 _net1 Triac_ST Vdrm={Vdrm} Igt={Igt} Ih={Ih} Rt={Rt} Standard={Standard}
|
||||
.ENDS
|
||||
</Spice>
|
||||
<Symbol>
|
||||
<.ID -20 44 SUB "1=Vdrm=400=Repetitive forward off-state voltage=" "1=Igt=20m=Gate trigger current =" "1=Ih=6m=Holding current =" "1=Rt=0.10=Dynamic on-state resistance=" "1=Standard=1=0 -- Snubberless TRIACs;1 -- Standard TRIACs=">
|
||||
<.PortSym 0 -30 1 0 P1>
|
||||
<Line 0 6 0 24 #000080 2 1>
|
||||
<Line 0 -30 0 24 #000080 2 1>
|
||||
<Line 18 6 -36 0 #000080 2 1>
|
||||
<Line -30 10 17 0 #000080 2 1>
|
||||
<Line -13 10 4 -4 #000080 2 1>
|
||||
<Line -9 6 -9 -12 #000080 2 1>
|
||||
<Line -9 6 9 -12 #000080 2 1>
|
||||
<Line 9 -6 9 12 #000080 2 1>
|
||||
<Line 9 -6 -9 12 #000080 2 1>
|
||||
<Line 18 -6 -36 0 #000080 2 1>
|
||||
<.PortSym 0 30 3 0 P3>
|
||||
<.PortSym -30 10 2 0 P2>
|
||||
</Symbol>
|
||||
</Component>
|
||||
|
||||
|
||||
|
1636
library/TubesExtended.lib
Normal file
27
library/TubesExtended/2P2.CIR
Normal file
@ -0,0 +1,27 @@
|
||||
* 2P2 Miniature Power Pentode Spice Model
|
||||
* Author: Zabb Csaba
|
||||
* Date: 4/12/2021
|
||||
* The following parameters are not modelled:
|
||||
* (1) Filament and filament warmup time
|
||||
* (2) Limiting values
|
||||
* This model is valid for the following tubes (within max. ratings):
|
||||
* DL92, 3S4, CV484, VT-174
|
||||
.SUBCKT 2P2 A S G K
|
||||
+ PARAMS: MU=5.5 KG1=3916 KP=39.04 KVB=12 VCT=0.0025 EX=1.19 KG2=6384 KNEE=2.88 KVC=2.133
|
||||
+ KLAM=2.75E-7 KLAMG=6.12E-4 KNEE2=11.76 KNEX=2.85
|
||||
E1 1 0 VALUE={V(S,K)/KP*LOG(1+EXP((1/MU+(VCT+V(G,K))/SQRT(KVB+V(S,K)*V(S,K)))*KP))}
|
||||
E2 2 0 VALUE={(PWR(V(1),EX)+PWRS(V(1),EX))}
|
||||
G4 A K VALUE={IF(V(A,K)>0,V(2)/KG1*ATAN((V(A,K)+KNEX)/KNEE)*TANH(V(A,K)/KNEE2)*(1+KLAMG*V(A,K)),0)}
|
||||
E4 4 K VALUE={IF(V(A,K)>0,V(A,K),0)}
|
||||
G2 S K VALUE={V(2)/KG2*(KVC-ATAN((V(4,K)+KNEX)/KNEE)*TANH(V(4,K)/KNEE2))/(1+KLAMG*V(4,K))}
|
||||
B1 G K I=URAMP(V(G,K)+8.68E-1)^1.5*2.1E-5*V(5)
|
||||
G3 G K VALUE={3.1E-5*(PWR(V(G,K),1.5)+PWRS(V(G,K),1.5))/1.5} ; G1 diode
|
||||
E3 3 0 VALUE={IF(V(S,K)>0,1/(1+ABS(V(S,K))/20)^2.5,1)} ;G1 Splash current change
|
||||
E5 5 0 VALUE={IF(V(A,K)>=3,V(3),1)}
|
||||
R1 3 0 1G
|
||||
R2 5 0 1G
|
||||
C1 G K 4.4p
|
||||
C2 G A 0.4p
|
||||
C3 A K 6p
|
||||
.ENDS
|
||||
*$
|
29
library/TubesExtended/2P3.CIR
Normal file
@ -0,0 +1,29 @@
|
||||
* 2P3 Miniature Power Pentode Spice Model
|
||||
* Author: Zabb Csaba
|
||||
* Date: 25/02/2023
|
||||
* The following parameters are not modelled:
|
||||
* (1) Filament and filament warmup time
|
||||
* (2) Limiting values
|
||||
* 2P3 maximum ratings:
|
||||
* Ua max. 150V
|
||||
* Ug2 max. 135V
|
||||
* Ik max. 25mA
|
||||
* Uf 1.4V
|
||||
* If 200mA
|
||||
* The cathode symbol is the negative end of the filament (pin 5, parallel filament).
|
||||
.SUBCKT 2P3 A S G K
|
||||
+ PARAMS: MU=5.2 KG1=5535 KP=60.06 KVB=12.96 VCT=0.274 EX=1.4 KG2=6852 KNEE=12 KVC=1.874
|
||||
+ KLAMG=5.61E-4 KNEE2=21.41 KNEX=26.4
|
||||
E1 1 0 VALUE={V(S,K)/KP*LOG(1+EXP((1/MU+(VCT+V(G,K))/SQRT(KVB+V(S,K)*V(S,K)))*KP))}
|
||||
E2 2 0 VALUE={(PWR(V(1),EX)+PWRS(V(1),EX))}
|
||||
G1 A K VALUE={IF(V(A,K)>0,V(2)/KG1*ATAN((V(A,K)+KNEX)/KNEE)*TANH(V(A,K)/KNEE2)*(1+KLAMG*V(A,K)),0)}
|
||||
E3 4 K VALUE={IF(V(A,K)>0,V(A,K),0)}
|
||||
G2 S K VALUE={V(2)/KG2*(KVC-ATAN((V(4,K)+KNEX)/KNEE)*TANH(V(4,K)/KNEE2))/(1+KLAMG*V(4,K))}
|
||||
B1 G K I=URAMP(V(G,K)+960m)^1.5*5.3E-5
|
||||
G3 G K VALUE={3.1E-5*(PWR(V(G,K),1.5)+PWRS(V(G,K),1.5))/1.5} ; G1 diode
|
||||
C1 K G 4.8p
|
||||
C2 G A 0.36p
|
||||
C3 K A 4.2p
|
||||
.ENDS 2P3
|
||||
*
|
||||
|
22
library/TubesExtended/5899.CIR
Normal file
@ -0,0 +1,22 @@
|
||||
* 5899 Special Quality Variable-mu Pentode Spice Model
|
||||
* Author: Zabb Csaba
|
||||
* Date: 30/10/2021
|
||||
* The following parameters are not modelled:
|
||||
* (1) Filament and filament warmup time
|
||||
* (2) Limiting values
|
||||
.SUBCKT 5899 A S G K
|
||||
+ PARAMS: MU=27.2 KG1=11545.6 KP=35.3 KVB=11.88 VCT=8.438E-5 EX=2.64 KG2=7324 KNEE=7.44 KVC=1.772
|
||||
+ KLAM=3E-8 KLAMG=2.04E-4 KNEE2=15.64 KNEX=10.8
|
||||
E1 1 0 VALUE={V(S,K)/KP*LOG(1+EXP((1/MU+(VCT+V(G,K)*V(3))/SQRT(KVB+V(S,K)*V(S,K)))*KP))}
|
||||
E2 2 0 VALUE={(PWR(V(1),EX)+PWRS(V(1),EX))}
|
||||
G1 A K VALUE={IF(V(A,K)>0,V(2)/KG1*ATAN((V(A,K)+KNEX)/KNEE)*TANH(V(A,K)/KNEE2)*(1+KLAMG*V(A,K)),0)}
|
||||
E4 4 K VALUE={IF(V(A,K)>0,V(A,K),0)}
|
||||
G2 S K VALUE={V(2)/KG2*(KVC-ATAN((V(4,K)+KNEX)/KNEE)*TANH(V(4,K)/KNEE2))/(1+KLAMG*V(4,K))}
|
||||
G3 G K VALUE={2.16E-3*(PWR(V(G,K),1.5)+PWRS(V(G,K),1.5))/2} ; G1 diode
|
||||
E3 3 0 VALUE={IF(V(G,K)<0,(1-EXP(10/V(G,K)))^1.3,1)}
|
||||
B1 G K I=URAMP(V(G,K)+8.56E-1)^1.5*2.6E-4
|
||||
C1 G K 4p
|
||||
C2 A K 1.9p
|
||||
C3 A G 0.03p
|
||||
.ENDS 5899
|
||||
*$
|
38
library/TubesExtended/6F12P.CIR
Normal file
@ -0,0 +1,38 @@
|
||||
* 6F12P Triode-Pentode Spice Model
|
||||
* Author: Zabb Csaba
|
||||
* Date: 27/10/2021
|
||||
* The following parameters are not modelled:
|
||||
* (1) Filament and filament warmup time
|
||||
* (2) Limiting values
|
||||
.SUBCKT 6F12P A S G K
|
||||
+ PARAMS: MU=66.4 KG1=352 KP=423.45 KVB=5.64 VCT=6.25E-4 EX=1.596 KG2=672 KNEE=1.14 KVC=2.07
|
||||
+ KLAM=2.5E-8 KLAMG=3.637E-5 KNEE2=14.56 KNEX=2.1
|
||||
E1 1 0 VALUE={V(S,K)/KP*LOG(1+EXP((1/MU+(VCT+V(G,K))/SQRT(KVB+V(S,K)*V(S,K)))*KP))}
|
||||
E2 2 0 VALUE={(PWR(V(1),EX)+PWRS(V(1),EX))}
|
||||
G4 A K VALUE={IF(V(A,K)>0,V(2)/KG1*ATAN((V(A,K)+KNEX)/KNEE)*TANH(V(A,K)/KNEE2)*(1+KLAMG*V(A,K)),0)}
|
||||
E4 4 K VALUE={IF(V(A,K)>0,V(A,K),0)}
|
||||
G2 S K VALUE={V(2)/KG2*(KVC-ATAN((V(4,K)+KNEX)/KNEE)*TANH(V(4,K)/KNEE2))/(1+KLAMG*V(4,K))}
|
||||
G3 G K VALUE={2.1E-2*(PWR(V(G,K),1.5)+PWRS(V(G,K),1.5))/2} ; G1 diode
|
||||
B1 G K I=URAMP(V(G,K)+1.045)^1.5*3.2E-4*V(3)
|
||||
B2 G K I=URAMP(V(G,K)+1.045)^1.5*9.5E-5
|
||||
E3 3 0 VALUE={IF(V(S,K)>0,1/(1+ABS(V(S,K))/20)^1.8,1)} ;G1 Splash current change
|
||||
R1 3 0 1G
|
||||
C1 K G 6.6p
|
||||
C2 G A 0.02p
|
||||
C3 K A 1.9p
|
||||
.ENDS
|
||||
*$
|
||||
.SUBCKT 6F12PT A G K
|
||||
+PARAMS: MU=101 KG1=161.7 KP=691.2 KVB=69.96 VCT=0.1786 EX=1.44
|
||||
E1 1 0 VALUE={V(A,K)/KP*LOG(1+EXP(KP*(1/MU+(VCT+V(G,K))/SQRT(KVB+V(A,K)*V(A,K)))))}
|
||||
G1 A K VALUE={(PWR(V(1),EX)+PWRS(V(1),EX))/KG1}
|
||||
G3 G K VALUE={3.5E-2*(PWR(V(G,K),1.5)+PWRS(V(G,K),1.5))/2} ; G1 diode
|
||||
B1 G K I=URAMP(V(G,K)+1.05)^1.5*4.6E-4*V(3)
|
||||
B2 G K I=URAMP(V(G,K)+1.05)^1.5*7E-5
|
||||
E3 3 0 VALUE={IF(V(A,K)>0,1/(1+ABS(V(A,K))/20)^2,1)} ;G1 Splash current change
|
||||
R1 3 0 1G
|
||||
C1 G K 2.1p
|
||||
C2 A K 0.26p
|
||||
C3 G A 1.6p
|
||||
.ENDS
|
||||
*$
|
25
library/TubesExtended/6K1J.CIR
Normal file
@ -0,0 +1,25 @@
|
||||
* 6K1J Variable-mu VHF Pentode Spice Model
|
||||
* Author: Zabb Csaba
|
||||
* Date: 6/11/2021
|
||||
* The following parameters are not modelled:
|
||||
* (1) Filament and filament warmup time
|
||||
* (2) Limiting values
|
||||
* This model is valid for the following tubes (within max. ratings):
|
||||
* RCA 956, VT-238, E2F
|
||||
.SUBCKT 6K1J A S G K
|
||||
+ PARAMS: MU=19.2 KG1=95744 KP=12.95 KVB=5.76 VCT=0.0575 EX=2.828 KG2=120960 KNEE=14.4 KVC=2.339
|
||||
+ KLAM=2.5E-8 KLAMG=7.8E-5 KNEE2=13.39 KNEX=11.1
|
||||
E1 1 0 VALUE={V(S,K)/KP*LOG(1+EXP((1/MU+(VCT+V(G,K)*V(3))/SQRT(KVB+V(S,K)*V(S,K)))*KP))}
|
||||
E3 3 0 VALUE={ATAN(V(G,K)/19+1)/2.7+0.5}
|
||||
E2 2 0 VALUE={(PWR(V(1),EX)+PWRS(V(1),EX))}
|
||||
G1 A K VALUE={IF(V(A,K)>0,0.831*V(2)/KG1*ATAN((V(A,K)+KNEX)/KNEE)*TANH(V(A,K)/KNEE2)*(1+KLAMG*V(A,K)),0)}
|
||||
E4 4 K VALUE={IF(V(A,K)>0,V(A,K),0)}
|
||||
G2 S K VALUE={0.822*V(2)/KG2*(KVC-ATAN((V(4,K)+KNEX)/KNEE)*TANH(V(4,K)/KNEE2))/(1+KLAMG*V(4,K))}
|
||||
B1 G K I=URAMP(V(G,K)+1.15)^1.5*2.6E-4*V(5)
|
||||
E5 5 0 VALUE={IF(V(S,K)>0,1/(1+ABS(V(S,K))/20)^1.3,1)} ;G1 Splash current change
|
||||
R1 5 0 1G
|
||||
C1 G K 3.4p
|
||||
C2 A K 3p
|
||||
C3 G A 0.007p
|
||||
.ENDS
|
||||
*$
|
25
library/TubesExtended/EF183.CIR
Normal file
@ -0,0 +1,25 @@
|
||||
* EF183 Variable-mu Pentode Spice Model
|
||||
* Author: Zabb Csaba
|
||||
* Date: 26/10/2021
|
||||
* The following parameters are not modelled:
|
||||
* (1) Filament and filament warmup time
|
||||
* (2) Limiting values
|
||||
.SUBCKT EF183 A S G K
|
||||
+ PARAMS: MU=45.58 KG1=126.5 KP=141.9 KVB=12 VCT=6.25E-4 EX=1.008 KG2=258 KNEE=7.92 KVC=2.82
|
||||
+ KLAM=2E-7 KLAMG=9.9E-5 KNEE2=7.963 KNEX=2.756
|
||||
E1 1 0 VALUE={V(S,K)/KP*LOG(1+EXP((1/MU+(VCT+V(G,K)*V(3))/SQRT(KVB+V(S,K)*V(S,K)))*KP))}
|
||||
E2 2 0 VALUE={(PWR(V(1),EX)+PWRS(V(1),EX))}
|
||||
G1 A K VALUE={IF(V(A,K)>0,V(2)/KG1*ATAN((V(A,K)+KNEX)/KNEE)*TANH(V(A,K)/KNEE2)*(1+KLAMG*V(A,K)),0)}
|
||||
E4 4 K VALUE={IF(V(A,K)>0,V(A,K),0)}
|
||||
G2 S K VALUE={V(2)/KG2*(KVC-ATAN((V(4,K)+KNEX)/KNEE)*TANH(V(4,K)/KNEE2))/(1+KLAMG*V(4,K))}
|
||||
G3 G K VALUE={3.16E-2*(PWR(V(G,K),1.5)+PWRS(V(G,K),1.5))/2} ; G1 diode
|
||||
E3 3 0 VALUE={IF(V(G,K)<0,(1-EXP(14/V(G,K)))^1.3,1)}
|
||||
B1 G K I=URAMP(V(G,K)+1.015)^1.5*5.1E-4*V(6)
|
||||
B2 G K I=URAMP(V(G,K)+1.015)^1.5*2E-4
|
||||
E5 5 0 VALUE={IF(V(S,K)>0,1/(1+ABS(V(S,K))/20)^2,1)} ;G1 Splash current change
|
||||
E6 6 0 VALUE={IF(V(A,K)>=15,V(5),1)}
|
||||
C1 G K 9p
|
||||
C2 A K 3p
|
||||
C3 A G 0.005p
|
||||
.ENDS EF183
|
||||
*$
|
32
library/TubesExtended/EF184.cir
Normal file
@ -0,0 +1,32 @@
|
||||
* EF184 Pentode Spice Model
|
||||
* Copyright 2003--2006 by Ayumi Nakabayashi, All rights reserved.
|
||||
* Version 3.01, Generated on Wed Mar 22 17:19:41 2006
|
||||
* -Ig1 splash current modified by Zabb Csaba 21/10/2021
|
||||
.SUBCKT EF184 A G2 G1 K
|
||||
BGG GG 0 V=V(G1,K)+0.40321166
|
||||
BEP EP 0 V=URAMP(V(A,K))+1e-10
|
||||
BEG EG 0 V=URAMP(V(G1,K))+1e-10
|
||||
BEG2 EG2 0 V=URAMP(V(G2,K))+1e-10
|
||||
BM1 M1 0 V=(0.0054275937*(URAMP(V(EG2)-1e-10)+1e-10))^-0.61801526
|
||||
BM2 M2 0 V=(0.7082102*(URAMP(V(GG)+V(EG2)/53.760436)+1e-10))^2.1180153
|
||||
BP P 0 V=0.019963362*(URAMP(V(GG)+V(EG2)/75.910283)+1e-10)^1.5
|
||||
BIK IK 0 V=U(V(GG))*V(P)+(1-U(V(GG)))*0.011540933*V(M1)*V(M2)
|
||||
BIG IG 0 V=0.0099816812*V(EG)^1.5*(V(EG)/(V(EP)+V(EG))*1.2+0.4)
|
||||
BIK2 IK2 0 V=V(IK,IG)*(1-0.4*(EXP(-V(EP)/V(EG2)*15)-EXP(-15)))
|
||||
BIG2T IG2T 0 V=V(IK2)*(0.71666698*(1-V(EP)/(V(EP)+10))^1.5+0.28333302)
|
||||
BIK3 IK3 0 V=V(IK2)*(V(EP)+5500)/(V(EG2)+5500)
|
||||
BIK4 IK4 0 V=V(IK3)-URAMP(V(IK3)-(0.010377457*(V(EP)+URAMP(V(EG2,EP)))^1.5))
|
||||
BIP IP 0 V=URAMP(V(IK4,IG2T)-URAMP(V(IK4,IG2T)-(0.010377457*V(EP)^1.5)))
|
||||
BIAK A K I=V(IP)+1e-10*V(A,K)
|
||||
BIG2 G2 K I=URAMP(V(IK4,IP))
|
||||
B1 G1 K I=URAMP(V(G1,K)+1.3)^1.5*4.3E-4*V(3)
|
||||
G3 G1 K VALUE={9.516E-3*(PWR(V(G1,K),1.5)+PWRS(V(G1,K),1.5))/2} ; G1 diode
|
||||
E3 3 0 VALUE={IF(V(G2,K)>0,1/(1+ABS(V(G2,K))/20)^1.3,1)} ;G1 Splash current change
|
||||
E5 5 0 VALUE={IF(V(A,K)>=8,V(3),1)}
|
||||
R1 3 0 1G
|
||||
R2 5 0 1G
|
||||
CGA G1 A 0.005p
|
||||
CGK G1 K 7.2p
|
||||
C12 G1 G2 2.8p
|
||||
CAK A K 3p
|
||||
.ENDS
|
1280
library/TubesExtended/tube.lib
Normal file
@ -1,5 +1,10 @@
|
||||
Analog.lib
|
||||
SpiceOpamp.lib
|
||||
Cores.lib
|
||||
Digital_CD.lib
|
||||
Digital_HC.lib
|
||||
Digital_LV.lib
|
||||
LaserDiodes.lib
|
||||
Transformers.lib
|
||||
Xanalogue.lib
|
||||
BF998.lib
|
||||
@ -9,3 +14,9 @@ VoltageReferences.lib
|
||||
PWM_Controller.lib
|
||||
MixerIC.lib
|
||||
SPICE_TLine.lib
|
||||
Digital_AUX.lib
|
||||
Digital_XSPICE.lib
|
||||
DualGateMOSFET.lib
|
||||
TubesExtended.lib
|
||||
Neon.lib
|
||||
Optocoupler.lib
|
||||
|
14
library/symbols/led.sym
Normal file
@ -0,0 +1,14 @@
|
||||
<Qucs Schematic 24.4.1>
|
||||
<Symbol>
|
||||
<Line 0 30 0 -24 #000080 2 1>
|
||||
<Line 0 -6 0 -24 #000080 2 1>
|
||||
<Line -9 6 18 0 #000080 2 1>
|
||||
<Line -9 -6 18 0 #000080 2 1>
|
||||
<Line 0 6 -9 -12 #000080 2 1>
|
||||
<Line 0 6 9 -12 #000080 2 1>
|
||||
<Arrow 13 -5 10 -10 9 3 #000080 2 1 0>
|
||||
<Arrow 13 5 10 -10 9 3 #000080 2 1 0>
|
||||
<.ID 30 -16 SUB>
|
||||
<.PortSym 0 -30 1 0 1>
|
||||
<.PortSym 0 30 2 0 1>
|
||||
</Symbol>
|
13
library/symbols/schottky.sym
Normal file
@ -0,0 +1,13 @@
|
||||
<Qucs Schematic 24.4.1>
|
||||
<Symbol>
|
||||
<Line 9 -6 -18 0 #000080 2 1>
|
||||
<Line 9 6 -18 0 #000080 2 1>
|
||||
<Line 0 -30 0 24 #000080 2 1>
|
||||
<Line 0 6 0 24 #000080 2 1>
|
||||
<Line -9 -6 0 5 #000080 2 1>
|
||||
<Line 0 -6 -9 12 #000080 2 1>
|
||||
<Line 0 -6 9 12 #000080 2 1>
|
||||
<.ID 20 -16 SUB>
|
||||
<.PortSym 0 30 1 0 1>
|
||||
<.PortSym 0 -30 2 0 2>
|
||||
</Symbol>
|
@ -1,4 +1,8 @@
|
||||
Substrates.lib
|
||||
Xanalogue.lib
|
||||
PWM_Controller.lib
|
||||
|
||||
Digital_CD.lib
|
||||
Digital_HC.lib
|
||||
Digital_LV.lib
|
||||
Digital_AUX.lib
|
||||
Digital_XSPICE.lib
|
||||
|
@ -33,30 +33,15 @@ CONFIGURE_FILE (
|
||||
|
||||
INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
|
||||
|
||||
if(WITH_QT6)
|
||||
set(QT_VERSION_MAJOR 6)
|
||||
else()
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
endif()
|
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6)
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Svg SvgWidgets)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Svg SvgWidgets)
|
||||
include_directories(
|
||||
${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Svg_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}SvgWidgets_INCLUDE_DIRS}
|
||||
${Qt6Core_INCLUDE_DIRS}
|
||||
${Qt6Widgets_INCLUDE_DIRS}
|
||||
${Qt6Svg_INCLUDE_DIRS}
|
||||
${Qt6SvgWidgets_INCLUDE_DIRS}
|
||||
)
|
||||
else()
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Svg)
|
||||
include_directories(
|
||||
${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Svg_INCLUDE_DIRS}
|
||||
)
|
||||
endif()
|
||||
|
||||
set(QT_VERSION ${Qt${QT_VERSION_MAJOR}Core_VERSION})
|
||||
set(QT_VERSION ${Qt6Core_VERSION})
|
||||
|
||||
if (${QT_VERSION} VERSION_LESS "6.7.0")
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
@ -80,8 +65,9 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
|
||||
string(REGEX REPLACE "/W3" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
string(REGEX REPLACE "/W1" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
add_compile_options(/permissive- /Zc:__cplusplus /Zc:preprocessor /MP /vmg)
|
||||
add_link_options(/OPT:REF /OPT:ICF)
|
||||
else()
|
||||
add_compile_options(-w)
|
||||
endif()
|
||||
@ -108,13 +94,8 @@ helpdialog.h
|
||||
)
|
||||
|
||||
SET(RESOURCES qucsactivefilter.qrc)
|
||||
IF(QT_VERSION_MAJOR EQUAL 6)
|
||||
QT6_WRAP_CPP(QUCS-ACTIVE-FILTER_MOC_SRCS ${QUCS-ACTIVE-FILTER_MOC_HDRS})
|
||||
QT6_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
ELSE()
|
||||
QT5_WRAP_CPP(QUCS-ACTIVE-FILTER_MOC_SRCS ${QUCS-ACTIVE-FILTER_MOC_HDRS})
|
||||
QT5_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
ENDIF()
|
||||
|
||||
|
||||
|
||||
@ -142,13 +123,7 @@ ADD_EXECUTABLE(${QUCS_NAME}activefilter MACOSX_BUNDLE WIN32
|
||||
${RESOURCES_SRCS} )
|
||||
|
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6)
|
||||
TARGET_LINK_LIBRARIES(${QUCS_NAME}activefilter Qt${QT_VERSION_MAJOR}::Core
|
||||
Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Svg Qt${QT_VERSION_MAJOR}::SvgWidgets)
|
||||
else()
|
||||
TARGET_LINK_LIBRARIES(${QUCS_NAME}activefilter Qt${QT_VERSION_MAJOR}::Core
|
||||
Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Svg )
|
||||
endif()
|
||||
TARGET_LINK_LIBRARIES(${QUCS_NAME}activefilter Qt6::Core Qt6::Widgets Qt6::Svg Qt6::SvgWidgets)
|
||||
|
||||
|
||||
SET_TARGET_PROPERTIES(${QUCS_NAME}activefilter PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
|
@ -1,401 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<!-- Created with Inkscape (http://www.inkscape.org/) -->
|
||||
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="196.69392"
|
||||
height="170.28023"
|
||||
id="svg2"
|
||||
version="1.1"
|
||||
inkscape:version="0.48.3.1 r9886"
|
||||
sodipodi:docname="AFR.svg">
|
||||
<defs
|
||||
id="defs4">
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Lstart"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Lstart"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path3763"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
|
||||
transform="matrix(0.8,0,0,0.8,10,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Lend"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
id="path3766"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)"
|
||||
inkscape:connector-curvature="0" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="Arrow1Lend-0"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path3766-7"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
|
||||
</marker>
|
||||
<marker
|
||||
inkscape:stockid="Arrow1Lend"
|
||||
orient="auto"
|
||||
refY="0"
|
||||
refX="0"
|
||||
id="marker5927"
|
||||
style="overflow:visible">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path5929"
|
||||
d="M 0,0 5,-5 -12.5,0 5,5 0,0 z"
|
||||
style="fill-rule:evenodd;stroke:#000000;stroke-width:1pt"
|
||||
transform="matrix(-0.8,0,0,-0.8,-10,0)" />
|
||||
</marker>
|
||||
</defs>
|
||||
<sodipodi:namedview
|
||||
id="base"
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1.0"
|
||||
inkscape:pageopacity="0.0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:zoom="2.8"
|
||||
inkscape:cx="82.130173"
|
||||
inkscape:cy="77.007002"
|
||||
inkscape:document-units="px"
|
||||
inkscape:current-layer="layer1"
|
||||
showgrid="true"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="722"
|
||||
inkscape:window-x="-4"
|
||||
inkscape:window-y="1020"
|
||||
inkscape:window-maximized="1"
|
||||
fit-margin-top="0"
|
||||
fit-margin-left="0"
|
||||
fit-margin-right="0"
|
||||
fit-margin-bottom="0">
|
||||
<inkscape:grid
|
||||
type="xygrid"
|
||||
id="grid2985"
|
||||
empspacing="5"
|
||||
visible="true"
|
||||
enabled="true"
|
||||
snapvisiblegridlinesonly="true"
|
||||
units="mm"
|
||||
spacingx="1mm"
|
||||
spacingy="1mm"
|
||||
originx="-1.0477027mm"
|
||||
originy="-247.40872mm" />
|
||||
</sodipodi:namedview>
|
||||
<metadata
|
||||
id="metadata7">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title />
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<g
|
||||
inkscape:label="Layer 1"
|
||||
inkscape:groupmode="layer"
|
||||
id="layer1"
|
||||
transform="translate(-3.7123325,-5.4368782)">
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
|
||||
d="m 17.716535,148.81888 0,-124.015753 3.543308,10.629916"
|
||||
id="path2987"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
|
||||
d="m 17.716535,148.81888 159.448815,0 -10.62992,-3.54332"
|
||||
id="path3757"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#ff0000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 17.716535,60.236198 c 6.484394,-6.437719 9.867912,-11.024065 17.716536,-10.629921 7.848624,0.394144 12.081982,10.544488 17.716535,10.629921 5.634553,0.08543 8.026167,-9.970094 17.716536,-10.629921 9.690369,-0.659827 15.13139,5.196517 17.716535,10.629921 l 17.716533,88.582682 c 0.24254,-9.7986 2.43977,-17.40295 17.71654,-17.71654 9.3354,0.36517 16.92556,4.05746 17.71653,17.71654 1.01915,-11.28051 7.17493,-16.91073 17.71654,-17.71654"
|
||||
id="path4385"
|
||||
inkscape:connector-curvature="0"
|
||||
sodipodi:nodetypes="czzzccccc" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 70.866142,49.606277 53.149608,0"
|
||||
id="path4387"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.63245553px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 35.433071,49.606277 14.173228,0"
|
||||
id="path4389"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
|
||||
d="m 46.062992,28.346435 0,21.259842 3.543307,-10.629927"
|
||||
id="path4391"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
|
||||
d="m 46.062992,77.952734 0,-17.716536"
|
||||
id="path4575"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 46.062992,49.606277 0,10.629921"
|
||||
id="path4759"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="24.80315"
|
||||
y="74.409424"
|
||||
id="text4761"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4763"
|
||||
x="24.80315"
|
||||
y="74.409424">Rp</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 88.582677,60.236198 0,46.062992"
|
||||
id="path4765"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:none"
|
||||
d="m 17.716535,102.75588 70.866142,0"
|
||||
id="path4767"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="45.714287"
|
||||
y="94.862183"
|
||||
id="text5139"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5141"
|
||||
x="45.714287"
|
||||
y="94.862183">Fc</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 17.716535,148.81888 0,17.71653"
|
||||
id="path5143"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 99.212598,113.3858 0,53.14961"
|
||||
id="path5147"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:none"
|
||||
d="m 99.212598,162.9921 -81.496063,0 10.629922,-3.54331"
|
||||
id="path5149"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="50.714287"
|
||||
y="175.57648"
|
||||
id="text5519"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5521"
|
||||
x="50.714287"
|
||||
y="175.57648">Fs</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 70.866142,49.606277 92.125988,0"
|
||||
id="path5523"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 99.212598,113.3858 63.779532,0"
|
||||
id="path5525"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-start:none;marker-end:none"
|
||||
d="m 159.44882,113.3858 0,-63.779523 3.54331,10.629915"
|
||||
id="path5527"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="165.71429"
|
||||
y="86.647896"
|
||||
id="text5897"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5899"
|
||||
x="165.71429"
|
||||
y="86.647896">As</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="17.716536"
|
||||
y="14.173206"
|
||||
id="text5901"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5903"
|
||||
x="17.716536"
|
||||
y="14.173206">K (dB)</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="167.5"
|
||||
y="167.36218"
|
||||
id="text5905"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5907"
|
||||
x="167.5"
|
||||
y="167.36218">F (Hz)</tspan></text>
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="3.2142856"
|
||||
y="152.00504"
|
||||
id="text5909"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan5911"
|
||||
x="3.2142856"
|
||||
y="152.00504">0</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 42.519685,60.236198 10.629921,0"
|
||||
id="path5913"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:0.63245553px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 92.125986,49.606277 14.173234,0"
|
||||
id="path4389-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
|
||||
d="m 102.75591,28.346435 0,21.259842 3.5433,-10.629927"
|
||||
id="path4391-4"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1;marker-end:none"
|
||||
d="m 102.75591,77.952734 0,-17.716536 3.5433,10.629916"
|
||||
id="path4575-9"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 102.75591,49.606277 0,10.629921"
|
||||
id="path4759-3"
|
||||
inkscape:connector-curvature="0" />
|
||||
<text
|
||||
xml:space="preserve"
|
||||
style="font-size:12px;font-style:normal;font-weight:normal;line-height:125%;letter-spacing:0px;word-spacing:0px;fill:#000000;fill-opacity:1;stroke:none;font-family:Sans"
|
||||
x="113.38583"
|
||||
y="60.236198"
|
||||
id="text4761-6"
|
||||
sodipodi:linespacing="125%"><tspan
|
||||
sodipodi:role="line"
|
||||
id="tspan4763-4"
|
||||
x="113.38583"
|
||||
y="60.236198">Ap</tspan></text>
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 88.582677,60.236198 17.716533,0"
|
||||
id="path5965"
|
||||
inkscape:connector-curvature="0" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 24.634124,93.775692 -10.629921,3.543307 10.629921,3.543311"
|
||||
id="path6381"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 74.240424,100.86231 84.870345,97.318999 74.240424,93.775692"
|
||||
id="path6383"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 38.807353,33.539472 42.35066,44.169393"
|
||||
id="path6761"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 45.893967,65.429236 42.35066,54.799314 38.807353,65.429236"
|
||||
id="path6763"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 14.004203,19.366243 10.460896,29.996165"
|
||||
id="path7141"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 14.004203,157.55522 10.629921,3.54331"
|
||||
id="path7519"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 84.870345,154.01191 10.629921,3.54331 -10.629921,3.54331"
|
||||
id="path7521"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 173.45302,143.38199 162.8231,146.9253"
|
||||
id="path7711"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 99.043573,54.799314 95.500266,65.429236"
|
||||
id="path7901"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="M 99.043573,44.169393 95.500266,33.539472"
|
||||
id="path8091"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 155.73649,44.169393 -3.54331,10.629921"
|
||||
id="path8657"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
<path
|
||||
style="fill:none;stroke:#000000;stroke-width:1px;stroke-linecap:butt;stroke-linejoin:miter;stroke-opacity:1"
|
||||
d="m 159.27979,97.318999 -3.5433,10.629921 -3.54331,-10.629921"
|
||||
id="path8659"
|
||||
inkscape:connector-curvature="0"
|
||||
transform="translate(3.7123325,5.4368782)" />
|
||||
</g>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="200" height="180"><g fill="none"><g stroke-width=".981"><path stroke="#000" d="M17.224 146.777V25.097l3.476 10.43M17.224 146.777h156.45l-10.43-3.477"/><path stroke="red" d="M17.224 59.858c6.362-6.317 9.682-10.816 17.383-10.43S46.46 59.774 51.99 59.858c5.528.084 7.875-9.782 17.383-10.43s14.846 5.098 17.383 10.43l17.383 86.914c.238-9.614 2.393-17.075 17.383-17.383 9.16.358 16.607 3.98 17.383 17.383 1-11.068 7.04-16.592 17.383-17.383"/></g><g stroke="#000"><path stroke-width=".981" d="M69.372 49.428h52.148"/><path stroke-width=".621" d="M34.607 49.428h13.906"/><g stroke-width=".981"><path d="M45.036 28.569v20.859l3.476-10.43M45.036 77.24V59.859M45.036 49.428v10.43"/></g></g></g><text xml:space="preserve" x="27.979" y="78.817" stroke-width=".981" font-family="sans-serif" font-size="11.774" letter-spacing="0" style="line-height:0%" transform="translate(-3.802 -5.053)" word-spacing="0"><tspan x="27.979" y="78.817" style="line-height:1.25">Rp</tspan></text><path fill="none" stroke="#000" stroke-width=".981" d="M86.755 59.858v45.195M17.224 101.577h69.53"/><text xml:space="preserve" x="48.496" y="98.885" stroke-width=".981" font-family="sans-serif" font-size="11.774" letter-spacing="0" style="line-height:0%" transform="translate(-3.802 -5.053)" word-spacing="0"><tspan x="48.496" y="98.885" style="line-height:1.25">Fc</tspan></text><g fill="none" stroke="#000" stroke-width=".981"><path d="M17.224 146.777v17.383M97.188 112.007v52.148M97.188 160.677H17.227l10.43-3.477"/></g><text xml:space="preserve" x="53.402" y="178.079" stroke-width=".981" font-family="sans-serif" font-size="11.774" letter-spacing="0" style="line-height:0%" transform="translate(-3.802 -5.053)" word-spacing="0"><tspan x="53.402" y="178.079" style="line-height:1.25">Fs</tspan></text><g fill="none" stroke="#000" stroke-width=".981"><path d="M69.372 49.428h90.39M97.188 112.007h62.578M156.288 112.007V49.429l3.476 10.43"/></g><g stroke-width=".981" font-family="sans-serif" font-size="11.774" letter-spacing="0" word-spacing="0"><text xml:space="preserve" x="166.236" y="90.825" style="line-height:0%" transform="translate(-3.802 -5.053)"><tspan x="166.236" y="90.825" style="line-height:1.25">As</tspan></text><text xml:space="preserve" x="21.026" y="19.716" style="line-height:0%" transform="translate(-3.802 -5.053)"><tspan x="21.026" y="19.716" style="line-height:1.25">K (dB)</tspan></text><text xml:space="preserve" x="167.988" y="170.019" style="line-height:0%" transform="translate(-3.802 -5.053)"><tspan x="167.988" y="170.019" style="line-height:1.25">F (Hz)</tspan></text><text xml:space="preserve" x="6.797" y="154.951" style="line-height:0%" transform="translate(-3.802 -5.053)"><tspan x="6.797" y="154.951" style="line-height:1.25">0</tspan></text></g><g fill="none" stroke="#000"><path stroke-width=".981" d="M41.56 59.858h10.43"/><path stroke-width=".621" d="M90.232 49.428h13.906"/><g stroke-width=".981"><path d="M100.658 28.569v20.859l3.476-10.43M100.658 77.24V59.859l3.476 10.43M100.658 49.428v10.43"/></g></g><text xml:space="preserve" x="114.893" y="64.911" stroke-width=".981" font-family="sans-serif" font-size="11.774" letter-spacing="0" style="line-height:0%" transform="translate(-3.802 -5.053)" word-spacing="0"><tspan x="114.893" y="64.911" style="line-height:1.25">Ap</tspan></text><g fill="none" stroke="#000" stroke-width=".981"><path d="M86.755 59.858h17.383M27.654 98.097l-10.43 3.476 10.43 3.477M76.325 105.057l10.43-3.477-10.43-3.476M41.56 38.999l3.476 10.43M48.513 70.288l-3.477-10.43-3.477 10.43M17.224 25.092l-3.477 10.43M17.224 160.677l10.43 3.476M86.755 157.197l10.43 3.476-10.43 3.477M173.668 146.777l-10.43 3.476M100.658 59.858l-3.477 10.43M100.658 49.428l-3.477-10.43M156.288 49.428l-3.477 10.43M159.758 101.577l-3.477 10.43-3.476-10.43"/></g></svg>
|
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 3.7 KiB |
Before Width: | Height: | Size: 14 KiB After Width: | Height: | Size: 6.6 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 6.7 KiB |
Before Width: | Height: | Size: 63 KiB After Width: | Height: | Size: 25 KiB |
Before Width: | Height: | Size: 52 KiB After Width: | Height: | Size: 21 KiB |
Before Width: | Height: | Size: 16 KiB After Width: | Height: | Size: 8.0 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 44 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 17 KiB |
Before Width: | Height: | Size: 37 KiB After Width: | Height: | Size: 15 KiB |
@ -89,7 +89,7 @@ int main(int argc, char *argv[])
|
||||
QString Lang = QucsSettings.Language;
|
||||
if(Lang.isEmpty())
|
||||
Lang = QString(QLocale::system().name());
|
||||
tor.load( QStringLiteral("qucs_") + Lang, LangDir);
|
||||
static_cast<void>(tor.load( QStringLiteral("qucs_") + Lang, LangDir));
|
||||
a.installTranslator( &tor );
|
||||
|
||||
QucsActiveFilter *w = new QucsActiveFilter();
|
||||
|
@ -222,8 +222,9 @@ QucsActiveFilter::QucsActiveFilter(QWidget *parent)
|
||||
QSize sz;
|
||||
QString s1 = ":/images/bitmaps/AFR.svg";
|
||||
imgAFR = new QSvgWidget(s1);
|
||||
imgAFR->setStyleSheet("background-color: white;");
|
||||
sz = gpbPar->size(); // take left box size as reference size
|
||||
sz *= 0.6;
|
||||
sz *= 0.75;
|
||||
imgAFR->setFixedSize(sz);
|
||||
vl1->addWidget(imgAFR);
|
||||
vl1->setAlignment(imgAFR, Qt::AlignHCenter);
|
||||
@ -234,6 +235,7 @@ QucsActiveFilter::QucsActiveFilter(QWidget *parent)
|
||||
gpbSCH->setLayout(vl2);
|
||||
s1 = ":/images/bitmaps/cauer.svg";
|
||||
sch_pic = new QSvgWidget(s1);
|
||||
sch_pic->setStyleSheet("background-color: white;");
|
||||
sz = gpbFunc->size(); // take lefbox size as reference size
|
||||
sz *= 0.95;
|
||||
sch_pic->setFixedSize(sz);
|
||||
|
@ -32,20 +32,14 @@ CONFIGURE_FILE (
|
||||
|
||||
INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
|
||||
|
||||
if(WITH_QT6)
|
||||
set(QT_VERSION_MAJOR 6)
|
||||
else()
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
endif()
|
||||
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
|
||||
include_directories(
|
||||
${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Gui_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}
|
||||
${Qt6Core_INCLUDE_DIRS}
|
||||
${Qt6Gui_INCLUDE_DIRS}
|
||||
${Qt6Widgets_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
set(QT_VERSION ${Qt${QT_VERSION_MAJOR}Core_VERSION})
|
||||
set(QT_VERSION ${Qt6Core_VERSION})
|
||||
|
||||
if (${QT_VERSION} VERSION_LESS "6.7.0")
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
@ -69,8 +63,9 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
|
||||
string(REGEX REPLACE "/W3" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
string(REGEX REPLACE "/W1" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
add_compile_options(/permissive- /Zc:__cplusplus /Zc:preprocessor /MP /vmg)
|
||||
add_link_options(/OPT:REF /OPT:ICF)
|
||||
else()
|
||||
add_compile_options(-w)
|
||||
endif()
|
||||
@ -86,13 +81,8 @@ SET( attenuator_moc_headers qucsattenuator.h )
|
||||
|
||||
SET(RESOURCES qucsattenuator.qrc)
|
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6)
|
||||
QT6_WRAP_CPP( attenuator_moc_sources ${attenuator_moc_headers} )
|
||||
QT6_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
else()
|
||||
QT5_WRAP_CPP( attenuator_moc_sources ${attenuator_moc_headers} )
|
||||
QT5_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
endif()
|
||||
|
||||
IF(APPLE)
|
||||
# set information on Info.plist file
|
||||
@ -117,7 +107,7 @@ ADD_EXECUTABLE( ${QUCS_NAME}attenuator MACOSX_BUNDLE WIN32
|
||||
${attenuator_moc_sources}
|
||||
${RESOURCES_SRCS} )
|
||||
|
||||
TARGET_LINK_LIBRARIES( ${QUCS_NAME}attenuator Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets )
|
||||
TARGET_LINK_LIBRARIES( ${QUCS_NAME}attenuator Qt6::Core Qt6::Gui Qt6::Widgets )
|
||||
SET_TARGET_PROPERTIES(${QUCS_NAME}attenuator PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
#INSTALL (TARGETS ${QUCS_NAME}attenuator DESTINATION bin)
|
||||
#
|
||||
|
@ -94,7 +94,7 @@ int main( int argc, char ** argv )
|
||||
QString lang = QucsSettings.Language;
|
||||
if(lang.isEmpty())
|
||||
lang = QString(QLocale::system().name());
|
||||
tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir);
|
||||
static_cast<void>(tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir));
|
||||
a.installTranslator( &tor );
|
||||
|
||||
QucsAttenuator *qucs = new QucsAttenuator();
|
||||
|
@ -97,6 +97,7 @@ QucsAttenuator::QucsAttenuator()
|
||||
topoGrid->addWidget(ComboTopology, 1,0,1,2);
|
||||
|
||||
pixTopology = new QLabel(TopoGroup);//====================Pixmap for Topology
|
||||
pixTopology->setStyleSheet("background-color: white;");
|
||||
pixTopology->setPixmap(QPixmap((":/bitmaps/att_pi.png")));
|
||||
topoGrid->addWidget(pixTopology,2,0,3,2);
|
||||
|
||||
|
@ -33,21 +33,15 @@ CONFIGURE_FILE (
|
||||
|
||||
INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
|
||||
|
||||
if(WITH_QT6)
|
||||
set(QT_VERSION_MAJOR 6)
|
||||
else()
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
endif()
|
||||
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets)
|
||||
include_directories(
|
||||
${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Gui_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}
|
||||
${Qt6Core_INCLUDE_DIRS}
|
||||
${Qt6Gui_INCLUDE_DIRS}
|
||||
${Qt6Widgets_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
|
||||
set(QT_VERSION ${Qt${QT_VERSION_MAJOR}Core_VERSION})
|
||||
set(QT_VERSION ${Qt6Core_VERSION})
|
||||
|
||||
if (${QT_VERSION} VERSION_LESS "6.7.0")
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
@ -71,8 +65,9 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
|
||||
string(REGEX REPLACE "/W3" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
string(REGEX REPLACE "/W1" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
add_compile_options(/permissive- /Zc:__cplusplus /Zc:preprocessor /MP /vmg)
|
||||
add_link_options(/OPT:REF /OPT:ICF)
|
||||
else()
|
||||
add_compile_options(-w)
|
||||
endif()
|
||||
@ -120,13 +115,8 @@ SET(QUCS-FILTER_MOC_HDRS
|
||||
|
||||
SET(RESOURCES qucsfilter.qrc)
|
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6)
|
||||
QT6_WRAP_CPP(QUCS-FILTER_MOC_SRCS ${QUCS-FILTER_MOC_HDRS})
|
||||
QT6_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
else()
|
||||
QT5_WRAP_CPP(QUCS-FILTER_MOC_SRCS ${QUCS-FILTER_MOC_HDRS})
|
||||
QT5_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
endif()
|
||||
|
||||
IF(APPLE)
|
||||
# set information on Info.plist file
|
||||
@ -152,7 +142,7 @@ ADD_EXECUTABLE(${QUCS_NAME}filter MACOSX_BUNDLE WIN32
|
||||
${QUCS-FILTER_MOC_SRCS}
|
||||
${RESOURCES_SRCS} )
|
||||
|
||||
TARGET_LINK_LIBRARIES(${QUCS_NAME}filter Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets)
|
||||
TARGET_LINK_LIBRARIES(${QUCS_NAME}filter Qt6::Core Qt6::Gui Qt6::Widgets)
|
||||
SET_TARGET_PROPERTIES(${QUCS_NAME}filter PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
|
||||
INSTALL(TARGETS ${QUCS_NAME}filter
|
||||
|
@ -102,7 +102,7 @@ int main(int argc, char *argv[])
|
||||
QString lang = QucsSettings.Language;
|
||||
if(lang.isEmpty())
|
||||
lang = QString(QLocale::system().name());
|
||||
tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir);
|
||||
static_cast<void>(tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir));
|
||||
a.installTranslator( &tor );
|
||||
|
||||
QucsFilter *qucs = new QucsFilter();
|
||||
|
@ -33,30 +33,15 @@ CONFIGURE_FILE (
|
||||
|
||||
INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
|
||||
|
||||
if(WITH_QT6)
|
||||
set(QT_VERSION_MAJOR 6)
|
||||
else()
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
endif()
|
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6)
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Svg SvgWidgets)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Widgets Svg SvgWidgets)
|
||||
include_directories(
|
||||
${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Svg_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}SvgWidgets_INCLUDE_DIRS}
|
||||
${Qt6Core_INCLUDE_DIRS}
|
||||
${Qt6Widgets_INCLUDE_DIRS}
|
||||
${Qt6Svg_INCLUDE_DIRS}
|
||||
${Qt6SvgWidgets_INCLUDE_DIRS}
|
||||
)
|
||||
else()
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Widgets Svg)
|
||||
include_directories(
|
||||
${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Svg_INCLUDE_DIRS}
|
||||
)
|
||||
endif()
|
||||
|
||||
set(QT_VERSION ${Qt${QT_VERSION_MAJOR}Core_VERSION})
|
||||
set(QT_VERSION ${Qt6Core_VERSION})
|
||||
|
||||
if (${QT_VERSION} VERSION_LESS "6.7.0")
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
@ -80,8 +65,9 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
|
||||
string(REGEX REPLACE "/W3" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
string(REGEX REPLACE "/W1" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
add_compile_options(/permissive- /Zc:__cplusplus /Zc:preprocessor /MP /vmg)
|
||||
add_link_options(/OPT:REF /OPT:ICF)
|
||||
else()
|
||||
add_compile_options(-w)
|
||||
endif()
|
||||
@ -103,13 +89,9 @@ SET(QUCS-POWCOMB_MOC_HDRS
|
||||
)
|
||||
|
||||
SET(RESOURCES qucspowercombining.qrc)
|
||||
IF(QT_VERSION_MAJOR EQUAL 6)
|
||||
|
||||
QT6_WRAP_CPP(QUCS-POWCOMB_MOC_SRCS ${QUCS-POWCOMB_MOC_HDRS})
|
||||
QT6_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
ELSE()
|
||||
QT5_WRAP_CPP(QUCS-POWCOMB_MOC_SRCS ${QUCS-POWCOMB_MOC_HDRS})
|
||||
QT5_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
ENDIF()
|
||||
|
||||
IF(APPLE)
|
||||
# set information on Info.plist file
|
||||
@ -135,13 +117,8 @@ ADD_EXECUTABLE(${QUCS_NAME}powercombining MACOSX_BUNDLE WIN32
|
||||
${QUCS-POWCOMB_MOC_SRCS}
|
||||
${RESOURCES_SRCS} )
|
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6)
|
||||
TARGET_LINK_LIBRARIES(${QUCS_NAME}powercombining Qt${QT_VERSION_MAJOR}::Core
|
||||
Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Svg Qt${QT_VERSION_MAJOR}::SvgWidgets)
|
||||
else()
|
||||
TARGET_LINK_LIBRARIES(${QUCS_NAME}powercombining Qt${QT_VERSION_MAJOR}::Core
|
||||
Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Svg )
|
||||
endif()
|
||||
TARGET_LINK_LIBRARIES(${QUCS_NAME}powercombining Qt6::Core
|
||||
Qt6::Widgets Qt6::Svg Qt6::SvgWidgets)
|
||||
|
||||
SET_TARGET_PROPERTIES(${QUCS_NAME}powercombining PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
|
||||
|
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 6.2 KiB |
Before Width: | Height: | Size: 20 KiB After Width: | Height: | Size: 9.5 KiB |
Before Width: | Height: | Size: 18 KiB After Width: | Height: | Size: 6.3 KiB |
Before Width: | Height: | Size: 22 KiB After Width: | Height: | Size: 9.3 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 10 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 18 KiB |
Before Width: | Height: | Size: 29 KiB After Width: | Height: | Size: 9.9 KiB |
Before Width: | Height: | Size: 35 KiB After Width: | Height: | Size: 16 KiB |
Before Width: | Height: | Size: 65 KiB After Width: | Height: | Size: 28 KiB |
Before Width: | Height: | Size: 43 KiB After Width: | Height: | Size: 13 KiB |
Before Width: | Height: | Size: 47 KiB After Width: | Height: | Size: 22 KiB |
@ -1,350 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="500"
|
||||
height="380"
|
||||
version="1.2"
|
||||
id="svg2"
|
||||
inkscape:version="0.48.4 r9939"
|
||||
sodipodi:docname="Tee.svg">
|
||||
<metadata
|
||||
id="metadata122">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Qt Svg Document</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="713"
|
||||
id="namedview120"
|
||||
showgrid="false"
|
||||
inkscape:zoom="0.76725193"
|
||||
inkscape:cx="120.98216"
|
||||
inkscape:cy="127.12482"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" />
|
||||
<title
|
||||
id="title4">Qt Svg Document</title>
|
||||
<desc
|
||||
id="desc6">Generated with Qt</desc>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g16"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline18"
|
||||
points="15,79 75,79 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline20"
|
||||
points="17,86 73,86 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline22"
|
||||
points="17,93 24,86 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline24"
|
||||
points="24,93 31,86 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline26"
|
||||
points="31,93 38,86 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline28"
|
||||
points="38,93 45,86 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline30"
|
||||
points="45,93 52,86 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline32"
|
||||
points="52,93 59,86 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline34"
|
||||
points="59,93 66,86 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline36"
|
||||
points="66,93 73,86 "
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g38"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)" />
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g40"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline42"
|
||||
points="115,139 175,139 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline44"
|
||||
points="117,146 173,146 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline46"
|
||||
points="117,153 124,146 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline48"
|
||||
points="124,153 131,146 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline50"
|
||||
points="131,153 138,146 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline52"
|
||||
points="138,153 145,146 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline54"
|
||||
points="145,153 152,146 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline56"
|
||||
points="152,153 159,146 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline58"
|
||||
points="159,153 166,146 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline60"
|
||||
points="166,153 173,146 "
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g62"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)" />
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g64"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline66"
|
||||
points="115,19 175,19 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline68"
|
||||
points="117,26 173,26 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline70"
|
||||
points="117,33 124,26 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline72"
|
||||
points="124,33 131,26 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline74"
|
||||
points="131,33 138,26 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline76"
|
||||
points="138,33 145,26 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline78"
|
||||
points="145,33 152,26 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline80"
|
||||
points="152,33 159,26 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline82"
|
||||
points="159,33 166,26 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline84"
|
||||
points="166,33 173,26 "
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g86"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)" />
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g88"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline90"
|
||||
points="75,79 75,139 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline92"
|
||||
points="75,19 75,79 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline94"
|
||||
points="75,139 115,139 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline96"
|
||||
points="75,19 115,19 "
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g98"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path100"
|
||||
d="m 19,79 c 0,2.2091 -1.7909,4 -4,4 -2.2091,0 -4,-1.7909 -4,-4 0,-2.2091 1.7909,-4 4,-4 2.2091,0 4,1.7909 4,4"
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g102"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
style="fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path104"
|
||||
d="m 78,79 c 0,1.6569 -1.3431,3 -3,3 -1.6569,0 -3,-1.3431 -3,-3 0,-1.6569 1.3431,-3 3,-3 1.6569,0 3,1.3431 3,3"
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:#000080;fill-opacity:1;stroke:none;font-family:Helvetica"
|
||||
id="g106"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
style="fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path108"
|
||||
d="m 113,17 4,0 0,4 -4,0 0,-4"
|
||||
vector-effect="non-scaling-stroke" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:#000080;fill-opacity:1;stroke:none;font-family:Helvetica"
|
||||
id="g110"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
style="fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path112"
|
||||
d="m 113,137 4,0 0,4 -4,0 0,-4"
|
||||
vector-effect="non-scaling-stroke" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g114"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path116"
|
||||
d="m 179,139 c 0,2.209 -1.791,4 -4,4 -2.209,0 -4,-1.791 -4,-4 0,-2.209 1.791,-4 4,-4 2.209,0 4,1.791 4,4"
|
||||
vector-effect="none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path118"
|
||||
d="m 179,19 c 0,2.2091 -1.791,4 -4,4 -2.209,0 -4,-1.7909 -4,-4 0,-2.2091 1.791,-4 4,-4 2.209,0 4,1.7909 4,4"
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="380" version="1.2"><desc>Generated with Qt</desc><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:navy;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"><path d="M15 79h60M17 86h56M17 93l7-7M24 93l7-7M31 93l7-7M38 93l7-7M45 93l7-7M52 93l7-7M59 93l7-7M66 93l7-7" style="fill:none" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)"/></g><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:navy;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"><path d="M115 139h60M117 146h56M117 153l7-7M124 153l7-7M131 153l7-7M138 153l7-7M145 153l7-7M152 153l7-7M159 153l7-7M166 153l7-7" style="fill:none" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)"/></g><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:navy;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"><path d="M115 19h60M117 26h56M117 33l7-7M124 33l7-7M131 33l7-7M138 33l7-7M145 33l7-7M152 33l7-7M159 33l7-7M166 33l7-7" style="fill:none" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)"/></g><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:navy;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"><path d="M75 79v60M75 19v60M75 139h40M75 19h40" style="fill:none" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)"/></g><path d="M19 79a4 4 0 1 1-8 0 4 4 0 0 1 8 0" font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:red;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)"/><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:navy;fill-opacity:1;stroke:navy;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"><path d="M78 79a3 3 0 1 1-6 0 3 3 0 0 1 6 0" style="fill-rule:evenodd" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)"/></g><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:navy;fill-opacity:1;stroke:none;font-family:Helvetica"><path d="M113 17h4v4h-4z" style="fill-rule:evenodd" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)" vector-effect="non-scaling-stroke"/></g><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:navy;fill-opacity:1;stroke:none;font-family:Helvetica"><path d="M113 137h4v4h-4z" style="fill-rule:evenodd" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)" vector-effect="non-scaling-stroke"/></g><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:red;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"><path stroke-width="1.96628" d="M400.188 288.534a7.865 7.865 0 1 1-15.731 0 7.865 7.865 0 0 1 15.731 0M400.188 52.58a7.865 7.865 0 1 1-15.73 0 7.865 7.865 0 0 1 15.73 0"/></g></svg>
|
Before Width: | Height: | Size: 11 KiB After Width: | Height: | Size: 3.3 KiB |
@ -1,284 +1 @@
|
||||
<?xml version="1.0" encoding="UTF-8" standalone="no"?>
|
||||
<svg
|
||||
xmlns:dc="http://purl.org/dc/elements/1.1/"
|
||||
xmlns:cc="http://creativecommons.org/ns#"
|
||||
xmlns:rdf="http://www.w3.org/1999/02/22-rdf-syntax-ns#"
|
||||
xmlns:svg="http://www.w3.org/2000/svg"
|
||||
xmlns="http://www.w3.org/2000/svg"
|
||||
xmlns:sodipodi="http://sodipodi.sourceforge.net/DTD/sodipodi-0.dtd"
|
||||
xmlns:inkscape="http://www.inkscape.org/namespaces/inkscape"
|
||||
width="500"
|
||||
height="380"
|
||||
version="1.2"
|
||||
id="svg2"
|
||||
inkscape:version="0.91 r13725"
|
||||
sodipodi:docname="Tee_microstrip.svg">
|
||||
<metadata
|
||||
id="metadata122">
|
||||
<rdf:RDF>
|
||||
<cc:Work
|
||||
rdf:about="">
|
||||
<dc:format>image/svg+xml</dc:format>
|
||||
<dc:type
|
||||
rdf:resource="http://purl.org/dc/dcmitype/StillImage" />
|
||||
<dc:title>Qt Svg Document</dc:title>
|
||||
</cc:Work>
|
||||
</rdf:RDF>
|
||||
</metadata>
|
||||
<sodipodi:namedview
|
||||
pagecolor="#ffffff"
|
||||
bordercolor="#666666"
|
||||
borderopacity="1"
|
||||
objecttolerance="10"
|
||||
gridtolerance="10"
|
||||
guidetolerance="10"
|
||||
inkscape:pageopacity="0"
|
||||
inkscape:pageshadow="2"
|
||||
inkscape:window-width="1366"
|
||||
inkscape:window-height="704"
|
||||
id="namedview120"
|
||||
showgrid="false"
|
||||
inkscape:zoom="1.0850581"
|
||||
inkscape:cx="160.44055"
|
||||
inkscape:cy="272.4927"
|
||||
inkscape:window-x="0"
|
||||
inkscape:window-y="27"
|
||||
inkscape:window-maximized="1"
|
||||
inkscape:current-layer="svg2" />
|
||||
<title
|
||||
id="title4">Qt Svg Document</title>
|
||||
<desc
|
||||
id="desc6">Generated with Qt</desc>
|
||||
<defs
|
||||
id="defs8" />
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g38"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)" />
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g62"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)" />
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g86"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)" />
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#000080;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g88"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline90"
|
||||
points="75,79 75,139 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline92"
|
||||
points="75,19 75,79 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline94"
|
||||
points="75,139 115,139 "
|
||||
vector-effect="none" />
|
||||
<polyline
|
||||
style="fill:none"
|
||||
id="polyline96"
|
||||
points="75,19 115,19 "
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g98"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path100"
|
||||
d="m 19,79 c 0,2.2091 -1.7909,4 -4,4 -2.2091,0 -4,-1.7909 -4,-4 0,-2.2091 1.7909,-4 4,-4 2.2091,0 4,1.7909 4,4"
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:#000080;fill-opacity:1;stroke:#000080;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g102"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
style="fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path104"
|
||||
d="m 78,79 c 0,1.6569 -1.3431,3 -3,3 -1.6569,0 -3,-1.3431 -3,-3 0,-1.6569 1.3431,-3 3,-3 1.6569,0 3,1.3431 3,3"
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:#000080;fill-opacity:1;stroke:none;font-family:Helvetica"
|
||||
id="g106"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
style="fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path108"
|
||||
d="m 113,17 4,0 0,4 -4,0 0,-4"
|
||||
vector-effect="non-scaling-stroke" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:#000080;fill-opacity:1;stroke:none;font-family:Helvetica"
|
||||
id="g110"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
style="fill-rule:evenodd"
|
||||
inkscape:connector-curvature="0"
|
||||
id="path112"
|
||||
d="m 113,137 4,0 0,4 -4,0 0,-4"
|
||||
vector-effect="non-scaling-stroke" />
|
||||
</g>
|
||||
<g
|
||||
style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:#ff0000;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"
|
||||
id="g114"
|
||||
font-style="normal"
|
||||
font-weight="400"
|
||||
font-size="12"
|
||||
transform="matrix(1.9662788,0,0,1.9662788,48.224056,15.221246)">
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path116"
|
||||
d="m 179,139 c 0,2.209 -1.791,4 -4,4 -2.209,0 -4,-1.791 -4,-4 0,-2.209 1.791,-4 4,-4 2.209,0 4,1.791 4,4"
|
||||
vector-effect="none" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path118"
|
||||
d="m 179,19 c 0,2.2091 -1.791,4 -4,4 -2.209,0 -4,-1.7909 -4,-4 0,-2.2091 1.791,-4 4,-4 2.209,0 4,1.7909 4,4"
|
||||
vector-effect="none" />
|
||||
</g>
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path24-5"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 270.85493,288.47059 23.85548,0.0204"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path26-3"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 369.03738,288.70768 22.70256,-0.007"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path28-5"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
d="m 306.33419,270.27301 71.42981,0.51756"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path30-6"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 288.30259,307.05698 68.62544,-0.1774"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32-2"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 305.15302,271.02651 -19.54354,35.3286"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path34-9"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 377.02492,273.41259 -18.85113,32.73887"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path24-5-6"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 269.73951,52.596123 23.85548,0.0204"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path26-3-7"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 367.92196,52.833213 22.70256,-0.007"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path28-5-5"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
d="m 305.21877,34.398542 71.42981,0.51756"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path30-6-3"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 287.18717,71.182516 68.62544,-0.1774"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32-2-5"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 304.0376,35.152042 284.49406,70.480646"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path34-9-6"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="M 375.9095,37.538122 357.05837,70.276996"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path24-5-2"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 78.638431,170.54631 23.855479,0.0204"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path26-3-9"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 176.82088,170.7834 22.70256,-0.007"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path28-5-1"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"
|
||||
d="m 114.11769,152.34873 71.42981,0.51756"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path30-6-2"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 96.086091,189.1327 68.625439,-0.1774"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path32-2-7"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 112.93652,153.10223 -19.543539,35.3286"
|
||||
sodipodi:nodetypes="cc" />
|
||||
<path
|
||||
inkscape:connector-curvature="0"
|
||||
id="path34-9-0"
|
||||
style="fill:none;stroke:#000080;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"
|
||||
d="m 184.80842,155.48831 -18.85113,32.73887"
|
||||
sodipodi:nodetypes="cc" />
|
||||
</svg>
|
||||
<svg xmlns="http://www.w3.org/2000/svg" width="500" height="380" version="1.2"><desc>Generated with Qt</desc><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:navy;stroke-width:2;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"><path d="M75 79v60M75 19v60M75 139h40M75 19h40" style="fill:none" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)"/></g><path d="M19 79a4 4 0 1 1-8 0 4 4 0 0 1 8 0" font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:red;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)"/><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:navy;fill-opacity:1;stroke:navy;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"><path d="M78 79a3 3 0 1 1-6 0 3 3 0 0 1 6 0" style="fill-rule:evenodd" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)"/></g><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:navy;fill-opacity:1;stroke:none;font-family:Helvetica"><path d="M113 17h4v4h-4z" style="fill-rule:evenodd" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)" vector-effect="non-scaling-stroke"/></g><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:navy;fill-opacity:1;stroke:none;font-family:Helvetica"><path d="M113 137h4v4h-4z" style="fill-rule:evenodd" transform="matrix(1.96628 0 0 1.96628 48.224 15.221)" vector-effect="non-scaling-stroke"/></g><g font-size="12" font-weight="400" style="font-size:12px;font-style:normal;font-weight:400;fill:none;stroke:red;stroke-width:1;stroke-linecap:square;stroke-linejoin:bevel;stroke-opacity:1;font-family:Helvetica"><path stroke-width="1.96628" d="M400.188 288.534a7.865 7.865 0 1 1-15.731 0 7.865 7.865 0 0 1 15.731 0M400.188 52.58a7.865 7.865 0 1 1-15.73 0 7.865 7.865 0 0 1 15.73 0"/></g><path d="m270.855 288.47 23.855.021M369.037 288.708l22.703-.007" style="fill:none;stroke:navy;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/><path d="m306.334 270.273 71.43.518" style="fill:none;stroke:navy;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"/><path d="m288.303 307.057 68.625-.177M305.153 271.027l-19.544 35.328M377.025 273.413l-18.851 32.738M269.74 52.596l23.855.02M367.922 52.833l22.703-.007" style="fill:none;stroke:navy;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/><path d="m305.219 34.399 71.43.517" style="fill:none;stroke:navy;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"/><path d="m287.187 71.183 68.626-.178M304.038 35.152l-19.544 35.329M375.91 37.538l-18.852 32.739M78.638 170.546l23.856.02M176.82 170.783l22.703-.007" style="fill:none;stroke:navy;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/><path d="m114.118 152.349 71.43.517" style="fill:none;stroke:navy;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1;image-rendering:auto"/><path d="m96.086 189.133 68.626-.178M112.937 153.102l-19.544 35.329M184.808 155.488l-18.85 32.74" style="fill:none;stroke:navy;stroke-width:3.9000001;stroke-linecap:square;stroke-linejoin:bevel;stroke-miterlimit:10;stroke-dasharray:none;stroke-opacity:1"/></svg>
|
Before Width: | Height: | Size: 12 KiB After Width: | Height: | Size: 3.8 KiB |
Before Width: | Height: | Size: 40 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 46 KiB After Width: | Height: | Size: 23 KiB |
Before Width: | Height: | Size: 45 KiB After Width: | Height: | Size: 15 KiB |
Before Width: | Height: | Size: 53 KiB After Width: | Height: | Size: 26 KiB |
Before Width: | Height: | Size: 15 KiB After Width: | Height: | Size: 14 KiB |
Before Width: | Height: | Size: 19 KiB After Width: | Height: | Size: 6.4 KiB |
Before Width: | Height: | Size: 21 KiB After Width: | Height: | Size: 9.7 KiB |
@ -74,7 +74,7 @@ int main(int argc, char *argv[])
|
||||
QString lang = QucsSettings.Language;
|
||||
if(lang.isEmpty())
|
||||
lang = QString(QLocale::system().name());
|
||||
tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir);
|
||||
static_cast<void>(tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir));
|
||||
app.installTranslator( &tor );
|
||||
|
||||
QucsPowerCombiningTool *PowerCombiningTool = new QucsPowerCombiningTool();
|
||||
|
@ -280,6 +280,7 @@ QucsPowerCombiningTool::QucsPowerCombiningTool()
|
||||
QString s1 = ":/bitmaps/Wilkinson_idealTL.svg";
|
||||
QGridLayout * imgLayout = new QGridLayout();
|
||||
imgWidget = new QSvgWidget(s1);
|
||||
imgWidget->setStyleSheet("background-color: white;");
|
||||
sz = imgWidget->size();
|
||||
imgWidget->setFixedSize(.6*sz);
|
||||
imgLayout->addWidget(imgWidget);
|
||||
|
@ -6,9 +6,14 @@ SET(QUCS_NAME "qucs-s")
|
||||
|
||||
# use top VERSION file
|
||||
file (STRINGS ${PROJECT_SOURCE_DIR}/../VERSION QUCS_VERSION)
|
||||
message(STATUS "Configuring ${PROJECT_NAME} (GUI): VERSION ${QUCS_VERSION}")
|
||||
|
||||
set(PROJECT_VERSION "${QUCS_VERSION}")
|
||||
if(DEFINED CI_VERSION)
|
||||
set(PROJECT_VERSION "${CI_VERSION}")
|
||||
else()
|
||||
set(PROJECT_VERSION "${QUCS_VERSION}")
|
||||
endif()
|
||||
|
||||
message(STATUS "Configuring ${PROJECT_NAME} (GUI): VERSION ${PROJECT_VERSION}")
|
||||
|
||||
set(PROJECT_VENDOR "Qucs-S team. This program is licensed under the GNU GPL")
|
||||
set(PROJECT_COPYRIGHT_YEAR "2024")
|
||||
@ -27,50 +32,56 @@ CONFIGURE_FILE (
|
||||
|
||||
INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
|
||||
|
||||
if(WITH_QT6)
|
||||
set(QT_VERSION_MAJOR 6)
|
||||
else()
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
endif()
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets Charts)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Charts)
|
||||
include_directories(
|
||||
${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Gui_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}
|
||||
${Qt6Core_INCLUDE_DIRS}
|
||||
${Qt6Gui_INCLUDE_DIRS}
|
||||
${Qt6Widgets_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
|
||||
IF(QT_VERSION_MAJOR EQUAL 6)
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
ELSE()
|
||||
set(CMAKE_CXX_STANDARD 11)
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
ENDIF()
|
||||
|
||||
if (MSVC)
|
||||
add_compile_options(/Zc:__cplusplus /permissive- /MP /Zc:preprocessor)
|
||||
if (${QT_VERSION} VERSION_LESS "6.7.0")
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
else()
|
||||
# additional warnings
|
||||
add_compile_options(-Wall -Wextra)
|
||||
set(CMAKE_CXX_STANDARD 20)
|
||||
endif()
|
||||
set(CMAKE_CXX_STANDARD_REQUIRED ON)
|
||||
set(CMAKE_CXX_EXTENSIONS OFF)
|
||||
|
||||
if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
|
||||
add_compile_options(/permissive- /Zc:__cplusplus /Zc:preprocessor /MP /Od /vmg)
|
||||
add_compile_options(/wd4244 /wd4267 /wd4312)
|
||||
else()
|
||||
add_compile_options(-Wall -Wextra -O0 -g)
|
||||
if (CMAKE_CXX_COMPILER_ID MATCHES "^AppleClang$|^Clang$")
|
||||
add_compile_options(-Wno-ignored-attributes)
|
||||
endif()
|
||||
endif()
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
|
||||
string(REGEX REPLACE "/W1" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
add_compile_options(/permissive- /Zc:__cplusplus /Zc:preprocessor /MP /vmg)
|
||||
add_link_options(/OPT:REF /OPT:ICF)
|
||||
else()
|
||||
add_compile_options(-w)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ADD_DEFINITIONS(${QT_DEFINITIONS})
|
||||
|
||||
#ADD_SUBDIRECTORY( bitmaps ) -> added as resources
|
||||
|
||||
SET( spar_viewer_sources main.cpp qucs-s-spar-viewer.cpp)
|
||||
SET( spar_viewer_sources main.cpp qucs-s-spar-viewer.cpp codeeditor.cpp)
|
||||
|
||||
SET( spar_viewer_moc_headers qucs-s-spar-viewer.h)
|
||||
SET( spar_viewer_moc_headers qucs-s-spar-viewer.h codeeditor.h)
|
||||
|
||||
SET(RESOURCES qucs-s-spar-viewer.qrc)
|
||||
|
||||
if(QT_VERSION_MAJOR EQUAL 6)
|
||||
QT6_WRAP_CPP( spar_viewer_moc_sources ${spar_viewer_moc_headers} )
|
||||
QT6_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
else()
|
||||
QT5_WRAP_CPP( spar_viewer_moc_sources ${spar_viewer_moc_headers} )
|
||||
QT5_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
endif()
|
||||
|
||||
IF(APPLE)
|
||||
# set information on Info.plist file
|
||||
@ -93,9 +104,11 @@ ENDIF(APPLE)
|
||||
ADD_EXECUTABLE( ${QUCS_NAME}spar-viewer MACOSX_BUNDLE WIN32
|
||||
${spar_viewer_sources}
|
||||
${spar_viewer_moc_sources}
|
||||
${RESOURCES_SRCS} )
|
||||
${RESOURCES_SRCS}
|
||||
codeeditor.cpp
|
||||
codeeditor.h )
|
||||
|
||||
TARGET_LINK_LIBRARIES( ${QUCS_NAME}spar-viewer Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets Qt${QT_VERSION_MAJOR}::Charts )
|
||||
TARGET_LINK_LIBRARIES( ${QUCS_NAME}spar-viewer Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Charts )
|
||||
SET_TARGET_PROPERTIES(${QUCS_NAME}spar-viewer PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
#INSTALL (TARGETS ${QUCS_NAME}spar-viewer DESTINATION bin)
|
||||
#
|
||||
|
187
qucs-s-spar-viewer/codeeditor.cpp
Normal file
@ -0,0 +1,187 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#include "codeeditor.h"
|
||||
|
||||
#include <QPainter>
|
||||
#include <QTextBlock>
|
||||
|
||||
//![constructor]
|
||||
|
||||
CodeEditor::CodeEditor(QWidget *parent) : QPlainTextEdit(parent)
|
||||
{
|
||||
lineNumberArea = new LineNumberArea(this);
|
||||
|
||||
connect(this, &CodeEditor::blockCountChanged, this, &CodeEditor::updateLineNumberAreaWidth);
|
||||
connect(this, &CodeEditor::updateRequest, this, &CodeEditor::updateLineNumberArea);
|
||||
connect(this, &CodeEditor::cursorPositionChanged, this, &CodeEditor::highlightCurrentLine);
|
||||
|
||||
updateLineNumberAreaWidth(0);
|
||||
highlightCurrentLine();
|
||||
}
|
||||
|
||||
//![constructor]
|
||||
|
||||
//![extraAreaWidth]
|
||||
|
||||
int CodeEditor::lineNumberAreaWidth()
|
||||
{
|
||||
int digits = 1;
|
||||
int max = qMax(1, blockCount());
|
||||
while (max >= 10) {
|
||||
max /= 10;
|
||||
++digits;
|
||||
}
|
||||
|
||||
int space = 3 + fontMetrics().horizontalAdvance(QLatin1Char('9')) * digits;
|
||||
|
||||
return space;
|
||||
}
|
||||
|
||||
//![extraAreaWidth]
|
||||
|
||||
//![slotUpdateExtraAreaWidth]
|
||||
|
||||
void CodeEditor::updateLineNumberAreaWidth(int /* newBlockCount */)
|
||||
{
|
||||
setViewportMargins(lineNumberAreaWidth(), 0, 0, 0);
|
||||
}
|
||||
|
||||
//![slotUpdateExtraAreaWidth]
|
||||
|
||||
//![slotUpdateRequest]
|
||||
|
||||
void CodeEditor::updateLineNumberArea(const QRect &rect, int dy)
|
||||
{
|
||||
if (dy){
|
||||
lineNumberArea->scroll(0, dy);
|
||||
} else
|
||||
lineNumberArea->update(0, rect.y(), lineNumberArea->width(), rect.height());
|
||||
|
||||
if (rect.contains(viewport()->rect())){
|
||||
updateLineNumberAreaWidth(0);
|
||||
}
|
||||
}
|
||||
|
||||
//![slotUpdateRequest]
|
||||
|
||||
//![resizeEvent]
|
||||
|
||||
void CodeEditor::resizeEvent(QResizeEvent *e)
|
||||
{
|
||||
QPlainTextEdit::resizeEvent(e);
|
||||
|
||||
QRect cr = contentsRect();
|
||||
lineNumberArea->setGeometry(QRect(cr.left(), cr.top(), lineNumberAreaWidth(), cr.height()));
|
||||
}
|
||||
|
||||
//![resizeEvent]
|
||||
|
||||
//![cursorPositionChanged]
|
||||
|
||||
void CodeEditor::highlightCurrentLine()
|
||||
{
|
||||
QList<QTextEdit::ExtraSelection> extraSelections;
|
||||
|
||||
if (!isReadOnly()) {
|
||||
QTextEdit::ExtraSelection selection;
|
||||
|
||||
QColor lineColor = QColor(Qt::yellow).lighter(160);
|
||||
|
||||
selection.format.setBackground(lineColor);
|
||||
selection.format.setProperty(QTextFormat::FullWidthSelection, true);
|
||||
selection.cursor = textCursor();
|
||||
selection.cursor.clearSelection();
|
||||
extraSelections.append(selection);
|
||||
}
|
||||
|
||||
setExtraSelections(extraSelections);
|
||||
}
|
||||
|
||||
//![cursorPositionChanged]
|
||||
|
||||
//![extraAreaPaintEvent_0]
|
||||
|
||||
void CodeEditor::lineNumberAreaPaintEvent(QPaintEvent *event)
|
||||
{
|
||||
QPainter painter(lineNumberArea);
|
||||
painter.fillRect(event->rect(), Qt::lightGray);
|
||||
|
||||
//![extraAreaPaintEvent_0]
|
||||
|
||||
//![extraAreaPaintEvent_1]
|
||||
QTextBlock block = firstVisibleBlock();
|
||||
int blockNumber = block.blockNumber();
|
||||
int top = qRound(blockBoundingGeometry(block).translated(contentOffset()).top());
|
||||
int bottom = top + qRound(blockBoundingRect(block).height());
|
||||
//![extraAreaPaintEvent_1]
|
||||
|
||||
//![extraAreaPaintEvent_2]
|
||||
while (block.isValid() && top <= event->rect().bottom()) {
|
||||
if (block.isVisible() && bottom >= event->rect().top()) {
|
||||
QString number = QString::number(blockNumber + 1);
|
||||
painter.setPen(Qt::black);
|
||||
painter.drawText(0, top, lineNumberArea->width(), fontMetrics().height(),
|
||||
Qt::AlignRight, number);
|
||||
}
|
||||
|
||||
block = block.next();
|
||||
top = bottom;
|
||||
bottom = top + qRound(blockBoundingRect(block).height());
|
||||
++blockNumber;
|
||||
}
|
||||
}
|
||||
|
||||
void CodeEditor::loadText(const QString& text)
|
||||
{
|
||||
setPlainText(text);
|
||||
}
|
||||
//![extraAreaPaintEvent_2]
|
||||
|
119
qucs-s-spar-viewer/codeeditor.h
Normal file
@ -0,0 +1,119 @@
|
||||
/****************************************************************************
|
||||
**
|
||||
** Copyright (C) 2016 The Qt Company Ltd.
|
||||
** Contact: https://www.qt.io/licensing/
|
||||
**
|
||||
** This file is part of the examples of the Qt Toolkit.
|
||||
**
|
||||
** $QT_BEGIN_LICENSE:BSD$
|
||||
** Commercial License Usage
|
||||
** Licensees holding valid commercial Qt licenses may use this file in
|
||||
** accordance with the commercial license agreement provided with the
|
||||
** Software or, alternatively, in accordance with the terms contained in
|
||||
** a written agreement between you and The Qt Company. For licensing terms
|
||||
** and conditions see https://www.qt.io/terms-conditions. For further
|
||||
** information use the contact form at https://www.qt.io/contact-us.
|
||||
**
|
||||
** BSD License Usage
|
||||
** Alternatively, you may use this file under the terms of the BSD license
|
||||
** as follows:
|
||||
**
|
||||
** "Redistribution and use in source and binary forms, with or without
|
||||
** modification, are permitted provided that the following conditions are
|
||||
** met:
|
||||
** * Redistributions of source code must retain the above copyright
|
||||
** notice, this list of conditions and the following disclaimer.
|
||||
** * Redistributions in binary form must reproduce the above copyright
|
||||
** notice, this list of conditions and the following disclaimer in
|
||||
** the documentation and/or other materials provided with the
|
||||
** distribution.
|
||||
** * Neither the name of The Qt Company Ltd nor the names of its
|
||||
** contributors may be used to endorse or promote products derived
|
||||
** from this software without specific prior written permission.
|
||||
**
|
||||
**
|
||||
** THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS
|
||||
** "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT
|
||||
** LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR
|
||||
** A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT
|
||||
** OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
|
||||
** SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
|
||||
** LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE,
|
||||
** DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY
|
||||
** THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
|
||||
** (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE
|
||||
** OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE."
|
||||
**
|
||||
** $QT_END_LICENSE$
|
||||
**
|
||||
****************************************************************************/
|
||||
|
||||
#ifndef CODEEDITOR_H
|
||||
#define CODEEDITOR_H
|
||||
|
||||
#include <QPlainTextEdit>
|
||||
|
||||
QT_BEGIN_NAMESPACE
|
||||
class QPaintEvent;
|
||||
class QResizeEvent;
|
||||
class QSize;
|
||||
class QWidget;
|
||||
QT_END_NAMESPACE
|
||||
|
||||
class LineNumberArea;
|
||||
|
||||
//![codeeditordefinition]
|
||||
|
||||
class CodeEditor : public QPlainTextEdit
|
||||
{
|
||||
Q_OBJECT
|
||||
|
||||
public:
|
||||
CodeEditor(QWidget *parent = nullptr);
|
||||
|
||||
void lineNumberAreaPaintEvent(QPaintEvent *event);
|
||||
int lineNumberAreaWidth();
|
||||
QString getText() const { return toPlainText(); }
|
||||
void loadText(const QString& text);
|
||||
|
||||
|
||||
|
||||
protected:
|
||||
void resizeEvent(QResizeEvent *event) override;
|
||||
|
||||
private slots:
|
||||
void updateLineNumberAreaWidth(int newBlockCount);
|
||||
void highlightCurrentLine();
|
||||
void updateLineNumberArea(const QRect &rect, int dy);
|
||||
|
||||
private:
|
||||
QWidget *lineNumberArea;
|
||||
};
|
||||
|
||||
//![codeeditordefinition]
|
||||
//![extraarea]
|
||||
|
||||
class LineNumberArea : public QWidget
|
||||
{
|
||||
public:
|
||||
LineNumberArea(CodeEditor *editor) : QWidget(editor), codeEditor(editor)
|
||||
{}
|
||||
|
||||
QSize sizeHint() const override
|
||||
{
|
||||
return QSize(codeEditor->lineNumberAreaWidth(), 0);
|
||||
}
|
||||
|
||||
protected:
|
||||
void paintEvent(QPaintEvent *event) override
|
||||
{
|
||||
codeEditor->lineNumberAreaPaintEvent(event);
|
||||
}
|
||||
|
||||
private:
|
||||
CodeEditor *codeEditor;
|
||||
};
|
||||
|
||||
//![extraarea]
|
||||
|
||||
#endif
|
@ -99,7 +99,7 @@ int main( int argc, char ** argv )
|
||||
QString lang = QucsSettings.Language;
|
||||
if(lang.isEmpty())
|
||||
lang = QString(QLocale::system().name());
|
||||
tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir);
|
||||
static_cast<void>(tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir));
|
||||
a.installTranslator( &tor );
|
||||
|
||||
Qucs_S_SPAR_Viewer *qucs = new Qucs_S_SPAR_Viewer();
|
||||
|
@ -27,7 +27,6 @@
|
||||
|
||||
#include "qucs-s-spar-viewer.h"
|
||||
|
||||
|
||||
#include <QPixmap>
|
||||
#include <QVBoxLayout>
|
||||
#include <QHBoxLayout>
|
||||
@ -75,6 +74,10 @@ Qucs_S_SPAR_Viewer::Qucs_S_SPAR_Viewer()
|
||||
fileMenu->addAction(fileOpenSession);
|
||||
fileMenu->addAction(fileSaveSession);
|
||||
fileMenu->addAction(fileSaveAsSession);
|
||||
|
||||
recentFilesMenu = fileMenu->addMenu("Recent Files");
|
||||
connect(recentFilesMenu, &QMenu::aboutToShow, this, &Qucs_S_SPAR_Viewer::updateRecentFilesMenu);
|
||||
|
||||
fileMenu->addAction(fileQuit);
|
||||
|
||||
QMenu *helpMenu = new QMenu(tr("&Help"));
|
||||
@ -495,6 +498,9 @@ Qucs_S_SPAR_Viewer::Qucs_S_SPAR_Viewer()
|
||||
Limits_VBox->addWidget(LimitSettings);
|
||||
Limits_VBox->addWidget(scrollArea_Limits);
|
||||
|
||||
// Notes
|
||||
Notes_Widget = new CodeEditor();
|
||||
|
||||
|
||||
|
||||
dockFiles = new QDockWidget("S-parameter files", this);
|
||||
@ -502,6 +508,7 @@ Qucs_S_SPAR_Viewer::Qucs_S_SPAR_Viewer()
|
||||
dockTracesList = new QDockWidget("Traces List", this);
|
||||
dockMarkers = new QDockWidget("Markers", this);
|
||||
dockLimits = new QDockWidget("Limits", this);
|
||||
dockNotes = new QDockWidget("Notes", this);
|
||||
|
||||
// Disable dock closing
|
||||
dockChart->setFeatures(dockChart->features() & ~QDockWidget::DockWidgetClosable);
|
||||
@ -510,23 +517,27 @@ Qucs_S_SPAR_Viewer::Qucs_S_SPAR_Viewer()
|
||||
dockTracesList->setFeatures(dockTracesList->features() & ~QDockWidget::DockWidgetClosable);
|
||||
dockMarkers->setFeatures(dockMarkers->features() & ~QDockWidget::DockWidgetClosable);
|
||||
dockLimits->setFeatures(dockLimits->features() & ~QDockWidget::DockWidgetClosable);
|
||||
dockNotes->setFeatures(dockLimits->features() & ~QDockWidget::DockWidgetClosable);
|
||||
|
||||
dockAxisSettings->setWidget(SettingsGroup);
|
||||
dockTracesList->setWidget(TracesGroup);
|
||||
dockFiles->setWidget(FilesGroup);
|
||||
dockMarkers->setWidget(MarkersGroup);
|
||||
dockLimits->setWidget(LimitsGroup);
|
||||
dockNotes->setWidget(Notes_Widget);
|
||||
|
||||
addDockWidget(Qt::RightDockWidgetArea, dockAxisSettings);
|
||||
addDockWidget(Qt::RightDockWidgetArea, dockTracesList);
|
||||
addDockWidget(Qt::RightDockWidgetArea, dockFiles);
|
||||
addDockWidget(Qt::RightDockWidgetArea, dockMarkers);
|
||||
addDockWidget(Qt::RightDockWidgetArea, dockLimits);
|
||||
addDockWidget(Qt::RightDockWidgetArea, dockNotes);
|
||||
|
||||
splitDockWidget(dockTracesList, dockAxisSettings, Qt::Vertical);
|
||||
tabifyDockWidget(dockFiles, dockTracesList);
|
||||
tabifyDockWidget(dockTracesList, dockMarkers);
|
||||
tabifyDockWidget(dockMarkers, dockLimits);
|
||||
tabifyDockWidget(dockMarkers, dockNotes);
|
||||
dockFiles->raise();
|
||||
setDockNestingEnabled(true);
|
||||
|
||||
@ -535,10 +546,13 @@ Qucs_S_SPAR_Viewer::Qucs_S_SPAR_Viewer()
|
||||
dockAxisSettings->setFixedHeight(minHeight);
|
||||
|
||||
setAcceptDrops(true);//Enable drag and drop feature to open files
|
||||
loadRecentFiles();// Load "Recent Files" list
|
||||
}
|
||||
|
||||
Qucs_S_SPAR_Viewer::~Qucs_S_SPAR_Viewer()
|
||||
{
|
||||
QSettings settings;
|
||||
settings.setValue("recentFiles", QVariant::fromValue(recentFiles));
|
||||
}
|
||||
|
||||
void Qucs_S_SPAR_Viewer::slotHelpIntro()
|
||||
@ -784,56 +798,37 @@ void Qucs_S_SPAR_Viewer::addFiles(QStringList fileNames)
|
||||
double s11_im = file_data["S11_im"].last();
|
||||
std::complex<double> s11 (s11_re, s11_im);
|
||||
|
||||
// Calculate Zin and Zout
|
||||
std::complex<double> Zin = Z0 * (1.0 + s11) / (1.0 - s11);
|
||||
|
||||
file_data["Re{Zin}"].append(Zin.real()); // Re{Zin}
|
||||
file_data["Im{Zin}"].append(Zin.imag()); // Im{Zin}
|
||||
// Optional traces. They are not computed now, but only if the user wants to display them
|
||||
QStringList optional_traces;
|
||||
optional_traces.append("Re{Zin}");
|
||||
optional_traces.append("Im{Zin}");
|
||||
for (int i = 0; i < optional_traces.size(); i++) {
|
||||
if (!file_data.contains(optional_traces[i])) {
|
||||
// If not, create an empty list
|
||||
file_data[optional_traces[i]] = QList<double>();
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
if (number_of_ports == 2){
|
||||
// Compute delta, K, mus, mup, MAG and MSG
|
||||
double s11_re = file_data["S11_re"].last();
|
||||
double s11_im = file_data["S11_im"].last();
|
||||
double s12_re = file_data["S12_re"].last();
|
||||
double s12_im = file_data["S12_im"].last();
|
||||
double s21_re = file_data["S21_re"].last();
|
||||
double s21_im = file_data["S21_im"].last();
|
||||
double s22_re = file_data["S22_re"].last();
|
||||
double s22_im = file_data["S22_im"].last();
|
||||
|
||||
std::complex<double> s11 (s11_re, s11_im);
|
||||
std::complex<double> s11_conj (s11_re, -s11_im);
|
||||
std::complex<double> s12 (s12_re, s12_im);
|
||||
std::complex<double> s21 (s21_re, s21_im);
|
||||
std::complex<double> s22 (s22_re, s22_im);
|
||||
std::complex<double> s22_conj (s22_re, -s22_im);
|
||||
|
||||
double delta = abs(s11*s22 - s12*s21); // Determinant of the S matrix
|
||||
double K = (1 - abs(s11)*abs(s11) - abs(s22)*abs(s22) + delta*delta) / (2*abs(s12*s21)); // Rollet factor.
|
||||
double mu = (1 - abs(s11)*abs(s11)) / (abs(s22-delta*s11_conj) + abs(s12*s21));
|
||||
double mu_p = (1 - abs(s22)*abs(s22)) / (abs(s11-delta*s22_conj) + abs(s12*s21));
|
||||
double MSG = abs(s21) / abs(s12);
|
||||
double MAG = MSG * (K - std::sqrt(K * K - 1));
|
||||
|
||||
// Calculate Zin and Zout
|
||||
std::complex<double> Zin = std::complex<double>(Z0) * (1.0 + s11) / (1.0 - s11);
|
||||
std::complex<double> Zout = std::complex<double>(Z0) * (1.0 + s22) / (1.0 - s22);
|
||||
|
||||
// Convert MSG and MAG to dB scale
|
||||
MSG = 10*log10(MSG);
|
||||
MAG = 10*log10(abs(MAG));
|
||||
|
||||
file_data["delta"].append(delta); //delta
|
||||
file_data["K"].append(delta); //K
|
||||
file_data["mu"].append(mu); //mu
|
||||
file_data["mu_p"].append(mu_p); //mu_p
|
||||
file_data["MSG"].append(MSG); //MSG
|
||||
file_data["MAG"].append(MAG); //MAG
|
||||
file_data["Re{Zin}"].append(Zin.real()); // Re{Zin}
|
||||
file_data["Im{Zin}"].append(Zin.imag()); // Im{Zin}
|
||||
file_data["Re{Zout}"].append(Zout.real()); // Re{Zout}
|
||||
file_data["Im{Zout}"].append(Zout.imag()); // Im{Zout}
|
||||
// Optional traces. They are not computed now, but only if the user wants to display them
|
||||
QStringList optional_traces;
|
||||
optional_traces.append("delta");
|
||||
optional_traces.append("K");
|
||||
optional_traces.append("mu");
|
||||
optional_traces.append("mu_p");
|
||||
optional_traces.append("MSG");
|
||||
optional_traces.append("MAG");
|
||||
optional_traces.append("Re{Zin}");
|
||||
optional_traces.append("Im{Zin}");
|
||||
optional_traces.append("Re{Zout}");
|
||||
optional_traces.append("Im{Zout}");
|
||||
for (int i = 0; i < optional_traces.size(); i++) {
|
||||
if (!file_data.contains(optional_traces[i])) {
|
||||
// If not, create an empty list
|
||||
file_data[optional_traces[i]] = QList<double>();
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
// 3) Add data to the dataset
|
||||
@ -1238,6 +1233,28 @@ void Qucs_S_SPAR_Viewer::addTrace(QString selected_dataset, QString selected_tra
|
||||
List_Trace_LineStyle.append(new_trace_linestyle);
|
||||
this->TracesGrid->addWidget(new_trace_linestyle, n_trace, 2);
|
||||
|
||||
// Capture the pen style to correctly render the trace
|
||||
Qt::PenStyle pen_style;
|
||||
if (!trace_style.compare("Solid")) {
|
||||
pen_style = Qt::SolidLine;
|
||||
} else {
|
||||
if (!trace_style.compare("- - - -")) {
|
||||
pen_style = Qt::DashLine;
|
||||
} else {
|
||||
if (!trace_style.compare("·······")) {
|
||||
pen_style = Qt::DotLine;
|
||||
} else {
|
||||
if (!trace_style.compare("-·-·-·-")) {
|
||||
pen_style = Qt::DashDotLine;
|
||||
} else {
|
||||
if (!trace_style.compare("-··-··-")) {
|
||||
pen_style = Qt::DashDotDotLine;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// Line width
|
||||
QSpinBox * new_trace_width = new QSpinBox();
|
||||
new_trace_width->setObjectName(QStringLiteral("Trace_Width_") + trace_name);
|
||||
@ -1271,11 +1288,12 @@ void Qucs_S_SPAR_Viewer::addTrace(QString selected_dataset, QString selected_tra
|
||||
// Color settings
|
||||
QPen pen;
|
||||
pen.setColor(trace_color);
|
||||
pen.setStyle(pen_style);
|
||||
pen.setWidth(trace_width);
|
||||
series->setPen(pen);// Apply the pen to the series
|
||||
|
||||
chart->addSeries(series);
|
||||
|
||||
|
||||
updatePlot();
|
||||
}
|
||||
|
||||
@ -1596,6 +1614,12 @@ void Qucs_S_SPAR_Viewer::updateTraces()
|
||||
trace_file = "mu_p";
|
||||
}
|
||||
|
||||
// Check if the trace is empty or not. If empty, it is because the user wants to see K, mu, mu_p, etc. and
|
||||
// these traces are not calculated at the file load.
|
||||
if (datasets[data_file][trace_file].isEmpty()){
|
||||
calculate_Sparameter_trace(data_file, trace_file);
|
||||
}
|
||||
|
||||
// Check the limits of the data in the dataset in order to see if the new settings given by the user
|
||||
// exceed the limits of the available data
|
||||
getMinMaxValues(data_file, trace_file, minX_trace, maxX_trace, minY_trace, maxY_trace);
|
||||
@ -2903,8 +2927,16 @@ bool Qucs_S_SPAR_Viewer::save()
|
||||
xmlWriter.writeTextElement("lock_status", QString::number(lock_axis));
|
||||
|
||||
xmlWriter.writeEndElement(); // Axes
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
// Save notes
|
||||
xmlWriter.writeStartElement("NOTES");
|
||||
xmlWriter.writeTextElement("note", Notes_Widget->getText());
|
||||
xmlWriter.writeEndElement();
|
||||
|
||||
// ----------------------------------------------------------------
|
||||
// Save the datasets
|
||||
// Only S-parameter data is saved. This is done to minimize the size of the session file.
|
||||
xmlWriter.writeStartElement("DATASETS");
|
||||
for (auto outerIt = datasets.constBegin(); outerIt != datasets.constEnd(); ++outerIt)
|
||||
{
|
||||
@ -2914,8 +2946,27 @@ bool Qucs_S_SPAR_Viewer::save()
|
||||
const QMap<QString, QList<double>>& innerMap = outerIt.value();
|
||||
for (auto innerIt = innerMap.constBegin(); innerIt != innerMap.constEnd(); ++innerIt)
|
||||
{
|
||||
QString trace_name = innerIt.key();
|
||||
QStringList blacklist;
|
||||
blacklist.append("K");
|
||||
blacklist.append("mu");
|
||||
blacklist.append("mu_p");
|
||||
blacklist.append("delta");
|
||||
blacklist.append("MAG");
|
||||
blacklist.append("MSG");
|
||||
blacklist.append("Re{Zin}");
|
||||
blacklist.append("Im{Zin}");
|
||||
blacklist.append("Re{Zout}");
|
||||
blacklist.append("Im{Zout}");
|
||||
|
||||
if (blacklist.contains(trace_name)){
|
||||
// Zin, Zout, K, mu, etc. traces are discarded
|
||||
continue;
|
||||
}
|
||||
|
||||
// Only S (Re/Im ang dB/ang) traces here
|
||||
xmlWriter.writeStartElement("trace");
|
||||
xmlWriter.writeAttribute("trace_name", innerIt.key());
|
||||
xmlWriter.writeAttribute("trace_name", trace_name);
|
||||
|
||||
const QList<double>& values = innerIt.value();
|
||||
for (const double& value : values)
|
||||
@ -2932,7 +2983,6 @@ bool Qucs_S_SPAR_Viewer::save()
|
||||
xmlWriter.writeEndElement(); // Datasets
|
||||
// ----------------------------------------------------------------
|
||||
|
||||
|
||||
xmlWriter.writeEndElement(); // Top level
|
||||
xmlWriter.writeEndDocument();
|
||||
|
||||
@ -2963,6 +3013,8 @@ void Qucs_S_SPAR_Viewer::loadSession(QString session_file)
|
||||
|
||||
savepath = session_file;
|
||||
|
||||
addRecentFile(session_file);// Add it to the "Recent Files" list
|
||||
|
||||
QXmlStreamReader xml(&file);
|
||||
|
||||
// Trace properties
|
||||
@ -2990,7 +3042,7 @@ void Qucs_S_SPAR_Viewer::loadSession(QString session_file)
|
||||
// Read next element
|
||||
QXmlStreamReader::TokenType token = xml.readNext();
|
||||
|
||||
// If token is StartElement, check element name
|
||||
//qDebug() << xml.name().toString();
|
||||
if (token == QXmlStreamReader::StartElement) {
|
||||
if (xml.name() == QStringLiteral("trace")) {
|
||||
while (!(xml.tokenType() == QXmlStreamReader::EndElement && xml.name() == QStringLiteral("trace"))) {
|
||||
@ -3083,6 +3135,9 @@ void Qucs_S_SPAR_Viewer::loadSession(QString session_file)
|
||||
}
|
||||
xml.readNext();
|
||||
}
|
||||
} else if (xml.name().toString().contains("note")){
|
||||
QString note = xml.readElementText();
|
||||
Notes_Widget->loadText(note);
|
||||
}
|
||||
}
|
||||
}
|
||||
@ -3233,3 +3288,117 @@ void Qucs_S_SPAR_Viewer::updateGridLayout(QGridLayout* layout)
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
// Add session file to the recent files list
|
||||
void Qucs_S_SPAR_Viewer::addRecentFile(const QString& filePath) {
|
||||
recentFiles.insert(recentFiles.begin(), filePath);
|
||||
recentFiles.erase(std::unique(recentFiles.begin(), recentFiles.end()), recentFiles.end());
|
||||
if (recentFiles.size() > 10) {
|
||||
recentFiles.resize(10);
|
||||
}
|
||||
}
|
||||
|
||||
// This function updates teh "Recent Files" list whenever the user hovers the mouse over the menu
|
||||
void Qucs_S_SPAR_Viewer::updateRecentFilesMenu() {
|
||||
recentFilesMenu->clear();
|
||||
for (const auto& filePath : recentFiles) {
|
||||
QAction* action = recentFilesMenu->addAction(filePath);
|
||||
connect(action, &QAction::triggered, this, [this, filePath]() {
|
||||
loadSession(filePath);
|
||||
});
|
||||
}
|
||||
recentFilesMenu->addSeparator();
|
||||
recentFilesMenu->addAction("Clear Recent Files", this, &Qucs_S_SPAR_Viewer::clearRecentFiles);
|
||||
}
|
||||
|
||||
void Qucs_S_SPAR_Viewer::clearRecentFiles() {
|
||||
recentFiles.clear();
|
||||
}
|
||||
|
||||
// Save "Recent Files" list. This is called when the program is about to close
|
||||
void Qucs_S_SPAR_Viewer::saveRecentFiles() {
|
||||
QSettings settings;
|
||||
settings.setValue("recentFiles", QVariant::fromValue(recentFiles));
|
||||
}
|
||||
|
||||
// Load "Recent Files" list. This is called when the program starts up
|
||||
void Qucs_S_SPAR_Viewer::loadRecentFiles() {
|
||||
QSettings settings;
|
||||
recentFiles = settings.value("recentFiles").value<std::vector<QString>>();
|
||||
}
|
||||
|
||||
// This function is called when the user wants to see a trace which can be calculated from the S-parameters
|
||||
void Qucs_S_SPAR_Viewer::calculate_Sparameter_trace(QString file, QString metric){
|
||||
|
||||
|
||||
std::complex<double> s11, s12, s21, s22, s11_conj, s22_conj;
|
||||
double Z0 = datasets[file]["Rn"].last();
|
||||
|
||||
for (int i = 0; i < datasets[file]["S11_re"].size(); i++) {
|
||||
// S-parameter data (n.u.)
|
||||
double s11_re = datasets[file]["S11_re"][i];
|
||||
double s11_im = datasets[file]["S11_im"][i];
|
||||
s11 = std::complex<double>(s11_re, s11_im);
|
||||
s11_conj = std::complex<double>(s11_re, -s11_im);
|
||||
|
||||
if ( datasets[file]["n_ports"].last() == 2) {
|
||||
double s12_re = datasets[file]["S12_re"][i];
|
||||
double s12_im = datasets[file]["S12_im"][i];
|
||||
double s21_re = datasets[file]["S21_re"][i];
|
||||
double s21_im = datasets[file]["S21_im"][i];
|
||||
double s22_re = datasets[file]["S22_re"][i];
|
||||
double s22_im = datasets[file]["S22_im"][i];
|
||||
s12 = std::complex<double> (s12_re, s12_im);
|
||||
s21 = std::complex<double> (s21_re, s21_im);
|
||||
s22 = std::complex<double> (s22_re, s22_im);
|
||||
s22_conj = std::complex<double> (s22_re, -s22_im);
|
||||
}
|
||||
|
||||
double delta = abs(s11*s22 - s12*s21); // Determinant of the S matrix
|
||||
|
||||
if (!metric.compare("delta")) {
|
||||
datasets[file]["delta"].append(delta);
|
||||
} else {
|
||||
if (!metric.compare("K")) {
|
||||
double K = (1 - abs(s11)*abs(s11) - abs(s22)*abs(s22) + delta*delta) / (2*abs(s12*s21)); // Rollet factor.
|
||||
datasets[file]["K"].append(K);
|
||||
} else {
|
||||
if (!metric.compare("mu")) {
|
||||
double mu = (1 - abs(s11)*abs(s11)) / (abs(s22-delta*s11_conj) + abs(s12*s21));
|
||||
datasets[file]["mu"].append(mu);
|
||||
} else {
|
||||
if (!metric.compare("mu_p")) {
|
||||
double mu_p = (1 - abs(s22)*abs(s22)) / (abs(s11-delta*s22_conj) + abs(s12*s21));
|
||||
datasets[file]["mu_p"].append(mu_p);
|
||||
} else {
|
||||
if (!metric.compare("MSG")) {
|
||||
double MSG = abs(s21) / abs(s12);
|
||||
MSG = 10*log10(MSG);
|
||||
datasets[file]["MSG"].append(MSG);
|
||||
} else {
|
||||
if (!metric.compare("MSG")) {
|
||||
double K = (1 - abs(s11)*abs(s11) - abs(s22)*abs(s22) + delta*delta) / (2*abs(s12*s21)); // Rollet factor.
|
||||
double MSG = abs(s21) / abs(s12);
|
||||
double MAG = MSG * (K - std::sqrt(K * K - 1));
|
||||
MAG = 10*log10(abs(MAG));
|
||||
datasets[file]["MAG"].append(MAG);
|
||||
} else {
|
||||
if (metric.contains("Zin")) {
|
||||
std::complex<double> Zin = std::complex<double>(Z0) * (1.0 + s11) / (1.0 - s11);
|
||||
datasets[file]["Re{Zin}"].append(Zin.real());
|
||||
datasets[file]["Im{Zin}"].append(Zin.imag());
|
||||
} else {
|
||||
if (metric.contains("Zout")) {
|
||||
std::complex<double> Zout = std::complex<double>(Z0) * (1.0 + s22) / (1.0 - s22);
|
||||
datasets[file]["Re{Zout}"].append(Zout.real());
|
||||
datasets[file]["Im{Zout}"].append(Zout.imag());
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
@ -1,6 +1,8 @@
|
||||
#ifndef QUCSSPARVIEWER_H
|
||||
#define QUCSSPARVIEWER_H
|
||||
|
||||
#include "codeeditor.h"
|
||||
|
||||
#include <QMainWindow>
|
||||
#include <QLabel>
|
||||
#include <QCheckBox>
|
||||
@ -13,10 +15,6 @@
|
||||
#include <QtGlobal>
|
||||
#include <complex>
|
||||
|
||||
#if QT_VERSION < QT_VERSION_CHECK(6,0,0)
|
||||
using namespace QtCharts;
|
||||
#endif
|
||||
|
||||
class QComboBox;
|
||||
class QTableWidget;
|
||||
class QLineEdit;
|
||||
@ -103,6 +101,8 @@ protected:
|
||||
|
||||
void updateGridLayout(QGridLayout*);
|
||||
|
||||
void calculate_Sparameter_trace(QString, QString);
|
||||
|
||||
protected:
|
||||
void dragEnterEvent(QDragEnterEvent *event) override;
|
||||
void dropEvent(QDropEvent *event) override;
|
||||
@ -206,6 +206,19 @@ protected:
|
||||
bool save();
|
||||
void loadSession(QString);
|
||||
|
||||
// Notes
|
||||
QDockWidget *dockNotes;
|
||||
CodeEditor *Notes_Widget;
|
||||
|
||||
// Recent files
|
||||
std::vector<QString> recentFiles;
|
||||
QMenu* recentFilesMenu;
|
||||
void updateRecentFilesMenu();
|
||||
void loadRecentFiles();
|
||||
void addRecentFile(const QString&);
|
||||
void clearRecentFiles();
|
||||
void saveRecentFiles();
|
||||
|
||||
// Utilities
|
||||
void convert_MA_RI_to_dB(double *, double *, double *, double *, QString);
|
||||
double getFreqScale();
|
||||
|
@ -32,21 +32,15 @@ CONFIGURE_FILE (
|
||||
|
||||
INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
|
||||
|
||||
if(WITH_QT6)
|
||||
set(QT_VERSION_MAJOR 6)
|
||||
else()
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
endif()
|
||||
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets )
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets )
|
||||
include_directories(
|
||||
${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Gui_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}
|
||||
${Qt6Core_INCLUDE_DIRS}
|
||||
${Qt6Gui_INCLUDE_DIRS}
|
||||
${Qt6Widgets_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
|
||||
set(QT_VERSION ${Qt${QT_VERSION_MAJOR}Core_VERSION})
|
||||
set(QT_VERSION ${Qt6Core_VERSION})
|
||||
|
||||
if (${QT_VERSION} VERSION_LESS "6.7.0")
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
@ -70,13 +64,13 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
|
||||
string(REGEX REPLACE "/W3" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
string(REGEX REPLACE "/W1" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
add_compile_options(/permissive- /Zc:__cplusplus /Zc:preprocessor /MP /vmg)
|
||||
add_link_options(/OPT:REF /OPT:ICF)
|
||||
else()
|
||||
add_compile_options(-w)
|
||||
endif()
|
||||
endif()
|
||||
|
||||
ADD_DEFINITIONS(${QT_DEFINITIONS})
|
||||
|
||||
SET(QUCSTRANS_SRCS
|
||||
@ -116,13 +110,8 @@ SET( LIB_SRC
|
||||
|
||||
SET(RESOURCES qucstrans_.qrc)
|
||||
|
||||
IF(QT_VERSION_MAJOR EQUAL 6)
|
||||
QT6_WRAP_CPP( QUCSTRANS_MOC_SRCS ${QUCSTRANS_MOC_HDRS} )
|
||||
QT6_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
ELSE()
|
||||
QT5_WRAP_CPP( QUCSTRANS_MOC_SRCS ${QUCSTRANS_MOC_HDRS} )
|
||||
QT5_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
ENDIF()
|
||||
|
||||
ADD_LIBRARY(transcalc STATIC ${LIB_SRC} )
|
||||
|
||||
@ -151,7 +140,7 @@ ADD_EXECUTABLE(${QUCS_NAME}trans MACOSX_BUNDLE WIN32
|
||||
${QUCSTRANS_MOC_SRCS}
|
||||
${RESOURCES_SRCS} )
|
||||
|
||||
TARGET_LINK_LIBRARIES( ${QUCS_NAME}trans Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets transcalc )
|
||||
TARGET_LINK_LIBRARIES( ${QUCS_NAME}trans Qt6::Core Qt6::Gui Qt6::Widgets transcalc )
|
||||
SET_TARGET_PROPERTIES(${QUCS_NAME}trans PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
|
||||
#INSTALL(TARGETS ${QUCS_NAME}trans DESTINATION bin)
|
||||
|
@ -136,7 +136,7 @@ int main(int argc, char *argv[])
|
||||
QString lang = QucsSettings.Language;
|
||||
if(lang.isEmpty())
|
||||
lang = QString(QLocale::system().name());
|
||||
tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir);
|
||||
static_cast<void>(tor.load( QStringLiteral("qucs_") + lang, QucsSettings.LangDir));
|
||||
a.installTranslator( &tor );
|
||||
|
||||
QucsTranscalc *qucs = new QucsTranscalc();
|
||||
|
@ -59,19 +59,13 @@ endif()
|
||||
add_compile_definitions(HAVE_CONFIG_H)
|
||||
set(CMAKE_POSITION_INDEPENDENT_CODE ON)
|
||||
|
||||
if(WITH_QT6)
|
||||
set(QT_VERSION_MAJOR 6)
|
||||
else()
|
||||
set(QT_VERSION_MAJOR 5)
|
||||
endif()
|
||||
|
||||
find_package(Qt${QT_VERSION_MAJOR} REQUIRED COMPONENTS Core Gui Widgets Svg Xml PrintSupport)
|
||||
find_package(Qt6 REQUIRED COMPONENTS Core Gui Widgets Svg Xml PrintSupport)
|
||||
include_directories(
|
||||
${Qt${QT_VERSION_MAJOR}Core_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Widgets_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Svg_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}Xml_INCLUDE_DIRS}
|
||||
${Qt${QT_VERSION_MAJOR}PrintSupport_INCLUDE_DIRS}
|
||||
${Qt6Core_INCLUDE_DIRS}
|
||||
${Qt6Widgets_INCLUDE_DIRS}
|
||||
${Qt6Svg_INCLUDE_DIRS}
|
||||
${Qt6Xml_INCLUDE_DIRS}
|
||||
${Qt6PrintSupport_INCLUDE_DIRS}
|
||||
)
|
||||
|
||||
|
||||
@ -85,13 +79,11 @@ CONFIGURE_FILE (
|
||||
|
||||
INCLUDE_DIRECTORIES("${PROJECT_BINARY_DIR}")
|
||||
|
||||
IF(QT_VERSION_MAJOR EQUAL 6)
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
ENDIF()
|
||||
set(CMAKE_AUTOUIC ON)
|
||||
set(CMAKE_AUTOMOC ON)
|
||||
set(CMAKE_AUTORCC ON)
|
||||
|
||||
set(QT_VERSION ${Qt${QT_VERSION_MAJOR}Core_VERSION})
|
||||
set(QT_VERSION ${Qt6Core_VERSION})
|
||||
|
||||
if (${QT_VERSION} VERSION_LESS "6.7.0")
|
||||
set(CMAKE_CXX_STANDARD 17)
|
||||
@ -115,8 +107,9 @@ if (CMAKE_BUILD_TYPE STREQUAL "Debug")
|
||||
elseif(CMAKE_BUILD_TYPE STREQUAL "Release")
|
||||
if (CMAKE_CXX_COMPILER_ID STREQUAL "MSVC")
|
||||
add_compile_definitions(_CRT_SECURE_NO_WARNINGS _SCL_SECURE_NO_WARNINGS)
|
||||
string(REGEX REPLACE "/W3" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
string(REGEX REPLACE "/W1" "/w" CMAKE_CXX_FLAGS "${CMAKE_CXX_FLAGS}")
|
||||
add_compile_options(/permissive- /Zc:__cplusplus /Zc:preprocessor /MP /vmg)
|
||||
add_link_options(/OPT:REF /OPT:ICF)
|
||||
else()
|
||||
add_compile_options(-w)
|
||||
endif()
|
||||
@ -154,7 +147,7 @@ SET(QUCS_SRCS
|
||||
syntax.cpp misc.cpp messagedock.cpp
|
||||
settings.cpp
|
||||
imagewriter.cpp printerwriter.cpp projectView.cpp
|
||||
symbolwidget.cpp
|
||||
symbolwidget.cpp wire_planner.cpp
|
||||
)
|
||||
|
||||
SET(QUCS_HDRS
|
||||
@ -177,6 +170,7 @@ symbolwidget.h
|
||||
textdoc.h
|
||||
wire.h
|
||||
wirelabel.h
|
||||
wire_planner.h
|
||||
)
|
||||
|
||||
#
|
||||
@ -195,13 +189,8 @@ SET(QUCS_MOC_HDRS
|
||||
# headers that need to be moc'ed
|
||||
# generate rules for building source files from bitmap resources
|
||||
SET(RESOURCES qucs.qrc)
|
||||
IF(QT_VERSION_MAJOR EQUAL 6)
|
||||
Qt6_WRAP_CPP( QUCS_MOC_SRCS ${QUCS_MOC_HDRS} )
|
||||
Qt6_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
ELSE()
|
||||
Qt5_WRAP_CPP( QUCS_MOC_SRCS ${QUCS_MOC_HDRS} )
|
||||
Qt5_ADD_RESOURCES(RESOURCES_SRCS ${RESOURCES})
|
||||
ENDIF()
|
||||
|
||||
if(UNIX AND NOT APPLE)
|
||||
|
||||
@ -274,8 +263,7 @@ ADD_EXECUTABLE( ${QUCS_NAME} MACOSX_BUNDLE WIN32
|
||||
#
|
||||
TARGET_LINK_LIBRARIES( ${QUCS_NAME}
|
||||
components diagrams dialogs paintings extsimkernels spicecomponents qt3_compat
|
||||
Qt${QT_VERSION_MAJOR}::Core Qt${QT_VERSION_MAJOR}::Gui Qt${QT_VERSION_MAJOR}::Widgets
|
||||
Qt${QT_VERSION_MAJOR}::Svg Qt${QT_VERSION_MAJOR}::Xml Qt${QT_VERSION_MAJOR}::PrintSupport )
|
||||
Qt6::Core Qt6::Gui Qt6::Widgets Qt6::Svg Qt6::Xml Qt6::PrintSupport )
|
||||
SET_TARGET_PROPERTIES(${QUCS_NAME} PROPERTIES POSITION_INDEPENDENT_CODE TRUE)
|
||||
#
|
||||
# Prepare the installation
|
||||
|