Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

klayout_pyxs

This is a python port of the XSection project (https://github.com/klayoutmatthias/xsection).

The goal of this project is to provide an add-on to KLayout (www.klayout.de) to create and visualize a realistic cross-section view for VLSI designs supporting a wide range of technology options.

User Documentation

For the project description see klayout_pyxs Project Home Page.

For an introduction into writing PYXS files, see Writing PYXS Files - an Introduction.

For a reference of the elements of the PYXS scripts, see PYXS File Reference.

Project Files

The basic structure is:

  • docs The documentation
  • klayout_pyxs The python package sources
  • pymacros The python .lym macros files for KLayout
  • samples Some sample files
  • tests Test sources and golden data
  • xs2pyxs xs to pyxs conversion scripts

The docs folder contains the .rst files and images for the documentation pages. See rendered version here.

The klayout_pyxs folder contains the python package which includes the cross-section generation engine.

The pymacros folder contains with the actual KLayout macros code, pyxs.lym.

The samples folder holds a few files for playing around.

The tests folder contains some regression tests for the package. To run the tests, make sure "klayout" or "klayout_app" (in Windows) is in your path and use

$ cd tests
$ ./run_tests.sh

or (from e.g. git bash console on Windows)

$ cd tests
$ bash run_tests_windows.sh

The xs2pyxs folder contains a shell script which helps converting Ruby-based .xs scripts to .pyxs scripts. It performs necessary but not sufficient string replacements. Depending on the .xs script complexity, more changes are likely to be needed.

Installation

Windows

To run .pyxs scripts from the KLayout menu, klayout_pyxs package and python macros file have to be installed to the KLayout folders. According to KLayout documentation, they should go to the "pymacros" and "python" folders in KLayout's user specific application folder. In Windows, it is $USERPROFILE/KLayout.

In Windows, do the following (the commands should be run from e.g. git bash console) Tested on KLayout 0.25.3 and 0.25.7.

  1. Check if $USERPROFILE/KLayout exists and is used by the KLayout to store macros. Run

    $ ls $USERPROFILE/KLayout

    If no error reported, continue with 1. If there is an error, you need to find a location of KLayout's user specific application folder with pymacros, python folders and use it in further commands.

  2. Clone klayout_pyxs repository into any source folder:

    $ git clone https://github.com/dimapu/klayout_pyxs.git klayout_pyxs_repo
  3. Copy klayout_pyxs_repo/pymacros/pyxs.lym to $USERPROFILE/KLayout/pymacros/pyxs.lym

    $ cp klayout_pyxs_repo/pymacros/pyxs.lym $USERPROFILE/KLayout/pymacros/pyxs.lym
  4. Copy klayout_pyxs_repo/klayout_pyxs/. to $USERPROFILE/KLayout/python/klayout_pyxs

    $ mkdir $USERPROFILE/KLayout/python/klayout_pyxs
    $ cp klayout_pyxs_repo/klayout_pyxs/*.py $USERPROFILE/KLayout/python/klayout_pyxs

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.

About

Python port of xsection script for KLayout

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Add copy buttons to all
 blocks\n(function() {\n function addCopyButtons() {\n document.querySelectorAll('pre code').forEach(function(codeBlock) {\n if (codeBlock.parentElement.hasAttribute('data-copy-added')) return;\n codeBlock.parentElement.setAttribute('data-copy-added', 'true');\n \n var btn = document.createElement('button');\n btn.textContent = 'Copy';\n btn.style.cssText = 'position:absolute;top:4px;right:4px;padding:2px 8px;font-size:11px;background:#4ecdc4;border:none;border-radius:4px;color:#1a1a2e;cursor:pointer;opacity:0.7;transition:opacity 0.2s;';\n btn.onmouseover = function() { this.style.opacity = '1'; };\n btn.onmouseout = function() { this.style.opacity = '0.7'; };\n btn.onclick = function() {\n navigator.clipboard.writeText(codeBlock.textContent).then(function() {\n btn.textContent = 'Copied!';\n setTimeout(function() { btn.textContent = 'Copy'; }, 1500);\n });\n };\n codeBlock.parentElement.style.position = 'relative';\n codeBlock.parentElement.appendChild(btn);\n });\n }\n \n addCopyButtons();\n \n // Re-run on dynamic content\n var observer = new MutationObserver(addCopyButtons);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Add Copy Buttons to Code Blocks");
}
} catch(__e) { console.warn('[Userscript:Add Copy Buttons to Code Blocks]', __e); }
})();
(function(){
try {
var __m = "github.com";
var __re = new RegExp('^' + "github\\.com" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

klayout_pyxs

This is a python port of the XSection project (https://github.com/klayoutmatthias/xsection).

The goal of this project is to provide an add-on to KLayout (www.klayout.de) to create and visualize a realistic cross-section view for VLSI designs supporting a wide range of technology options.

User Documentation

For the project description see klayout_pyxs Project Home Page.

For an introduction into writing PYXS files, see Writing PYXS Files - an Introduction.

For a reference of the elements of the PYXS scripts, see PYXS File Reference.

Project Files

The basic structure is:

  • docs The documentation
  • klayout_pyxs The python package sources
  • pymacros The python .lym macros files for KLayout
  • samples Some sample files
  • tests Test sources and golden data
  • xs2pyxs xs to pyxs conversion scripts

The docs folder contains the .rst files and images for the documentation pages. See rendered version here.

The klayout_pyxs folder contains the python package which includes the cross-section generation engine.

The pymacros folder contains with the actual KLayout macros code, pyxs.lym.

The samples folder holds a few files for playing around.

The tests folder contains some regression tests for the package. To run the tests, make sure "klayout" or "klayout_app" (in Windows) is in your path and use

$ cd tests
$ ./run_tests.sh

or (from e.g. git bash console on Windows)

$ cd tests
$ bash run_tests_windows.sh

The xs2pyxs folder contains a shell script which helps converting Ruby-based .xs scripts to .pyxs scripts. It performs necessary but not sufficient string replacements. Depending on the .xs script complexity, more changes are likely to be needed.

Installation

Windows

To run .pyxs scripts from the KLayout menu, klayout_pyxs package and python macros file have to be installed to the KLayout folders. According to KLayout documentation, they should go to the "pymacros" and "python" folders in KLayout's user specific application folder. In Windows, it is $USERPROFILE/KLayout.

In Windows, do the following (the commands should be run from e.g. git bash console) Tested on KLayout 0.25.3 and 0.25.7.

  1. Check if $USERPROFILE/KLayout exists and is used by the KLayout to store macros. Run

    $ ls $USERPROFILE/KLayout

    If no error reported, continue with 1. If there is an error, you need to find a location of KLayout's user specific application folder with pymacros, python folders and use it in further commands.

  2. Clone klayout_pyxs repository into any source folder:

    $ git clone https://github.com/dimapu/klayout_pyxs.git klayout_pyxs_repo
  3. Copy klayout_pyxs_repo/pymacros/pyxs.lym to $USERPROFILE/KLayout/pymacros/pyxs.lym

    $ cp klayout_pyxs_repo/pymacros/pyxs.lym $USERPROFILE/KLayout/pymacros/pyxs.lym
  4. Copy klayout_pyxs_repo/klayout_pyxs/. to $USERPROFILE/KLayout/python/klayout_pyxs

    $ mkdir $USERPROFILE/KLayout/python/klayout_pyxs
    $ cp klayout_pyxs_repo/klayout_pyxs/*.py $USERPROFILE/KLayout/python/klayout_pyxs

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.

About

Python port of xsection script for KLayout

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Force GitHub README to respect dark mode\n(function() {\n var style = document.createElement('style');\n style.textContent = '\n .markdown-body {\n color-scheme: dark light;\n }\n .markdown-body pre { background: #161b22 !important; }\n .markdown-body code { background: rgba(110, 118, 129, 0.4) !important; }\n .markdown-body table th, .markdown-body table td { border-color: #30363d !important; }\n .markdown-body img { background: #0d1117; }\n .markdown-body blockquote { border-left-color: #8b949e; }\n .markdown-body hr { border-color: #30363d; }\n ';\n document.head.appendChild(style);\n})();", "GitHub Dark Mode README Fix"); } } catch(__e) { console.warn('[Userscript:GitHub Dark Mode README Fix]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

klayout_pyxs

This is a python port of the XSection project (https://github.com/klayoutmatthias/xsection).

The goal of this project is to provide an add-on to KLayout (www.klayout.de) to create and visualize a realistic cross-section view for VLSI designs supporting a wide range of technology options.

User Documentation

For the project description see klayout_pyxs Project Home Page.

For an introduction into writing PYXS files, see Writing PYXS Files - an Introduction.

For a reference of the elements of the PYXS scripts, see PYXS File Reference.

Project Files

The basic structure is:

  • docs The documentation
  • klayout_pyxs The python package sources
  • pymacros The python .lym macros files for KLayout
  • samples Some sample files
  • tests Test sources and golden data
  • xs2pyxs xs to pyxs conversion scripts

The docs folder contains the .rst files and images for the documentation pages. See rendered version here.

The klayout_pyxs folder contains the python package which includes the cross-section generation engine.

The pymacros folder contains with the actual KLayout macros code, pyxs.lym.

The samples folder holds a few files for playing around.

The tests folder contains some regression tests for the package. To run the tests, make sure "klayout" or "klayout_app" (in Windows) is in your path and use

$ cd tests
$ ./run_tests.sh

or (from e.g. git bash console on Windows)

$ cd tests
$ bash run_tests_windows.sh

The xs2pyxs folder contains a shell script which helps converting Ruby-based .xs scripts to .pyxs scripts. It performs necessary but not sufficient string replacements. Depending on the .xs script complexity, more changes are likely to be needed.

Installation

Windows

To run .pyxs scripts from the KLayout menu, klayout_pyxs package and python macros file have to be installed to the KLayout folders. According to KLayout documentation, they should go to the "pymacros" and "python" folders in KLayout's user specific application folder. In Windows, it is $USERPROFILE/KLayout.

In Windows, do the following (the commands should be run from e.g. git bash console) Tested on KLayout 0.25.3 and 0.25.7.

  1. Check if $USERPROFILE/KLayout exists and is used by the KLayout to store macros. Run

    $ ls $USERPROFILE/KLayout

    If no error reported, continue with 1. If there is an error, you need to find a location of KLayout's user specific application folder with pymacros, python folders and use it in further commands.

  2. Clone klayout_pyxs repository into any source folder:

    $ git clone https://github.com/dimapu/klayout_pyxs.git klayout_pyxs_repo
  3. Copy klayout_pyxs_repo/pymacros/pyxs.lym to $USERPROFILE/KLayout/pymacros/pyxs.lym

    $ cp klayout_pyxs_repo/pymacros/pyxs.lym $USERPROFILE/KLayout/pymacros/pyxs.lym
  4. Copy klayout_pyxs_repo/klayout_pyxs/. to $USERPROFILE/KLayout/python/klayout_pyxs

    $ mkdir $USERPROFILE/KLayout/python/klayout_pyxs
    $ cp klayout_pyxs_repo/klayout_pyxs/*.py $USERPROFILE/KLayout/python/klayout_pyxs

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.

About

Python port of xsection script for KLayout

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Highlight search terms from Google/DuckDuckGo/Bing referrer\n(function() {\n var ref = document.referrer;\n var terms = [];\n \n if (ref.includes('google.com') || ref.includes('duckduckgo.com') || ref.includes('bing.com')) {\n var url = new URL(ref);\n var q = url.searchParams.get('q') || url.searchParams.get('p');\n if (q) {\n terms = q.split(/\\s+/).filter(function(t) { return t.length > 2; });\n }\n }\n \n if (terms.length === 0) return;\n \n var style = document.createElement('style');\n style.textContent = '.userscript-highlight { background: #fbbf24; color: #1a1a2e; padding: 1px 3px; border-radius: 2px; }';\n document.head.appendChild(style);\n \n function highlight(node) {\n if (node.nodeType === 3) { // text node\n var text = node.textContent;\n var found = false;\n terms.forEach(function(term) {\n var regex = new RegExp('(' + term.replace(/[.*+?^${}()|[\\]\\\\]/g, '\\\\') + ')', 'gi');\n if (regex.test(text)) {\n found = true;\n var frag = document.createDocumentFragment();\n var parts = text.split(regex);\n parts.forEach(function(part, i) {\n if (i % 2 === 0) {\n frag.appendChild(document.createTextNode(part));\n } else {\n var span = document.createElement('span');\n span.className = 'userscript-highlight';\n span.textContent = part;\n frag.appendChild(span);\n }\n });\n node.parentNode.replaceChild(frag, node);\n }\n });\n } else if (node.nodeType === 1 && node.childNodes) { // element\n var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT'];\n if (!skipTags.includes(node.tagName)) {\n Array.from(node.childNodes).forEach(highlight);\n }\n }\n }\n \n highlight(document.body);\n \n // Re-highlight on dynamic content\n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1 || node.nodeType === 3) highlight(node);\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Highlight Search Terms"); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

klayout_pyxs

This is a python port of the XSection project (https://github.com/klayoutmatthias/xsection).

The goal of this project is to provide an add-on to KLayout (www.klayout.de) to create and visualize a realistic cross-section view for VLSI designs supporting a wide range of technology options.

User Documentation

For the project description see klayout_pyxs Project Home Page.

For an introduction into writing PYXS files, see Writing PYXS Files - an Introduction.

For a reference of the elements of the PYXS scripts, see PYXS File Reference.

Project Files

The basic structure is:

  • docs The documentation
  • klayout_pyxs The python package sources
  • pymacros The python .lym macros files for KLayout
  • samples Some sample files
  • tests Test sources and golden data
  • xs2pyxs xs to pyxs conversion scripts

The docs folder contains the .rst files and images for the documentation pages. See rendered version here.

The klayout_pyxs folder contains the python package which includes the cross-section generation engine.

The pymacros folder contains with the actual KLayout macros code, pyxs.lym.

The samples folder holds a few files for playing around.

The tests folder contains some regression tests for the package. To run the tests, make sure "klayout" or "klayout_app" (in Windows) is in your path and use

$ cd tests
$ ./run_tests.sh

or (from e.g. git bash console on Windows)

$ cd tests
$ bash run_tests_windows.sh

The xs2pyxs folder contains a shell script which helps converting Ruby-based .xs scripts to .pyxs scripts. It performs necessary but not sufficient string replacements. Depending on the .xs script complexity, more changes are likely to be needed.

Installation

Windows

To run .pyxs scripts from the KLayout menu, klayout_pyxs package and python macros file have to be installed to the KLayout folders. According to KLayout documentation, they should go to the "pymacros" and "python" folders in KLayout's user specific application folder. In Windows, it is $USERPROFILE/KLayout.

In Windows, do the following (the commands should be run from e.g. git bash console) Tested on KLayout 0.25.3 and 0.25.7.

  1. Check if $USERPROFILE/KLayout exists and is used by the KLayout to store macros. Run

    $ ls $USERPROFILE/KLayout

    If no error reported, continue with 1. If there is an error, you need to find a location of KLayout's user specific application folder with pymacros, python folders and use it in further commands.

  2. Clone klayout_pyxs repository into any source folder:

    $ git clone https://github.com/dimapu/klayout_pyxs.git klayout_pyxs_repo
  3. Copy klayout_pyxs_repo/pymacros/pyxs.lym to $USERPROFILE/KLayout/pymacros/pyxs.lym

    $ cp klayout_pyxs_repo/pymacros/pyxs.lym $USERPROFILE/KLayout/pymacros/pyxs.lym
  4. Copy klayout_pyxs_repo/klayout_pyxs/. to $USERPROFILE/KLayout/python/klayout_pyxs

    $ mkdir $USERPROFILE/KLayout/python/klayout_pyxs
    $ cp klayout_pyxs_repo/klayout_pyxs/*.py $USERPROFILE/KLayout/python/klayout_pyxs

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.

About

Python port of xsection script for KLayout

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Strip utm_, fbclid, gclid, etc. from all links on page\n(function() {\n var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content',\n 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid',\n 'ref', 'ref_src', 'source', 'medium', 'campaign'];\n \n function cleanUrl(url) {\n try {\n var u = new URL(url, window.location.origin);\n var changed = false;\n trackingParams.forEach(function(p) {\n if (u.searchParams.has(p)) {\n u.searchParams.delete(p);\n changed = true;\n }\n });\n return changed ? u.toString() : url;\n } catch (e) {\n return url;\n }\n }\n \n function cleanLinks() {\n document.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n \n cleanLinks();\n \n var observer = new MutationObserver(function(mutations) {\n mutations.forEach(function(m) {\n m.addedNodes.forEach(function(node) {\n if (node.nodeType === 1) {\n if (node.tagName === 'A') cleanLinks();\n node.querySelectorAll('a[href]').forEach(function(a) {\n var clean = cleanUrl(a.href);\n if (clean !== a.href) a.href = clean;\n });\n }\n });\n });\n });\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "Remove Tracking Parameters from Links"); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

klayout_pyxs

This is a python port of the XSection project (https://github.com/klayoutmatthias/xsection).

The goal of this project is to provide an add-on to KLayout (www.klayout.de) to create and visualize a realistic cross-section view for VLSI designs supporting a wide range of technology options.

User Documentation

For the project description see klayout_pyxs Project Home Page.

For an introduction into writing PYXS files, see Writing PYXS Files - an Introduction.

For a reference of the elements of the PYXS scripts, see PYXS File Reference.

Project Files

The basic structure is:

  • docs The documentation
  • klayout_pyxs The python package sources
  • pymacros The python .lym macros files for KLayout
  • samples Some sample files
  • tests Test sources and golden data
  • xs2pyxs xs to pyxs conversion scripts

The docs folder contains the .rst files and images for the documentation pages. See rendered version here.

The klayout_pyxs folder contains the python package which includes the cross-section generation engine.

The pymacros folder contains with the actual KLayout macros code, pyxs.lym.

The samples folder holds a few files for playing around.

The tests folder contains some regression tests for the package. To run the tests, make sure "klayout" or "klayout_app" (in Windows) is in your path and use

$ cd tests
$ ./run_tests.sh

or (from e.g. git bash console on Windows)

$ cd tests
$ bash run_tests_windows.sh

The xs2pyxs folder contains a shell script which helps converting Ruby-based .xs scripts to .pyxs scripts. It performs necessary but not sufficient string replacements. Depending on the .xs script complexity, more changes are likely to be needed.

Installation

Windows

To run .pyxs scripts from the KLayout menu, klayout_pyxs package and python macros file have to be installed to the KLayout folders. According to KLayout documentation, they should go to the "pymacros" and "python" folders in KLayout's user specific application folder. In Windows, it is $USERPROFILE/KLayout.

In Windows, do the following (the commands should be run from e.g. git bash console) Tested on KLayout 0.25.3 and 0.25.7.

  1. Check if $USERPROFILE/KLayout exists and is used by the KLayout to store macros. Run

    $ ls $USERPROFILE/KLayout

    If no error reported, continue with 1. If there is an error, you need to find a location of KLayout's user specific application folder with pymacros, python folders and use it in further commands.

  2. Clone klayout_pyxs repository into any source folder:

    $ git clone https://github.com/dimapu/klayout_pyxs.git klayout_pyxs_repo
  3. Copy klayout_pyxs_repo/pymacros/pyxs.lym to $USERPROFILE/KLayout/pymacros/pyxs.lym

    $ cp klayout_pyxs_repo/pymacros/pyxs.lym $USERPROFILE/KLayout/pymacros/pyxs.lym
  4. Copy klayout_pyxs_repo/klayout_pyxs/. to $USERPROFILE/KLayout/python/klayout_pyxs

    $ mkdir $USERPROFILE/KLayout/python/klayout_pyxs
    $ cp klayout_pyxs_repo/klayout_pyxs/*.py $USERPROFILE/KLayout/python/klayout_pyxs

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.

About

Python port of xsection script for KLayout

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Auto-enable theater mode on YouTube\n(function() {\n function tryTheater() {\n var btn = document.querySelector('button[aria-label=\"Theater mode\"], ytd-player #player button[title=\"Theater mode\"]');\n if (btn && !btn.classList.contains('activated')) {\n btn.click();\n }\n }\n \n // Try immediately\n tryTheater();\n \n // Try after navigation (SPA)\n var lastUrl = location.href;\n setInterval(function() {\n if (location.href !== lastUrl) {\n lastUrl = location.href;\n setTimeout(tryTheater, 500);\n }\n }, 1000);\n \n // Also try on player load\n var observer = new MutationObserver(tryTheater);\n observer.observe(document.body, { childList: true, subtree: true });\n})();", "YouTube Theater Mode Default"); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

klayout_pyxs

This is a python port of the XSection project (https://github.com/klayoutmatthias/xsection).

The goal of this project is to provide an add-on to KLayout (www.klayout.de) to create and visualize a realistic cross-section view for VLSI designs supporting a wide range of technology options.

User Documentation

For the project description see klayout_pyxs Project Home Page.

For an introduction into writing PYXS files, see Writing PYXS Files - an Introduction.

For a reference of the elements of the PYXS scripts, see PYXS File Reference.

Project Files

The basic structure is:

  • docs The documentation
  • klayout_pyxs The python package sources
  • pymacros The python .lym macros files for KLayout
  • samples Some sample files
  • tests Test sources and golden data
  • xs2pyxs xs to pyxs conversion scripts

The docs folder contains the .rst files and images for the documentation pages. See rendered version here.

The klayout_pyxs folder contains the python package which includes the cross-section generation engine.

The pymacros folder contains with the actual KLayout macros code, pyxs.lym.

The samples folder holds a few files for playing around.

The tests folder contains some regression tests for the package. To run the tests, make sure "klayout" or "klayout_app" (in Windows) is in your path and use

$ cd tests
$ ./run_tests.sh

or (from e.g. git bash console on Windows)

$ cd tests
$ bash run_tests_windows.sh

The xs2pyxs folder contains a shell script which helps converting Ruby-based .xs scripts to .pyxs scripts. It performs necessary but not sufficient string replacements. Depending on the .xs script complexity, more changes are likely to be needed.

Installation

Windows

To run .pyxs scripts from the KLayout menu, klayout_pyxs package and python macros file have to be installed to the KLayout folders. According to KLayout documentation, they should go to the "pymacros" and "python" folders in KLayout's user specific application folder. In Windows, it is $USERPROFILE/KLayout.

In Windows, do the following (the commands should be run from e.g. git bash console) Tested on KLayout 0.25.3 and 0.25.7.

  1. Check if $USERPROFILE/KLayout exists and is used by the KLayout to store macros. Run

    $ ls $USERPROFILE/KLayout

    If no error reported, continue with 1. If there is an error, you need to find a location of KLayout's user specific application folder with pymacros, python folders and use it in further commands.

  2. Clone klayout_pyxs repository into any source folder:

    $ git clone https://github.com/dimapu/klayout_pyxs.git klayout_pyxs_repo
  3. Copy klayout_pyxs_repo/pymacros/pyxs.lym to $USERPROFILE/KLayout/pymacros/pyxs.lym

    $ cp klayout_pyxs_repo/pymacros/pyxs.lym $USERPROFILE/KLayout/pymacros/pyxs.lym
  4. Copy klayout_pyxs_repo/klayout_pyxs/. to $USERPROFILE/KLayout/python/klayout_pyxs

    $ mkdir $USERPROFILE/KLayout/python/klayout_pyxs
    $ cp klayout_pyxs_repo/klayout_pyxs/*.py $USERPROFILE/KLayout/python/klayout_pyxs

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.

About

Python port of xsection script for KLayout

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Remove or un-stick sticky/fixed headers that block content\n(function() {\n function unstick() {\n document.querySelectorAll('header, nav, [role=\"banner\"], .header, .navbar, .sticky, .fixed-top, [style*=\"position: fixed\"], [style*=\"position:sticky\"]').forEach(function(el) {\n if (el.style.position === 'fixed' || el.style.position === 'sticky' || \n getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') {\n el.style.position = 'static';\n el.style.top = 'auto';\n el.style.zIndex = 'auto';\n }\n });\n }\n \n unstick();\n \n var observer = new MutationObserver(unstick);\n observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n})();", "Kill Sticky Headers"); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + '
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

klayout_pyxs

This is a python port of the XSection project (https://github.com/klayoutmatthias/xsection).

The goal of this project is to provide an add-on to KLayout (www.klayout.de) to create and visualize a realistic cross-section view for VLSI designs supporting a wide range of technology options.

User Documentation

For the project description see klayout_pyxs Project Home Page.

For an introduction into writing PYXS files, see Writing PYXS Files - an Introduction.

For a reference of the elements of the PYXS scripts, see PYXS File Reference.

Project Files

The basic structure is:

  • docs The documentation
  • klayout_pyxs The python package sources
  • pymacros The python .lym macros files for KLayout
  • samples Some sample files
  • tests Test sources and golden data
  • xs2pyxs xs to pyxs conversion scripts

The docs folder contains the .rst files and images for the documentation pages. See rendered version here.

The klayout_pyxs folder contains the python package which includes the cross-section generation engine.

The pymacros folder contains with the actual KLayout macros code, pyxs.lym.

The samples folder holds a few files for playing around.

The tests folder contains some regression tests for the package. To run the tests, make sure "klayout" or "klayout_app" (in Windows) is in your path and use

$ cd tests
$ ./run_tests.sh

or (from e.g. git bash console on Windows)

$ cd tests
$ bash run_tests_windows.sh

The xs2pyxs folder contains a shell script which helps converting Ruby-based .xs scripts to .pyxs scripts. It performs necessary but not sufficient string replacements. Depending on the .xs script complexity, more changes are likely to be needed.

Installation

Windows

To run .pyxs scripts from the KLayout menu, klayout_pyxs package and python macros file have to be installed to the KLayout folders. According to KLayout documentation, they should go to the "pymacros" and "python" folders in KLayout's user specific application folder. In Windows, it is $USERPROFILE/KLayout.

In Windows, do the following (the commands should be run from e.g. git bash console) Tested on KLayout 0.25.3 and 0.25.7.

  1. Check if $USERPROFILE/KLayout exists and is used by the KLayout to store macros. Run

    $ ls $USERPROFILE/KLayout

    If no error reported, continue with 1. If there is an error, you need to find a location of KLayout's user specific application folder with pymacros, python folders and use it in further commands.

  2. Clone klayout_pyxs repository into any source folder:

    $ git clone https://github.com/dimapu/klayout_pyxs.git klayout_pyxs_repo
  3. Copy klayout_pyxs_repo/pymacros/pyxs.lym to $USERPROFILE/KLayout/pymacros/pyxs.lym

    $ cp klayout_pyxs_repo/pymacros/pyxs.lym $USERPROFILE/KLayout/pymacros/pyxs.lym
  4. Copy klayout_pyxs_repo/klayout_pyxs/. to $USERPROFILE/KLayout/python/klayout_pyxs

    $ mkdir $USERPROFILE/KLayout/python/klayout_pyxs
    $ cp klayout_pyxs_repo/klayout_pyxs/*.py $USERPROFILE/KLayout/python/klayout_pyxs

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.

About

Python port of xsection script for KLayout

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages

, 'i'); if (__m === '*' || __re.test(location.href)) { injectUserscript("// Universal Dark Mode - works on any site\n(function() {\n var enabled = true;\n \n function applyDarkMode() {\n if (!enabled) return;\n \n // Create style element if it doesn't exist\n var style = document.getElementById('universal-dark-mode-style');\n if (!style) {\n style = document.createElement('style');\n style.id = 'universal-dark-mode-style';\n document.head.appendChild(style);\n }\n \n // Dark mode CSS - inverts colors but preserves images/video\n style.textContent = '\n /* Invert everything except media */\n html {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #1a1a2e !important;\n }\n \n /* Restore images, videos, iframes, canvas */\n img, video, iframe, canvas, svg, picture, [style*=\"background-image\"] {\n filter: invert(1) hue-rotate(180deg) !important;\n }\n \n /* Preserve specific elements that should not be inverted */\n .no-dark-mode, .no-dark-mode *,\n [data-theme=\"light\"], [data-theme=\"light\"],\n .ace_editor, .ace_editor *,\n .CodeMirror, .CodeMirror *,\n .monaco-editor, .monaco-editor *,\n .markdown-body pre, .markdown-body pre *,\n .highlight, .highlight *,\n pre code, pre code * {\n filter: none !important;\n }\n \n /* Fix common UI elements */\n .modal, .popup, .dropdown-menu, .tooltip, .popover {\n filter: invert(1) hue-rotate(180deg) !important;\n background: #2d2d44 !important;\n border-color: #444 !important;\n }\n \n /* Scrollbars */\n ::-webkit-scrollbar { background: #1a1a2e !important; }\n ::-webkit-scrollbar-thumb { background: #444 !important; }\n ::-webkit-scrollbar-thumb:hover { background: #555 !important; }\n \n /* Selection */\n ::selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ::-moz-selection { background: #4ecdc4 !important; color: #1a1a2e !important; }\n ';\n }\n \n function removeDarkMode() {\n var style = document.getElementById('universal-dark-mode-style');\n if (style) style.remove();\n }\n \n // Toggle with Alt+Shift+D\n document.addEventListener('keydown', function(e) {\n if (e.altKey && e.shiftKey && e.key === 'D') {\n e.preventDefault();\n enabled = !enabled;\n if (enabled) {\n applyDarkMode();\n console.log('[Universal Dark Mode] Enabled');\n } else {\n removeDarkMode();\n console.log('[Universal Dark Mode] Disabled');\n }\n }\n });\n \n // Apply on load\n applyDarkMode();\n \n // Re-apply on dynamic content\n var observer = new MutationObserver(function(mutations) {\n if (enabled && !document.getElementById('universal-dark-mode-style')) {\n applyDarkMode();\n }\n });\n observer.observe(document.head, { childList: true });\n \n console.log('[Universal Dark Mode] Loaded - Press Alt+Shift+D to toggle');\n})();", "Universal Dark Mode"); } } catch(__e) { console.warn('[Userscript:Universal Dark Mode]', __e); } })(); })();
Skip to content

Latest commit

History

96 Commits

Folders and files

NameName
Last commit message
Last commit date

Repository files navigation

klayout_pyxs

This is a python port of the XSection project (https://github.com/klayoutmatthias/xsection).

The goal of this project is to provide an add-on to KLayout (www.klayout.de) to create and visualize a realistic cross-section view for VLSI designs supporting a wide range of technology options.

User Documentation

For the project description see klayout_pyxs Project Home Page.

For an introduction into writing PYXS files, see Writing PYXS Files - an Introduction.

For a reference of the elements of the PYXS scripts, see PYXS File Reference.

Project Files

The basic structure is:

  • docs The documentation
  • klayout_pyxs The python package sources
  • pymacros The python .lym macros files for KLayout
  • samples Some sample files
  • tests Test sources and golden data
  • xs2pyxs xs to pyxs conversion scripts

The docs folder contains the .rst files and images for the documentation pages. See rendered version here.

The klayout_pyxs folder contains the python package which includes the cross-section generation engine.

The pymacros folder contains with the actual KLayout macros code, pyxs.lym.

The samples folder holds a few files for playing around.

The tests folder contains some regression tests for the package. To run the tests, make sure "klayout" or "klayout_app" (in Windows) is in your path and use

$ cd tests
$ ./run_tests.sh

or (from e.g. git bash console on Windows)

$ cd tests
$ bash run_tests_windows.sh

The xs2pyxs folder contains a shell script which helps converting Ruby-based .xs scripts to .pyxs scripts. It performs necessary but not sufficient string replacements. Depending on the .xs script complexity, more changes are likely to be needed.

Installation

Windows

To run .pyxs scripts from the KLayout menu, klayout_pyxs package and python macros file have to be installed to the KLayout folders. According to KLayout documentation, they should go to the "pymacros" and "python" folders in KLayout's user specific application folder. In Windows, it is $USERPROFILE/KLayout.

In Windows, do the following (the commands should be run from e.g. git bash console) Tested on KLayout 0.25.3 and 0.25.7.

  1. Check if $USERPROFILE/KLayout exists and is used by the KLayout to store macros. Run

    $ ls $USERPROFILE/KLayout

    If no error reported, continue with 1. If there is an error, you need to find a location of KLayout's user specific application folder with pymacros, python folders and use it in further commands.

  2. Clone klayout_pyxs repository into any source folder:

    $ git clone https://github.com/dimapu/klayout_pyxs.git klayout_pyxs_repo
  3. Copy klayout_pyxs_repo/pymacros/pyxs.lym to $USERPROFILE/KLayout/pymacros/pyxs.lym

    $ cp klayout_pyxs_repo/pymacros/pyxs.lym $USERPROFILE/KLayout/pymacros/pyxs.lym
  4. Copy klayout_pyxs_repo/klayout_pyxs/. to $USERPROFILE/KLayout/python/klayout_pyxs

    $ mkdir $USERPROFILE/KLayout/python/klayout_pyxs
    $ cp klayout_pyxs_repo/klayout_pyxs/*.py $USERPROFILE/KLayout/python/klayout_pyxs

Now, run Klayout. In the Tools menu, you should see pyxs > Load pyxs script.

About

Python port of xsection script for KLayout

Resources

Stars

2 stars

Watchers

1 watching

Forks

Releases

Packages

Contributors

Languages