Guild icon
wafer.space Community
📐 - Designing / 💻-digital
Between 2026-06-30 11:59 p.m. and 2026-08-01 12:00 a.m.
Avatar
In my design while i was checking out the numbers I found that fanout/design repair is using dlyb_1 as for ordinary buffer is the what's suppose to happen ? These are being added by the repair_design command in the flow
Avatar
Avatar
Deepak
In my design while i was checking out the numbers I found that fanout/design repair is using dlyb_1 as for ordinary buffer is the what's suppose to happen ? These are being added by the repair_design command in the flow
Leo Moser (mole99) 2026-07-03 6:29 a.m.
Unfortunately, OpenROAD does not currently differentiate between data and hold buffers during buffer selection: https://github.com/The-OpenROAD-Project/OpenROAD/issues/10622 While you can disable all delay buffers, this would also mean that they could not be used for hold repair.
6:29 a.m.
@RebelMike did a workaround for his design where he replaced all setup-repair dlyb with normal buffers iirc.
Avatar
Yes, I used the foundry cell library for my TT design and it had this issue. I wrote a quick librelane plugin to fix it that’s linked from here https://github.com/librelane/librelane/issues/967 you can see how I injected it into the config here: https://github.com/MichaelBell/ttgf0p3-tinyQV/blob/c02a42568e2f9dcf6b6ba6f78fe7b5f818b97e76/src/config.json#L73 (will need converting to yaml) And then I think you just need that plugin on the PYTHONPATH and it should work
Description It would sometimes be useful to replace the cell for a given instance, e.g. to change buffer type or resize a cell to improve timing. This could be an ECO step similar to InsertECOBuffe...
TinyQV including analog peripherals for TT GF 0.3. Contribute to MichaelBell/ttgf0p3-tinyQV development by creating an account on GitHub.
👍 1
Avatar
Avatar
Leo Moser (mole99)
Unfortunately, OpenROAD does not currently differentiate between data and hold buffers during buffer selection: https://github.com/The-OpenROAD-Project/OpenROAD/issues/10622 While you can disable all delay buffers, this would also mean that they could not be used for hold repair.
ohh ok I tried to disable the delay cells this but the hold timing got bad so I will check the work around Btw would it effect the tapeout if the dlyb buffers are used instead of normal buffer ?
Avatar
Avatar
Deepak
ohh ok I tried to disable the delay cells this but the hold timing got bad so I will check the work around Btw would it effect the tapeout if the dlyb buffers are used instead of normal buffer ?
Leo Moser (mole99) 2026-07-04 8:59 a.m.
As long as STA says that you meet your timing requirements, then it should be fine even with dlyb.
Avatar
Avatar
Leo Moser (mole99)
As long as STA says that you meet your timing requirements, then it should be fine even with dlyb.
yup the STA is fine , Then i guess i will let it be
👌 1
Avatar
Anyone here have full SOC designs and having issues with very long synthesis times? Our same design for fpga on vivado takes 15-30 minutes to synth, but on yosys we’re seeing 12+ hours despite enabling multi threading and other usual suspects. Is this a known issue? I opened a PR with yosys to merge some optimizations and it was rejected because it was “AI assisted” and I must admit the attitude was very disappointing despite providing follow ups, asking questions, etc.
Avatar
That's usually a sign you have synthesized memories or something like that
Avatar
Leo Moser (mole99) 2026-07-09 8:09 p.m.
@J-Lo If you haven't read this page yet, you should do so before contributing to Yosys: https://yosyshq.readthedocs.io/projects/yosys/en/latest/yosys_internals/extending_yosys/contributing.html There are also some rules on LLM usage.
8:09 p.m.
Often you can also speed up synthesis by keeping some parts of your design hierarchical.
Avatar
Avatar
Leo Moser (mole99)
Often you can also speed up synthesis by keeping some parts of your design hierarchical.
Yes we do leverage the keep_hierarchy. I’m aware of the LLM rules but frankly it felt like an aversion not a guardrail. But I’m not keen to focus this discussion on that, I’m trying to understand if our synth times are abnormal and if we need to investigate a problem
Avatar
Avatar
J-Lo
Yes we do leverage the keep_hierarchy. I’m aware of the LLM rules but frankly it felt like an aversion not a guardrail. But I’m not keen to focus this discussion on that, I’m trying to understand if our synth times are abnormal and if we need to investigate a problem
Just to be clear, you're referring to the actual yosys synthesis step and not the any of the place and routing steps, right?
Avatar
Avatar
bailey
Just to be clear, you're referring to the actual yosys synthesis step and not the any of the place and routing steps, right?
This is a summary from my team, and because I’m seeing openroad yes it might be PNR
synthesis/signoff runs were spending huge time in OpenROAD.RepairDesignPostGPL. The dominant cause was a massive high-fanout reset net: i_chip_core.rst_n had about 38,354 terminals, and OpenROAD was serially building buffer trees for it. LibreLane parallelism knobs do not help this step much.
Avatar
Avatar
J-Lo
This is a summary from my team, and because I’m seeing openroad yes it might be PNR
synthesis/signoff runs were spending huge time in OpenROAD.RepairDesignPostGPL. The dominant cause was a massive high-fanout reset net: i_chip_core.rst_n had about 38,354 terminals, and OpenROAD was serially building buffer trees for it. LibreLane parallelism knobs do not help this step much.
Place and route runtimes are highly dependent on routing areas. Placing macros too close together or too close to the edges can result in unroutable designs.
Avatar
Avatar
bailey
Place and route runtimes are highly dependent on routing areas. Placing macros too close together or too close to the edges can result in unroutable designs.
Thanks we do have an SRAM macro in there and I wonder if that’s what’s causing some of our issues. I will note it is routable and we get a GDS, it just takes an obscenely long time to create
Avatar
Avatar
J-Lo
Thanks we do have an SRAM macro in there and I wonder if that’s what’s causing some of our issues. I will note it is routable and we get a GDS, it just takes an obscenely long time to create
Do you see any obvious congestion in the gds?
Avatar
Avatar
bailey
Do you see any obvious congestion in the gds?
Waiting for a file transfer of the final report but in summary I think you’re on to something, probably to do with the SRAM macro:
Dense SRAM macro grid. The current report has 39 SRAM macros consuming 4.48365 mm²; total core payload is 8.23514 / 12.90200 mm², about 64% including macros. In macros_3v3.yaml⁠, SRAM columns at x=1040 and x=1380 are only about 38.7 µm apart after subtracting the 301.3 µm SRAM width.
😮 1
6:12 p.m.
I’m not sure how solvable this problem is with such a short time until tape out. I think it’s just a challenge posed by the small chip area and requirement to have an SRAM
Avatar
Leo Moser (mole99) 2026-07-11 8:09 a.m.
Have you had a look at your design through the OpenROAD GUI yet? If you send a screenshot, people might be able to help you.
ferristhumbsup 1
Avatar
Hello I was just doing final check up on the design and show that rst_n_pad is neither pu or pd is that normal or i can pull it down ? is there a reason for it being so ?
10:38 a.m.
As i have pulled up my cs_n pin for my input spi in the design so if there is some issue with that i should change that
Avatar
I don't see why there would be any issue using the pull up/down, it's just not used by default in the template
✅ 1
Avatar
Avatar
RebelMike
I don't see why there would be any issue using the pull up/down, it's just not used by default in the template
Alright then thank you
Avatar
Could a kind soul tell me if I am misunderstanding this ? The IO pins have an input capacitance (driven from outside the pad) of:
  • bidir : 3.635930 (pf)
  • input: 3.247814 (pf)
