Files
beagleconnect-freedom/docs/generate_block_diagrams.ipynb
2022-01-06 16:01:27 -05:00

414 lines
21 KiB
Plaintext

{
"cells": [
{
"cell_type": "code",
"execution_count": 2,
"id": "improving-twelve",
"metadata": {},
"outputs": [
{
"name": "stdout",
"output_type": "stream",
"text": [
"Collecting graphviz\n",
" Downloading graphviz-0.19.1-py3-none-any.whl (46 kB)\n",
"\u001b[K |████████████████████████████████| 46 kB 1.5 MB/s eta 0:00:01\n",
"\u001b[?25hInstalling collected packages: graphviz\n",
"Successfully installed graphviz-0.19.1\n"
]
}
],
"source": [
"import sys\n",
"!{sys.executable} -m pip install graphviz"
]
},
{
"cell_type": "code",
"execution_count": 3,
"id": "bearing-cleveland",
"metadata": {},
"outputs": [],
"source": [
"import graphviz"
]
},
{
"cell_type": "code",
"execution_count": 101,
"id": "potential-outside",
"metadata": {},
"outputs": [
{
"data": {
"image/svg+xml": [
"<?xml version=\"1.0\" encoding=\"UTF-8\" standalone=\"no\"?>\n",
"<!DOCTYPE svg PUBLIC \"-//W3C//DTD SVG 1.1//EN\"\n",
" \"http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd\">\n",
"<!-- Generated by graphviz version 2.43.0 (0)\n",
" -->\n",
"<!-- Title: S Pages: 1 -->\n",
"<svg width=\"570pt\" height=\"767pt\"\n",
" viewBox=\"0.00 0.00 570.00 767.00\" xmlns=\"http://www.w3.org/2000/svg\" xmlns:xlink=\"http://www.w3.org/1999/xlink\">\n",
"<g id=\"graph0\" class=\"graph\" transform=\"scale(1 1) rotate(0) translate(4 763)\">\n",
"<title>S</title>\n",
"<polygon fill=\"white\" stroke=\"transparent\" points=\"-4,4 -4,-763 566,-763 566,4 -4,4\"/>\n",
"<g id=\"clust1\" class=\"cluster\">\n",
"<title>cluster_0</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"8,-304 8,-751 280,-751 280,-304 8,-304\"/>\n",
"<text text-anchor=\"middle\" x=\"144\" y=\"-735.8\" font-family=\"Times,serif\" font-size=\"14.00\">Linux PC</text>\n",
"</g>\n",
"<g id=\"clust2\" class=\"cluster\">\n",
"<title>cluster_1</title>\n",
"<polygon fill=\"lightgrey\" stroke=\"lightgrey\" points=\"16,-645 16,-720 272,-720 272,-645 16,-645\"/>\n",
"<text text-anchor=\"middle\" x=\"144\" y=\"-704.8\" font-family=\"Times,serif\" font-size=\"14.00\">Linux userspace</text>\n",
"</g>\n",
"<g id=\"clust3\" class=\"cluster\">\n",
"<title>cluster_2</title>\n",
"<polygon fill=\"lightgrey\" stroke=\"lightgrey\" points=\"41,-312 41,-637 272,-637 272,-312 41,-312\"/>\n",
"<text text-anchor=\"middle\" x=\"156.5\" y=\"-621.8\" font-family=\"Times,serif\" font-size=\"14.00\">Linux kernel</text>\n",
"</g>\n",
"<g id=\"clust4\" class=\"cluster\">\n",
"<title>cluster_3</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"288,-213 288,-418 466,-418 466,-213 288,-213\"/>\n",
"<text text-anchor=\"middle\" x=\"377\" y=\"-402.8\" font-family=\"Times,serif\" font-size=\"14.00\">BCF gateway</text>\n",
"</g>\n",
"<g id=\"clust5\" class=\"cluster\">\n",
"<title>cluster_4</title>\n",
"<polygon fill=\"lightgrey\" stroke=\"lightgrey\" points=\"324,-221 324,-296 430,-296 430,-221 324,-221\"/>\n",
"<text text-anchor=\"middle\" x=\"377\" y=\"-280.8\" font-family=\"Times,serif\" font-size=\"14.00\">CC1352</text>\n",
"</g>\n",
"<g id=\"clust6\" class=\"cluster\">\n",
"<title>cluster_5</title>\n",
"<polygon fill=\"lightgrey\" stroke=\"lightgrey\" points=\"296,-312 296,-387 458,-387 458,-312 296,-312\"/>\n",
"<text text-anchor=\"middle\" x=\"377\" y=\"-371.8\" font-family=\"Times,serif\" font-size=\"14.00\">MSP430</text>\n",
"</g>\n",
"<g id=\"clust7\" class=\"cluster\">\n",
"<title>cluster_6</title>\n",
"<polygon fill=\"none\" stroke=\"black\" points=\"227,-8 227,-205 554,-205 554,-8 227,-8\"/>\n",
"<text text-anchor=\"middle\" x=\"390.5\" y=\"-189.8\" font-family=\"Times,serif\" font-size=\"14.00\">BCF node</text>\n",
"</g>\n",
"<g id=\"clust8\" class=\"cluster\">\n",
"<title>cluster_7</title>\n",
"<polygon fill=\"lightgrey\" stroke=\"lightgrey\" points=\"290,-99 290,-174 464,-174 464,-99 290,-99\"/>\n",
"<text text-anchor=\"middle\" x=\"377\" y=\"-158.8\" font-family=\"Times,serif\" font-size=\"14.00\">CC1352</text>\n",
"</g>\n",
"<g id=\"clust9\" class=\"cluster\">\n",
"<title>cluster_8</title>\n",
"<polygon fill=\"lightgrey\" stroke=\"lightgrey\" points=\"235,-16 235,-91 546,-91 546,-16 235,-16\"/>\n",
"<text text-anchor=\"middle\" x=\"390.5\" y=\"-75.8\" font-family=\"Times,serif\" font-size=\"14.00\">mikroBUS add&#45;on board</text>\n",
"</g>\n",
"<!-- A -->\n",
"<g id=\"node1\" class=\"node\">\n",
"<title>A</title>\n",
"<g id=\"a_node1\"><a xlink:title=\"Primary developer entry point\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"160,-689 24,-689 24,-653 160,-653 160,-689\"/>\n",
"<text text-anchor=\"middle\" x=\"92\" y=\"-667.3\" font-family=\"Times,serif\" font-size=\"14.00\">User Application</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- I -->\n",
"<g id=\"node3\" class=\"node\">\n",
"<title>I</title>\n",
"<g id=\"a_node3\"><a xlink:title=\"Hundreds of drivers for sensors and acutators\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"145,-606 49,-606 49,-570 145,-570 145,-606\"/>\n",
"<text text-anchor=\"middle\" x=\"97\" y=\"-584.3\" font-family=\"Times,serif\" font-size=\"14.00\">IIO Drivers</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- A&#45;&gt;I -->\n",
"<g id=\"edge1\" class=\"edge\">\n",
"<title>A&#45;&gt;I</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M93.06,-652.82C93.72,-642.19 94.57,-628.31 95.32,-616.2\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"98.82,-616.35 95.94,-606.15 91.83,-615.92 98.82,-616.35\"/>\n",
"</g>\n",
"<!-- g -->\n",
"<g id=\"node2\" class=\"node\">\n",
"<title>g</title>\n",
"<g id=\"a_node2\"><a xlink:title=\"Bridge Greybus to networked devices\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"264,-689 178,-689 178,-653 264,-653 264,-689\"/>\n",
"<text text-anchor=\"middle\" x=\"221\" y=\"-667.3\" font-family=\"Times,serif\" font-size=\"14.00\">gbridge**</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- 6 -->\n",
"<g id=\"node9\" class=\"node\">\n",
"<title>6</title>\n",
"<g id=\"a_node9\"><a xlink:title=\"IPv6 for low&#45;power wireless networks\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"251,-606 183,-606 183,-570 251,-570 251,-606\"/>\n",
"<text text-anchor=\"middle\" x=\"217\" y=\"-584.3\" font-family=\"Times,serif\" font-size=\"14.00\">lowpan</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- g&#45;&gt;6 -->\n",
"<g id=\"edge6\" class=\"edge\">\n",
"<title>g&#45;&gt;6</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M220.15,-652.82C219.63,-642.19 218.94,-628.31 218.34,-616.2\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"221.84,-615.97 217.85,-606.15 214.84,-616.31 221.84,-615.97\"/>\n",
"</g>\n",
"<!-- m -->\n",
"<g id=\"node6\" class=\"node\">\n",
"<title>m</title>\n",
"<g id=\"a_node6\"><a xlink:title=\"Board&#45;level abstraction to identify sensor connections\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"145.5,-534 48.5,-534 48.5,-498 145.5,-498 145.5,-534\"/>\n",
"<text text-anchor=\"middle\" x=\"97\" y=\"-512.3\" font-family=\"Times,serif\" font-size=\"14.00\">mikrobus**</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- I&#45;&gt;m -->\n",
"<g id=\"edge2\" class=\"edge\">\n",
"<title>I&#45;&gt;m</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M97,-569.7C97,-561.98 97,-552.71 97,-544.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"100.5,-544.1 97,-534.1 93.5,-544.1 100.5,-544.1\"/>\n",
"</g>\n",
"<!-- r -->\n",
"<g id=\"node4\" class=\"node\">\n",
"<title>r</title>\n",
"<g id=\"a_node4\"><a xlink:title=\"Dynamic RPC&#45;like bus interface for I2C, SPI, UART, etc.\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"135,-462 61,-462 61,-426 135,-426 135,-462\"/>\n",
"<text text-anchor=\"middle\" x=\"98\" y=\"-440.3\" font-family=\"Times,serif\" font-size=\"14.00\">greybus</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- n -->\n",
"<g id=\"node5\" class=\"node\">\n",
"<title>n</title>\n",
"<g id=\"a_node5\"><a xlink:title=\"Extend Greybus over netlink to userspace\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"151,-356 49,-356 49,-320 151,-320 151,-356\"/>\n",
"<text text-anchor=\"middle\" x=\"100\" y=\"-334.3\" font-family=\"Times,serif\" font-size=\"14.00\">gb&#45;netlink**</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- r&#45;&gt;n -->\n",
"<g id=\"edge4\" class=\"edge\">\n",
"<title>r&#45;&gt;n</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M98.33,-425.83C98.64,-409.64 99.11,-385.13 99.48,-366.27\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"102.98,-366.26 99.67,-356.2 95.98,-366.13 102.98,-366.26\"/>\n",
"</g>\n",
"<!-- n&#45;&gt;g -->\n",
"<g id=\"edge5\" class=\"edge\">\n",
"<title>n&#45;&gt;g</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M87.74,-356.26C53.38,-406.87 -36.47,-556.42 40,-637 49.89,-647.42 155.1,-641.38 169,-645 173.03,-646.05 177.13,-647.42 181.17,-648.98\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"179.83,-652.21 190.4,-652.89 182.56,-645.77 179.83,-652.21\"/>\n",
"</g>\n",
"<!-- m&#45;&gt;r -->\n",
"<g id=\"edge3\" class=\"edge\">\n",
"<title>m&#45;&gt;r</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M97.25,-497.7C97.36,-489.98 97.49,-480.71 97.61,-472.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"101.11,-472.15 97.76,-462.1 94.11,-472.05 101.11,-472.15\"/>\n",
"</g>\n",
"<!-- w -->\n",
"<g id=\"node7\" class=\"node\">\n",
"<title>w</title>\n",
"<g id=\"a_node7\"><a xlink:title=\"USB&#45;interface to IEEE802.15.4 radio\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"262,-462 168,-462 168,-426 262,-426 262,-462\"/>\n",
"<text text-anchor=\"middle\" x=\"215\" y=\"-440.3\" font-family=\"Times,serif\" font-size=\"14.00\">wpanusb**</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- b -->\n",
"<g id=\"node11\" class=\"node\">\n",
"<title>b</title>\n",
"<g id=\"a_node11\"><a xlink:title=\"USB interace to access CC1352 UART that encapulates WPANUSB in HDLC\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"450,-356 304,-356 304,-320 450,-320 450,-356\"/>\n",
"<text text-anchor=\"middle\" x=\"377\" y=\"-334.3\" font-family=\"Times,serif\" font-size=\"14.00\">usb_uart_bridge**</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- w&#45;&gt;b -->\n",
"<g id=\"edge9\" class=\"edge\">\n",
"<title>w&#45;&gt;b</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M260.64,-425.92C265.92,-423.47 271.15,-420.82 276,-418 303.24,-402.17 331.22,-379.71 350.81,-362.78\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"353.18,-365.35 358.4,-356.12 348.57,-360.08 353.18,-365.35\"/>\n",
"</g>\n",
"<!-- i -->\n",
"<g id=\"node8\" class=\"node\">\n",
"<title>i</title>\n",
"<g id=\"a_node8\"><a xlink:title=\"Standards&#45;based radio interface\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"264,-534 164,-534 164,-498 264,-498 264,-534\"/>\n",
"<text text-anchor=\"middle\" x=\"214\" y=\"-512.3\" font-family=\"Times,serif\" font-size=\"14.00\">ieee802154</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- i&#45;&gt;w -->\n",
"<g id=\"edge8\" class=\"edge\">\n",
"<title>i&#45;&gt;w</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M214.25,-497.7C214.36,-489.98 214.49,-480.71 214.61,-472.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"218.11,-472.15 214.76,-462.1 211.11,-472.05 218.11,-472.15\"/>\n",
"</g>\n",
"<!-- 6&#45;&gt;i -->\n",
"<g id=\"edge7\" class=\"edge\">\n",
"<title>6&#45;&gt;i</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M216.26,-569.7C215.93,-561.98 215.53,-552.71 215.16,-544.11\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"218.66,-543.95 214.73,-534.1 211.66,-544.25 218.66,-543.95\"/>\n",
"</g>\n",
"<!-- z -->\n",
"<g id=\"node10\" class=\"node\">\n",
"<title>z</title>\n",
"<g id=\"a_node10\"><a xlink:title=\"Zephyr&#45;based IEEE802.15.4 radio accepting HDLC over UART transactions\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"422,-265 332,-265 332,-229 422,-229 422,-265\"/>\n",
"<text text-anchor=\"middle\" x=\"377\" y=\"-243.3\" font-family=\"Times,serif\" font-size=\"14.00\">gateway**</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- k -->\n",
"<g id=\"node12\" class=\"node\">\n",
"<title>k</title>\n",
"<g id=\"a_node12\"><a xlink:title=\"Zephyr&#45;based applies Greybus transactions from IPv6/IEEE802154 to physical I2C, SPI, UART, etc.\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"456.5,-143 297.5,-143 297.5,-107 456.5,-107 456.5,-143\"/>\n",
"<text text-anchor=\"middle\" x=\"377\" y=\"-121.3\" font-family=\"Times,serif\" font-size=\"14.00\">greybus&#45;mikrobus**</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- z&#45;&gt;k -->\n",
"<g id=\"edge11\" class=\"edge\">\n",
"<title>z&#45;&gt;k</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M377,-228.81C377,-209.11 377,-176.58 377,-153.39\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"380.5,-153.16 377,-143.16 373.5,-153.16 380.5,-153.16\"/>\n",
"</g>\n",
"<!-- b&#45;&gt;z -->\n",
"<g id=\"edge10\" class=\"edge\">\n",
"<title>b&#45;&gt;z</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M377,-319.84C377,-307.28 377,-289.98 377,-275.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"380.5,-275.11 377,-265.11 373.5,-275.11 380.5,-275.11\"/>\n",
"</g>\n",
"<!-- e -->\n",
"<g id=\"node13\" class=\"node\">\n",
"<title>e</title>\n",
"<g id=\"a_node13\"><a xlink:title=\"Manifest for mikroBUS driver\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"538.5,-60 325.5,-60 325.5,-24 538.5,-24 538.5,-60\"/>\n",
"<text text-anchor=\"middle\" x=\"432\" y=\"-38.3\" font-family=\"Times,serif\" font-size=\"14.00\">manifest 1&#45;wire EEPROM**</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- k&#45;&gt;e -->\n",
"<g id=\"edge13\" class=\"edge\">\n",
"<title>k&#45;&gt;e</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M388.66,-106.82C396.17,-95.76 406.08,-81.18 414.52,-68.75\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"417.63,-70.39 420.35,-60.15 411.84,-66.46 417.63,-70.39\"/>\n",
"</g>\n",
"<!-- s -->\n",
"<g id=\"node14\" class=\"node\">\n",
"<title>s</title>\n",
"<g id=\"a_node14\"><a xlink:title=\"Over 1,000 different sensor, actuator and indicator options\">\n",
"<polygon fill=\"green\" stroke=\"green\" points=\"307,-60 243,-60 243,-24 307,-24 307,-60\"/>\n",
"<text text-anchor=\"middle\" x=\"275\" y=\"-38.3\" font-family=\"Times,serif\" font-size=\"14.00\">sensor</text>\n",
"</a>\n",
"</g>\n",
"</g>\n",
"<!-- k&#45;&gt;s -->\n",
"<g id=\"edge12\" class=\"edge\">\n",
"<title>k&#45;&gt;s</title>\n",
"<path fill=\"none\" stroke=\"black\" d=\"M341.11,-106.93C332.83,-102.28 324.32,-96.89 317,-91 308.89,-84.48 301.07,-76.27 294.43,-68.5\"/>\n",
"<polygon fill=\"black\" stroke=\"black\" points=\"296.77,-65.84 287.72,-60.34 291.36,-70.28 296.77,-65.84\"/>\n",
"</g>\n",
"</g>\n",
"</svg>\n"
],
"text/plain": [
"<graphviz.graphs.Digraph at 0x7fb0c4d45d60>"
]
},
"execution_count": 101,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dot = graphviz.Digraph('S',comment=\"Software architecture\")\n",
"dot.attr('node', shape='box',color='white')\n",
"with dot.subgraph(name='cluster_0') as x:\n",
" x.attr(color='black',label='Linux PC')\n",
" with x.subgraph(name='cluster_1') as c:\n",
" c.attr(style='filled',color='lightgrey',label='Linux userspace')\n",
" c.node_attr.update(style='filled',color='green')\n",
" c.node('A',label='User Application',tooltip='Primary developer entry point')\n",
" c.node('g',label='gbridge**',tooltip='Bridge Greybus to networked devices')\n",
" with x.subgraph(name='cluster_2') as c:\n",
" c.attr(style='filled',color='lightgrey',label='Linux kernel')\n",
" c.node_attr.update(style='filled',color='green')\n",
" c.node('I',label='IIO Drivers',tooltip='Hundreds of drivers for sensors and acutators')\n",
" c.node('r',label='greybus',tooltip='Dynamic RPC-like bus interface for I2C, SPI, UART, etc.')\n",
" c.node('n',label='gb-netlink**',tooltip='Extend Greybus over netlink to userspace')\n",
" c.node('m',label='mikrobus**',tooltip='Board-level abstraction to identify sensor connections')\n",
" c.node('w',label='wpanusb**',tooltip='USB-interface to IEEE802.15.4 radio')\n",
" c.node('i',label='ieee802154',tooltip='Standards-based radio interface')\n",
" c.node('6',label='lowpan',tooltip='IPv6 for low-power wireless networks')\n",
"with dot.subgraph(name='cluster_3') as x:\n",
" x.attr(color='black',label='BCF gateway')\n",
" with x.subgraph(name='cluster_4') as c:\n",
" c.attr(style='filled',color='lightgrey',label='CC1352')\n",
" c.node_attr.update(style='filled',color='green')\n",
" c.node('z',label='gateway**',tooltip='Zephyr-based IEEE802.15.4 radio accepting HDLC over UART transactions')\n",
" with x.subgraph(name='cluster_5') as c:\n",
" c.attr(style='filled',color='lightgrey',label='MSP430')\n",
" c.node_attr.update(style='filled',color='green')\n",
" c.node('b',label='usb_uart_bridge**',tooltip='USB interace to access CC1352 UART that encapulates WPANUSB in HDLC')\n",
"with dot.subgraph(name='cluster_6') as x:\n",
" x.attr(color='black',label='BCF node')\n",
" with x.subgraph(name='cluster_7') as c:\n",
" c.attr(style='filled',color='lightgrey',label='CC1352')\n",
" c.node_attr.update(style='filled',color='green')\n",
" c.node('k',label='greybus-mikrobus**',tooltip='Zephyr-based applies Greybus transactions from IPv6/IEEE802154 to physical I2C, SPI, UART, etc.')\n",
" with x.subgraph(name='cluster_8') as c:\n",
" c.attr(style='filled',color='lightgrey',label='mikroBUS add-on board')\n",
" c.node_attr.update(style='filled',color='green')\n",
" c.node('e',label='manifest 1-wire EEPROM**',tooltip='Manifest for mikroBUS driver')\n",
" c.node('s',label='sensor',tooltip='Over 1,000 different sensor, actuator and indicator options')\n",
"dot.edges(['AI','Im','mr','rn','ng','g6','6i','iw','wb','bz','zk','ks','ke'])\n",
"dot"
]
},
{
"cell_type": "code",
"execution_count": 102,
"id": "individual-progress",
"metadata": {},
"outputs": [
{
"data": {
"text/plain": [
"'bcf_block_diagram.svg'"
]
},
"execution_count": 102,
"metadata": {},
"output_type": "execute_result"
}
],
"source": [
"dot.render('bcf_block_diagram',format='svg')"
]
},
{
"cell_type": "code",
"execution_count": null,
"id": "tight-franchise",
"metadata": {},
"outputs": [],
"source": []
}
],
"metadata": {
"kernelspec": {
"display_name": "Python 3",
"language": "python",
"name": "python3"
},
"language_info": {
"codemirror_mode": {
"name": "ipython",
"version": 3
},
"file_extension": ".py",
"mimetype": "text/x-python",
"name": "python",
"nbconvert_exporter": "python",
"pygments_lexer": "ipython3",
"version": "3.9.5"
}
},
"nbformat": 4,
"nbformat_minor": 5
}