A repository for testing blackbox GDS art integration into TT tiles.
Note: Work In Progress
- GDSPY:
apt install python3-gdspy
- required to add boundary layers to GDS files and to remove output driver cells:
rsvg-convert
: For SVG based input imagesmagic
if your design is a pure art design, to manually add the VPWR, VGND nets and remove the output drivers.
- First,
git submodule update --init
. - Place your magic art designs in
mag/
orgds/
- run
make preproc <name_of_macro_in_gds_or_mag>
- This will produce GDS/LEF outputs used during a Openlane2 custom flow.
- Additionally, a PN boundary layer will be added to any converted GDS or converted MAG during the preproc phase.
- Make a copy of
src/ttlogo_config.json
assrc/<my_macro_name>_config.json
- Edit the
VERILOG_DEFINES
andMACROS
inside the config options to specify which macro you would like to place. - If you are using this to add a logo to an existing project, you need to delete the flow in the config, and use the normal classic flow.
- Edit the
- Run
make tt_harden_top <my_macro_name>
.- If your design in purely art, and has no logic, please do:
PURE_ART=1 make tt_harden_top <my_macro_name>
- If you need to override the top module name set
TOP_NAME=
as well.
- If your design in purely art, and has no logic, please do:
- The final designs are now made available in {gds,mag,lef}/final.
For SVG macro art:
- Place your target macro images inside
img/
- Convert SVG to PNG:
rsvg-convert img/my_image.svg -o img/my_image.png
- Convert the image to GDS with PN boundary:
./script/make_gds.py -i img/my_image.png -c my_image -o gds/my_image.gds
- Manually import the resulting instance into your Magic design or other analog program.
TODO: Write a magic placement script for all of this.
Q: Why can't we support the analog flow with macros?
A: We can, it just makes no sense to and is needlessly complicated. Analog designs for TT aren't being used with openlane, so we should stick with analog methods as appropriate.
- (Fix the flow properly stream out the GDS, GDS -> isn't including PR boundary)
- (Make sure we support input mags that have power nets that we will eventually ignore)
- (The PDN config is basically a no-op. we can interleave configs for mags that needs a POWER net)
- (Standardize and document minimal flow required to macro place without detailed or global routing)
- (Alow the usage of multiple macros in the blackbox using a generate verilog statement)
- (Write a analog magic art macro placement script)