And since the max_capacitance STA check does a blanket check of all max capacitance above a 0.2pf threshold they get incorrectly flagged even though this is perfectly handled ?
Avatar
Hello everyone, we got our design routed with synopsys, we will place that gds into the padframe. We have one question, the exported gds has the std cells as lef (only metals not any comp, active, etc) is this correct ? or should we see on klayout the std cells with all the parts, comp, active etc
Avatar
Avatar
RRichmondR
Hello everyone, we got our design routed with synopsys, we will place that gds into the padframe. We have one question, the exported gds has the std cells as lef (only metals not any comp, active, etc) is this correct ? or should we see on klayout the std cells with all the parts, comp, active etc
The latter. Have you tried scrolling the right of the two number pickers on the left panel ?
Avatar
we tried to increase number, but it doenst show the layers (in the layer viewer on the right the comp, dnwell etc do not appear)
Avatar
Avatar
RRichmondR
we tried to increase number, but it doenst show the layers (in the layer viewer on the right the comp, dnwell etc do not appear)
Ok, just making sure. It should be easy to get Klayout to fill in the blanks btw.; I just don't know for lack of experience. I'd suggest trying it's LEF import wizard and making sure all the relevant .GDS with the used cells are provided/listed for the wizard to pull from when materializing the LEF.
1:08 a.m.
so.... well.... yeah. Figure if the column multiplexer circuity can also be sufficciently squished, it'd be desirable to tape out at least a smol single block of it to hopefully have the denser (though possibly slightly slower, I think) variant silicon-proven before the Run3 deadline.
Avatar
In OpenROAD, is there a good way to enforce hierarchical placement within a bounding box? I'm using plenty of macros, but directing soft placement would be helpful to fix routing congestion.
6:04 a.m.
AI mentions commands like "create_region" "add_to_region" and "report_region", but I haven't found any documentation for these. Is it an AI hallucination?
Avatar
Leo Moser (mole99) 2026-07-14 6:20 a.m.
I would suggest to check out the LibreLane step configuration variables: https://librelane.readthedocs.io/en/stable/reference/step_config_vars.html You can place hard and soft obstructions using FP_OBSTRUCTIONS and PL_SOFT_OBSTRUCTIONS. And you can also limit the routing amd PDN generation using ROUTING_OBSTRUCTIONS and PDN_OBSTRUCTIONS.
Avatar
AFAIU he wants to manually place/contraint some RTL hierarchy sub level to a given location, so I don't think those will help
Avatar
Leo Moser (mole99) 2026-07-14 6:28 a.m.
Oh, I missed the hierarchical! Yes, I wouldn't know either, unless by using macros as he already does.
Avatar
For FPGAs, you can often softly hint or enforce cell placement of an instance and all of its children within rectangular or polygonal boundary constraints. You can usually control whether foreign cells are excluded from place/routing through these blocks. Xilinx terminology is "pblock", Altera "logic lock" Normally every time you re-implement the design, each region is replaced/routed; but you can also lock the placement and routing as well, effectively more like a macro here. Would be good if these tools implemented softer hierarchical placement. I bet commercial ASIC tools have a direct equivalent.
Leo Moser (mole99) started a thread. 2026-07-14 9:52 a.m.
Avatar
How does one find the total number of transistors that are used in design?
Avatar
Avatar
Deepak
How does one find the total number of transistors that are used in design?
transistors or cells ?
Avatar
Transistors 🥲
Avatar
Avatar
Deepak
Transistors 🥲
Ouf, well you could go count the transistors per cells+macro by looking at the floorplans and then multiply that per each of the cells+macos you have. But that sounds tedious.
5:51 p.m.
Maybe the antenna check could inspire a better way of doing this 🤔 Anyways, I don't have any good solutions for you. (edited)
Avatar
The spice for the cells is probably an easier way to count
5:56 p.m.
You/AI could probably write a script to count the number of fets in each cell subcircuit in the spice file for the standard cell library you are using, and then mutliply it by the cell counts.
👍 1
Avatar
Avatar
RebelMike
The spice for the cells is probably an easier way to count
Right, why did I not think of using the spice circuit equivalence ! Obviously 🙌
Avatar
Although you might need a similar trick to get the final counts of each cell - yosys logs what it sythnthesized, but then lots of buffers will be added, I'm not sure if there's a final log anywhere or if you'll need to count that from the netlist
Avatar
Avatar
Deepak
How does one find the total number of transistors that are used in design?
Extract LVS; grep count by lines starting with M[digit]
5:59 p.m.
(if flattened)
6:00 p.m.
Question will possibly be how it distinguishes fingers
⬆️ 2
Avatar
Avatar
RebelMike
The spice for the cells is probably an easier way to count
yeah that seems like a good use of AI 😄
Avatar
Avatar
namibj
Extract LVS; grep count by lines starting with M[digit]
sure let me try it thank you
Avatar
But what do you count as a transistor ? Does a 2 finger nmos count as 1 or 2 ?
Avatar
global placement in action on a 0.5x0.5 slot: (edited)
😮 4
👍 2
Avatar
Avatar
Deepak
sure let me try it thank you
CVC-RV will report the total number of devices and number of each device type in the equivalent flattened netlist, but it uses an extracted version that has parallel devices combined. I can help you with the setup if you want.
Avatar
Avatar
tnt
But what do you count as a transistor ? Does a 2 finger nmos count as 1 or 2 ?
aah not sure, i just curious about checking how many fet are even there in my design
Avatar
Avatar
bailey
CVC-RV will report the total number of devices and number of each device type in the equivalent flattened netlist, but it uses an extracted version that has parallel devices combined. I can help you with the setup if you want.
that would be great if you will can (edited)
👍 1
Avatar
Avatar
Essen
global placement in action on a 0.5x0.5 slot: (edited)
Tim 'mithro' Ansell 2026-07-18 12:14 a.m.
These animations are always fun to look at!
🫡 1
💯 2
Avatar
fungal growth as my professor would call it
👽 1
Exported 59 message(s)
Timezone: UTC+0