From aa0203f141591555c28f837280ebe7ad637c63ad Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 28 Jan 2025 13:57:52 +0100 Subject: [PATCH 1/4] python: add PyYAML and upgrade matplotlib MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- MODULE.bazel.lock | 59 ++++++++++++++++++- requirements.in | 3 +- requirements_lock.txt | 132 ++++++++++++++++++++++++++++-------------- 3 files changed, 149 insertions(+), 45 deletions(-) diff --git a/MODULE.bazel.lock b/MODULE.bazel.lock index 7edb998..b13b09a 100644 --- a/MODULE.bazel.lock +++ b/MODULE.bazel.lock @@ -110,6 +110,34 @@ ] } }, + "@@apple_support~//crosstool:setup.bzl%apple_cc_configure_extension": { + "general": { + "bzlTransitiveDigest": "PjIds3feoYE8SGbbIq2SFTZy3zmxeO2tQevJZNDo7iY=", + "usagesDigest": "+hz7IHWN6A1oVJJWNDB6yZRG+RYhF76wAYItpAeIUIg=", + "recordedFileInputs": {}, + "recordedDirentsInputs": {}, + "envVariables": {}, + "generatedRepoSpecs": { + "local_config_apple_cc_toolchains": { + "bzlFile": "@@apple_support~//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf_toolchains", + "attributes": {} + }, + "local_config_apple_cc": { + "bzlFile": "@@apple_support~//crosstool:setup.bzl", + "ruleClassName": "_apple_cc_autoconf", + "attributes": {} + } + }, + "recordedRepoMappingEntries": [ + [ + "apple_support~", + "bazel_tools", + "bazel_tools" + ] + ] + } + }, "@@platforms//host:extension.bzl%host_platform": { "general": { "bzlTransitiveDigest": "xelQcPZH8+tmuOHVjL9vDxMnnQNMlwj0SlvgoqBkm4U=", @@ -132,7 +160,7 @@ "bzlTransitiveDigest": "imywsSRgXmH5sLq2q4I5ejiOFHcD2wuFqsSgHWNIjOk=", "usagesDigest": "9SBHWOJjUwYTDzHJXBlxSk3uSlJtle9Z9EvlAlGkTTg=", "recordedFileInputs": { - "@@//requirements_lock.txt": "22e50f9527fde294958dcb1896306d4a5cd4462350a5634a4fdb7a75c18295f0" + "@@//requirements_lock.txt": "1867f0f11701867602e24f80007e66e36db27cbcde45d8e0c68e1cb6a2555472" }, "recordedDirentsInputs": {}, "envVariables": {}, @@ -245,7 +273,7 @@ "bzlFile": "@@rules_python~//python/pip_install:pip_repository.bzl", "ruleClassName": "whl_library", "attributes": { - "requirement": "matplotlib==3.6.3 --hash=sha256:01b7f521a9a73c383825813af255f8c4485d1706e4f3e2ed5ae771e4403a40ab --hash=sha256:11011c97d62c1db7bc20509572557842dbb8c2a2ddd3dd7f20501aa1cde3e54e --hash=sha256:1183877d008c752d7d535396096c910f4663e4b74a18313adee1213328388e1e --hash=sha256:12f999661589981e74d793ee2f41b924b3b87d65fd929f6153bf0f30675c59b1 --hash=sha256:1c235bf9be052347373f589e018988cad177abb3f997ab1a2e2210c41562cc0c --hash=sha256:1f4d69707b1677560cd952544ee4962f68ff07952fb9069ff8c12b56353cb8c9 --hash=sha256:1fcc4cad498533d3c393a160975acc9b36ffa224d15a6b90ae579eacee5d8579 --hash=sha256:2787a16df07370dcba385fe20cdd0cc3cfaabd3c873ddabca78c10514c799721 --hash=sha256:29f17b7f2e068dc346687cbdf80b430580bab42346625821c2d3abf3a1ec5417 --hash=sha256:38d38cb1ea1d80ee0f6351b65c6f76cad6060bbbead015720ba001348ae90f0c --hash=sha256:3f56a7252eee8f3438447f75f5e1148a1896a2756a92285fe5d73bed6deebff4 --hash=sha256:5223affa21050fb6118353c1380c15e23aedfb436bf3e162c26dc950617a7519 --hash=sha256:57ad1aee29043163374bfa8990e1a2a10ff72c9a1bfaa92e9c46f6ea59269121 --hash=sha256:59400cc9451094b7f08cc3f321972e6e1db4cd37a978d4e8a12824bf7fd2f03b --hash=sha256:68d94a436f62b8a861bf3ace82067a71bafb724b4e4f9133521e4d8012420dd7 --hash=sha256:6adc441b5b2098a4b904bbf9d9e92fb816fef50c55aa2ea6a823fc89b94bb838 --hash=sha256:6d81b11ede69e3a751424b98dc869c96c10256b2206bfdf41f9c720eee86844c --hash=sha256:73b93af33634ed919e72811c9703e1105185cd3fb46d76f30b7f4cfbbd063f89 --hash=sha256:77b384cee7ab8cf75ffccbfea351a09b97564fc62d149827a5e864bec81526e5 --hash=sha256:79e501eb847f4a489eb7065bb8d3187117f65a4c02d12ea3a19d6c5bef173bcc --hash=sha256:809119d1cba3ece3c9742eb01827fe7a0e781ea3c5d89534655a75e07979344f --hash=sha256:80c166a0e28512e26755f69040e6bf2f946a02ffdb7c00bf6158cca3d2b146e6 --hash=sha256:81b409b2790cf8d7c1ef35920f01676d2ae7afa8241844e7aa5484fdf493a9a0 --hash=sha256:994637e2995b0342699b396a320698b07cd148bbcf2dd2fa2daba73f34dd19f2 --hash=sha256:9ceebaf73f1a3444fa11014f38b9da37ff7ea328d6efa1652241fe3777bfdab9 --hash=sha256:9fb8fb19d03abf3c5dab89a8677e62c4023632f919a62b6dd1d6d2dbf42cd9f5 --hash=sha256:acc3b1a4bddbf56fe461e36fb9ef94c2cb607fc90d24ccc650040bfcc7610de4 --hash=sha256:bbddfeb1495484351fb5b30cf5bdf06b3de0bc4626a707d29e43dfd61af2a780 --hash=sha256:bbf269e1d24bc25247095d71c7a969813f7080e2a7c6fa28931a603f747ab012 --hash=sha256:bebcff4c3ed02c6399d47329f3554193abd824d3d53b5ca02cf583bcd94470e2 --hash=sha256:c3f08df2ac4636249b8bc7a85b8b82c983bef1441595936f62c2918370ca7e1d --hash=sha256:ca94f0362f6b6f424b555b956971dcb94b12d0368a6c3e07dc7a40d32d6d873d --hash=sha256:d00c248ab6b92bea3f8148714837937053a083ff03b4c5e30ed37e28fc0e7e56 --hash=sha256:d2cfaa7fd62294d945b8843ea24228a27c8e7c5b48fa634f3c168153b825a21b --hash=sha256:d5f18430f5cfa5571ab8f4c72c89af52aa0618e864c60028f11a857d62200cba --hash=sha256:debeab8e2ab07e5e3dac33e12456da79c7e104270d2b2d1df92b9e40347cca75 --hash=sha256:dfba7057609ca9567b9704626756f0142e97ec8c5ba2c70c6e7bd1c25ef99f06 --hash=sha256:e0a64d7cc336b52e90f59e6d638ae847b966f68582a7af041e063d568e814740 --hash=sha256:eb9421c403ffd387fbe729de6d9a03005bf42faba5e8432f4e51e703215b49fc --hash=sha256:faff486b36530a836a6b4395850322e74211cd81fc17f28b4904e1bd53668e3e --hash=sha256:ff2aa84e74f80891e6bcf292ebb1dd57714ffbe13177642d65fee25384a30894", + "requirement": "matplotlib==3.10.0 --hash=sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6 --hash=sha256:12eaf48463b472c3c0f8dbacdbf906e573013df81a0ab82f0616ea4b11281908 --hash=sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6 --hash=sha256:2fbbabc82fde51391c4da5006f965e36d86d95f6ee83fb594b279564a4c5d0d2 --hash=sha256:3547d153d70233a8496859097ef0312212e2689cdf8d7ed764441c77604095ae --hash=sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea --hash=sha256:3b427392354d10975c1d0f4ee18aa5844640b512d5311ef32efd4dd7db106ede --hash=sha256:4659665bc7c9b58f8c00317c3c2a299f7f258eeae5a5d56b4c64226fca2f7c59 --hash=sha256:4673ff67a36152c48ddeaf1135e74ce0d4bce1bbf836ae40ed39c29edf7e2765 --hash=sha256:503feb23bd8c8acc75541548a1d709c059b7184cde26314896e10a9f14df5f12 --hash=sha256:5439f4c5a3e2e8eab18e2f8c3ef929772fd5641876db71f08127eed95ab64683 --hash=sha256:5cdbaf909887373c3e094b0318d7ff230b2ad9dcb64da7ade654182872ab2593 --hash=sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1 --hash=sha256:5fd41b0ec7ee45cd960a8e71aea7c946a28a0b8a4dcee47d2856b2af051f334c --hash=sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5 --hash=sha256:7e8632baebb058555ac0cde75db885c61f1212e47723d63921879806b40bec6a --hash=sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03 --hash=sha256:845d96568ec873be63f25fa80e9e7fae4be854a66a7e2f0c8ccc99e94a8bd4ef --hash=sha256:95b710fea129c76d30be72c3b38f330269363fbc6e570a5dd43580487380b5ff --hash=sha256:96f2886f5c1e466f21cc41b70c5a0cd47bfa0015eb2d5793c88ebce658600e25 --hash=sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3 --hash=sha256:9ade1003376731a971e398cc4ef38bb83ee8caf0aee46ac6daa4b0506db1fd06 --hash=sha256:9b0558bae37f154fffda54d779a592bc97ca8b4701f1c710055b609a3bac44c8 --hash=sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e --hash=sha256:a994f29e968ca002b50982b27168addfd65f0105610b6be7fa515ca4b5307c95 --hash=sha256:ad2e15300530c1a94c63cfa546e3b7864bd18ea2901317bae8bbf06a5ade6dcf --hash=sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef --hash=sha256:b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278 --hash=sha256:c40ba2eb08b3f5de88152c2333c58cee7edcead0a2a0d60fcafa116b17117adc --hash=sha256:c55b20591ced744aa04e8c3e4b7543ea4d650b6c3c4b208c08a05b4010e8b442 --hash=sha256:c58a9622d5dbeb668f407f35f4e6bfac34bb9ecdcc81680c04d0258169747997 --hash=sha256:d44cb942af1693cced2604c33a9abcef6205601c445f6d0dc531d813af8a2f5a --hash=sha256:d907fddb39f923d011875452ff1eca29a9e7f21722b873e90db32e5d8ddff12e --hash=sha256:fd44fc75522f58612ec4a33958a7e5552562b7705b42ef1b4f8c0818e304a363", "repo": "bazel-orfs-pip_312", "repo_prefix": "bazel-orfs-pip_312_", "whl_patches": {}, @@ -385,6 +413,30 @@ "group_deps": [] } }, + "bazel-orfs-pip_312_pyyaml": { + "bzlFile": "@@rules_python~//python/pip_install:pip_repository.bzl", + "ruleClassName": "whl_library", + "attributes": { + "requirement": "pyyaml==6.0.2 --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4", + "repo": "bazel-orfs-pip_312", + "repo_prefix": "bazel-orfs-pip_312_", + "whl_patches": {}, + "experimental_target_platforms": [], + "python_interpreter": "", + "python_interpreter_target": "@@rules_python~~python~python_3_12_host//:python", + "quiet": true, + "timeout": 600, + "isolated": true, + "extra_pip_args": [], + "download_only": false, + "pip_data_exclude": [], + "enable_implicit_namespace_pkgs": false, + "environment": {}, + "envsubst": [], + "group_name": "", + "group_deps": [] + } + }, "bazel-orfs-pip_312_six": { "bzlFile": "@@rules_python~//python/pip_install:pip_repository.bzl", "ruleClassName": "whl_library", @@ -445,6 +497,9 @@ "python_dateutil": [ "3.12" ], + "pyyaml": [ + "3.12" + ], "six": [ "3.12" ] diff --git a/requirements.in b/requirements.in index b1ef9e6..df6af39 100644 --- a/requirements.in +++ b/requirements.in @@ -1 +1,2 @@ -matplotlib==3.6.3 +matplotlib==3.10.0 +PyYAML==6.0.2 diff --git a/requirements_lock.txt b/requirements_lock.txt index d14f87a..7f2a158 100644 --- a/requirements_lock.txt +++ b/requirements_lock.txt @@ -232,48 +232,41 @@ kiwisolver==1.4.7 \ --hash=sha256:f816dd2277f8d63d79f9c8473a79fe54047bc0467754962840782c575522224d \ --hash=sha256:f9a9e8a507420fe35992ee9ecb302dab68550dedc0da9e2880dd88071c5fb052 # via matplotlib -matplotlib==3.6.3 \ - --hash=sha256:01b7f521a9a73c383825813af255f8c4485d1706e4f3e2ed5ae771e4403a40ab \ - --hash=sha256:11011c97d62c1db7bc20509572557842dbb8c2a2ddd3dd7f20501aa1cde3e54e \ - --hash=sha256:1183877d008c752d7d535396096c910f4663e4b74a18313adee1213328388e1e \ - --hash=sha256:12f999661589981e74d793ee2f41b924b3b87d65fd929f6153bf0f30675c59b1 \ - --hash=sha256:1c235bf9be052347373f589e018988cad177abb3f997ab1a2e2210c41562cc0c \ - --hash=sha256:1f4d69707b1677560cd952544ee4962f68ff07952fb9069ff8c12b56353cb8c9 \ - --hash=sha256:1fcc4cad498533d3c393a160975acc9b36ffa224d15a6b90ae579eacee5d8579 \ - --hash=sha256:2787a16df07370dcba385fe20cdd0cc3cfaabd3c873ddabca78c10514c799721 \ - --hash=sha256:29f17b7f2e068dc346687cbdf80b430580bab42346625821c2d3abf3a1ec5417 \ - --hash=sha256:38d38cb1ea1d80ee0f6351b65c6f76cad6060bbbead015720ba001348ae90f0c \ - --hash=sha256:3f56a7252eee8f3438447f75f5e1148a1896a2756a92285fe5d73bed6deebff4 \ - --hash=sha256:5223affa21050fb6118353c1380c15e23aedfb436bf3e162c26dc950617a7519 \ - --hash=sha256:57ad1aee29043163374bfa8990e1a2a10ff72c9a1bfaa92e9c46f6ea59269121 \ - --hash=sha256:59400cc9451094b7f08cc3f321972e6e1db4cd37a978d4e8a12824bf7fd2f03b \ - --hash=sha256:68d94a436f62b8a861bf3ace82067a71bafb724b4e4f9133521e4d8012420dd7 \ - --hash=sha256:6adc441b5b2098a4b904bbf9d9e92fb816fef50c55aa2ea6a823fc89b94bb838 \ - --hash=sha256:6d81b11ede69e3a751424b98dc869c96c10256b2206bfdf41f9c720eee86844c \ - --hash=sha256:73b93af33634ed919e72811c9703e1105185cd3fb46d76f30b7f4cfbbd063f89 \ - --hash=sha256:77b384cee7ab8cf75ffccbfea351a09b97564fc62d149827a5e864bec81526e5 \ - --hash=sha256:79e501eb847f4a489eb7065bb8d3187117f65a4c02d12ea3a19d6c5bef173bcc \ - --hash=sha256:809119d1cba3ece3c9742eb01827fe7a0e781ea3c5d89534655a75e07979344f \ - --hash=sha256:80c166a0e28512e26755f69040e6bf2f946a02ffdb7c00bf6158cca3d2b146e6 \ - --hash=sha256:81b409b2790cf8d7c1ef35920f01676d2ae7afa8241844e7aa5484fdf493a9a0 \ - --hash=sha256:994637e2995b0342699b396a320698b07cd148bbcf2dd2fa2daba73f34dd19f2 \ - --hash=sha256:9ceebaf73f1a3444fa11014f38b9da37ff7ea328d6efa1652241fe3777bfdab9 \ - --hash=sha256:9fb8fb19d03abf3c5dab89a8677e62c4023632f919a62b6dd1d6d2dbf42cd9f5 \ - --hash=sha256:acc3b1a4bddbf56fe461e36fb9ef94c2cb607fc90d24ccc650040bfcc7610de4 \ - --hash=sha256:bbddfeb1495484351fb5b30cf5bdf06b3de0bc4626a707d29e43dfd61af2a780 \ - --hash=sha256:bbf269e1d24bc25247095d71c7a969813f7080e2a7c6fa28931a603f747ab012 \ - --hash=sha256:bebcff4c3ed02c6399d47329f3554193abd824d3d53b5ca02cf583bcd94470e2 \ - --hash=sha256:c3f08df2ac4636249b8bc7a85b8b82c983bef1441595936f62c2918370ca7e1d \ - --hash=sha256:ca94f0362f6b6f424b555b956971dcb94b12d0368a6c3e07dc7a40d32d6d873d \ - --hash=sha256:d00c248ab6b92bea3f8148714837937053a083ff03b4c5e30ed37e28fc0e7e56 \ - --hash=sha256:d2cfaa7fd62294d945b8843ea24228a27c8e7c5b48fa634f3c168153b825a21b \ - --hash=sha256:d5f18430f5cfa5571ab8f4c72c89af52aa0618e864c60028f11a857d62200cba \ - --hash=sha256:debeab8e2ab07e5e3dac33e12456da79c7e104270d2b2d1df92b9e40347cca75 \ - --hash=sha256:dfba7057609ca9567b9704626756f0142e97ec8c5ba2c70c6e7bd1c25ef99f06 \ - --hash=sha256:e0a64d7cc336b52e90f59e6d638ae847b966f68582a7af041e063d568e814740 \ - --hash=sha256:eb9421c403ffd387fbe729de6d9a03005bf42faba5e8432f4e51e703215b49fc \ - --hash=sha256:faff486b36530a836a6b4395850322e74211cd81fc17f28b4904e1bd53668e3e \ - --hash=sha256:ff2aa84e74f80891e6bcf292ebb1dd57714ffbe13177642d65fee25384a30894 +matplotlib==3.10.0 \ + --hash=sha256:01d2b19f13aeec2e759414d3bfe19ddfb16b13a1250add08d46d5ff6f9be83c6 \ + --hash=sha256:12eaf48463b472c3c0f8dbacdbf906e573013df81a0ab82f0616ea4b11281908 \ + --hash=sha256:2c5829a5a1dd5a71f0e31e6e8bb449bc0ee9dbfb05ad28fc0c6b55101b3a4be6 \ + --hash=sha256:2fbbabc82fde51391c4da5006f965e36d86d95f6ee83fb594b279564a4c5d0d2 \ + --hash=sha256:3547d153d70233a8496859097ef0312212e2689cdf8d7ed764441c77604095ae \ + --hash=sha256:359f87baedb1f836ce307f0e850d12bb5f1936f70d035561f90d41d305fdacea \ + --hash=sha256:3b427392354d10975c1d0f4ee18aa5844640b512d5311ef32efd4dd7db106ede \ + --hash=sha256:4659665bc7c9b58f8c00317c3c2a299f7f258eeae5a5d56b4c64226fca2f7c59 \ + --hash=sha256:4673ff67a36152c48ddeaf1135e74ce0d4bce1bbf836ae40ed39c29edf7e2765 \ + --hash=sha256:503feb23bd8c8acc75541548a1d709c059b7184cde26314896e10a9f14df5f12 \ + --hash=sha256:5439f4c5a3e2e8eab18e2f8c3ef929772fd5641876db71f08127eed95ab64683 \ + --hash=sha256:5cdbaf909887373c3e094b0318d7ff230b2ad9dcb64da7ade654182872ab2593 \ + --hash=sha256:5e6c6461e1fc63df30bf6f80f0b93f5b6784299f721bc28530477acd51bfc3d1 \ + --hash=sha256:5fd41b0ec7ee45cd960a8e71aea7c946a28a0b8a4dcee47d2856b2af051f334c \ + --hash=sha256:607b16c8a73943df110f99ee2e940b8a1cbf9714b65307c040d422558397dac5 \ + --hash=sha256:7e8632baebb058555ac0cde75db885c61f1212e47723d63921879806b40bec6a \ + --hash=sha256:81713dd0d103b379de4516b861d964b1d789a144103277769238c732229d7f03 \ + --hash=sha256:845d96568ec873be63f25fa80e9e7fae4be854a66a7e2f0c8ccc99e94a8bd4ef \ + --hash=sha256:95b710fea129c76d30be72c3b38f330269363fbc6e570a5dd43580487380b5ff \ + --hash=sha256:96f2886f5c1e466f21cc41b70c5a0cd47bfa0015eb2d5793c88ebce658600e25 \ + --hash=sha256:994c07b9d9fe8d25951e3202a68c17900679274dadfc1248738dcfa1bd40d7f3 \ + --hash=sha256:9ade1003376731a971e398cc4ef38bb83ee8caf0aee46ac6daa4b0506db1fd06 \ + --hash=sha256:9b0558bae37f154fffda54d779a592bc97ca8b4701f1c710055b609a3bac44c8 \ + --hash=sha256:a2a43cbefe22d653ab34bb55d42384ed30f611bcbdea1f8d7f431011a2e1c62e \ + --hash=sha256:a994f29e968ca002b50982b27168addfd65f0105610b6be7fa515ca4b5307c95 \ + --hash=sha256:ad2e15300530c1a94c63cfa546e3b7864bd18ea2901317bae8bbf06a5ade6dcf \ + --hash=sha256:ae80dc3a4add4665cf2faa90138384a7ffe2a4e37c58d83e115b54287c4f06ef \ + --hash=sha256:b886d02a581b96704c9d1ffe55709e49b4d2d52709ccebc4be42db856e511278 \ + --hash=sha256:c40ba2eb08b3f5de88152c2333c58cee7edcead0a2a0d60fcafa116b17117adc \ + --hash=sha256:c55b20591ced744aa04e8c3e4b7543ea4d650b6c3c4b208c08a05b4010e8b442 \ + --hash=sha256:c58a9622d5dbeb668f407f35f4e6bfac34bb9ecdcc81680c04d0258169747997 \ + --hash=sha256:d44cb942af1693cced2604c33a9abcef6205601c445f6d0dc531d813af8a2f5a \ + --hash=sha256:d907fddb39f923d011875452ff1eca29a9e7f21722b873e90db32e5d8ddff12e \ + --hash=sha256:fd44fc75522f58612ec4a33958a7e5552562b7705b42ef1b4f8c0818e304a363 # via -r requirements.in numpy==2.2.0 \ --hash=sha256:0557eebc699c1c34cccdd8c3778c9294e8196df27d713706895edc6f57d29608 \ @@ -423,6 +416,61 @@ python-dateutil==2.9.0.post0 \ --hash=sha256:37dd54208da7e1cd875388217d5e00ebd4179249f90fb72437e91a35459a0ad3 \ --hash=sha256:a8b2bc7bffae282281c8140a97d3aa9c14da0b136dfe83f850eea9a5f7470427 # via matplotlib +pyyaml==6.0.2 \ + --hash=sha256:01179a4a8559ab5de078078f37e5c1a30d76bb88519906844fd7bdea1b7729ff \ + --hash=sha256:0833f8694549e586547b576dcfaba4a6b55b9e96098b36cdc7ebefe667dfed48 \ + --hash=sha256:0a9a2848a5b7feac301353437eb7d5957887edbf81d56e903999a75a3d743086 \ + --hash=sha256:0b69e4ce7a131fe56b7e4d770c67429700908fc0752af059838b1cfb41960e4e \ + --hash=sha256:0ffe8360bab4910ef1b9e87fb812d8bc0a308b0d0eef8c8f44e0254ab3b07133 \ + --hash=sha256:11d8f3dd2b9c1207dcaf2ee0bbbfd5991f571186ec9cc78427ba5bd32afae4b5 \ + --hash=sha256:17e311b6c678207928d649faa7cb0d7b4c26a0ba73d41e99c4fff6b6c3276484 \ + --hash=sha256:1e2120ef853f59c7419231f3bf4e7021f1b936f6ebd222406c3b60212205d2ee \ + --hash=sha256:1f71ea527786de97d1a0cc0eacd1defc0985dcf6b3f17bb77dcfc8c34bec4dc5 \ + --hash=sha256:23502f431948090f597378482b4812b0caae32c22213aecf3b55325e049a6c68 \ + --hash=sha256:24471b829b3bf607e04e88d79542a9d48bb037c2267d7927a874e6c205ca7e9a \ + --hash=sha256:29717114e51c84ddfba879543fb232a6ed60086602313ca38cce623c1d62cfbf \ + --hash=sha256:2e99c6826ffa974fe6e27cdb5ed0021786b03fc98e5ee3c5bfe1fd5015f42b99 \ + --hash=sha256:39693e1f8320ae4f43943590b49779ffb98acb81f788220ea932a6b6c51004d8 \ + --hash=sha256:3ad2a3decf9aaba3d29c8f537ac4b243e36bef957511b4766cb0057d32b0be85 \ + --hash=sha256:3b1fdb9dc17f5a7677423d508ab4f243a726dea51fa5e70992e59a7411c89d19 \ + --hash=sha256:41e4e3953a79407c794916fa277a82531dd93aad34e29c2a514c2c0c5fe971cc \ + --hash=sha256:43fa96a3ca0d6b1812e01ced1044a003533c47f6ee8aca31724f78e93ccc089a \ + --hash=sha256:50187695423ffe49e2deacb8cd10510bc361faac997de9efef88badc3bb9e2d1 \ + --hash=sha256:5ac9328ec4831237bec75defaf839f7d4564be1e6b25ac710bd1a96321cc8317 \ + --hash=sha256:5d225db5a45f21e78dd9358e58a98702a0302f2659a3c6cd320564b75b86f47c \ + --hash=sha256:6395c297d42274772abc367baaa79683958044e5d3835486c16da75d2a694631 \ + --hash=sha256:688ba32a1cffef67fd2e9398a2efebaea461578b0923624778664cc1c914db5d \ + --hash=sha256:68ccc6023a3400877818152ad9a1033e3db8625d899c72eacb5a668902e4d652 \ + --hash=sha256:70b189594dbe54f75ab3a1acec5f1e3faa7e8cf2f1e08d9b561cb41b845f69d5 \ + --hash=sha256:797b4f722ffa07cc8d62053e4cff1486fa6dc094105d13fea7b1de7d8bf71c9e \ + --hash=sha256:7c36280e6fb8385e520936c3cb3b8042851904eba0e58d277dca80a5cfed590b \ + --hash=sha256:7e7401d0de89a9a855c839bc697c079a4af81cf878373abd7dc625847d25cbd8 \ + --hash=sha256:80bab7bfc629882493af4aa31a4cfa43a4c57c83813253626916b8c7ada83476 \ + --hash=sha256:82d09873e40955485746739bcb8b4586983670466c23382c19cffecbf1fd8706 \ + --hash=sha256:8388ee1976c416731879ac16da0aff3f63b286ffdd57cdeb95f3f2e085687563 \ + --hash=sha256:8824b5a04a04a047e72eea5cec3bc266db09e35de6bdfe34c9436ac5ee27d237 \ + --hash=sha256:8b9c7197f7cb2738065c481a0461e50ad02f18c78cd75775628afb4d7137fb3b \ + --hash=sha256:9056c1ecd25795207ad294bcf39f2db3d845767be0ea6e6a34d856f006006083 \ + --hash=sha256:936d68689298c36b53b29f23c6dbb74de12b4ac12ca6cfe0e047bedceea56180 \ + --hash=sha256:9b22676e8097e9e22e36d6b7bda33190d0d400f345f23d4065d48f4ca7ae0425 \ + --hash=sha256:a4d3091415f010369ae4ed1fc6b79def9416358877534caf6a0fdd2146c87a3e \ + --hash=sha256:a8786accb172bd8afb8be14490a16625cbc387036876ab6ba70912730faf8e1f \ + --hash=sha256:a9f8c2e67970f13b16084e04f134610fd1d374bf477b17ec1599185cf611d725 \ + --hash=sha256:bc2fa7c6b47d6bc618dd7fb02ef6fdedb1090ec036abab80d4681424b84c1183 \ + --hash=sha256:c70c95198c015b85feafc136515252a261a84561b7b1d51e3384e0655ddf25ab \ + --hash=sha256:cc1c1159b3d456576af7a3e4d1ba7e6924cb39de8f67111c735f6fc832082774 \ + --hash=sha256:ce826d6ef20b1bc864f0a68340c8b3287705cae2f8b4b1d932177dcc76721725 \ + --hash=sha256:d584d9ec91ad65861cc08d42e834324ef890a082e591037abe114850ff7bbc3e \ + --hash=sha256:d7fded462629cfa4b685c5416b949ebad6cec74af5e2d42905d41e257e0869f5 \ + --hash=sha256:d84a1718ee396f54f3a086ea0a66d8e552b2ab2017ef8b420e92edbc841c352d \ + --hash=sha256:d8e03406cac8513435335dbab54c0d385e4a49e4945d2909a581c83647ca0290 \ + --hash=sha256:e10ce637b18caea04431ce14fabcf5c64a1c61ec9c56b071a4b7ca131ca52d44 \ + --hash=sha256:ec031d5d2feb36d1d1a24380e4db6d43695f3748343d99434e6f5f9156aaa2ed \ + --hash=sha256:ef6107725bd54b262d6dedcc2af448a266975032bc85ef0172c5f059da6325b4 \ + --hash=sha256:efdca5630322a10774e8e98e1af481aad470dd62c3170801852d752aa7a783ba \ + --hash=sha256:f753120cb8181e736c57ef7636e83f31b9c0d1722c516f7e86cf15b7aa57ff12 \ + --hash=sha256:ff3824dc5261f50c9b0dfb3be22b4567a6f938ccce4587b38952d85fd9e9afe4 + # via -r requirements.in six==1.17.0 \ --hash=sha256:4721f391ed90541fddacab5acf947aa0d3dc7d27b2e1e8eda2be8970586c3274 \ --hash=sha256:ff70335d468e7eb6ec65b95b99d3a2836546063f63acc5171de367e834932a81 From 7b8bcf18bf867a8d3ea9fc66ff8140841cea34fe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= Date: Tue, 28 Jan 2025 13:58:33 +0100 Subject: [PATCH 2/4] orfs_ppa: add plotting PPA plotting MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe --- BUILD | 21 +++++++ open_plots.sh | 2 + plot_clock_period.py | 134 +++++++++++++++++++++++++++++++++++++++++++ power.tcl | 22 +++++++ ppa.bzl | 47 +++++++++++++++ 5 files changed, 226 insertions(+) create mode 100755 open_plots.sh create mode 100644 plot_clock_period.py create mode 100644 power.tcl create mode 100644 ppa.bzl diff --git a/BUILD b/BUILD index 4b33ac1..a014236 100644 --- a/BUILD +++ b/BUILD @@ -2,6 +2,7 @@ load("@bazel-orfs-pip//:requirements.bzl", "requirement") load("@rules_python//python:pip.bzl", "compile_pip_requirements") load("//:eqy.bzl", "eqy_test") load("//:openroad.bzl", "get_stage_args", "orfs_floorplan", "orfs_flow", "orfs_run") +load("//:ppa.bzl", "orfs_ppa") load("//:sweep.bzl", "orfs_sweep") exports_files(["mock_area.tcl"]) @@ -326,6 +327,7 @@ exports_files( [ "sweep-wns.tcl", "wns_report.py", + "power.tcl", ], ) @@ -389,3 +391,22 @@ genrule( ], cmd = "wc -l $(locations :gatelist) $(locations :spef) > $@", ) + +py_binary( + name = "plot_clock_period_tool", + srcs = [ + "plot_clock_period.py", + ], + main = "plot_clock_period.py", + visibility = ["//visibility:public"], + deps = [ + requirement("PyYAML"), + requirement("matplotlib"), + ], +) + +orfs_ppa( + name = "plot", + plot = ["lb_32x128_{}_cts".format(i + 1) for i in range(4)], + title = "lb_32x128 variants", +) diff --git a/open_plots.sh b/open_plots.sh new file mode 100755 index 0000000..b7fe40d --- /dev/null +++ b/open_plots.sh @@ -0,0 +1,2 @@ +#!/bin/bash +xdg-open $1 diff --git a/plot_clock_period.py b/plot_clock_period.py new file mode 100644 index 0000000..5f40e09 --- /dev/null +++ b/plot_clock_period.py @@ -0,0 +1,134 @@ +import yaml +from collections import defaultdict +import matplotlib.pyplot as plt +import matplotlib.ticker as ticker +from matplotlib.backends.backend_pdf import PdfPages +import numpy as np +import os +import sys +import re +import pprint + +# Command-line arguments +if len(sys.argv) < 4: + raise ValueError( + "Usage: python script.py <input_files...>" + ) + +output_pdf = sys.argv[1] +title = sys.argv[2] +input_files = sys.argv[3:] + +# Load data from input files +file_data = {} +for file in input_files: + with open(file, "r") as f: + data = yaml.safe_load(f) + file_data[file] = data + +# Group data by series +series_map = defaultdict(list) +for file in input_files: + name = data["name"] + match = re.match(r"^(.*?)(\d+)_[a-z]+_stats$", os.path.basename(file)) + if not match: + raise ValueError(f"Invalid name format: {name}") + # Quick and dirty way to extract the series name and index + series = match.group(1).rstrip("_") + index = int(match.group(2)) + + series_map[series].append((index, file_data[file])) + +pprint.pprint(series_map) + + +# Sort and normalize the series by index +normalized_series = {} +normalized_series_x = {} +for name, points in series_map.items(): + points.sort(key=lambda x: x[0]) # Sort by index + normalized_series_x[name] = list(map(lambda x: x[0], points)) + normalized_series[name] = np.array([p[1] for p in points]) + + +def plot_one(pdf_pages, data_key): + # Extract the specified series + series_names = sorted(list(normalized_series.keys()), + reverse=True, + key=lambda name: max(map(lambda n: n[data_key], + normalized_series[name]))) + serieses = list( + map( + lambda series_name: np.array( + list(map(lambda item: item[data_key], normalized_series[series_name])) + ), + series_names, + ) + ) + + # Plot the results + plt.figure(figsize=(8, 5)) + + fig, ax1 = plt.subplots() + + # Calculate the ratio (series1_value / series2_value) + if len(serieses) >= 2: + ratios = serieses[0] / serieses[1] + alus = normalized_series_x[series_names[0]] + + # Plot the first series with the left y-axis + ax1.plot( + alus, + ratios, + marker="o", + label=f"Ratio ({series_names[0]}/{series_names[1]})", + color="b", + ) + ax1.set_ylabel(f"Ratio", color="b") + ax1.tick_params(axis="y", labelcolor="b") + ax1.set_ylim(bottom=0) + + # Set x-axis to display only integer values + ax1.xaxis.set_major_locator(ticker.MaxNLocator(integer=True)) + + ax2 = ax1.twinx() + for series, series_name in zip(serieses, series_names): + # sys.exit(1) + ax2.plot( + normalized_series_x[series_name], + series, + # marker="x", + label=series_name + " " + data_key, + # color="g", + ) + # Set x-axis to display only integer values + ax2.xaxis.set_major_locator(ticker.MaxNLocator(integer=True)) + ax2.set_ylabel( + data_key + + "/" + + { + "clock_period": "seconds", + "power": "W", + "instances": "instances", + "area": r"$\mathrm{\mu m}^2$", + }[data_key], + color="r", + ) + ax2.set_ylim(bottom=0) + ax2.tick_params(axis="y", labelcolor="r") + + fig.legend(loc="upper left", bbox_to_anchor=(0.1, 0.9)) + plt.grid(True) + plt.title(f"{title} - {data_key}") + plt.tight_layout() + pdf_pages.savefig(fig) + plt.close(fig) + + +with PdfPages(output_pdf) as pdf_pages: + for data_key in [ + "power", + "clock_period", + "area", + ]: + plot_one(pdf_pages, data_key) diff --git a/power.tcl b/power.tcl new file mode 100644 index 0000000..90cc6fb --- /dev/null +++ b/power.tcl @@ -0,0 +1,22 @@ +source $::env(SCRIPTS_DIR)/open.tcl + +set f [open $::env(OUTPUT) a] +puts $f "name: $::env(DESIGN_NAME)" +puts $f "instances: [llength [get_cells *]]" +puts $f "area: [sta::format_area [rsz::design_area] 0]" + +set_power_activity -input -activity 0.5 + +report_power > tmp.txt +exec cat tmp.txt +set f2 [open tmp.txt r] +set power_line [lindex [split [read $f2] "\n"] 9] +regexp {(\S+)\s+(\S+)\s+(\S+)\s+(\S+)\s+(\S+)} $power_line -> _ _ _ _ power +close $f2 + +report_clock_min_period +set clock_period_ps [sta::find_clk_min_period [lindex [all_clocks] 0] 0] + +puts $f "power: $power" +puts $f "clock_period: $clock_period_ps" +close $f diff --git a/ppa.bzl b/ppa.bzl new file mode 100644 index 0000000..15aeb22 --- /dev/null +++ b/ppa.bzl @@ -0,0 +1,47 @@ +"""plot ppa for top modules""" + +load("@bazel-orfs//:openroad.bzl", "orfs_run") + +def orfs_ppa(name, title, plot): + """Generate PPA plots + + Args: + name: name of plot target + title: title of the plot + plot: + a list of labels to plot. Names of labels are "Name_<X>_<stage>", + where X is the x value, stage is e.g. cts and Name is the + name of the series. + """ + for base in plot: + orfs_run( + name = "{base}_power".format(base = base), + src = "{base}".format(base = base), + outs = [ + "{base}_stats".format(base = base), + ], + arguments = { + "OUTPUT": "$(location :{base}_stats)".format(base = base), + }, + script = "@bazel-orfs//:power.tcl", + ) + + native.filegroup( + name = "{}_stats".format(name), + srcs = ["{base}_stats".format(base = base) for base in plot], + ) + + native.genrule( + name = "{}_ppas".format(name), + srcs = ["{}_stats".format(name)], + outs = ["{}_ppa.pdf".format(name)], + cmd = "$(execpath @bazel-orfs//:plot_clock_period_tool) $@ \"{title}\" $(locations :{name}_stats)".format(name = name, title = title), + tools = ["@bazel-orfs//:plot_clock_period_tool"], + ) + + native.sh_binary( + name = name, + srcs = ["open_plots.sh"], + args = ["$(location :{}_ppas)".format(name)], + data = ["{}_ppas".format(name)], + ) From 6c1e96b39b014ec383c0de4fcafd6aa37ec94843 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= <oyvind.harboe@zylin.com> Date: Tue, 28 Jan 2025 11:51:51 +0100 Subject: [PATCH 3/4] pdk: add pdk support and orfs_flow() now takes top module name MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com> --- docker.BUILD.bazel | 48 +++++++++++++++++++++++++++------------------- openroad.bzl | 23 +++++++++++++++++++--- sweep.bzl | 10 +++++++++- 3 files changed, 57 insertions(+), 24 deletions(-) diff --git a/docker.BUILD.bazel b/docker.BUILD.bazel index 8327dbb..fcf3ccb 100644 --- a/docker.BUILD.bazel +++ b/docker.BUILD.bazel @@ -99,11 +99,10 @@ filegroup( ) MAKEFILE_SHARED = [ - "OpenROAD-flow-scripts/flow/util/utils.mk", - "OpenROAD-flow-scripts/flow/scripts/*.py", - "OpenROAD-flow-scripts/flow/scripts/*.sh", - "OpenROAD-flow-scripts/flow/scripts/*.yaml", - + "OpenROAD-flow-scripts/flow/util/utils.mk", + "OpenROAD-flow-scripts/flow/scripts/*.py", + "OpenROAD-flow-scripts/flow/scripts/*.sh", + "OpenROAD-flow-scripts/flow/scripts/*.yaml", ] # Narrowly define yosys dependencies to avoid hours of resynthesis @@ -133,20 +132,29 @@ filegroup( visibility = ["//visibility:public"], ) -orfs_pdk( - name = "asap7", +#print(["OpenROAD-flow-scripts/flow/platforms/{pdk}/**/*.{ext}".format(pdk = "asap7", ext = ext) for ext in ["gds", "lib.gz", "lef", "lib", "lyt", "mk", "rules", "sdc", "tcl", "v", "tlef"]]] + +["OpenROAD-flow-scripts/flow/platforms/common/**/*.v"]) + +[orfs_pdk( + name = pdk, srcs = glob([ - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.gds", - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.lib.gz", - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.lef", - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.lib", - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.lyt", - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.mk", - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.rules", - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.sdc", - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.tcl", - "OpenROAD-flow-scripts/flow/platforms/asap7/**/*.v", - "OpenROAD-flow-scripts/flow/platforms/common/**/*.v", - ]), + "OpenROAD-flow-scripts/flow/platforms/{pdk}/**/*.{ext}".format(pdk = pdk, ext = ext) + for ext in [ + "gds", + "lib.gz", + "lef", + "lib", + "lyt", + "mk", + "rules", + "sdc", + "tcl", + "v", + "tlef", + ] + ] + + ["OpenROAD-flow-scripts/flow/platforms/common/**/*.v"]), visibility = ["//visibility:public"], -) +) for pdk in [ + "asap7", + "sky130hd", +]] diff --git a/openroad.bzl b/openroad.bzl index 7cd3ed0..989165f 100644 --- a/openroad.bzl +++ b/openroad.bzl @@ -742,7 +742,9 @@ def _yosys_impl(ctx): for output in SYNTH_OUTPUTS: synth_outputs.append(_declare_artifact(ctx, "results", output)) - synth_outputs.append(_declare_artifact(ctx, "objects", "lib/merged.lib")) + if "asap7" in ctx.attr.pdk[PdkInfo].name: + # FIXME - should ORFS have a consistent name here? + synth_outputs.append(_declare_artifact(ctx, "objects", "lib/merged.lib")) commands = _generation_commands(synth_logs) + [ctx.executable._make.path + " $@"] ctx.actions.run_shell( @@ -1371,6 +1373,7 @@ def _variant_name(variant, suffix): def orfs_flow( name, + top = None, verilog_files = [], macros = [], sources = {}, @@ -1383,12 +1386,14 @@ def orfs_flow( variant = None, mock_area = None, previous_stage = {}, + pdk = None, **kwargs): """ Creates targets for running physical design flow with OpenROAD-flow-scripts. Args: - name: name of the macro target + name: base name of bazel targets + top: Verilog top level module name, default is 'name' verilog_files: list of verilog sources of the design macros: list of macros required to run physical design flow for this design sources: dictionary keyed by ORFS variables with lists of sources @@ -1401,13 +1406,19 @@ def orfs_flow( variant: name of the target variant, added right after the module name mock_area: floating point number, scale the die width/height by this amount, default no scaling previous_stage: a dictionary with the input for a stage, default is previous stage. Useful when running experiments that share preceeding stages, like share synthesis for floorplan variants. + pdk: name of the PDK to use, default is asap7 **kwargs: forward named args """ + if pdk == None: + pdk = "@docker_orfs//:asap7" if variant == "base": variant = None + if top == None: + top = name abstract_variant = _variant_name(variant, "unmocked" if mock_area else None) _orfs_pass( name = name, + top = top, verilog_files = verilog_files, macros = macros, sources = sources, @@ -1420,6 +1431,7 @@ def orfs_flow( variant = variant, abstract_variant = abstract_variant, previous_stage = previous_stage, + pdk = pdk, **kwargs ) @@ -1434,6 +1446,7 @@ def orfs_flow( _orfs_pass( name = name, + top = top, verilog_files = verilog_files, macros = macros, sources = sources, @@ -1446,6 +1459,7 @@ def orfs_flow( variant = mock_variant, abstract_variant = None, previous_stage = {}, + pdk = pdk, **kwargs ) @@ -1474,6 +1488,7 @@ def _kwargs(stage, **kwargs): def _orfs_pass( name, + top, verilog_files, macros, sources, @@ -1486,6 +1501,7 @@ def _orfs_pass( variant, abstract_variant, previous_stage, + pdk, **kwargs): steps = [] for step in STAGE_IMPLS: @@ -1510,9 +1526,10 @@ def _orfs_pass( data = get_sources(synth_step.stage, stage_sources, sources), deps = macros, extra_configs = extra_configs.get(synth_step.stage, []), - module_top = name, + module_top = top, variant = variant, verilog_files = verilog_files, + pdk = pdk, ) orfs_deps( name = "{}_deps".format(_step_name(name, variant, synth_step.stage)), diff --git a/sweep.bzl b/sweep.bzl index 992beac..8f4ef80 100644 --- a/sweep.bzl +++ b/sweep.bzl @@ -17,17 +17,20 @@ def orfs_sweep( arguments, sweep, verilog_files, + top = None, stage_sources = {}, sources = {}, other_variants = {}, stage = "floorplan", abstract_stage = "final", macros = [], + pdk = None, visibility = ["//visibility:private"]): """Run a sweep of OpenROAD stages Args: - name: Verilog module name + name: Basename of bazel targets + top: Top module, default "name" arguments: dictionary of the base variables for the flow sweep: The dictionary describing the variables to sweep other_variants: Dictionary with other variants to generate, but not as part of the sweep @@ -38,7 +41,10 @@ def orfs_sweep( abstract_stage: generate abstract from this stage visibility: list of visibility labels sources: forwarded to orfs_flow + pdk: forwarded to orfs_flow """ + if top == None: + top = name sweep_json = { "name": name, "base": arguments, @@ -60,6 +66,8 @@ def orfs_sweep( orfs_flow( name = name, + top = top, + pdk = pdk, arguments = arguments | all_variants[variant].get("arguments", {}), macros = [ m From 532c9c143f1ca4b1be46c1923d5c4e2289a0defe Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=C3=98yvind=20Harboe?= <oyvind.harboe@zylin.com> Date: Tue, 28 Jan 2025 11:52:04 +0100 Subject: [PATCH 4/4] sky130hd: smoketest MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Signed-off-by: Øyvind Harboe <oyvind.harboe@zylin.com> --- BUILD | 16 ++++++++++++++ constraints-sram-sky130hd.sdc | 39 +++++++++++++++++++++++++++++++++++ 2 files changed, 55 insertions(+) create mode 100644 constraints-sram-sky130hd.sdc diff --git a/BUILD b/BUILD index a014236..97f4ea3 100644 --- a/BUILD +++ b/BUILD @@ -410,3 +410,19 @@ orfs_ppa( plot = ["lb_32x128_{}_cts".format(i + 1) for i in range(4)], title = "lb_32x128 variants", ) + +orfs_flow( + name = "lb_32x128_sky130hd", + arguments = { + "CORE_UTILIZATION": "10", + "CORE_ASPECT_RATIO": "2", + "SKIP_REPORT_METRICS": "1", + "SDC_FILE": "$(location :constraints-sram-sky130hd.sdc)", + }, + pdk = "@docker_orfs//:sky130hd", + sources = { + "SDC_FILE": [":constraints-sram-sky130hd.sdc"], + }, + top = "lb_32x128", + verilog_files = LB_VERILOG_FILES, +) diff --git a/constraints-sram-sky130hd.sdc b/constraints-sram-sky130hd.sdc new file mode 100644 index 0000000..987a87f --- /dev/null +++ b/constraints-sram-sky130hd.sdc @@ -0,0 +1,39 @@ +set sdc_version 2.0 + +# +# SDC file used during SRAM abstract generation +# + +set clk_period 10 + +# Covers all clock naming types in SRAMs and reg files +set clock_ports [concat [get_ports -quiet *clk] [get_ports -quiet *clock]] + +if {[llength $clock_ports] == 0} { + error "No clock ports found" +} + +foreach clk_port $clock_ports { + set clk_name [get_name $clk_port] + create_clock -period $clk_period -name $clk_name $clk_port +} + +set non_clk_inputs {} +foreach input [all_inputs] { + if {[lsearch -exact $clock_ports $input] == -1} { + lappend non_clk_inputs $input + } +} + +set_max_delay [expr {[info exists in2out_max] ? $in2out_max : 80}] -from $non_clk_inputs -to [all_outputs] +group_path -name in2out -from $non_clk_inputs -to [all_outputs] + +if {[llength [all_registers]] > 0} { + set all_register_outputs [get_pins -of_objects [all_registers] -filter {direction == output}] + set_max_delay [expr {[info exists in2reg_max] ? $in2reg_max : 80}] -from $non_clk_inputs -to [all_registers] + set_max_delay [expr {[info exists reg2out_max] ? $reg2out_max : 80}] -from $all_register_outputs -to [all_outputs] + + group_path -name in2reg -from $non_clk_inputs -to [all_registers] + group_path -name reg2out -from [all_registers] -to [all_outputs] + group_path -name reg2reg -from [all_registers] -to [all_registers] +}