{"id":8363,"date":"2024-07-06T23:52:07","date_gmt":"2024-07-06T18:22:07","guid":{"rendered":"https:\/\/nuclearrambo.com\/wordpress\/?p=8363"},"modified":"2024-10-03T14:55:03","modified_gmt":"2024-10-03T09:25:03","slug":"gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems","status":"publish","type":"post","link":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/","title":{"rendered":"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS"},"content":{"rendered":"\n<p class=\"has-drop-cap\">OpenEMS, an open-source tool for simulating electromagnetic structures, has been a valuable resource for the scientific community for some time. Its capabilities continue to expand, thanks to ongoing contributions that add new functionalities. While the openEMS package comprises various algorithms necessary for electromagnetic simulations, providing the required input can be tedious. Although programmatic interfaces via Matlab, Octave, and Python exist, they are not as user-friendly as commercial options like HFSS or CST Microwave Studio. Fortunately, this is gradually changing, making openEMS more accessible to a broader audience, including myself. One notable contribution is Gerber2EMS by AntMicro, which facilitates the use of Gerber files as input for openEMS to perform electromagnetic simulations..<\/p>\n\n\n\n<p>Gerber2EMS is specifically made to work with KiCAD but with a little tweak here and there does allow one to use gerbers generated by any other PCB design tool. The installation process is quite simple if you are working on Windows. Things got messy when I tried to set it up on Linux. So, for the sake of this tutorial, I will be using Windows 11 and Python 3.11.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Installation<\/h2>\n\n\n\n<p>Before starting, install the latest version of KiCAD on your PC. Gerber2EMS relies on specific names used by KiCAD to identify various PCB layers. As a result, it won&#8217;t directly recognize Gerbers generated by other tools, such as Altium Designer. However, with a few modifications to the Gerber importer script, you can use Gerber2EMS with Altium-generated Gerber files.<\/p>\n\n\n\n<p>Proceeding with our first step, ensure you have Python 3.10 or Python 3.11 installed on your computer. Download <a href=\"https:\/\/github.com\/thliebig\/openEMS-Project\/releases\/download\/v0.0.36\/openEMS_v0.0.36.zip\">the openEMS package<\/a> from the link and extract it to your drive. You don&#8217;t need to build the sources if you are using Windows 11. Follow the instructions below to install the Python packages.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">cd C:\\opt\\openEMS\\python\npip install CSXCAD-0.6.2-cp310-cp310-win_amd64.whl\npip install openEMS-0.0.33-cp310-cp310-win_amd64.whl<\/pre>\n\n\n\n<p>Ensure you set the environment variable pointing to the openEMS folder below. <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">setx OPENEMS_INSTALL_PATH C:\\opt\\openEMS<\/pre>\n\n\n\n<p>Your path may differ from the one given above. Therefore, ensure you enter the right path in your environment variable. Restart the terminal for the variable to come into effect. <\/p>\n\n\n\n<p>Download <a href=\"https:\/\/github.com\/antmicro\/gerber2ems\/archive\/refs\/heads\/main.zip\">Gerber2ems package from this link.<\/a> For git users, simply run this command:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">git clone https:\/\/github.com\/antmicro\/gerber2ems.git<\/pre>\n\n\n\n<p>Go to the <em>gerber2ems<\/em> directory and run<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">pip install .<\/pre>\n\n\n\n<p>This installs all the binaries for <em>gerber2ems<\/em> that can be called through Windows terminal. <\/p>\n\n\n\n<p>Next, you need to install two more tools, <em><a href=\"https:\/\/github.com\/antmicro\/gerber2ems\/blob\/main\">gerbv<\/a><\/em> and <a href=\"https:\/\/www.paraview.org\/\">Paraview.<\/a> <\/p>\n\n\n\n<p><em>Gerbv<\/em> comes in a zip package which needs to be extracted somewhere. Upon extracting, add the <em>gerbv <\/em>directory to your<em> PATH <\/em>environment variable. This is a very important step and should not be missed. I tried running gerber2ems without adding<em> <strong>gerbv <\/strong><\/em>to<em> PATH <\/em>variable<em>. I struggled for some time<\/em> before realising the problem. After adding <em><strong>gerbv<\/strong><\/em> to the PATH environment variable, everything worked fine. <\/p>\n\n\n\n<p>To test your installations, run the following commands in your command terminal.<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gerber2ems\n\ngerbv<\/pre>\n\n\n\n<center><p><script type=\"text\/javascript\">\n\tatOptions = {\n\t\t'key' : 'a488f095e80c8a74746e5fdca977eaea',\n\t\t'format' : 'iframe',\n\t\t'height' : 90,\n\t\t'width' : 728,\n\t\t'params' : {}\n\t};\n\tdocument.write('<scr' + 'ipt type=\"text\/javascript\" src=\"http' + (location.protocol === 'https:' ? 's' : '') + ':\/\/www.profitabledisplaynetwork.com\/a488f095e80c8a74746e5fdca977eaea\/invoke.js\"><\/scr' + 'ipt>');\n<\/script><\/p><\/center>\n\n\n\n<h2 class=\"wp-block-heading\">Running examples<\/h2>\n\n\n\n<p>Antmicro provides four examples to try out and those can be found in the &#8220;examples&#8221; directory. Open a command terminal in one of the examples. I chose the example named &#8220;real&#8221; and opened a terminal inside the directory and run this<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gerber2ems -a --export-field<\/pre>\n\n\n\n<p>A correct installation should allow this command to run through and produce simulation results. The results end up in &#8220;ems&#8221; directory.<\/p>\n\n\n\n<p>Based on the examples, I created my own PCB project for simulation. Read further to understand the process.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Co-planar waveguide simulation in gerber2ems<\/h2>\n\n\n\n<p><em>gerber2ems<\/em> looks for three inputs necessary to carry out a simulation using openEMS. <\/p>\n\n\n\n<ol class=\"wp-block-list\">\n<li>Gerber files inside &#8220;fab&#8221; directory<\/li>\n\n\n\n<li>PCB stackup file inside the &#8220;fab&#8221; directory.<\/li>\n\n\n\n<li>Simulation file in the project directory. <\/li>\n<\/ol>\n\n\n\n<h3 class=\"wp-block-heading\">The PCB stackup<\/h3>\n\n\n\n<p>I took the &#8220;real&#8221; example as my basis to the simulation. My PCB stackup has a 0.35 mm FR4 dielectric. Correspondingly, I also changed the stackup.json file with the new values.<\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/stackupkicad.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"647\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/stackupkicad-1024x647.png\" alt=\"\" class=\"wp-image-8364\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/stackupkicad-1024x647.png 1024w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/stackupkicad-300x190.png 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/stackupkicad-768x486.png 768w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/stackupkicad.png 1172w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><\/figure><\/div>\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n    \"layers\": [\n        {\n            \"name\": \"F.Cu\",\n            \"type\": \"copper\",\n            \"color\": null,\n            \"thickness\": 0.035,\n            \"material\": null,\n            \"epsilon\": null,\n            \"lossTangent\": null\n        },\n        {\n            \"name\": \"dielectric 1\",\n            \"type\": \"core\",\n            \"color\": null,\n            \"thickness\": 0.35,\n            \"material\": \"FR4\",\n            \"epsilon\": 4.5,\n            \"lossTangent\": 0.02\n        },\n        {\n            \"name\": \"B.Cu\",\n            \"type\": \"copper\",\n            \"color\": null,\n            \"thickness\": 0.035,\n            \"material\": null,\n            \"epsilon\": null,\n            \"lossTangent\": null\n        }\n    ],\n    \"format_version\": \"1.0\"\n}<\/pre>\n\n\n\n<h3 class=\"wp-block-heading\">Add ports<\/h3>\n\n\n\n<p>On the PCB, add two ports on the <em>F.Fab<\/em> layer. I copied these ports from one of the example designs. <\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/spports.png\"><img loading=\"lazy\" decoding=\"async\" width=\"321\" height=\"1024\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/spports-321x1024.png\" alt=\"CPWG prepared for gerber2ems simulation\" class=\"wp-image-8365\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/spports-321x1024.png 321w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/spports-94x300.png 94w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/spports.png 457w\" sizes=\"auto, (max-width: 321px) 100vw, 321px\" \/><\/a><\/figure><\/div>\n\n\n<p>Make sure to add an outline to your PCB on the <em>Edge_Cuts <\/em>layer. <em>gerber2ems <\/em>uses the <em>Edge_Cuts<\/em> to identify the PCB shape and compute the port positions accordingly. <\/p>\n\n\n\n<p>Speaking of the port positions, add the drill origin to the left bottom of the PCB outline. <\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/kicad_origin.png\"><img loading=\"lazy\" decoding=\"async\" width=\"832\" height=\"1024\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/kicad_origin-832x1024.png\" alt=\"\" class=\"wp-image-8366\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/kicad_origin-832x1024.png 832w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/kicad_origin-244x300.png 244w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/kicad_origin-768x945.png 768w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/kicad_origin.png 903w\" sizes=\"auto, (max-width: 832px) 100vw, 832px\" \/><\/a><\/figure><\/div>\n\n\n<p>In the &#8220;fab&#8221; folder, there&#8217;s a file called &#8220;xxx-top-pos.csv&#8221; where xxx is your project name. This file contains the port positions calculated with respect to the drill origin. I don&#8217;t know a simpler way so I manually calculated those positions by subtracting drill origin coordinates with port coordinates.<\/p>\n\n\n\n<p>For example, the drill origin is at (144, 90) and the SP1 port at (150, 95). The position for SP1 to enter into the CSV file would be (150 &#8211; 144) = 6 and (95- 90) = 5. Therefore, the SP1 position = (6, 5). Similarly, calculate for rest of the ports in your design. In this example, we only got 2 ports. Had it been a differential line or a 3 port network, we would have more than 2 ports. <\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image.png\"><img loading=\"lazy\" decoding=\"async\" width=\"709\" height=\"127\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image.png\" alt=\"\" class=\"wp-image-8367\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image.png 709w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-300x54.png 300w\" sizes=\"auto, (max-width: 709px) 100vw, 709px\" \/><\/a><\/figure><\/div>\n\n\n<p>Finally, generate the gerber files and ensure you disable this option. In another design, I had this option enabled that confused the gerber2ems and repeatedly threw errors at me. <\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"636\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-1-1024x636.png\" alt=\"\" class=\"wp-image-8368\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-1-1024x636.png 1024w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-1-300x186.png 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-1-768x477.png 768w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-1.png 1276w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Disable the plot drawing sheet option. <\/figcaption><\/figure><\/div>\n\n\n<p>Simply adding ports to the design isn&#8217;t enough. These ports should also be added into the simulation.json file in the project root directory. It&#8217;s better to take reference of the example simulation file to start with. <\/p>\n\n\n\n<p>You must set the start and stop frequencies for the simulation. Furthremore, select an appropriately sized meshing. To know more about the simulation parameters, refer to the official <a href=\"https:\/\/github.com\/antmicro\/gerber2ems\">gerber2ems github link<\/a>. <\/p>\n\n\n\n<center><p><script type=\"text\/javascript\">\n\tatOptions = {\n\t\t'key' : 'a488f095e80c8a74746e5fdca977eaea',\n\t\t'format' : 'iframe',\n\t\t'height' : 90,\n\t\t'width' : 728,\n\t\t'params' : {}\n\t};\n\tdocument.write('<scr' + 'ipt type=\"text\/javascript\" src=\"http' + (location.protocol === 'https:' ? 's' : '') + ':\/\/www.profitabledisplaynetwork.com\/a488f095e80c8a74746e5fdca977eaea\/invoke.js\"><\/scr' + 'ipt>');\n<\/script><\/p><\/center>\n\n\n\n<h3 class=\"wp-block-heading\">More about simulation settings<\/h3>\n\n\n\n<p>Going by the github link, the simulation.json file has three major sections; Miscelleneous, Mesh and Ports. The details for each section are provided on the github page. <\/p>\n\n\n\n<p>Since, I copied the simulation file from the &#8220;example&#8221;, I only made minor changes to the parameters to suit my needs. <\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"json\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">{\n    \"format_version\": \"1.1\",\n    \"frequency\": {\n        \"start\": 1e9,\n        \"stop\": 4e9\n    },\n    \"max_steps\": 8e4,\n    \"via\": {\n        \"filling_epsilon\": 1,\n        \"plating_thickness\": 50\n    },\n    \"mesh\": {\n        \"xy\": 50,\n        \"inter_layers\": 6,\n        \"margin\": {\n            \"xy\": 200,\n            \"z\": 200\n        }\n    },\n    \"margin\": {\n        \"xy\": 1000,\n        \"z\": 1000\n    },\n    \"ports\": [\n        {\n            \"width\": 600,\n            \"length\": 500,\n            \"impedance\": 50,\n            \"layer\": 0,\n            \"plane\": 1,\n            \"excite\": true\n        },\n        {\n            \"width\": 600,\n            \"length\": 500,\n            \"impedance\": 50,\n            \"layer\": 0,\n            \"plane\": 1,\n            \"excite\": true\n        }\n    ],\n    \"traces\": [\n        {\n            \"start\": 0,\n            \"stop\": 1,\n            \"name\": \"A\"\n        }\n    ]\n}<\/pre>\n\n\n\n<p>To summarise the setup, I created a CPWG, added two ports, modified the PCB stackup, modified the stackup.json to match the PCB stackup, generated the gerbers and finally edited the position file. Now, let&#8217;s run the simulation.<\/p>\n\n\n\n<h2 class=\"wp-block-heading\">Running the openEMS simulation on your Kicad PCB<\/h2>\n\n\n\n<p>A correct setup results in error-free simulation. It&#8217;s imperative that you calculate the port positions correctly. Incorrect positions, mismatch between the CSV file and the PCB, results in inaccurate simulation.<\/p>\n\n\n\n<p>Run the following command in your project root and wait for the results:<\/p>\n\n\n\n<pre class=\"EnlighterJSRAW\" data-enlighter-language=\"generic\" data-enlighter-theme=\"\" data-enlighter-highlight=\"\" data-enlighter-linenumbers=\"\" data-enlighter-lineoffset=\"\" data-enlighter-title=\"\" data-enlighter-group=\"\">gerber -a --export-field<\/pre>\n\n\n\n<p>Depending on your PC configuration, the simulation time could take time. <\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-2.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"558\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-2-1024x558.png\" alt=\"\" class=\"wp-image-8369\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-2-1024x558.png 1024w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-2-300x164.png 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-2-768x419.png 768w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-2-1536x838.png 1536w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/image-2.png 1546w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">Started the simulation with gerber2ems<\/figcaption><\/figure><\/div>\n\n\n<h2 class=\"wp-block-heading\">The results<\/h2>\n\n\n\n<p>After a while, the simulation completes and dumps the data into the &#8220;ems\/simulation\/&#8221; directory. Now, we can either view these results using Paraview or simply observe the Smith chart produced by gerber2ems. <\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_11_smith.png\"><img loading=\"lazy\" decoding=\"async\" width=\"389\" height=\"389\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_11_smith.png\" alt=\"\" class=\"wp-image-8370\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_11_smith.png 389w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_11_smith-300x300.png 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_11_smith-150x150.png 150w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_11_smith-80x80.png 80w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_11_smith-320x320.png 320w\" sizes=\"auto, (max-width: 389px) 100vw, 389px\" \/><\/a><figcaption class=\"wp-element-caption\">S11 of the simulation results<\/figcaption><\/figure><\/div>\n\n\n<p>Wonderful! Gerber2EMS captured the simulation results from openEMS and computed the S-parameters eventually saving it automatically into an image. Upon closely observing, the smith chart reveals a not-too-bad CPWG. Additionally, <em>gerber2ems<\/em> also generated plots for delay, S22, S21, etc. <\/p>\n\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_22_smith.png\"><img loading=\"lazy\" decoding=\"async\" width=\"389\" height=\"389\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_22_smith.png\" alt=\"\" class=\"wp-image-8371\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_22_smith.png 389w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_22_smith-300x300.png 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_22_smith-150x150.png 150w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_22_smith-80x80.png 80w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_22_smith-320x320.png 320w\" sizes=\"auto, (max-width: 389px) 100vw, 389px\" \/><\/a><figcaption class=\"wp-element-caption\">S22 generated by gerber2ems<\/figcaption><\/figure><\/div>\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-full\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_x1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"640\" height=\"480\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_x1.png\" alt=\"\" class=\"wp-image-8372\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_x1.png 640w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/S_x1-300x225.png 300w\" sizes=\"auto, (max-width: 640px) 100vw, 640px\" \/><\/a><figcaption class=\"wp-element-caption\">S11 and S21 for the Kicad designed CPWG and simulated in openEMS<\/figcaption><\/figure><\/div>\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/efield.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"608\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/efield-1024x608.png\" alt=\"\" class=\"wp-image-8373\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/efield-1024x608.png 1024w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/efield-300x178.png 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/efield-768x456.png 768w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/efield-1536x912.png 1536w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/efield-2048x1215.png 2048w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">E-field viewed in Paraview<\/figcaption><\/figure><\/div>\n\n<div class=\"wp-block-image is-style-default\">\n<figure class=\"aligncenter size-large\"><a href=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/featuredimage1.png\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"731\" src=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/featuredimage1-1024x731.png\" alt=\"tutorial to simulate kicad in gerber2ems openEMS\" class=\"wp-image-8376\" srcset=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/featuredimage1-1024x731.png 1024w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/featuredimage1-300x214.png 300w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/featuredimage1-768x548.png 768w, https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/featuredimage1.png 1501w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/a><figcaption class=\"wp-element-caption\">tutorial to simulate kicad in gerber2ems openEMS<\/figcaption><\/figure><\/div>\n\n\n<p>Let me know what you think in the comments below. I will be glad to answer any questions you may have regarding this article. <\/p>\n\n\n\n<center><p><script type=\"text\/javascript\">\n\tatOptions = {\n\t\t'key' : 'a488f095e80c8a74746e5fdca977eaea',\n\t\t'format' : 'iframe',\n\t\t'height' : 90,\n\t\t'width' : 728,\n\t\t'params' : {}\n\t};\n\tdocument.write('<scr' + 'ipt type=\"text\/javascript\" src=\"http' + (location.protocol === 'https:' ? 's' : '') + ':\/\/www.profitabledisplaynetwork.com\/a488f095e80c8a74746e5fdca977eaea\/invoke.js\"><\/scr' + 'ipt>');\n<\/script><\/p><\/center>\n<h4>Incoming search terms:<\/h4><ul><li><a href=\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/\" title=\"https:\/\/nuclearrambo com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/\">https:\/\/nuclearrambo com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/<\/a><\/li><\/ul>","protected":false},"excerpt":{"rendered":"<p>OpenEMS, an open-source tool for simulating electromagnetic structures, has been a valuable resource for the scientific community for some time. Its capabilities continue to expand, thanks to ongoing contributions that add new functionalities. While&#46;&#46;&#46;<\/p>\n","protected":false},"author":1,"featured_media":8376,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"footnotes":""},"categories":[1694,1212,1562],"tags":[170,1808,1807,1806,1645],"class_list":["post-8363","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-amateur-radio","category-electronics-2","category-tutorials","tag-electronics","tag-gerber2ems","tag-kicad","tag-openems","tag-rf"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v20.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS<\/title>\n<meta name=\"description\" content=\"Learn how to use gerber2ems to simulate your Kicad PCBs using openEMS electromagnetic simulation tool. I show an example of CPWG simulation.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS\" \/>\n<meta property=\"og:description\" content=\"Learn how to use gerber2ems to simulate your Kicad PCBs using openEMS electromagnetic simulation tool. I show an example of CPWG simulation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/\" \/>\n<meta property=\"og:site_name\" content=\"Nuclearrambo\" \/>\n<meta property=\"article:published_time\" content=\"2024-07-06T18:22:07+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2024-10-03T09:25:03+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/featuredimage1.png\" \/>\n\t<meta property=\"og:image:width\" content=\"1501\" \/>\n\t<meta property=\"og:image:height\" content=\"1072\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/png\" \/>\n<meta name=\"author\" content=\"nuclearrambo\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:creator\" content=\"@darkusul\" \/>\n<meta name=\"twitter:site\" content=\"@darkusul\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"nuclearrambo\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/#article\",\"isPartOf\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/\"},\"author\":{\"name\":\"nuclearrambo\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c\"},\"headline\":\"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS\",\"datePublished\":\"2024-07-06T18:22:07+00:00\",\"dateModified\":\"2024-10-03T09:25:03+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/\"},\"wordCount\":1207,\"commentCount\":7,\"publisher\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#organization\"},\"keywords\":[\"electronics\",\"gerber2ems\",\"kicad\",\"openems\",\"rf\"],\"articleSection\":[\"Amateur Radio\",\"Electronics\",\"Tutorials\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/\",\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/\",\"name\":\"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS\",\"isPartOf\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#website\"},\"datePublished\":\"2024-07-06T18:22:07+00:00\",\"dateModified\":\"2024-10-03T09:25:03+00:00\",\"description\":\"Learn how to use gerber2ems to simulate your Kicad PCBs using openEMS electromagnetic simulation tool. I show an example of CPWG simulation.\",\"breadcrumb\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\/\/nuclearrambo.com\/wordpress\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#website\",\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/\",\"name\":\"Nuclearrambo\",\"description\":\"Information is FREE! Progress is MUST! Awakening is inevitable!\",\"publisher\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/nuclearrambo.com\/wordpress\/?s={search_term_string}\"},\"query-input\":\"required name=search_term_string\"}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#organization\",\"name\":\"Nuclearrambo\",\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2021\/01\/logo-nuclearrambo.png\",\"contentUrl\":\"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2021\/01\/logo-nuclearrambo.png\",\"width\":1489,\"height\":1152,\"caption\":\"Nuclearrambo\"},\"image\":{\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/twitter.com\/darkusul\"]},{\"@type\":\"Person\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c\",\"name\":\"nuclearrambo\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/image\/\",\"url\":\"https:\/\/secure.gravatar.com\/avatar\/9cc8a9d2d82dd7e65e77405f7b4ccaa34450e8a268f369ac893882cc5f13a797?s=96&r=g\",\"contentUrl\":\"https:\/\/secure.gravatar.com\/avatar\/9cc8a9d2d82dd7e65e77405f7b4ccaa34450e8a268f369ac893882cc5f13a797?s=96&r=g\",\"caption\":\"nuclearrambo\"},\"description\":\"Salil is an electronics enthusiast working on various electronics systems. In his free time he writes on the blog, talks over ham radio or builds circuits. He has Yaesu FT2900R VHF transceiver, FT450D HF transceiver, TYT UV8000E and Quansheng UVK6 Handheld transceivers.\",\"sameAs\":[\"http:\/\/nuclearrambo.com\/wordpress\"],\"url\":\"https:\/\/nuclearrambo.com\/wordpress\/author\/admin\/\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS","description":"Learn how to use gerber2ems to simulate your Kicad PCBs using openEMS electromagnetic simulation tool. I show an example of CPWG simulation.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/","og_locale":"en_US","og_type":"article","og_title":"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS","og_description":"Learn how to use gerber2ems to simulate your Kicad PCBs using openEMS electromagnetic simulation tool. I show an example of CPWG simulation.","og_url":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/","og_site_name":"Nuclearrambo","article_published_time":"2024-07-06T18:22:07+00:00","article_modified_time":"2024-10-03T09:25:03+00:00","og_image":[{"width":1501,"height":1072,"url":"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2024\/07\/featuredimage1.png","type":"image\/png"}],"author":"nuclearrambo","twitter_card":"summary_large_image","twitter_creator":"@darkusul","twitter_site":"@darkusul","twitter_misc":{"Written by":"nuclearrambo","Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/#article","isPartOf":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/"},"author":{"name":"nuclearrambo","@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c"},"headline":"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS","datePublished":"2024-07-06T18:22:07+00:00","dateModified":"2024-10-03T09:25:03+00:00","mainEntityOfPage":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/"},"wordCount":1207,"commentCount":7,"publisher":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#organization"},"keywords":["electronics","gerber2ems","kicad","openems","rf"],"articleSection":["Amateur Radio","Electronics","Tutorials"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/","url":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/","name":"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS","isPartOf":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#website"},"datePublished":"2024-07-06T18:22:07+00:00","dateModified":"2024-10-03T09:25:03+00:00","description":"Learn how to use gerber2ems to simulate your Kicad PCBs using openEMS electromagnetic simulation tool. I show an example of CPWG simulation.","breadcrumb":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/nuclearrambo.com\/wordpress\/gerber2ems-a-short-tutorial-to-simulate-your-pcbs-in-openems\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/nuclearrambo.com\/wordpress\/"},{"@type":"ListItem","position":2,"name":"A short tutorial to simulate your Kicad PCBs in openEMS using Gerber2EMS"}]},{"@type":"WebSite","@id":"https:\/\/nuclearrambo.com\/wordpress\/#website","url":"https:\/\/nuclearrambo.com\/wordpress\/","name":"Nuclearrambo","description":"Information is FREE! Progress is MUST! Awakening is inevitable!","publisher":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/nuclearrambo.com\/wordpress\/?s={search_term_string}"},"query-input":"required name=search_term_string"}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/nuclearrambo.com\/wordpress\/#organization","name":"Nuclearrambo","url":"https:\/\/nuclearrambo.com\/wordpress\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/logo\/image\/","url":"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2021\/01\/logo-nuclearrambo.png","contentUrl":"https:\/\/nuclearrambo.com\/wordpress\/wp-content\/uploads\/2021\/01\/logo-nuclearrambo.png","width":1489,"height":1152,"caption":"Nuclearrambo"},"image":{"@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/twitter.com\/darkusul"]},{"@type":"Person","@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/6093ae9d048d4789bd3d18c136577a0c","name":"nuclearrambo","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/nuclearrambo.com\/wordpress\/#\/schema\/person\/image\/","url":"https:\/\/secure.gravatar.com\/avatar\/9cc8a9d2d82dd7e65e77405f7b4ccaa34450e8a268f369ac893882cc5f13a797?s=96&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/9cc8a9d2d82dd7e65e77405f7b4ccaa34450e8a268f369ac893882cc5f13a797?s=96&r=g","caption":"nuclearrambo"},"description":"Salil is an electronics enthusiast working on various electronics systems. In his free time he writes on the blog, talks over ham radio or builds circuits. He has Yaesu FT2900R VHF transceiver, FT450D HF transceiver, TYT UV8000E and Quansheng UVK6 Handheld transceivers.","sameAs":["http:\/\/nuclearrambo.com\/wordpress"],"url":"https:\/\/nuclearrambo.com\/wordpress\/author\/admin\/"}]}},"_links":{"self":[{"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts\/8363","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/comments?post=8363"}],"version-history":[{"count":7,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts\/8363\/revisions"}],"predecessor-version":[{"id":8393,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/posts\/8363\/revisions\/8393"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/media\/8376"}],"wp:attachment":[{"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/media?parent=8363"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/categories?post=8363"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/nuclearrambo.com\/wordpress\/wp-json\/wp\/v2\/tags?post=8363"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}